sneakoscope 0.9.15 → 0.9.16
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 +3 -3
- 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/package.json +1 -1
- package/src/commands/doctor.mjs +22 -2
- package/src/commands/hook.mjs +2 -4
- package/src/core/fsx.mjs +1 -1
- package/src/core/hooks-runtime.mjs +5 -2
- package/src/core/init.mjs +2 -0
- package/src/core/version.mjs +1 -1
package/README.md
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
Fast legacy-free proof-first Codex trust layer with image-based Voxel TriWiki.
|
|
4
4
|
|
|
5
|
-
Sneakoscope Codex (`sks`) is a Codex CLI/App harness that makes repeatable Codex work auditable. `0.9.
|
|
5
|
+
Sneakoscope Codex (`sks`) is a Codex CLI/App harness that makes repeatable Codex work auditable. `0.9.16` runs through split command modules, automatically seals serious routes with Completion Proof, binds visual/UI claims to Image Voxel TriWiki anchors and relations, and release-gates hooks, codex-lb, executable fixtures, Rust parity, and DB safety evidence.
|
|
6
6
|
|
|
7
|
-
## 0.9.
|
|
7
|
+
## 0.9.16 Current Release
|
|
8
8
|
|
|
9
|
-
`0.9.
|
|
9
|
+
`0.9.16` preserves the 0.9.14 legacy-free trust layer, keeps the 0.9.15 postinstall bootstrap fix, and installs the Codex App `$Commit` / `$Commit-And-Push` skills during setup and doctor repair.
|
|
10
10
|
|
|
11
11
|
`0.9.14` turned SKS into a legacy-free proof-first trust layer for Codex work:
|
|
12
12
|
|
|
@@ -4,7 +4,7 @@ use std::io::{self, Read, Seek, SeekFrom};
|
|
|
4
4
|
fn main() {
|
|
5
5
|
let mut args = std::env::args().skip(1);
|
|
6
6
|
match args.next().as_deref() {
|
|
7
|
-
Some("--version") => println!("sks-rs 0.9.
|
|
7
|
+
Some("--version") => println!("sks-rs 0.9.16"),
|
|
8
8
|
Some("compact-info") => {
|
|
9
9
|
let mut input = String::new();
|
|
10
10
|
let _ = io::stdin().read_to_string(&mut input);
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sneakoscope",
|
|
3
3
|
"displayName": "ㅅㅋㅅ",
|
|
4
|
-
"version": "0.9.
|
|
4
|
+
"version": "0.9.16",
|
|
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",
|
package/src/commands/doctor.mjs
CHANGED
|
@@ -5,11 +5,23 @@ import { getCodexInfo } from '../core/codex-adapter.mjs';
|
|
|
5
5
|
import { rustInfo } from '../core/rust-accelerator.mjs';
|
|
6
6
|
import { codexAppIntegrationStatus } from '../core/codex-app.mjs';
|
|
7
7
|
import { codexLbMetrics, readCodexLbCircuit } from '../core/codex-lb-circuit.mjs';
|
|
8
|
+
import { ensureGlobalCodexSkillsDuringInstall } from '../cli/install-helpers.mjs';
|
|
9
|
+
import { normalizeInstallScope } from '../core/init.mjs';
|
|
8
10
|
|
|
9
11
|
export async function run(_command, args = []) {
|
|
12
|
+
let repair = null;
|
|
10
13
|
if (flag(args, '--fix')) {
|
|
11
14
|
const { setupCommand } = await import('../core/commands/basic-cli.mjs');
|
|
12
|
-
|
|
15
|
+
const installScope = installScopeFromArgs(args);
|
|
16
|
+
const setupArgs = ['--force', '--install-scope', installScope];
|
|
17
|
+
if (flag(args, '--local-only')) setupArgs.push('--local-only');
|
|
18
|
+
await setupCommand(setupArgs);
|
|
19
|
+
repair = {
|
|
20
|
+
install_scope: installScope,
|
|
21
|
+
global_skills: installScope === 'global' && !flag(args, '--local-only')
|
|
22
|
+
? await ensureGlobalCodexSkillsDuringInstall({ force: true })
|
|
23
|
+
: { status: 'skipped', reason: 'project or local-only repair' }
|
|
24
|
+
};
|
|
13
25
|
}
|
|
14
26
|
const root = await projectRoot();
|
|
15
27
|
const codex = await getCodexInfo().catch((err) => ({ available: false, error: err.message }));
|
|
@@ -27,7 +39,8 @@ export async function run(_command, args = []) {
|
|
|
27
39
|
codex_app: codexApp,
|
|
28
40
|
codex_lb: codexLb,
|
|
29
41
|
sneakoscope: { ok: await exists(`${root}/.sneakoscope`) },
|
|
30
|
-
package: { bytes: pkgBytes, human: formatBytes(pkgBytes) }
|
|
42
|
+
package: { bytes: pkgBytes, human: formatBytes(pkgBytes) },
|
|
43
|
+
repair
|
|
31
44
|
};
|
|
32
45
|
if (flag(args, '--json')) {
|
|
33
46
|
printJson(result);
|
|
@@ -44,3 +57,10 @@ export async function run(_command, args = []) {
|
|
|
44
57
|
console.log(`Ready: ${result.ok ? 'yes' : 'no'}`);
|
|
45
58
|
if (!result.ok) process.exitCode = 1;
|
|
46
59
|
}
|
|
60
|
+
|
|
61
|
+
function installScopeFromArgs(args = []) {
|
|
62
|
+
if (flag(args, '--project')) return 'project';
|
|
63
|
+
if (flag(args, '--global')) return 'global';
|
|
64
|
+
const index = args.indexOf('--install-scope');
|
|
65
|
+
return normalizeInstallScope(index >= 0 && args[index + 1] ? args[index + 1] : 'global');
|
|
66
|
+
}
|
package/src/commands/hook.mjs
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { printJson } from '../cli/output.mjs';
|
|
1
|
+
import { emitHook } from '../core/hooks-runtime.mjs';
|
|
3
2
|
|
|
4
3
|
export async function run(_command, args = []) {
|
|
5
4
|
const [name = 'user-prompt-submit'] = args;
|
|
6
|
-
|
|
7
|
-
return printJson(result);
|
|
5
|
+
return emitHook(name);
|
|
8
6
|
}
|
package/src/core/fsx.mjs
CHANGED
|
@@ -5,7 +5,7 @@ import os from 'node:os';
|
|
|
5
5
|
import crypto from 'node:crypto';
|
|
6
6
|
import { spawn } from 'node:child_process';
|
|
7
7
|
|
|
8
|
-
export const PACKAGE_VERSION = '0.9.
|
|
8
|
+
export const PACKAGE_VERSION = '0.9.16';
|
|
9
9
|
export const DEFAULT_PROCESS_TAIL_BYTES = 256 * 1024;
|
|
10
10
|
export const DEFAULT_PROCESS_TIMEOUT_MS = 30 * 60 * 1000;
|
|
11
11
|
|
|
@@ -1158,8 +1158,11 @@ function normalizeHookResult(name, result = {}) {
|
|
|
1158
1158
|
|
|
1159
1159
|
if (eventName === 'PreToolUse') {
|
|
1160
1160
|
if (out.decision === 'block' || out.permissionDecision === 'deny' || out.decision === 'deny') {
|
|
1161
|
-
normalized.
|
|
1162
|
-
|
|
1161
|
+
normalized.hookSpecificOutput = {
|
|
1162
|
+
hookEventName: 'PreToolUse',
|
|
1163
|
+
permissionDecision: 'deny',
|
|
1164
|
+
permissionDecisionReason: reason
|
|
1165
|
+
};
|
|
1163
1166
|
}
|
|
1164
1167
|
return normalized;
|
|
1165
1168
|
}
|
package/src/core/init.mjs
CHANGED
|
@@ -909,6 +909,8 @@ export async function installSkills(root) {
|
|
|
909
909
|
'computer-use-fast': `---\nname: computer-use-fast\ndescription: Alias for the maximum-speed $Computer-Use/$CU Codex Computer Use lane.\n---\n\nUse the same rules as computer-use: skip Team debate, QA-LOOP clarification, upfront TriWiki refresh, Context7, subagents, and reflection unless explicitly requested. Use Codex Computer Use directly; never substitute Playwright, Chrome MCP, Browser Use, Selenium, Puppeteer, or other browser automation for UI/browser evidence. At the end only, refresh/pack TriWiki, validate it, then provide a concise completion summary plus Honest Mode.\n`,
|
|
910
910
|
'cu': `---\nname: cu\ndescription: Short alias for the maximum-speed $Computer-Use Codex Computer Use lane.\n---\n\nUse the same rules as computer-use. This is a speed lane for focused UI/browser/visual tasks that require Codex Computer Use evidence, with TriWiki refresh/validate and Honest Mode deferred to final closeout.\n`,
|
|
911
911
|
'goal': `---\nname: goal\ndescription: Fast $Goal/$goal bridge overlay for Codex native persisted /goal workflows.\n---\n\nUse when the user invokes $Goal/$goal or asks to persist a workflow with Codex native /goal continuation. Prepare with sks goal create or the $Goal route, write only the lightweight bridge artifacts, then use native Codex /goal create, pause, resume, and clear controls where available. Goal does not replace Team, QA, DB, or other SKS execution routes; continue implementation through the selected route and use Context7 only when external API/library docs are involved. Do not recreate the old no-question loop.\n`,
|
|
912
|
+
'commit': `---\nname: commit\ndescription: Simple git-only route for $Commit requests that stage current changes and create one commit without the full SKS pipeline.\n---\n\nUse only when the user invokes $Commit or explicitly asks to commit the current repository changes without pushing. Keep this route lightweight: inspect git status and the relevant diff summary, avoid Team/pipeline/TriWiki route work unless separately requested, stage the intended current changes, and create one git commit. The commit message must summarize the actual work and include exactly one trailer: Co-authored-by: Codex <noreply@openai.com>. Do not push. If there are no changes, report that no commit was created. Finish with a concise result and a one-line Honest Mode covering the commit hash and any unverified items.\n`,
|
|
913
|
+
'commit-and-push': `---\nname: commit-and-push\ndescription: Simple git-only route for $Commit-And-Push requests that stage current changes, create one commit, and push without the full SKS pipeline.\n---\n\nUse only when the user invokes $Commit-And-Push or explicitly asks to commit and push the current repository changes. Keep this route lightweight: inspect git status and the relevant diff summary, avoid Team/pipeline/TriWiki route work unless separately requested, stage the intended current changes, create one git commit, then push the current branch. The commit message must summarize the actual work and include exactly one trailer: Co-authored-by: Codex <noreply@openai.com>. If there are no changes, do not create an empty commit unless the user explicitly asks for one. Finish with a concise result and a one-line Honest Mode covering the commit hash, pushed branch, and any unverified items.\n`,
|
|
912
914
|
'research': `---\nname: research\ndescription: Dollar-command route for $Research or $research frontier discovery workflows.\n---\n\nUse when the user invokes $Research/$research or asks for research, hypotheses, new mechanisms, falsification, or testable predictions. Prefer sks research prepare and sks research run. Research is not an implementation route: do not edit repository source, docs, package metadata, generated skills, or harness files; write only route-local mission artifacts under .sneakoscope/missions/<mission-id>/. Run the genius-lens scout council with named persona-inspired cognitive roles: Einstein Scout, Feynman Scout, Turing Scout, von Neumann Scout, and Skeptic Scout. These are lenses only; do not impersonate the historical people. Every Research scout ledger row must include display_name, persona, persona_boundary, effort=xhigh, reasoning_effort=xhigh, service_tier when available, one literal "Eureka!" idea, falsifiers, cheap_probes, and challenge_or_response before synthesis. This is not a fixed three-cycle route: repeat source gathering, Eureka ideas, evidence-bound debate, falsification, and synthesis pressure until every scout records final agreement, or until the explicit max-cycle safety cap pauses with an unpassed gate. Create research-source-skill.md as a route-local Skill Creator artifact, then maximize layered public web/source search across latest papers, official/government or leading-institution data, standards/primary docs, current news, public discourse, developer/practitioner sources, traditional background sources, and counterevidence before synthesis. Record research-source-skill.md, source-ledger.json, scout-ledger.json, debate-ledger.json, novelty-ledger.json, falsification-ledger.json, research-report.md, research-paper.md, genius-opinion-summary.md, and research-gate.json. debate-ledger.json must include consensus_iterations, unanimous_consensus, and per-scout agreements; research-gate.json cannot pass until unanimous_consensus=true with every scout agreement recorded. Context7 is optional and only needed when the research topic depends on external package/API/framework docs; do not use it as the default research evidence layer. Normal Research may take one or two hours when needed; favor real source collection, cross-layer comparison, falsification, and a concise paper manuscript over speed. Do not use --mock except for selftests or dry harness checks; if live source execution is unavailable, record a blocker and keep the gate unpassed. Do not use for ordinary code edits.\n`,
|
|
913
915
|
'autoresearch': `---\nname: autoresearch\ndescription: Dollar-command route for $AutoResearch or $autoresearch iterative experiment loops.\n---\n\nUse for $AutoResearch, iterative improvement, SEO/GEO, ranking, workflow, benchmark, or experiments. Define program, hypothesis, experiment, metric, keep/discard, falsification, next step, and Honest Mode. Load seo-geo-optimizer for README/npm/GitHub/schema/AI-search work.\n`,
|
|
914
916
|
'db': `---\nname: db\ndescription: Dollar-command route for $DB or $db database and Supabase safety checks.\n---\n\nUse when the user invokes $DB/$db or the task touches SQL, Supabase, Postgres, migrations, Prisma, Drizzle, Knex, MCP database tools, or production data. Run or follow sks db policy, sks db scan, sks db classify, and sks db check. Destructive database operations remain forbidden.\n`,
|
package/src/core/version.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const PACKAGE_VERSION = '0.9.
|
|
1
|
+
export const PACKAGE_VERSION = '0.9.16';
|