sneakoscope 2.0.4 → 2.0.5
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 +12 -8
- 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/.sks-build-stamp.json +4 -4
- package/dist/bin/sks.js +1 -1
- package/dist/build-manifest.json +73 -8
- package/dist/commands/doctor.js +14 -0
- package/dist/core/agents/agent-proof-evidence.js +35 -0
- package/dist/core/agents/agent-roster.js +35 -6
- package/dist/core/agents/agent-schema.js +1 -1
- package/dist/core/agents/native-worker-backend-router.js +31 -9
- package/dist/core/agents/ollama-worker-config.js +164 -15
- package/dist/core/codex/codex-0-137-compat.js +119 -0
- package/dist/core/codex-control/codex-control-proof.js +4 -1
- package/dist/core/codex-control/codex-sdk-capability.js +1 -1
- package/dist/core/codex-control/codex-task-runner.js +329 -5
- package/dist/core/codex-control/python-codex-sdk-adapter.js +197 -0
- package/dist/core/codex-control/python-codex-sdk-event-translator.js +14 -0
- package/dist/core/commands/local-model-command.js +65 -19
- package/dist/core/commands/naruto-command.js +118 -7
- package/dist/core/commands/run-command.js +1 -1
- package/dist/core/doctor/doctor-readiness-matrix.js +21 -2
- package/dist/core/fsx.js +1 -1
- package/dist/core/local-llm/local-llm-backpressure.js +20 -0
- package/dist/core/local-llm/local-llm-capability.js +29 -0
- package/dist/core/local-llm/local-llm-client.js +100 -0
- package/dist/core/local-llm/local-llm-config.js +6 -1
- package/dist/core/local-llm/local-llm-context-cache.js +21 -0
- package/dist/core/local-llm/local-llm-control-adapter.js +101 -0
- package/dist/core/local-llm/local-llm-json-repair.js +52 -0
- package/dist/core/local-llm/local-llm-metrics.js +42 -0
- package/dist/core/local-llm/local-llm-ollama-client.js +67 -0
- package/dist/core/local-llm/local-llm-openai-compatible-client.js +30 -0
- package/dist/core/local-llm/local-llm-prompt-cache.js +12 -0
- package/dist/core/local-llm/local-llm-scheduler.js +29 -0
- package/dist/core/local-llm/local-llm-schema-enforcer.js +15 -0
- package/dist/core/local-llm/local-llm-smoke.js +83 -0
- package/dist/core/local-llm/local-llm-warmup.js +20 -0
- package/dist/core/local-llm/local-worker-eligibility.js +27 -0
- package/dist/core/naruto/hardware-capacity-probe.js +36 -0
- package/dist/core/naruto/naruto-active-pool.js +118 -0
- package/dist/core/naruto/naruto-backpressure.js +13 -0
- package/dist/core/naruto/naruto-concurrency-governor.js +65 -0
- package/dist/core/naruto/naruto-finalizer.js +18 -0
- package/dist/core/naruto/naruto-generation-scheduler.js +18 -0
- package/dist/core/naruto/naruto-gpt-final-pack.js +49 -0
- package/dist/core/naruto/naruto-parallel-patch-apply.js +95 -0
- package/dist/core/naruto/naruto-patch-transaction-batch.js +42 -0
- package/dist/core/naruto/naruto-role-policy.js +107 -0
- package/dist/core/naruto/naruto-verification-dag.js +42 -0
- package/dist/core/naruto/naruto-verification-pool.js +18 -0
- package/dist/core/naruto/naruto-work-graph.js +198 -0
- package/dist/core/naruto/naruto-work-item.js +40 -0
- package/dist/core/naruto/naruto-work-stealing.js +11 -0
- package/dist/core/naruto/resource-pressure-monitor.js +32 -0
- package/dist/core/pipeline/finalize-pipeline-result.js +58 -0
- package/dist/core/pipeline/gpt-final-required.js +12 -0
- package/dist/core/prompt/prompt-placeholder-guard.js +30 -0
- package/dist/core/router/capability-card.js +13 -0
- package/dist/core/router/route-cache.js +3 -0
- package/dist/core/router/ultra-router.js +2 -1
- package/dist/core/routes.js +4 -4
- package/dist/core/version.js +1 -1
- package/dist/core/zellij/zellij-lane-runtime.js +2 -2
- package/dist/core/zellij/zellij-naruto-dashboard.js +36 -0
- package/dist/core/zellij/zellij-worker-pane-manager.js +4 -4
- package/dist/scripts/blackbox-command-import-smoke.js +10 -1
- package/dist/scripts/check-package-boundary.js +12 -3
- package/dist/scripts/codex-0-137-compat-check.js +27 -0
- package/dist/scripts/codex-environment-scoped-approvals-check.js +10 -0
- package/dist/scripts/codex-plugin-list-json-check.js +8 -0
- package/dist/scripts/codex-thread-runtime-choice-check.js +10 -0
- package/dist/scripts/local-collab-all-pipelines-final-gpt-check.js +21 -0
- package/dist/scripts/local-llm-all-pipelines-check.js +11 -0
- package/dist/scripts/local-llm-cache-performance-check.js +10 -0
- package/dist/scripts/local-llm-capability-check.js +14 -0
- package/dist/scripts/local-llm-smoke-check.js +23 -0
- package/dist/scripts/local-llm-structured-output-check.js +11 -0
- package/dist/scripts/local-llm-throughput-check.js +10 -0
- package/dist/scripts/local-llm-tool-call-repair-check.js +10 -0
- package/dist/scripts/local-llm-warmup-check.js +11 -0
- package/dist/scripts/naruto-active-pool-check.js +27 -0
- package/dist/scripts/naruto-concurrency-governor-check.js +52 -0
- package/dist/scripts/naruto-gpt-final-pack-check.js +34 -0
- package/dist/scripts/naruto-parallel-patch-apply-check.js +41 -0
- package/dist/scripts/naruto-real-local-gpt-final-smoke.js +16 -0
- package/dist/scripts/naruto-role-distribution-check.js +23 -0
- package/dist/scripts/naruto-shadow-clone-swarm-check.js +6 -0
- package/dist/scripts/naruto-verification-pool-check.js +36 -0
- package/dist/scripts/naruto-work-graph-check.js +24 -0
- package/dist/scripts/naruto-zellij-massive-ui-check.js +23 -0
- package/dist/scripts/prompt-placeholder-guard-check.js +33 -0
- package/dist/scripts/python-codex-sdk-all-pipelines-check.js +47 -0
- package/dist/scripts/python-codex-sdk-capability-check.js +75 -0
- package/dist/scripts/python-codex-sdk-sandbox-policy-check.js +10 -0
- package/dist/scripts/python-codex-sdk-stream-bridge-check.js +12 -0
- package/dist/scripts/release-parallel-check.js +1 -1
- package/dist/scripts/release-real-check.js +5 -0
- package/dist/scripts/zellij-worker-pane-manager-check.js +1 -1
- package/package.json +33 -4
- package/schemas/local-llm/local-model-config.schema.json +74 -0
- package/schemas/naruto/naruto-concurrency-governor.schema.json +21 -0
- package/schemas/naruto/naruto-work-graph.schema.json +22 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// @ts-nocheck
|
|
3
|
+
import { assertGate, emitGate, importDist } from './sks-1-18-gate-lib.js';
|
|
4
|
+
const governorMod = await importDist('core/naruto/naruto-concurrency-governor.js');
|
|
5
|
+
const normal = governorMod.decideNarutoConcurrency({
|
|
6
|
+
requestedClones: 200,
|
|
7
|
+
totalWorkItems: 340,
|
|
8
|
+
pendingWorkQueueSize: 340,
|
|
9
|
+
backend: 'codex-sdk',
|
|
10
|
+
zellijVisiblePaneCap: 12,
|
|
11
|
+
hardware: {
|
|
12
|
+
cores: 32,
|
|
13
|
+
freeMemoryBytes: 48 * 1024 * 1024 * 1024,
|
|
14
|
+
totalMemoryBytes: 64 * 1024 * 1024 * 1024,
|
|
15
|
+
fileDescriptorLimit: 4096,
|
|
16
|
+
localLlmMaxParallelRequests: 4,
|
|
17
|
+
remoteApiRateLimitBudget: 32,
|
|
18
|
+
terminalRows: 40,
|
|
19
|
+
terminalColumns: 140
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
const pressure = governorMod.decideNarutoConcurrency({
|
|
23
|
+
requestedClones: 200,
|
|
24
|
+
totalWorkItems: 340,
|
|
25
|
+
pendingWorkQueueSize: 340,
|
|
26
|
+
backend: 'codex-sdk',
|
|
27
|
+
zellijVisiblePaneCap: 12,
|
|
28
|
+
hardware: {
|
|
29
|
+
cores: 8,
|
|
30
|
+
loadAverage: [16, 16, 16],
|
|
31
|
+
freeMemoryBytes: 256 * 1024 * 1024,
|
|
32
|
+
totalMemoryBytes: 4 * 1024 * 1024 * 1024,
|
|
33
|
+
fileDescriptorLimit: 128,
|
|
34
|
+
localLlmMaxParallelRequests: 4,
|
|
35
|
+
remoteApiRateLimitBudget: 32,
|
|
36
|
+
zellijPaneCount: 12,
|
|
37
|
+
diskIoPressure: 0.9
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
assertGate(normal.safe_active_workers <= 32, 'requested_clones=200 fixture must cap active workers safely', { normal });
|
|
41
|
+
assertGate(normal.safe_zellij_visible_panes === 12 && normal.headless_workers === normal.safe_active_workers - 12, 'zellij visible panes must stay within UI cap', { normal });
|
|
42
|
+
assertGate(normal.local_llm_parallel <= 4, 'local LLM active requests must respect max_parallel_requests=4', { normal });
|
|
43
|
+
assertGate(pressure.safe_active_workers < normal.safe_active_workers, 'memory/load pressure fixture must decrease active workers', { normal: normal.safe_active_workers, pressure: pressure.safe_active_workers });
|
|
44
|
+
assertGate(pressure.backpressure === 'saturated' || pressure.backpressure === 'throttled', 'pressure fixture must report backpressure', { pressure });
|
|
45
|
+
emitGate('naruto:concurrency-governor', {
|
|
46
|
+
requested_clones: normal.requested_clones,
|
|
47
|
+
total_work_items: normal.total_work_items,
|
|
48
|
+
safe_active_workers: normal.safe_active_workers,
|
|
49
|
+
safe_zellij_visible_panes: normal.safe_zellij_visible_panes,
|
|
50
|
+
pressure_safe_active_workers: pressure.safe_active_workers
|
|
51
|
+
});
|
|
52
|
+
//# sourceMappingURL=naruto-concurrency-governor-check.js.map
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// @ts-nocheck
|
|
3
|
+
import { assertGate, emitGate, importDist } from './sks-1-18-gate-lib.js';
|
|
4
|
+
const workGraph = await importDist('core/naruto/naruto-work-graph.js');
|
|
5
|
+
const roles = await importDist('core/naruto/naruto-role-policy.js');
|
|
6
|
+
const packMod = await importDist('core/naruto/naruto-gpt-final-pack.js');
|
|
7
|
+
const graph = workGraph.buildNarutoWorkGraph({ requestedClones: 100, totalWorkItems: 120, writeCapable: true });
|
|
8
|
+
const roleDistribution = roles.buildNarutoRoleDistribution(graph.work_items);
|
|
9
|
+
const patchEnvelopes = Array.from({ length: 120 }, (_, index) => ({ id: index, token: 'sk-testsecret1234567890', file: `f-${index}.ts` }));
|
|
10
|
+
const logs = Array.from({ length: 40 }, (_, index) => `log ${index} api_key=secret-${index}`);
|
|
11
|
+
const pack = packMod.buildNarutoGptFinalPack({
|
|
12
|
+
missionId: 'M-naruto-pack',
|
|
13
|
+
graph,
|
|
14
|
+
roleDistribution,
|
|
15
|
+
changedFiles: ['src/a.ts', 'src/a.ts', 'src/b.ts'],
|
|
16
|
+
patchEnvelopes,
|
|
17
|
+
verificationResults: [{ ok: true }],
|
|
18
|
+
failedShards: [{ id: 'failed-1' }],
|
|
19
|
+
conflictMap: [{ path: 'src/a.ts' }],
|
|
20
|
+
rollbackPlan: { token: 'sk-abc12345678901234567' },
|
|
21
|
+
logs
|
|
22
|
+
});
|
|
23
|
+
const serialized = JSON.stringify(pack);
|
|
24
|
+
assertGate(pack.bounded === true && pack.secrets_redacted === true, 'GPT final pack must be bounded and redacted', pack);
|
|
25
|
+
assertGate(pack.patch_envelopes.length === 100, '100 worker results must compress to bounded patch envelope count', { count: pack.patch_envelopes.length });
|
|
26
|
+
assertGate(pack.representative_logs.length === 12, 'representative logs must be bounded', { count: pack.representative_logs.length });
|
|
27
|
+
assertGate(!serialized.includes('secret-') && !serialized.includes('sk-testsecret'), 'secrets must be redacted from final pack', pack);
|
|
28
|
+
assertGate(pack.role_distribution.ok === true && pack.work_graph_summary.write_allowed_count > 0, 'final pack must include role distribution and write work summary', pack);
|
|
29
|
+
emitGate('naruto:gpt-final-pack', {
|
|
30
|
+
patch_envelopes: pack.patch_envelopes.length,
|
|
31
|
+
representative_logs: pack.representative_logs.length,
|
|
32
|
+
changed_files: pack.changed_files
|
|
33
|
+
});
|
|
34
|
+
//# sourceMappingURL=naruto-gpt-final-pack-check.js.map
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// @ts-nocheck
|
|
3
|
+
import fs from 'node:fs/promises';
|
|
4
|
+
import os from 'node:os';
|
|
5
|
+
import path from 'node:path';
|
|
6
|
+
import { assertGate, emitGate, importDist } from './sks-1-18-gate-lib.js';
|
|
7
|
+
const patchApply = await importDist('core/naruto/naruto-parallel-patch-apply.js');
|
|
8
|
+
const root = await fs.mkdtemp(path.join(os.tmpdir(), 'sks-naruto-patch-'));
|
|
9
|
+
const envelopes = Array.from({ length: 10 }, (_, index) => {
|
|
10
|
+
const file = `file-${index}.txt`;
|
|
11
|
+
return envelope(index + 1, file, `after-${index}`);
|
|
12
|
+
});
|
|
13
|
+
const result = await patchApply.applyNarutoPatchEnvelopes(root, envelopes, { dryRun: false });
|
|
14
|
+
assertGate(result.ok === true, 'non-overlapping patch fixture must apply', result);
|
|
15
|
+
assertGate(result.batch_count === 1 && result.parallel_apply_count === 1, 'non-overlapping patch fixture must group into a parallel batch', result);
|
|
16
|
+
assertGate(result.results.every((row) => row.changed_files.length === 1 && Object.keys(row.before_hashes).length === 1 && Object.keys(row.after_hashes).length === 1), 'patch results must include before/after hashes and changed files', result);
|
|
17
|
+
const rollback = await patchApply.rollbackNarutoPatchResult(root, result.results[0]);
|
|
18
|
+
assertGate(rollback.ok === true && rollback.restored.length === 1, 'rollback must restore before content for a patch result', rollback);
|
|
19
|
+
const conflict = await patchApply.applyNarutoPatchEnvelopes(root, [envelope(99, 'same.txt', 'a'), envelope(100, 'same.txt', 'b')], { dryRun: true });
|
|
20
|
+
assertGate(conflict.conflicts.length >= 1, 'overlapping patch fixture must serialize or mark conflict', conflict);
|
|
21
|
+
emitGate('naruto:parallel-patch-apply', {
|
|
22
|
+
batch_count: result.batch_count,
|
|
23
|
+
parallel_apply_count: result.parallel_apply_count,
|
|
24
|
+
conflict_count: conflict.conflicts.length,
|
|
25
|
+
rollback_restored: rollback.restored.length
|
|
26
|
+
});
|
|
27
|
+
function envelope(index, file, content) {
|
|
28
|
+
return {
|
|
29
|
+
schema: 'sks.agent-patch-envelope.v1',
|
|
30
|
+
source: 'fixture',
|
|
31
|
+
agent_id: `naruto-${index}`,
|
|
32
|
+
session_id: `session-${index}`,
|
|
33
|
+
slot_id: `slot-${index}`,
|
|
34
|
+
generation_index: 1,
|
|
35
|
+
task_slice_id: `NW-${index}`,
|
|
36
|
+
lease_id: `lease-${index}`,
|
|
37
|
+
allowed_paths: [file],
|
|
38
|
+
operations: [{ op: 'write', path: file, content }]
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=naruto-parallel-patch-apply-check.js.map
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// @ts-nocheck
|
|
3
|
+
import { assertGate, emitGate, importDist } from './sks-1-18-gate-lib.js';
|
|
4
|
+
const finalizer = await importDist('core/naruto/naruto-finalizer.js');
|
|
5
|
+
const draft = finalizer.evaluateNarutoFinalizer({ localParticipated: true, gptFinalStatus: null, applyPatches: true });
|
|
6
|
+
const approved = finalizer.evaluateNarutoFinalizer({ localParticipated: true, gptFinalStatus: 'approved', applyPatches: true });
|
|
7
|
+
const deterministic = finalizer.evaluateNarutoFinalizer({ localParticipated: false, applyPatches: true });
|
|
8
|
+
assertGate(draft.ok === false && draft.blockers.includes('naruto_local_worker_output_needs_gpt_final_arbiter'), 'local worker patch must be blocked until GPT final arbiter', draft);
|
|
9
|
+
assertGate(approved.ok === true && approved.final_patch_source === 'gpt_final_arbiter', 'GPT-approved local output must become final patch source', approved);
|
|
10
|
+
assertGate(deterministic.ok === true && deterministic.gpt_final_required === false, 'no-local deterministic run must not require GPT final', deterministic);
|
|
11
|
+
emitGate('naruto:real-local-gpt-final-smoke', {
|
|
12
|
+
require_real_env: process.env.SKS_REQUIRE_LOCAL_LLM === '1' || process.env.SKS_REQUIRE_GPT_FINAL === '1',
|
|
13
|
+
draft_status: draft.final_status,
|
|
14
|
+
approved_status: approved.final_status
|
|
15
|
+
});
|
|
16
|
+
//# sourceMappingURL=naruto-real-local-gpt-final-smoke.js.map
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// @ts-nocheck
|
|
3
|
+
import { assertGate, emitGate, importDist } from './sks-1-18-gate-lib.js';
|
|
4
|
+
const workGraph = await importDist('core/naruto/naruto-work-graph.js');
|
|
5
|
+
const roles = await importDist('core/naruto/naruto-role-policy.js');
|
|
6
|
+
const roster = await importDist('core/agents/agent-roster.js');
|
|
7
|
+
const graph = workGraph.buildNarutoWorkGraph({ requestedClones: 30, totalWorkItems: 30, writeCapable: true });
|
|
8
|
+
const distribution = roles.buildNarutoRoleDistribution(graph.work_items);
|
|
9
|
+
const cloneRoster = roster.buildNarutoCloneRoster({ clones: 30, prompt: 'implement, modify, test, verify, document, and resolve conflicts' });
|
|
10
|
+
const writeCapableRoster = cloneRoster.roster.filter((row) => row.write_allowed === true);
|
|
11
|
+
assertGate(distribution.ok === true, 'write-capable Naruto role distribution must pass', distribution);
|
|
12
|
+
assertGate(distribution.verifier_only === false, 'default Naruto must not be verifier-only', distribution);
|
|
13
|
+
assertGate(distribution.implementation_like_ratio >= 0.4, 'default Naruto must keep at least 40% implementation/modification/test roles', distribution);
|
|
14
|
+
assertGate(writeCapableRoster.length >= Math.floor(cloneRoster.roster.length * 0.4), 'Naruto roster must include write-capable clone roles by default', { writeCapableRoster: writeCapableRoster.length, total: cloneRoster.roster.length });
|
|
15
|
+
const readonlyGraph = workGraph.buildNarutoWorkGraph({ requestedClones: 8, readonly: true, writeCapable: false });
|
|
16
|
+
const readonlyDistribution = roles.buildNarutoRoleDistribution(readonlyGraph.work_items, { readonly: true });
|
|
17
|
+
assertGate(readonlyDistribution.ok === true, 'readonly Naruto route may use read-only verifier/research roles', readonlyDistribution);
|
|
18
|
+
emitGate('naruto:role-distribution', {
|
|
19
|
+
implementation_like_ratio: distribution.implementation_like_ratio,
|
|
20
|
+
entries: distribution.entries,
|
|
21
|
+
write_capable_roster_count: writeCapableRoster.length
|
|
22
|
+
});
|
|
23
|
+
//# sourceMappingURL=naruto-role-distribution-check.js.map
|
|
@@ -71,6 +71,9 @@ assertGate(bigMemoryHost.cap >= 64, 'a 64 GB host must allow >= 64 parallel code
|
|
|
71
71
|
const proofClones = 24;
|
|
72
72
|
const cli = path.join(root, 'dist', 'bin', 'sks.js');
|
|
73
73
|
assertGate(exists('dist/bin/sks.js'), 'dist/bin/sks.js missing (build first)');
|
|
74
|
+
const helpRun = spawnSync(process.execPath, [cli, 'naruto', '--help', '--json'], { cwd: root, encoding: 'utf8', timeout: 30000, maxBuffer: 1024 * 1024 });
|
|
75
|
+
const helpParsed = parseJson(helpRun.stdout);
|
|
76
|
+
assertGate(helpRun.status === 0 && helpParsed?.action === 'help', 'sks naruto --help must emit help instead of launching a run', { status: helpRun.status, stdout: tail(helpRun.stdout), stderr: tail(helpRun.stderr) });
|
|
74
77
|
const run = spawnSync(process.execPath, [
|
|
75
78
|
cli, 'naruto', 'run', 'shadow clone swarm gate proof',
|
|
76
79
|
'--clones', String(proofClones),
|
|
@@ -94,6 +97,9 @@ assertGate(parsed.target_active_slots <= fakeSafe.cap, 'active slots must be thr
|
|
|
94
97
|
assertGate(typeof parsed.concurrency_capped === 'boolean', 'naruto run must report concurrency_capped', { concurrency_capped: parsed.concurrency_capped });
|
|
95
98
|
assertGate(parsed.concurrency_capped === (parsed.clones > parsed.target_active_slots), 'concurrency_capped must reflect clones > live slots', { clones: parsed.clones, target_active_slots: parsed.target_active_slots, concurrency_capped: parsed.concurrency_capped });
|
|
96
99
|
assertGate(parsed.system && Number(parsed.system.safe_concurrency) >= 1, 'naruto run must report system safe_concurrency (host-derived cap)', { system: parsed.system });
|
|
100
|
+
assertGate(parsed.work_graph?.write_allowed_count > 0 && parsed.work_graph?.mixed_work_kinds?.length > 1, 'naruto run must report a mixed work graph with write-capable items', { work_graph: parsed.work_graph });
|
|
101
|
+
assertGate(parsed.role_distribution?.verifier_only === false, 'naruto run proof/status must distinguish active worker roles beyond verifier-only', { role_distribution: parsed.role_distribution });
|
|
102
|
+
assertGate(Number(parsed.role_distribution?.implementation_like_ratio || 0) >= 0.4, 'naruto run must include implementation-like role distribution', { role_distribution: parsed.role_distribution });
|
|
97
103
|
const state = parsed.run?.scheduler?.state || parsed.run?.scheduler || {};
|
|
98
104
|
assertGate(Number(state.completed_count) === proofClones, 'all clone work items must complete despite throttling', { completed_count: state.completed_count });
|
|
99
105
|
const explicitConcurrency = spawnSync(process.execPath, [cli, 'naruto', 'run', 'explicit concurrency', '--clones', '6', '--backend', 'fake', '--work-items', '6', '--concurrency', '6', '--json'], { cwd: root, encoding: 'utf8', timeout: 120000, maxBuffer: 4 * 1024 * 1024 });
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// @ts-nocheck
|
|
3
|
+
import { assertGate, emitGate, importDist, root } from './sks-1-18-gate-lib.js';
|
|
4
|
+
const workGraph = await importDist('core/naruto/naruto-work-graph.js');
|
|
5
|
+
const governorMod = await importDist('core/naruto/naruto-concurrency-governor.js');
|
|
6
|
+
const verificationDag = await importDist('core/naruto/naruto-verification-dag.js');
|
|
7
|
+
const verificationPool = await importDist('core/naruto/naruto-verification-pool.js');
|
|
8
|
+
const graph = workGraph.buildNarutoWorkGraph({ requestedClones: 8, totalWorkItems: 12, writeCapable: true });
|
|
9
|
+
const governor = governorMod.decideNarutoConcurrency({
|
|
10
|
+
requestedClones: 8,
|
|
11
|
+
totalWorkItems: 12,
|
|
12
|
+
backend: 'fake',
|
|
13
|
+
hardware: {
|
|
14
|
+
cores: 4,
|
|
15
|
+
loadAverage: [0, 0, 0],
|
|
16
|
+
remoteApiRateLimitBudget: 8,
|
|
17
|
+
fileDescriptorLimit: 4096,
|
|
18
|
+
processCount: 1,
|
|
19
|
+
zellijPaneCount: 0,
|
|
20
|
+
diskIoPressure: 0,
|
|
21
|
+
freeMemoryBytes: 8 * 1024 * 1024 * 1024,
|
|
22
|
+
totalMemoryBytes: 16 * 1024 * 1024 * 1024
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
const dag = verificationDag.buildNarutoVerificationDag(graph, { cwd: root, command: 'node -e "process.exit(0)"' });
|
|
26
|
+
const report = await verificationPool.runNarutoVerificationPool(dag, { ...governor, verification_parallel: 4 }, { cwd: root });
|
|
27
|
+
assertGate(report.ok === true, 'verification pool must pass all fixture shards', report);
|
|
28
|
+
assertGate(report.safe_concurrency === 4, 'verification pool must use its own safe concurrency', report);
|
|
29
|
+
assertGate(report.task_count > 1, 'verification pool must run multiple shards', report);
|
|
30
|
+
assertGate(report.cpu_heavy_cap_respected && report.io_heavy_cap_respected && report.api_rate_cap_respected, 'verification pool must respect resource caps', report);
|
|
31
|
+
emitGate('naruto:verification-pool', {
|
|
32
|
+
task_count: report.task_count,
|
|
33
|
+
safe_concurrency: report.safe_concurrency,
|
|
34
|
+
passed: report.passed
|
|
35
|
+
});
|
|
36
|
+
//# sourceMappingURL=naruto-verification-pool-check.js.map
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// @ts-nocheck
|
|
3
|
+
import { assertGate, emitGate, importDist } from './sks-1-18-gate-lib.js';
|
|
4
|
+
const workGraph = await importDist('core/naruto/naruto-work-graph.js');
|
|
5
|
+
const graph = workGraph.buildNarutoWorkGraph({
|
|
6
|
+
requestedClones: 24,
|
|
7
|
+
totalWorkItems: 30,
|
|
8
|
+
writeCapable: true,
|
|
9
|
+
targetPaths: Array.from({ length: 30 }, (_, index) => `src/fixture-${index}.ts`),
|
|
10
|
+
maxActiveWorkers: 8
|
|
11
|
+
});
|
|
12
|
+
const validation = workGraph.validateNarutoWorkGraph(graph);
|
|
13
|
+
assertGate(graph.ok === true && validation.ok === true, 'Naruto work graph must validate', { graph_blockers: graph.blockers, validation });
|
|
14
|
+
assertGate(graph.total_work_items >= graph.requested_clones, 'work graph must create at least requested clone count', { total: graph.total_work_items, requested: graph.requested_clones });
|
|
15
|
+
assertGate(graph.mixed_work_kinds.length > 4, 'work graph must contain mixed work kinds, not only verification', { kinds: graph.mixed_work_kinds });
|
|
16
|
+
assertGate(graph.write_allowed_count > 0, 'write-capable Naruto graph must include write_allowed work items', { write_allowed_count: graph.write_allowed_count });
|
|
17
|
+
assertGate(graph.active_waves.every((wave) => wave.conflict_count === 0), 'active waves must not overlap write leases', { waves: graph.active_waves });
|
|
18
|
+
emitGate('naruto:work-graph', {
|
|
19
|
+
total_work_items: graph.total_work_items,
|
|
20
|
+
mixed_work_kinds: graph.mixed_work_kinds,
|
|
21
|
+
write_allowed_count: graph.write_allowed_count,
|
|
22
|
+
wave_count: graph.active_waves.length
|
|
23
|
+
});
|
|
24
|
+
//# sourceMappingURL=naruto-work-graph-check.js.map
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// @ts-nocheck
|
|
3
|
+
import { assertGate, emitGate, importDist } from './sks-1-18-gate-lib.js';
|
|
4
|
+
const dashboardMod = await importDist('core/zellij/zellij-naruto-dashboard.js');
|
|
5
|
+
const plan = dashboardMod.planNarutoZellijDashboard({
|
|
6
|
+
targetActiveWorkers: 32,
|
|
7
|
+
visiblePaneCap: 12,
|
|
8
|
+
completed: 8,
|
|
9
|
+
failed: 1,
|
|
10
|
+
backpressure: 'normal',
|
|
11
|
+
roles: ['implementer', 'modifier', 'test_writer', 'verifier'],
|
|
12
|
+
backend: 'codex-sdk'
|
|
13
|
+
});
|
|
14
|
+
assertGate(plan.ok === true, 'Naruto Zellij dashboard plan must pass', plan);
|
|
15
|
+
assertGate(plan.visible_worker_panes === 12, 'targetActiveWorkers=32 and visiblePaneCap=12 must create 12 visible panes', plan);
|
|
16
|
+
assertGate(plan.headless_workers === 20, 'remaining active workers must be listed as headless', plan);
|
|
17
|
+
assertGate(plan.pane_titles.every((title) => /slot-\d+\/gen-1 · .+ · codex-sdk · active/.test(title)), 'pane titles must include slot/gen/role/backend/status', plan);
|
|
18
|
+
emitGate('naruto:zellij-massive-ui', {
|
|
19
|
+
visible_worker_panes: plan.visible_worker_panes,
|
|
20
|
+
headless_workers: plan.headless_workers,
|
|
21
|
+
dashboard: plan.dashboard
|
|
22
|
+
});
|
|
23
|
+
//# sourceMappingURL=naruto-zellij-massive-ui-check.js.map
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// @ts-nocheck
|
|
3
|
+
import { assertGate, emitGate, importDist } from './sks-1-18-gate-lib.js';
|
|
4
|
+
const guardMod = await importDist('core/prompt/prompt-placeholder-guard.js');
|
|
5
|
+
const blocked = guardMod.checkPromptPlaceholders({
|
|
6
|
+
prompt: 'Use @filename and INSERT_PATH_HERE to patch the bug',
|
|
7
|
+
writeCapable: true,
|
|
8
|
+
targetPaths: ['src/core/example.ts']
|
|
9
|
+
});
|
|
10
|
+
const emptyTarget = guardMod.checkPromptPlaceholders({
|
|
11
|
+
prompt: 'Patch the bug',
|
|
12
|
+
writeCapable: true,
|
|
13
|
+
targetPaths: []
|
|
14
|
+
});
|
|
15
|
+
const pass = guardMod.checkPromptPlaceholders({
|
|
16
|
+
prompt: 'Patch src/core/example.ts',
|
|
17
|
+
writeCapable: true,
|
|
18
|
+
targetPaths: ['src/core/example.ts']
|
|
19
|
+
});
|
|
20
|
+
const readonlyWarn = guardMod.checkPromptPlaceholders({
|
|
21
|
+
prompt: 'Inspect @filename',
|
|
22
|
+
writeCapable: false
|
|
23
|
+
});
|
|
24
|
+
assertGate(blocked.ok === false && blocked.blockers.some((item) => String(item).startsWith('unresolved_prompt_placeholder')), 'write-capable Naruto prompt with @filename must block', blocked);
|
|
25
|
+
assertGate(emptyTarget.ok === false && emptyTarget.blockers.includes('write_capable_prompt_target_paths_empty'), 'write-capable Naruto route with empty target paths must block', emptyTarget);
|
|
26
|
+
assertGate(pass.ok === true, 'resolved write-capable prompt must pass placeholder guard', pass);
|
|
27
|
+
assertGate(readonlyWarn.ok === true && readonlyWarn.warnings.length > 0, 'read-only route may warn on placeholders instead of blocking', readonlyWarn);
|
|
28
|
+
emitGate('prompt:placeholder-guard', {
|
|
29
|
+
blocked_placeholders: blocked.placeholders,
|
|
30
|
+
empty_target_blockers: emptyTarget.blockers,
|
|
31
|
+
readonly_warnings: readonlyWarn.warnings
|
|
32
|
+
});
|
|
33
|
+
//# sourceMappingURL=prompt-placeholder-guard-check.js.map
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// @ts-nocheck
|
|
3
|
+
import fs from 'node:fs/promises';
|
|
4
|
+
import os from 'node:os';
|
|
5
|
+
import path from 'node:path';
|
|
6
|
+
import { assertGate, emitGate, readText } from './lib/codex-sdk-gate-lib.js';
|
|
7
|
+
import { importDist, root } from './lib/codex-sdk-gate-lib.js';
|
|
8
|
+
const plane = readText('src/core/codex-control/codex-control-plane.ts');
|
|
9
|
+
const adapter = readText('src/core/codex-control/python-codex-sdk-adapter.ts');
|
|
10
|
+
assertGate(plane.includes("'python-codex-sdk'"), 'Codex Control backend union must include python-codex-sdk');
|
|
11
|
+
assertGate(adapter.includes('runPythonCodexSdkTask'), 'Python SDK adapter must expose a task runner');
|
|
12
|
+
const mod = await importDist('core/codex-control/codex-control-plane.js');
|
|
13
|
+
const schema = await importDist('core/codex-control/schemas/agent-worker-result.schema.js');
|
|
14
|
+
const tmp = await fs.mkdtemp(path.join(os.tmpdir(), 'sks-python-codex-sdk-pipeline-'));
|
|
15
|
+
const oldFake = process.env.SKS_PYTHON_CODEX_SDK_FAKE;
|
|
16
|
+
process.env.SKS_PYTHON_CODEX_SDK_FAKE = '1';
|
|
17
|
+
try {
|
|
18
|
+
const result = await mod.runCodexTask({
|
|
19
|
+
route: '$Agent',
|
|
20
|
+
missionId: 'M-python-sdk-all-pipelines',
|
|
21
|
+
workItemId: 'python-sdk-fixture',
|
|
22
|
+
slotId: 'slot-python-fixture',
|
|
23
|
+
generationIndex: 1,
|
|
24
|
+
sessionId: 'python-sdk-fixture-session',
|
|
25
|
+
cwd: root,
|
|
26
|
+
prompt: 'Hermetic Python Codex SDK backend fixture.',
|
|
27
|
+
inputFiles: [],
|
|
28
|
+
inputImages: [],
|
|
29
|
+
outputSchemaId: schema.CODEX_AGENT_WORKER_RESULT_SCHEMA_ID,
|
|
30
|
+
outputSchema: schema.codexAgentWorkerResultSchema,
|
|
31
|
+
sandboxPolicy: 'read-only',
|
|
32
|
+
requestedScopeContract: { id: 'python-sdk-fixture', read_only: true, allowed_paths: [], write_paths: [] },
|
|
33
|
+
backendPreference: ['python-codex-sdk'],
|
|
34
|
+
mutationLedgerRoot: tmp
|
|
35
|
+
});
|
|
36
|
+
assertGate(result.ok === true, 'Python SDK backend fixture must pass', result);
|
|
37
|
+
assertGate(result.backend === 'python-codex-sdk', 'Python SDK backend fixture must select python-codex-sdk', result);
|
|
38
|
+
assertGate(result.pythonSdkProofPath && result.streamEventCount > 0, 'Python SDK backend fixture must write proof and events', result);
|
|
39
|
+
emitGate('python-sdk:all-pipelines', { backend: result.backend, backend_family: result.backend_family, stream_event_count: result.streamEventCount });
|
|
40
|
+
}
|
|
41
|
+
finally {
|
|
42
|
+
if (oldFake === undefined)
|
|
43
|
+
delete process.env.SKS_PYTHON_CODEX_SDK_FAKE;
|
|
44
|
+
else
|
|
45
|
+
process.env.SKS_PYTHON_CODEX_SDK_FAKE = oldFake;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=python-codex-sdk-all-pipelines-check.js.map
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// @ts-nocheck
|
|
3
|
+
import { assertGate, emitGate, importDist } from './lib/codex-sdk-gate-lib.js';
|
|
4
|
+
const mod = await importDist('core/codex-control/python-codex-sdk-adapter.js');
|
|
5
|
+
const cap = await mod.detectPythonCodexSdkCapability();
|
|
6
|
+
assertGate(['codex-app-server', 'openai-codex', 'openai-codex-sdk'].includes(cap.package_name), 'Python Codex SDK package name mismatch');
|
|
7
|
+
assertGate(cap.ok === true || cap.blockers.includes('python_codex_sdk_unavailable') || cap.blockers.includes('python_missing') || cap.blockers.includes('python_version_below_3_10'), 'Python SDK unavailable must be a capability blocker');
|
|
8
|
+
const requireReal = process.env.SKS_REQUIRE_PYTHON_CODEX_SDK === '1' || process.argv.includes('--require-real');
|
|
9
|
+
if (requireReal && !cap.ok) {
|
|
10
|
+
console.log(JSON.stringify({
|
|
11
|
+
schema: 'sks.release-gate.v1',
|
|
12
|
+
ok: false,
|
|
13
|
+
gate: 'python-sdk:real-smoke',
|
|
14
|
+
capability_ok: cap.ok,
|
|
15
|
+
capability_blockers: cap.blockers,
|
|
16
|
+
setup_action: cap.setup_action,
|
|
17
|
+
python_bin: cap.python_bin,
|
|
18
|
+
python_version: cap.python_version,
|
|
19
|
+
blockers: cap.blockers
|
|
20
|
+
}, null, 2));
|
|
21
|
+
process.exit(1);
|
|
22
|
+
}
|
|
23
|
+
if (requireReal) {
|
|
24
|
+
const plane = await importDist('core/codex-control/codex-control-plane.js');
|
|
25
|
+
const smokeSchema = {
|
|
26
|
+
type: 'object',
|
|
27
|
+
required: ['status', 'summary', 'blockers'],
|
|
28
|
+
properties: {
|
|
29
|
+
status: { type: 'string', enum: ['done'] },
|
|
30
|
+
summary: { type: 'string' },
|
|
31
|
+
blockers: { type: 'array', items: { type: 'string' } }
|
|
32
|
+
},
|
|
33
|
+
additionalProperties: false
|
|
34
|
+
};
|
|
35
|
+
const result = await plane.runCodexTask({
|
|
36
|
+
route: '$Agent',
|
|
37
|
+
missionId: 'M-python-codex-sdk-real-smoke',
|
|
38
|
+
workItemId: 'python-real-smoke',
|
|
39
|
+
slotId: 'slot-python-real',
|
|
40
|
+
generationIndex: 1,
|
|
41
|
+
sessionId: 'python-real-smoke-session',
|
|
42
|
+
cwd: process.cwd(),
|
|
43
|
+
prompt: 'Read-only Python Codex SDK smoke. Do not edit files. Return exactly JSON: {"status":"done","summary":"python-codex-sdk real smoke passed","blockers":[]}',
|
|
44
|
+
inputFiles: [],
|
|
45
|
+
inputImages: [],
|
|
46
|
+
outputSchemaId: 'sks.python-codex-sdk-real-smoke-result.v1',
|
|
47
|
+
outputSchema: smokeSchema,
|
|
48
|
+
sandboxPolicy: 'read-only',
|
|
49
|
+
requestedScopeContract: { id: 'python-real-smoke', read_only: true, allowed_paths: [], write_paths: [] },
|
|
50
|
+
backendPreference: ['python-codex-sdk'],
|
|
51
|
+
mutationLedgerRoot: '.sneakoscope/reports/python-codex-sdk-real-smoke'
|
|
52
|
+
});
|
|
53
|
+
assertGate(result.ok === true, 'real Python Codex SDK smoke failed', result);
|
|
54
|
+
emitGate('python-sdk:real-smoke', {
|
|
55
|
+
status: 'proven',
|
|
56
|
+
capability_ok: cap.ok,
|
|
57
|
+
package_name: cap.package_name,
|
|
58
|
+
import_name: cap.import_name,
|
|
59
|
+
python_bin: cap.python_bin,
|
|
60
|
+
sdk_thread_id: result.sdkThreadId,
|
|
61
|
+
stream_event_count: result.streamEventCount,
|
|
62
|
+
backend: result.backend,
|
|
63
|
+
backend_family: result.backend_family
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
emitGate('python-sdk:capability', {
|
|
68
|
+
capability_ok: cap.ok,
|
|
69
|
+
capability_blockers: cap.blockers,
|
|
70
|
+
package_name: cap.package_name,
|
|
71
|
+
import_name: cap.import_name,
|
|
72
|
+
setup_action: cap.setup_action
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=python-codex-sdk-capability-check.js.map
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// @ts-nocheck
|
|
3
|
+
import { assertGate, emitGate, readText } from './lib/codex-sdk-gate-lib.js';
|
|
4
|
+
const adapter = readText('src/core/codex-control/python-codex-sdk-adapter.ts');
|
|
5
|
+
const runner = readText('pytools/codex_sdk_runner.py');
|
|
6
|
+
assertGate(adapter.includes("workspace_write"), 'TS -> Python sandbox mapping must include workspace_write');
|
|
7
|
+
assertGate(adapter.includes("full_access"), 'TS -> Python sandbox mapping must include full_access');
|
|
8
|
+
assertGate(runner.includes('Sandbox.workspace_write'), 'Python runner must use SDK Sandbox presets');
|
|
9
|
+
emitGate('python-sdk:sandbox-policy', { sandboxes: ['read_only', 'workspace_write', 'full_access'] });
|
|
10
|
+
//# sourceMappingURL=python-codex-sdk-sandbox-policy-check.js.map
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// @ts-nocheck
|
|
3
|
+
import { assertGate, emitGate, importDist } from './lib/codex-sdk-gate-lib.js';
|
|
4
|
+
const mod = await importDist('core/codex-control/python-codex-sdk-event-translator.js');
|
|
5
|
+
const events = mod.translatePythonCodexSdkEvents([
|
|
6
|
+
{ event: 'thread_started', thread_id: 't' },
|
|
7
|
+
{ event: 'turn_completed', turn_id: 'u', status: 'completed', final_response: '{}' }
|
|
8
|
+
]);
|
|
9
|
+
assertGate(events.length === 2, 'Python SDK event translator must preserve stream events');
|
|
10
|
+
assertGate(events[1].event_type === 'turn_completed', 'Python SDK turn completion event missing');
|
|
11
|
+
emitGate('python-sdk:stream-bridge', { event_count: events.length });
|
|
12
|
+
//# sourceMappingURL=python-codex-sdk-stream-bridge-check.js.map
|
|
@@ -23,7 +23,7 @@ const deterministicReleaseEnv = {
|
|
|
23
23
|
SKS_REQUIRE_REAL_COMPUTER_USE: '0'
|
|
24
24
|
};
|
|
25
25
|
const tasks = [
|
|
26
|
-
task('build', 'npm run
|
|
26
|
+
task('build', 'npm run release:dist-freshness --silent', { outputs: ['dist'] }),
|
|
27
27
|
task('runtime:no-src-mjs', 'npm run runtime:no-src-mjs --silent', { dependencies: ['build'] }),
|
|
28
28
|
task('runtime:ts-source-of-truth', 'npm run runtime:ts-source-of-truth --silent', { dependencies: ['build'] }),
|
|
29
29
|
task('architecture:guard', 'npm run architecture:guard --silent', { dependencies: ['build', 'runtime:ts-source-of-truth'] }),
|
|
@@ -30,6 +30,7 @@ else {
|
|
|
30
30
|
}
|
|
31
31
|
for (const [script, extraArgs] of [
|
|
32
32
|
['codex:actual-config-load-probe', []],
|
|
33
|
+
['codex:0.137-compat:require-real', []],
|
|
33
34
|
['codex:0.136-compat:require-real', []],
|
|
34
35
|
['codex:0.135-compat:require-real', []],
|
|
35
36
|
['doctor:codex-doctor-parity:actual', []],
|
|
@@ -49,6 +50,10 @@ if (report.environment_required_checks.some((row) => !row.ok))
|
|
|
49
50
|
finish(false);
|
|
50
51
|
for (const [script, extraArgs] of [
|
|
51
52
|
['codex-sdk:real-smoke', ['--require-real']],
|
|
53
|
+
['local-llm:smoke', ['--require-real']],
|
|
54
|
+
['local-llm:throughput', []],
|
|
55
|
+
['local-llm:cache-performance', []],
|
|
56
|
+
['python-sdk:real-smoke', []],
|
|
52
57
|
['codex:0.134-runner-truth', []],
|
|
53
58
|
['agent:real-codex-patch-envelope-smoke', []],
|
|
54
59
|
['agent:real-codex-parallel-workers', []],
|
|
@@ -65,7 +65,7 @@ const sourceOk = source.includes("action', 'new-pane'")
|
|
|
65
65
|
&& source.includes('zellij_worker_list_panes')
|
|
66
66
|
&& source.includes('provider_context');
|
|
67
67
|
const ok = artifact.ok
|
|
68
|
-
&& artifact.pane_name === 'slot-001/gen-7 · codex-sdk · fast · codex-lb'
|
|
68
|
+
&& artifact.pane_name === 'slot-001/gen-7 · codex-sdk · fast · codex-lb · running'
|
|
69
69
|
&& artifact.pane_kind === 'worker_codex_sdk'
|
|
70
70
|
&& artifact.provider === 'codex-lb'
|
|
71
71
|
&& artifact.service_tier === 'fast'
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sneakoscope",
|
|
3
3
|
"displayName": "ㅅㅋㅅ",
|
|
4
|
-
"version": "2.0.
|
|
4
|
+
"version": "2.0.5",
|
|
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",
|
|
@@ -288,11 +288,30 @@
|
|
|
288
288
|
"local-collab:no-local-only-final": "node ./dist/scripts/local-collab-no-local-only-final-check.js",
|
|
289
289
|
"local-collab:gpt-final-availability": "node ./dist/scripts/local-collab-gpt-final-availability-check.js",
|
|
290
290
|
"local-collab:gpt-final-performance": "node ./dist/scripts/gpt-final-arbiter-performance-check.js",
|
|
291
|
+
"local-llm:capability": "node ./dist/scripts/local-llm-capability-check.js",
|
|
292
|
+
"local-llm:smoke": "node ./dist/scripts/local-llm-smoke-check.js",
|
|
293
|
+
"local-llm:structured-output": "node ./dist/scripts/local-llm-structured-output-check.js",
|
|
294
|
+
"local-llm:tool-call-repair": "node ./dist/scripts/local-llm-tool-call-repair-check.js",
|
|
295
|
+
"local-llm:throughput": "node ./dist/scripts/local-llm-throughput-check.js",
|
|
296
|
+
"local-llm:cache-performance": "node ./dist/scripts/local-llm-cache-performance-check.js",
|
|
297
|
+
"local-llm:warmup": "node ./dist/scripts/local-llm-warmup-check.js",
|
|
298
|
+
"local-llm:all-pipelines": "node ./dist/scripts/local-llm-all-pipelines-check.js",
|
|
299
|
+
"local-collab:all-pipelines-final-gpt": "node ./dist/scripts/local-collab-all-pipelines-final-gpt-check.js",
|
|
300
|
+
"python-sdk:capability": "node ./dist/scripts/python-codex-sdk-capability-check.js",
|
|
301
|
+
"python-sdk:stream-bridge": "node ./dist/scripts/python-codex-sdk-stream-bridge-check.js",
|
|
302
|
+
"python-sdk:sandbox-policy": "node ./dist/scripts/python-codex-sdk-sandbox-policy-check.js",
|
|
303
|
+
"python-sdk:all-pipelines": "node ./dist/scripts/python-codex-sdk-all-pipelines-check.js",
|
|
304
|
+
"python-sdk:real-smoke": "node ./dist/scripts/python-codex-sdk-capability-check.js --require-real",
|
|
305
|
+
"codex:0.137-compat": "node ./dist/scripts/codex-0-137-compat-check.js",
|
|
306
|
+
"codex:0.137-compat:require-real": "node ./dist/scripts/codex-0-137-compat-check.js --require-real",
|
|
307
|
+
"codex:plugin-list-json": "node ./dist/scripts/codex-plugin-list-json-check.js",
|
|
308
|
+
"codex:thread-runtime-choice": "node ./dist/scripts/codex-thread-runtime-choice-check.js",
|
|
309
|
+
"codex:environment-scoped-approvals": "node ./dist/scripts/codex-environment-scoped-approvals-check.js",
|
|
291
310
|
"ultra-router:classification": "node ./dist/scripts/ultra-router-classification-check.js",
|
|
292
311
|
"ultra-router:auto-router": "node ./dist/scripts/ultra-router-auto-router-check.js",
|
|
293
312
|
"coverage": "node --experimental-test-coverage --test \"test/**/*.test.mjs\"",
|
|
294
|
-
"release:check": "npm run release:check:parallel && npm run mad-sks:app-ui-no-mutation && npm run codex-app:fast-ui-preservation && npm run codex-app:ui-clobber-guard && npm run doctor:fixes-codex-app-fast-ui && npm run provider:badge-context && npm run provider:context-config-toml && npm run codex-app:provider-badge && npm run zellij:spawn-on-demand-layout && npm run zellij:worker-pane-manager && npm run zellij:worker-pane-manager-single-owner && npm run agent:worker-pane-communication-contract && npm run runtime:no-mjs-scripts && npm run runtime:ts-python-boundary && npm run codex-sdk:capability && npm run codex-sdk:no-legacy-fallback && npm run codex-sdk:backend-router && npm run codex-sdk:structured-output && npm run codex-sdk:event-stream-ledger && npm run codex-sdk:thread-registry && npm run codex-sdk:sandbox-policy && npm run codex-sdk:zellij-pane-binding && npm run codex-sdk:all-pipelines && npm run codex-sdk:dfix-pipeline && npm run codex-sdk:qa-pipeline && npm run codex-sdk:research-pipeline && npm run codex-sdk:team-naruto-agent-pipeline && npm run codex-sdk:release-review-pipeline && npm run codex-sdk:ux-ppt-review-pipeline && npm run codex-sdk:core-skill-pipeline && npm run codex-control:capability && npm run codex-control:no-legacy-fallback && npm run codex-control:structured-output && npm run codex-control:event-stream-ledger && npm run codex-control:thread-registry && npm run codex-control:side-effect-scope && npm run codex-control:all-pipelines && npm run codex-control:empty-result-retry && npm run codex-control:stream-idle-watchdog && npm run codex-control:tool-call-sequence-repair && npm run codex-control:keepalive-no-cot-leak && npm run local-collab:policy && npm run local-collab:gpt-final-arbiter && npm run local-collab:no-local-only-final && npm run local-collab:gpt-final-availability && npm run ultra-router:classification && npm run ultra-router:auto-router && npm run release:version-truth && npm run codex:0.136-compat && npm run codex:0.135-compat && npm run doctor:codex-doctor-parity && npm run codex:permission-profiles && npm run codex:legacy-profile-consumers-removed && npm run terminal:keyboard-enhancement-safety && npm run terminal:tui-output-stability && npm run codex:resume-cwd-truth && npm run mcp:tool-naming-parity && npm run responses:retry-policy-centralized && npm run runtime:no-tmux && npm run zellij:layout-valid && npm run agent:zellij-dynamic-backfill-panes && npm run agent:worker-pane-communication-contract && npm run agent:slot-pane-binding-proof && npm run zellij:worker-pane-manager && npm run zellij:spawn-on-demand-layout && npm run zellij:lane-renderer && npm run mad-sks:zellij-launch && npm run mad-sks:zellij-default-pane-worker && npm run agent:zellij-runtime && npm run codex:config-eperm-fixture && npm run doctor:fix-proves-codex-read && npm run mad:preflight-blocks-unreadable-config && npm run fast:codex-service-tier-proof && npm run codex:project-config-policy-splitter && npm run test:no-orphan-dist-imports && npm run agent:patch-envelope-extraction && npm run agent:patch-queue-runtime && npm run agent:strategy-to-lease-wiring && npm run agent:patch-swarm-runtime && npm run agent:patch-transaction-journal && npm run agent:patch-conflict-rebase && npm run agent:strategy-to-patch-strict && npm run agent:patch-swarm-runtime-truth && npm run agent:rollback-command && npm run agent:patch-verification-dag && npm run agent:patch-rollback-dag && npm run agent:patch-proof-runtime && npm run agent:patch-swarm-route-blackbox && npm run team:patch-swarm-route-blackbox && npm run dfix:patch-swarm-route-blackbox && npm run appshots:thread-attachment-discovery && npm run mcp:readonly-runtime-scheduler && npm run codex:0.134-runner-truth && npm run agent:native-cli-session-swarm && npm run agent:native-cli-session-swarm-10 && npm run agent:native-cli-session-swarm-20 && npm run agent:no-subagent-scaling && npm run agent:native-cli-session-proof && npm run agent:worker-backend-router && npm run agent:codex-child-overlap && npm run agent:model-authored-patch-envelope && npm run agent:fast-mode-default && npm run agent:fast-mode-worker-propagation && npm run codex:fast-mode-profile-propagation && npm run mad-sks:fast-mode-propagation && npm run zellij:launch-command-truth && npm run zellij:real-session-heartbeat && npm run zellij:ui-design && npm run zellij:doctor-readiness && npm run legacy:upgrade-zero-break && npm run publish:packlist-performance && npm run postinstall:safe-side-effects && npm run runtime:ts-rust-boundary && npm run core-skill:card-schema && npm run core-skill:rollout-scoring && npm run core-skill:patch && npm run core-skill:heldout-validation && npm run core-skill:deployment-snapshot && npm run core-skill:no-inference-optimizer && npm run core-skill:route-runtime-integration && npm run core-skill:promotion-side-effect-ledger && npm run core-skill:legacy-promotion-api-audit && npm run safety:side-effect-zero && npm run safety:mutation-callsite-coverage && npm run safety:mutation-callsite-coverage:repo-wide && npm run side-effect:runtime-report && npm run release:gate-planner && npm run release:dynamic-performance && npm run release:provenance && npm run release:gate-budget && npm run agent:wiki-context-proof && npm run shared-memory:check && npm run wrongness:check && npm run wrongness:fixtures && npm run trust:check && npm run git-collaboration:e2e && node ./dist/scripts/release-check-stamp.js write && npm run release:readiness --silent && node ./dist/scripts/release-check-stamp.js write",
|
|
295
|
-
"release:real-check": "node ./dist/scripts/release-real-check.js && npm run codex-control:real-smoke -- --require-real && npm run codex-sdk:real-smoke -- --require-real && npm run zellij:real-session-launch -- --require-real --main-only --mission M-release-real-zellij-extra --session sks-rrz-extra && npm run zellij:pane-proof -- --require-real --mission M-release-real-zellij-extra --session sks-rrz-extra --expected-lanes 0 && npm run zellij:screen-proof -- --require-real --main-only --mission M-release-real-zellij-extra && npm run zellij:real-session-cleanup -- --mission M-release-real-zellij-extra --session sks-rrz-extra && npm run agent:real-codex-in-zellij-worker-pane -- --require-real && SKS_REQUIRE_LOCAL_LLM=1 SKS_REQUIRE_GPT_FINAL=1 npm run local-collab:gpt-final-performance",
|
|
313
|
+
"release:check": "npm run release:check:parallel && npm run mad-sks:app-ui-no-mutation && npm run codex-app:fast-ui-preservation && npm run codex-app:ui-clobber-guard && npm run doctor:fixes-codex-app-fast-ui && npm run provider:badge-context && npm run provider:context-config-toml && npm run codex-app:provider-badge && npm run zellij:spawn-on-demand-layout && npm run zellij:worker-pane-manager && npm run zellij:worker-pane-manager-single-owner && npm run agent:worker-pane-communication-contract && npm run runtime:no-mjs-scripts && npm run runtime:ts-python-boundary && npm run codex-sdk:capability && npm run codex-sdk:no-legacy-fallback && npm run codex-sdk:backend-router && npm run codex-sdk:structured-output && npm run codex-sdk:event-stream-ledger && npm run codex-sdk:thread-registry && npm run codex-sdk:sandbox-policy && npm run codex-sdk:zellij-pane-binding && npm run codex-sdk:all-pipelines && npm run codex-sdk:dfix-pipeline && npm run codex-sdk:qa-pipeline && npm run codex-sdk:research-pipeline && npm run codex-sdk:team-naruto-agent-pipeline && npm run codex-sdk:release-review-pipeline && npm run codex-sdk:ux-ppt-review-pipeline && npm run codex-sdk:core-skill-pipeline && npm run codex-control:capability && npm run codex-control:no-legacy-fallback && npm run codex-control:structured-output && npm run codex-control:event-stream-ledger && npm run codex-control:thread-registry && npm run codex-control:side-effect-scope && npm run codex-control:all-pipelines && npm run codex-control:empty-result-retry && npm run codex-control:stream-idle-watchdog && npm run codex-control:tool-call-sequence-repair && npm run codex-control:keepalive-no-cot-leak && npm run local-collab:policy && npm run local-collab:gpt-final-arbiter && npm run local-collab:no-local-only-final && npm run local-collab:gpt-final-availability && npm run local-llm:capability && npm run local-llm:structured-output && npm run local-llm:tool-call-repair && npm run local-llm:all-pipelines && npm run local-collab:all-pipelines-final-gpt && npm run python-sdk:capability && npm run python-sdk:stream-bridge && npm run python-sdk:sandbox-policy && npm run python-sdk:all-pipelines && npm run codex:plugin-list-json && npm run codex:thread-runtime-choice && npm run codex:environment-scoped-approvals && npm run ultra-router:classification && npm run ultra-router:auto-router && npm run release:version-truth && npm run codex:0.137-compat && npm run codex:0.136-compat && npm run codex:0.135-compat && npm run doctor:codex-doctor-parity && npm run codex:permission-profiles && npm run codex:legacy-profile-consumers-removed && npm run terminal:keyboard-enhancement-safety && npm run terminal:tui-output-stability && npm run codex:resume-cwd-truth && npm run mcp:tool-naming-parity && npm run responses:retry-policy-centralized && npm run runtime:no-tmux && npm run zellij:layout-valid && npm run agent:zellij-dynamic-backfill-panes && npm run agent:worker-pane-communication-contract && npm run agent:slot-pane-binding-proof && npm run zellij:worker-pane-manager && npm run zellij:spawn-on-demand-layout && npm run zellij:lane-renderer && npm run mad-sks:zellij-launch && npm run mad-sks:zellij-default-pane-worker && npm run agent:zellij-runtime && npm run codex:config-eperm-fixture && npm run doctor:fix-proves-codex-read && npm run mad:preflight-blocks-unreadable-config && npm run fast:codex-service-tier-proof && npm run codex:project-config-policy-splitter && npm run test:no-orphan-dist-imports && npm run agent:patch-envelope-extraction && npm run agent:patch-queue-runtime && npm run agent:strategy-to-lease-wiring && npm run agent:patch-swarm-runtime && npm run agent:patch-transaction-journal && npm run agent:patch-conflict-rebase && npm run agent:strategy-to-patch-strict && npm run agent:patch-swarm-runtime-truth && npm run agent:rollback-command && npm run agent:patch-verification-dag && npm run agent:patch-rollback-dag && npm run agent:patch-proof-runtime && npm run agent:patch-swarm-route-blackbox && npm run team:patch-swarm-route-blackbox && npm run dfix:patch-swarm-route-blackbox && npm run appshots:thread-attachment-discovery && npm run mcp:readonly-runtime-scheduler && npm run naruto:work-graph && npm run naruto:concurrency-governor && npm run naruto:active-pool && npm run naruto:role-distribution && npm run naruto:parallel-patch-apply && npm run naruto:verification-pool && npm run naruto:zellij-massive-ui && npm run naruto:gpt-final-pack && npm run prompt:placeholder-guard && npm run codex:0.134-runner-truth && npm run agent:native-cli-session-swarm && npm run naruto:shadow-clone-swarm && npm run agent:native-cli-session-swarm-10 && npm run agent:native-cli-session-swarm-20 && npm run agent:no-subagent-scaling && npm run agent:native-cli-session-proof && npm run agent:worker-backend-router && npm run agent:codex-child-overlap && npm run agent:model-authored-patch-envelope && npm run agent:fast-mode-default && npm run agent:fast-mode-worker-propagation && npm run codex:fast-mode-profile-propagation && npm run mad-sks:fast-mode-propagation && npm run zellij:launch-command-truth && npm run zellij:real-session-heartbeat && npm run zellij:ui-design && npm run zellij:doctor-readiness && npm run legacy:upgrade-zero-break && npm run publish:packlist-performance && npm run postinstall:safe-side-effects && npm run runtime:ts-rust-boundary && npm run core-skill:card-schema && npm run core-skill:rollout-scoring && npm run core-skill:patch && npm run core-skill:heldout-validation && npm run core-skill:deployment-snapshot && npm run core-skill:no-inference-optimizer && npm run core-skill:route-runtime-integration && npm run core-skill:promotion-side-effect-ledger && npm run core-skill:legacy-promotion-api-audit && npm run safety:side-effect-zero && npm run safety:mutation-callsite-coverage && npm run safety:mutation-callsite-coverage:repo-wide && npm run side-effect:runtime-report && npm run release:gate-planner && npm run release:dynamic-performance && npm run release:provenance && npm run release:gate-budget && npm run agent:wiki-context-proof && npm run shared-memory:check && npm run wrongness:check && npm run wrongness:fixtures && npm run trust:check && npm run git-collaboration:e2e && node ./dist/scripts/release-check-stamp.js write && npm run release:readiness --silent && node ./dist/scripts/release-check-stamp.js write",
|
|
314
|
+
"release:real-check": "node ./dist/scripts/release-real-check.js && npm run codex-control:real-smoke -- --require-real && npm run codex-sdk:real-smoke -- --require-real && SKS_REQUIRE_LOCAL_LLM=1 npm run local-llm:smoke && SKS_REQUIRE_LOCAL_LLM=1 npm run local-llm:throughput && SKS_REQUIRE_LOCAL_LLM=1 npm run local-llm:cache-performance && SKS_REQUIRE_PYTHON_CODEX_SDK=1 npm run python-sdk:real-smoke && SKS_REQUIRE_CODEX_0137=1 npm run codex:0.137-compat:require-real && npm run zellij:real-session-launch -- --require-real --main-only --mission M-release-real-zellij-extra --session sks-rrz-extra && npm run zellij:pane-proof -- --require-real --mission M-release-real-zellij-extra --session sks-rrz-extra --expected-lanes 0 && npm run zellij:screen-proof -- --require-real --main-only --mission M-release-real-zellij-extra && npm run zellij:real-session-cleanup -- --mission M-release-real-zellij-extra --session sks-rrz-extra && npm run agent:real-codex-in-zellij-worker-pane -- --require-real && SKS_REQUIRE_ZELLIJ=1 npm run naruto:zellij-massive-ui -- --require-real && SKS_REQUIRE_LOCAL_LLM=1 SKS_REQUIRE_GPT_FINAL=1 npm run naruto:real-local-gpt-final-smoke && SKS_REQUIRE_LOCAL_LLM=1 SKS_REQUIRE_GPT_FINAL=1 npm run local-collab:gpt-final-performance",
|
|
296
315
|
"release:publish": "npm run publish:npm",
|
|
297
316
|
"publish:dry": "npm run release:metadata && npm run release:version-truth && npm run publish:packlist-performance && npm run prepublish:release-check-or-fast && node ./dist/scripts/release-check-stamp.js verify && npm run release:provenance -- --publish && npm run release:dist-freshness && npm --cache /tmp/sks-npm-cache publish --dry-run --registry https://registry.npmjs.org/ --access public",
|
|
298
317
|
"publish:npm": "npm --cache /tmp/sks-npm-cache publish --registry https://registry.npmjs.org/ --access public",
|
|
@@ -433,6 +452,16 @@
|
|
|
433
452
|
"agent:rollback-command": "node ./dist/scripts/agent-rollback-command-check.js",
|
|
434
453
|
"agent:native-cli-session-swarm": "node ./dist/scripts/agent-native-cli-session-swarm-check.js",
|
|
435
454
|
"naruto:shadow-clone-swarm": "node ./dist/scripts/naruto-shadow-clone-swarm-check.js",
|
|
455
|
+
"naruto:work-graph": "node ./dist/scripts/naruto-work-graph-check.js",
|
|
456
|
+
"naruto:concurrency-governor": "node ./dist/scripts/naruto-concurrency-governor-check.js",
|
|
457
|
+
"naruto:active-pool": "node ./dist/scripts/naruto-active-pool-check.js",
|
|
458
|
+
"naruto:role-distribution": "node ./dist/scripts/naruto-role-distribution-check.js",
|
|
459
|
+
"naruto:parallel-patch-apply": "node ./dist/scripts/naruto-parallel-patch-apply-check.js",
|
|
460
|
+
"naruto:verification-pool": "node ./dist/scripts/naruto-verification-pool-check.js",
|
|
461
|
+
"naruto:zellij-massive-ui": "node ./dist/scripts/naruto-zellij-massive-ui-check.js",
|
|
462
|
+
"naruto:gpt-final-pack": "node ./dist/scripts/naruto-gpt-final-pack-check.js",
|
|
463
|
+
"naruto:real-local-gpt-final-smoke": "node ./dist/scripts/naruto-real-local-gpt-final-smoke.js",
|
|
464
|
+
"prompt:placeholder-guard": "node ./dist/scripts/prompt-placeholder-guard-check.js",
|
|
436
465
|
"agent:native-cli-session-swarm-10": "node ./dist/scripts/agent-native-cli-session-swarm-10-check.js",
|
|
437
466
|
"agent:native-cli-session-swarm-20": "node ./dist/scripts/agent-native-cli-session-swarm-20-check.js",
|
|
438
467
|
"agent:worker-backend-router": "node ./dist/scripts/agent-worker-backend-router-check.js",
|
|
@@ -512,7 +541,7 @@
|
|
|
512
541
|
"license": "MIT",
|
|
513
542
|
"dependencies": {
|
|
514
543
|
"@modelcontextprotocol/sdk": "1.29.0",
|
|
515
|
-
"@openai/codex-sdk": "0.
|
|
544
|
+
"@openai/codex-sdk": "0.137.0",
|
|
516
545
|
"figlet": "^1.11.0",
|
|
517
546
|
"typescript": "^5.9.3"
|
|
518
547
|
},
|