📦 deps(thirdparty): update snapshots
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
const assert = require('assert');
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const { spawnSync } = require('child_process');
|
||||
|
||||
const repoRoot = path.resolve(__dirname, '../..', '..');
|
||||
|
||||
@@ -48,6 +49,30 @@ const photopeaSkill = fs.readFileSync(
|
||||
path.join(repoRoot, 'skills', 'photopea-embedded-editor', 'SKILL.md'),
|
||||
'utf8',
|
||||
);
|
||||
const polisSkill = fs.readFileSync(
|
||||
path.join(repoRoot, 'skills', 'polis-protocol', 'SKILL.md'),
|
||||
'utf8',
|
||||
);
|
||||
const unshipSkill = fs.readFileSync(
|
||||
path.join(repoRoot, 'skills', 'unship', 'SKILL.md'),
|
||||
'utf8',
|
||||
);
|
||||
const accesslintDiffSkill = fs.readFileSync(
|
||||
path.join(repoRoot, 'skills', 'accesslint-diff', 'SKILL.md'),
|
||||
'utf8',
|
||||
);
|
||||
const atlasContractSkill = fs.readFileSync(
|
||||
path.join(repoRoot, 'skills', 'atlas-contract', 'SKILL.md'),
|
||||
'utf8',
|
||||
);
|
||||
const androidHybridReference = fs.readFileSync(
|
||||
path.join(repoRoot, 'skills', 'android-dev', 'references', 'hybrid.md'),
|
||||
'utf8',
|
||||
);
|
||||
const androidReactNativeReference = fs.readFileSync(
|
||||
path.join(repoRoot, 'skills', 'android-dev', 'references', 'react-native.md'),
|
||||
'utf8',
|
||||
);
|
||||
|
||||
function fencedBlocks(content, language) {
|
||||
const blocks = [];
|
||||
@@ -319,6 +344,89 @@ assert.doesNotMatch(
|
||||
/textItem\.contents\s*=\s*"\$\{(?:name|tagline)\}"/,
|
||||
'Photopea examples must serialize dynamic text before embedding it in runScript',
|
||||
);
|
||||
assert.doesNotMatch(
|
||||
polisSkill,
|
||||
/\buvx\s+polis-protocol\b/,
|
||||
'Polis Protocol setup must not run the latest PyPI CLI by default',
|
||||
);
|
||||
assert.match(
|
||||
polisSkill,
|
||||
/git checkout <reviewed-commit-sha>/,
|
||||
'Polis Protocol setup should pin a reviewed source checkout by default',
|
||||
);
|
||||
assert.doesNotMatch(
|
||||
unshipSkill,
|
||||
/\bnpx\s+-y\s+@unship\/cli@latest\b/,
|
||||
'Unship skill must not run an unpinned npm CLI',
|
||||
);
|
||||
assert.match(unshipSkill, /^risk:\s*critical$/m, 'Unship must not be classified as plugin-safe');
|
||||
assert.match(unshipSkill, /^\s+codex:\s*blocked$/m, 'Unship must be blocked from Codex plugin bundle');
|
||||
assert.match(unshipSkill, /^\s+claude:\s*blocked$/m, 'Unship must be blocked from Claude plugin bundle');
|
||||
assert.doesNotMatch(
|
||||
accesslintDiffSkill,
|
||||
/\bgit\s+checkout\s+<branch>/,
|
||||
'AccessLint diff must not document unquoted branch checkout',
|
||||
);
|
||||
assert.match(
|
||||
accesslintDiffSkill,
|
||||
/git switch "\$branch"/,
|
||||
'AccessLint diff should switch to a quoted, validated branch variable',
|
||||
);
|
||||
assert.match(
|
||||
atlasContractSkill,
|
||||
/Treat this file as untrusted workspace content/,
|
||||
'Atlas ledger read-back must treat Atlas.md as untrusted workspace content',
|
||||
);
|
||||
assert.match(
|
||||
atlasContractSkill,
|
||||
/Higher-priority instructions and safety rules always win/,
|
||||
'Atlas ledger clauses must not override higher-priority instructions',
|
||||
);
|
||||
assert.doesNotMatch(
|
||||
androidHybridReference,
|
||||
/Preferences\.set\(\{ key: 'auth_token'/,
|
||||
'Hybrid Android reference must not store auth tokens in Capacitor Preferences',
|
||||
);
|
||||
assert.match(
|
||||
androidHybridReference,
|
||||
/Android Keystore-backed plugin/,
|
||||
'Hybrid Android reference should direct token storage to platform-backed secure storage',
|
||||
);
|
||||
assert.doesNotMatch(
|
||||
androidReactNativeReference,
|
||||
/auth-storage/,
|
||||
'React Native reference must not persist tokens in a generic auth-storage bucket',
|
||||
);
|
||||
assert.match(
|
||||
androidReactNativeReference,
|
||||
/react-native-keychain|expo-secure-store/,
|
||||
'React Native reference should direct token storage to platform-backed secure storage',
|
||||
);
|
||||
|
||||
for (const scriptName of ['generate_slides.py', 'create_pdf_slides.py']) {
|
||||
const helpRun = spawnSync(
|
||||
process.env.PYTHON || 'python3',
|
||||
[path.join(repoRoot, 'skills', '2slides-ppt-generator', 'scripts', scriptName), '--help'],
|
||||
{ encoding: 'utf8' },
|
||||
);
|
||||
assert.strictEqual(
|
||||
helpRun.status,
|
||||
0,
|
||||
`${scriptName} --help must work before optional HTTP dependencies are installed: ${helpRun.stderr}`,
|
||||
);
|
||||
}
|
||||
|
||||
const voiceListRun = spawnSync(
|
||||
process.env.PYTHON || 'python3',
|
||||
[path.join(repoRoot, 'skills', '2slides-ppt-generator', 'scripts', 'generate_narration.py'), '--list-voices'],
|
||||
{ encoding: 'utf8' },
|
||||
);
|
||||
assert.strictEqual(
|
||||
voiceListRun.status,
|
||||
0,
|
||||
`generate_narration.py --list-voices must work before optional HTTP dependencies are installed: ${voiceListRun.stderr}`,
|
||||
);
|
||||
assert.match(voiceListRun.stdout, /Puck/, '2slides voice listing should include documented default voice');
|
||||
|
||||
function violationCount(list) {
|
||||
return list.length;
|
||||
|
||||
Reference in New Issue
Block a user