sneakoscope 5.5.2 → 5.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -1
- package/crates/sks-core/Cargo.lock +1 -1
- package/crates/sks-core/Cargo.toml +1 -1
- package/crates/sks-core/src/main.rs +1 -1
- package/dist/bin/sks.js +1 -1
- package/dist/cli/command-registry.js +7 -1
- package/dist/cli/router.js +28 -0
- package/dist/commands/doctor.js +65 -3
- package/dist/config/skills-manifest.json +58 -58
- package/dist/core/agent-bridge/agent-manifest.js +64 -0
- package/dist/core/agent-bridge/agent-mode.js +29 -0
- package/dist/core/agent-bridge/mcp-server.js +156 -0
- package/dist/core/agents/agent-orchestrator.js +1 -11
- package/dist/core/commands/agent-bridge-command.js +86 -0
- package/dist/core/commands/image-ux-review-command.js +6 -6
- package/dist/core/commands/loop-command.js +2 -6
- package/dist/core/commands/mad-sks-command.js +3 -3
- package/dist/core/commands/mcp-server-command.js +13 -0
- package/dist/core/commands/naruto-command.js +4 -4
- package/dist/core/commands/ppt-command.js +6 -3
- package/dist/core/commands/qa-loop-command.js +64 -26
- package/dist/core/commands/team-command.js +1 -1
- package/dist/core/commands/wiki-command.js +71 -3
- package/dist/core/config/secret-preservation.js +43 -1
- package/dist/core/doctor/browser-use-repair.js +149 -0
- package/dist/core/doctor/computer-use-repair.js +166 -0
- package/dist/core/doctor/imagegen-repair.js +9 -0
- package/dist/core/doctor/mcp-transport-collision-repair.js +129 -0
- package/dist/core/doctor/supabase-mcp-repair.js +85 -16
- package/dist/core/feature-fixtures.js +8 -0
- package/dist/core/feature-registry.js +21 -0
- package/dist/core/fsx.js +1 -1
- package/dist/core/mad-db/mad-db-capability.js +1 -1
- package/dist/core/mission.js +19 -3
- package/dist/core/naruto/naruto-real-worker-child.js +5 -4
- package/dist/core/naruto/naruto-real-worker-runtime.js +5 -4
- package/dist/core/naruto/normalize-worker-prompt-text.js +12 -0
- package/dist/core/routes.js +3 -1
- package/dist/core/triwiki/code-index-scanner.js +313 -0
- package/dist/core/triwiki/code-pack.js +169 -0
- package/dist/core/triwiki/triwiki-cache-key.js +24 -2
- package/dist/core/triwiki-attention.js +34 -5
- package/dist/core/update-check.js +50 -0
- package/dist/core/version.js +1 -1
- package/dist/scripts/doctor-imagegen-repair-check.js +6 -1
- package/package.json +2 -2
|
@@ -356,6 +356,11 @@ export async function runSksUpdateNow(options = {}) {
|
|
|
356
356
|
quiet: machineOutput,
|
|
357
357
|
newPackageRoot: newBinary ? path.resolve(path.dirname(newBinary), '..', '..') : null
|
|
358
358
|
});
|
|
359
|
+
await runUpdateNativeCapabilitySetup(stage, {
|
|
360
|
+
quiet: machineOutput,
|
|
361
|
+
newPackageRoot: newBinary ? path.resolve(path.dirname(newBinary), '..', '..') : null,
|
|
362
|
+
root: projectReceiptRoot
|
|
363
|
+
});
|
|
359
364
|
}
|
|
360
365
|
}
|
|
361
366
|
const verification = await runFinalUpdateVerification({ installOk, newBinary, installVersion, env, projectReceiptRoot });
|
|
@@ -449,6 +454,51 @@ async function runUpdateGlobalSkillsReconcile(stage, opts = {}) {
|
|
|
449
454
|
});
|
|
450
455
|
return result;
|
|
451
456
|
}
|
|
457
|
+
async function runUpdateNativeCapabilitySetup(stage, opts) {
|
|
458
|
+
if (!opts.newPackageRoot) {
|
|
459
|
+
stage('native_capability_setup', true, 'skipped', { reason: 'new_package_root_unresolved' });
|
|
460
|
+
return null;
|
|
461
|
+
}
|
|
462
|
+
const root = opts.root;
|
|
463
|
+
const moduleHref = (rel) => pathToFileURL(path.join(opts.newPackageRoot, 'dist', 'core', 'doctor', rel)).href;
|
|
464
|
+
// Same as global_skills_reconcile above: run the newly installed package's own
|
|
465
|
+
// modules in a subprocess rather than in-process, so an old (pre-update) driver
|
|
466
|
+
// binary never runs post-update repair logic with stale compiled-in behavior.
|
|
467
|
+
const script = [
|
|
468
|
+
`const [{ repairCodexImagegen }, { repairComputerUse }, { repairBrowserUse }] = await Promise.all([import(${JSON.stringify(moduleHref('imagegen-repair.js'))}), import(${JSON.stringify(moduleHref('computer-use-repair.js'))}), import(${JSON.stringify(moduleHref('browser-use-repair.js'))})]);`,
|
|
469
|
+
`const root = ${JSON.stringify(root)};`,
|
|
470
|
+
'const imagegen = await repairCodexImagegen({ root, apply: true, reportPath: null }).catch((err) => ({ ok: false, recovered: false, attempted: true, error: String((err && err.message) || err) }));',
|
|
471
|
+
'const computerUse = await repairComputerUse({ root, apply: true, reportPath: null }).catch((err) => ({ ok: false, recovered: false, attempted: true, error: String((err && err.message) || err) }));',
|
|
472
|
+
'const browserUse = await repairBrowserUse({ root, apply: true, reportPath: null }).catch((err) => ({ ok: false, recovered: false, attempted: true, error: String((err && err.message) || err) }));',
|
|
473
|
+
'console.log(JSON.stringify({ imagegen, computer_use: computerUse, browser_use: browserUse }));'
|
|
474
|
+
].join('\n');
|
|
475
|
+
const work = runProcess(process.execPath, ['--input-type=module', '-e', script], {
|
|
476
|
+
timeoutMs: 180_000,
|
|
477
|
+
maxOutputBytes: 1024 * 1024
|
|
478
|
+
}).catch((err) => ({ code: 1, stdout: '', stderr: err?.message || String(err) }));
|
|
479
|
+
const run = opts.quiet ? await work : await withHeartbeat('native capability setup', work, { warnAfterMs: 30_000 });
|
|
480
|
+
let parsed = null;
|
|
481
|
+
for (const line of String(run.stdout || '').trim().split('\n').reverse()) {
|
|
482
|
+
try {
|
|
483
|
+
parsed = JSON.parse(line);
|
|
484
|
+
break;
|
|
485
|
+
}
|
|
486
|
+
catch { /* not the JSON result line */ }
|
|
487
|
+
}
|
|
488
|
+
const summarize = (r) => (r?.recovered === true || r?.ok === true ? 'ok' : r?.attempted ? 'blocked' : 'not-needed');
|
|
489
|
+
const ok = run.code === 0 && Boolean(parsed);
|
|
490
|
+
// A repair reporting 'blocked' (e.g. no verified CLI subcommand for a plugin
|
|
491
|
+
// install) is a valid, honest terminal state for this stage, not a stage
|
|
492
|
+
// failure — the update itself must not be blocked on a manual-only step.
|
|
493
|
+
stage('native_capability_setup', ok, ok ? 'completed' : 'failed', {
|
|
494
|
+
via: 'new_package_binary',
|
|
495
|
+
summary: ok
|
|
496
|
+
? { imagegen: summarize(parsed.imagegen), computer_use: summarize(parsed.computer_use), browser_use: summarize(parsed.browser_use) }
|
|
497
|
+
: null,
|
|
498
|
+
error: ok ? null : String(run.stderr || '').trim().slice(-400) || `exit_${run.code}`
|
|
499
|
+
});
|
|
500
|
+
return parsed;
|
|
501
|
+
}
|
|
452
502
|
export function sksGlobalInstallArgs(packageName, version, registry = DEFAULT_REGISTRY) {
|
|
453
503
|
return ['install', '--global', `${packageName}@${version}`, '--registry', registry];
|
|
454
504
|
}
|
package/dist/core/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const PACKAGE_VERSION = '5.
|
|
1
|
+
export const PACKAGE_VERSION = '5.6.0';
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
|
@@ -47,7 +47,11 @@ const ok = report.schema === 'sks.doctor-imagegen-repair.v1'
|
|
|
47
47
|
&& report.recovered === true
|
|
48
48
|
&& report.after?.core_ready === true
|
|
49
49
|
&& report.steps?.some((step) => step.id === 'image_generation_feature_enable' && step.ok === true)
|
|
50
|
-
&&
|
|
50
|
+
&& report.communication_test?.level === 'flag_level'
|
|
51
|
+
&& report.communication_test?.ok === true
|
|
52
|
+
&& report.communication_test?.real_generation_round_trip_performed === false
|
|
53
|
+
&& reportFile.recovered === true
|
|
54
|
+
&& reportFile.communication_test?.level === 'flag_level';
|
|
51
55
|
console.log(JSON.stringify({
|
|
52
56
|
schema: 'sks.doctor-imagegen-repair-check.v1',
|
|
53
57
|
ok,
|
|
@@ -55,6 +59,7 @@ console.log(JSON.stringify({
|
|
|
55
59
|
attempted: report.attempted,
|
|
56
60
|
recovered: report.recovered,
|
|
57
61
|
after_core_ready: report.after?.core_ready === true,
|
|
62
|
+
communication_test_level: report.communication_test?.level,
|
|
58
63
|
report_path: reportPath
|
|
59
64
|
}, null, 2));
|
|
60
65
|
if (!ok)
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sneakoscope",
|
|
3
3
|
"displayName": "ㅅㅋㅅ",
|
|
4
|
-
"version": "5.
|
|
4
|
+
"version": "5.6.0",
|
|
5
5
|
"description": "Sneakoscope Codex: fast proof-first Codex trust layer with image-based Voxel TriWiki.",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"homepage": "https://github.com/mandarange/Sneakoscope-Codex#readme",
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
"build": "npm run build:clean",
|
|
64
64
|
"build:clean": "node -e \"const fs=require('fs'); fs.rmSync('dist',{recursive:true,force:true}); fs.rmSync('.sneakoscope/cache/tsbuildinfo',{recursive:true,force:true})\" && tsc -p tsconfig.json && node ./dist/scripts/ensure-bin-executable.js && node ./dist/scripts/build-dist.js",
|
|
65
65
|
"build:incremental": "tsc -p tsconfig.json && node ./dist/scripts/ensure-bin-executable.js && node ./dist/scripts/build-dist.js",
|
|
66
|
-
"test": "node --test --test-concurrency=1 dist/core/__tests__/*.test.js dist/core/proof/__tests__/*.test.js dist/core/stop-gate/__tests__/*.test.js dist/core/commands/__tests__/*.test.js dist/core/dfix/__tests__/*.test.js dist/core/ppt/__tests__/*.test.js dist/core/mad-sks/__tests__/*.test.js dist/core/codex-app/__tests__/*.test.js dist/core/doctor/__tests__/*.test.js dist/cli/__tests__/*.test.js",
|
|
66
|
+
"test": "node --test --test-concurrency=1 dist/core/__tests__/*.test.js dist/core/proof/__tests__/*.test.js dist/core/stop-gate/__tests__/*.test.js dist/core/commands/__tests__/*.test.js dist/core/dfix/__tests__/*.test.js dist/core/ppt/__tests__/*.test.js dist/core/mad-sks/__tests__/*.test.js dist/core/codex-app/__tests__/*.test.js dist/core/doctor/__tests__/*.test.js dist/cli/__tests__/*.test.js dist/core/triwiki/__tests__/*.test.js dist/core/naruto/__tests__/*.test.js dist/core/agent-bridge/__tests__/*.test.js",
|
|
67
67
|
"selftest:real": "node ./dist/bin/sks.js selftest --real --json",
|
|
68
68
|
"check": "npm run release:check:affected",
|
|
69
69
|
"dev:sks": "npm run build:incremental --silent && node ./dist/bin/sks.js",
|