@smartmemory/stratum 0.3.4 → 0.4.1
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/dist/cli/guard.js +63 -6
- package/dist/cli/guard.js.map +1 -1
- package/dist/cli/learn.js +226 -0
- package/dist/cli/learn.js.map +1 -0
- package/dist/cli/stratum.js +3 -1
- package/dist/cli/stratum.js.map +1 -1
- package/dist/connectors/background.js +53 -9
- package/dist/connectors/background.js.map +1 -1
- package/dist/connectors/base.js +16 -0
- package/dist/connectors/base.js.map +1 -1
- package/dist/connectors/cancellation.js +119 -0
- package/dist/connectors/cancellation.js.map +1 -0
- package/dist/connectors/claude-bg-worker.js +9 -1
- package/dist/connectors/claude-bg-worker.js.map +1 -1
- package/dist/connectors/claude.js +179 -86
- package/dist/connectors/claude.js.map +1 -1
- package/dist/connectors/codex.js +219 -62
- package/dist/connectors/codex.js.map +1 -1
- package/dist/connectors/runner.js +44 -3
- package/dist/connectors/runner.js.map +1 -1
- package/dist/contracts/events.json +34 -1
- package/dist/contracts/guard-signers.allowed +36 -0
- package/dist/contracts/mcp-surface.json +1085 -104
- package/dist/engine/checkpoint.js +8 -1
- package/dist/engine/checkpoint.js.map +1 -1
- package/dist/engine/engine.js +403 -42
- package/dist/engine/engine.js.map +1 -1
- package/dist/engine/ledger.js +12 -0
- package/dist/engine/ledger.js.map +1 -1
- package/dist/engine/receipts.js +91 -0
- package/dist/engine/receipts.js.map +1 -0
- package/dist/engine/state.js +51 -1
- package/dist/engine/state.js.map +1 -1
- package/dist/guard/authorization.js +71 -0
- package/dist/guard/authorization.js.map +1 -0
- package/dist/guard/descriptors.js +248 -0
- package/dist/guard/descriptors.js.map +1 -0
- package/dist/guard/errors.js +12 -0
- package/dist/guard/errors.js.map +1 -1
- package/dist/guard/evidence.js +24 -3
- package/dist/guard/evidence.js.map +1 -1
- package/dist/guard/sshsig.js +264 -0
- package/dist/guard/sshsig.js.map +1 -0
- package/dist/guard/store.js +13 -0
- package/dist/guard/store.js.map +1 -1
- package/dist/guard/transition.js +484 -33
- package/dist/guard/transition.js.map +1 -1
- package/dist/guard/trust.js +78 -0
- package/dist/guard/trust.js.map +1 -0
- package/dist/judge/judged.js +1 -1
- package/dist/judge/pricing.js +1 -0
- package/dist/judge/pricing.js.map +1 -1
- package/dist/learn/apply.js +600 -0
- package/dist/learn/apply.js.map +1 -0
- package/dist/learn/candidate.js +186 -0
- package/dist/learn/candidate.js.map +1 -0
- package/dist/learn/classify.js +181 -0
- package/dist/learn/classify.js.map +1 -0
- package/dist/learn/harvest.js +138 -0
- package/dist/learn/harvest.js.map +1 -0
- package/dist/learn/smartmemory_egress.js +330 -0
- package/dist/learn/smartmemory_egress.js.map +1 -0
- package/dist/mcp/server.js +150 -22
- package/dist/mcp/server.js.map +1 -1
- package/dist/policy/bundle.js +195 -0
- package/dist/policy/bundle.js.map +1 -0
- package/dist/policy/events.js +51 -0
- package/dist/policy/events.js.map +1 -0
- package/dist/policy/smartmemory_client.js +332 -0
- package/dist/policy/smartmemory_client.js.map +1 -0
- package/dist/policy/types.js +2 -0
- package/dist/policy/types.js.map +1 -0
- package/package.json +3 -2
package/dist/cli/guard.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
/** CLI boundary for the guarded state-machine API. */
|
|
2
|
+
import { AUTHORIZATION_NAMESPACES, authorizationPayload } from "../guard/authorization.js";
|
|
3
|
+
import { inspectDescriptorFile } from "../guard/descriptors.js";
|
|
4
|
+
import { guardChecksum } from "../guard/fingerprint.js";
|
|
2
5
|
import { GuardError } from "../guard/errors.js";
|
|
3
|
-
import { guardHistory, guardMigrate, guardOverride, guardTransition, registerGuard, } from "../guard/transition.js";
|
|
4
|
-
const ACTIONS = new Set(["register", "transition", "override", "migrate", "history"]);
|
|
6
|
+
import { _ledgerHead, guardHistory, guardMigrate, guardOverride, guardTransition, guardUpgrade, registerGuard, } from "../guard/transition.js";
|
|
7
|
+
const ACTIONS = new Set(["register", "transition", "override", "migrate", "upgrade", "authorize", "descriptors", "history"]);
|
|
5
8
|
let testJudge;
|
|
6
9
|
/** Replace only the CLI transition judge in isolated tests. */
|
|
7
10
|
export function setGuardJudgeForTests(judge) {
|
|
@@ -61,11 +64,65 @@ async function dispatch(action, payload) {
|
|
|
61
64
|
...(testJudge ? { judge: testJudge } : {}),
|
|
62
65
|
});
|
|
63
66
|
case "override":
|
|
64
|
-
assertOnlyKeys(payload, ["resource_id", "from_state", "to_state", "
|
|
65
|
-
return guardOverride(required(payload, "resource_id"), required(payload, "from_state"), required(payload, "to_state"), required(payload, "
|
|
67
|
+
assertOnlyKeys(payload, ["resource_id", "from_state", "to_state", "authorization", "rationale", "resolved_by"]);
|
|
68
|
+
return guardOverride(required(payload, "resource_id"), required(payload, "from_state"), required(payload, "to_state"), required(payload, "authorization"), required(payload, "rationale"), optional(payload, "resolved_by", "human"));
|
|
66
69
|
case "migrate":
|
|
67
|
-
assertOnlyKeys(payload, ["resource_id", "new_graph", "new_edge_predicates", "
|
|
68
|
-
return guardMigrate(required(payload, "resource_id"), required(payload, "new_graph"), required(payload, "new_edge_predicates"), required(payload, "
|
|
70
|
+
assertOnlyKeys(payload, ["resource_id", "new_graph", "new_edge_predicates", "authorization", "rationale", "new_terminal", "new_stakes"]);
|
|
71
|
+
return guardMigrate(required(payload, "resource_id"), required(payload, "new_graph"), required(payload, "new_edge_predicates"), required(payload, "authorization"), required(payload, "rationale"), optional(payload, "new_terminal", []), optional(payload, "new_stakes", {}));
|
|
72
|
+
case "upgrade":
|
|
73
|
+
assertOnlyKeys(payload, ["resource_id", "new_graph", "new_edge_predicates", "rationale", "new_terminal", "new_stakes"]);
|
|
74
|
+
return guardUpgrade(required(payload, "resource_id"), required(payload, "new_graph"), required(payload, "new_edge_predicates"), required(payload, "rationale"), optional(payload, "new_terminal", []), optional(payload, "new_stakes", {}));
|
|
75
|
+
// NO `apply-upgrade` action, deliberately. A CLI process inherits the
|
|
76
|
+
// CALLER's environment, so a caller could point both descriptor variables
|
|
77
|
+
// at a file it wrote itself and mint its own authorization — and the ledger
|
|
78
|
+
// would stamp it `resolved_by: "human"`. The privileged apply exists only on
|
|
79
|
+
// the MCP surface, inside the server that owns the pinned environment.
|
|
80
|
+
// See docs/features/STRAT-GUARD-DESCRIPTOR/design.md, "Decision 6".
|
|
81
|
+
case "authorize": {
|
|
82
|
+
// Prints the exact bytes to sign for an override or migrate. Grants
|
|
83
|
+
// nothing: it reads the resource's ledger head, which is not a secret, and
|
|
84
|
+
// produces a payload that is worthless without the operator's signature.
|
|
85
|
+
assertOnlyKeys(payload, ["kind", "resource_id", "from_state", "to_state", "rationale", "new_graph", "new_edge_predicates", "new_terminal", "new_stakes"]);
|
|
86
|
+
const kind = required(payload, "kind");
|
|
87
|
+
if (kind !== "override" && kind !== "migrate")
|
|
88
|
+
throw new TypeError('guard authorize kind must be "override" or "migrate"');
|
|
89
|
+
const resourceId = required(payload, "resource_id");
|
|
90
|
+
const rationale = required(payload, "rationale");
|
|
91
|
+
const ledgerHead = _ledgerHead(resourceId);
|
|
92
|
+
const fields = kind === "override"
|
|
93
|
+
? {
|
|
94
|
+
resource_id: resourceId,
|
|
95
|
+
from_state: required(payload, "from_state"),
|
|
96
|
+
to_state: required(payload, "to_state"),
|
|
97
|
+
rationale,
|
|
98
|
+
ledger_head: ledgerHead,
|
|
99
|
+
}
|
|
100
|
+
: {
|
|
101
|
+
resource_id: resourceId,
|
|
102
|
+
policy_checksum: guardChecksum(required(payload, "new_graph"), required(payload, "new_edge_predicates"), optional(payload, "new_terminal", []), optional(payload, "new_stakes", {})),
|
|
103
|
+
rationale,
|
|
104
|
+
ledger_head: ledgerHead,
|
|
105
|
+
};
|
|
106
|
+
const body = authorizationPayload(kind, fields);
|
|
107
|
+
return {
|
|
108
|
+
status: "ok",
|
|
109
|
+
namespace: AUTHORIZATION_NAMESPACES[kind],
|
|
110
|
+
payload: body,
|
|
111
|
+
instructions: [
|
|
112
|
+
`printf '%s' ${JSON.stringify(body)} > /tmp/guard-authz`,
|
|
113
|
+
`ssh-keygen -Y sign -f <your signing key> -n ${AUTHORIZATION_NAMESPACES[kind]} /tmp/guard-authz`,
|
|
114
|
+
"pass the contents of /tmp/guard-authz.sig as the \"authorization\" argument",
|
|
115
|
+
],
|
|
116
|
+
note: "valid only while this resource's ledger head is unchanged — re-run this after any further transition",
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
case "descriptors": {
|
|
120
|
+
// Operator-facing, deliberately NOT on the MCP surface: an agent has no
|
|
121
|
+
// reason to enumerate what it may ask for, and the digest this prints is
|
|
122
|
+
// what the operator pins into the server env.
|
|
123
|
+
assertOnlyKeys(payload, []);
|
|
124
|
+
return { status: "ok", ...inspectDescriptorFile() };
|
|
125
|
+
}
|
|
69
126
|
case "history":
|
|
70
127
|
assertOnlyKeys(payload, ["resource_id"]);
|
|
71
128
|
return guardHistory(required(payload, "resource_id"));
|
package/dist/cli/guard.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guard.js","sourceRoot":"","sources":["../../src/cli/guard.ts"],"names":[],"mappings":"AAAA,sDAAsD;AAEtD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,aAAa,
|
|
1
|
+
{"version":3,"file":"guard.js","sourceRoot":"","sources":["../../src/cli/guard.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
import { homedir } from "node:os";
|
|
2
|
+
import { join, resolve } from "node:path";
|
|
3
|
+
import { harvest } from "../learn/harvest.js";
|
|
4
|
+
import { classify } from "../learn/classify.js";
|
|
5
|
+
import { appendCandidates, authorCandidate, latestPerCluster, readCandidates, } from "../learn/candidate.js";
|
|
6
|
+
import { applyCandidate, reconcile, revertApply } from "../learn/apply.js";
|
|
7
|
+
import { LearnEgress } from "../learn/smartmemory_egress.js";
|
|
8
|
+
import { StateStore } from "../engine/state.js";
|
|
9
|
+
const USAGE = "Usage: stratum learn <harvest|list|apply|revert|reconcile|egress> [--root <dir>] [--stage] [--json]\n" +
|
|
10
|
+
" stratum learn egress <drain [--run <id>]|verify --run <id>|retry-dead --run <id>>";
|
|
11
|
+
function flag(args, name) {
|
|
12
|
+
return args.includes(`--${name}`);
|
|
13
|
+
}
|
|
14
|
+
function option(args, name) {
|
|
15
|
+
const index = args.indexOf(`--${name}`);
|
|
16
|
+
return index >= 0 ? args[index + 1] : undefined;
|
|
17
|
+
}
|
|
18
|
+
function rootOf(args) {
|
|
19
|
+
return resolve(option(args, "root") ?? process.cwd());
|
|
20
|
+
}
|
|
21
|
+
function sidecarDir(root) {
|
|
22
|
+
return join(root, ".stratum", "learn");
|
|
23
|
+
}
|
|
24
|
+
export async function learnCommand(args) {
|
|
25
|
+
const [subcommand, ...rest] = args;
|
|
26
|
+
switch (subcommand) {
|
|
27
|
+
case "harvest":
|
|
28
|
+
return harvestCommand(rest);
|
|
29
|
+
case "list":
|
|
30
|
+
return listCommand(rest);
|
|
31
|
+
case "apply":
|
|
32
|
+
return applyCommandLine(rest);
|
|
33
|
+
case "revert":
|
|
34
|
+
return revertCommand(rest);
|
|
35
|
+
case "reconcile":
|
|
36
|
+
return reconcileCommand(rest);
|
|
37
|
+
case "egress":
|
|
38
|
+
return egressCommand(rest);
|
|
39
|
+
default:
|
|
40
|
+
process.stderr.write(`${USAGE}\n`);
|
|
41
|
+
return 2;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
async function harvestCommand(args) {
|
|
45
|
+
const root = rootOf(args);
|
|
46
|
+
const flowsDir = option(args, "flows") ?? join(homedir(), ".stratum", "ts", "flows");
|
|
47
|
+
const { records, skipped, droppedEvents } = await harvest(flowsDir);
|
|
48
|
+
const clusters = classify(records);
|
|
49
|
+
const candidates = [];
|
|
50
|
+
const problems = [];
|
|
51
|
+
for (const cluster of clusters) {
|
|
52
|
+
if (cluster.class !== "durable" || !cluster.applyEligible)
|
|
53
|
+
continue;
|
|
54
|
+
if (cluster.scope.workspaceRoot !== root)
|
|
55
|
+
continue;
|
|
56
|
+
try {
|
|
57
|
+
candidates.push(authorCandidate(cluster));
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
problems.push(error instanceof Error ? error.message : String(error));
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// Staging writes a file, so it is opt-in: a plain harvest only reports.
|
|
64
|
+
const staged = flag(args, "stage") ? await appendCandidates(sidecarDir(root), candidates) : 0;
|
|
65
|
+
if (flag(args, "json")) {
|
|
66
|
+
process.stdout.write(JSON.stringify({ records: records.length, skipped, droppedEvents, clusters: clusters.length, candidates, staged }, null, 2) + "\n");
|
|
67
|
+
return 0;
|
|
68
|
+
}
|
|
69
|
+
const durable = clusters.filter((c) => c.class === "durable").length;
|
|
70
|
+
process.stdout.write(`${records.length} failure records (${skipped} runs skipped, ${droppedEvents} events dropped)\n` +
|
|
71
|
+
`${clusters.length} clusters, ${durable} durable, ${candidates.length} for this project\n`);
|
|
72
|
+
for (const candidate of candidates) {
|
|
73
|
+
process.stdout.write(`\n${candidate.rendered.content}\n`);
|
|
74
|
+
if (candidate.requiresHumanAction) {
|
|
75
|
+
process.stdout.write(" (needs a human: the fix target is a spec, which this never edits)\n");
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
if (problems.length > 0)
|
|
79
|
+
process.stdout.write(`\nskipped ${problems.length} cluster(s): ${problems.join("; ")}\n`);
|
|
80
|
+
if (flag(args, "stage"))
|
|
81
|
+
process.stdout.write(`\nstaged ${staged} new candidate(s)\n`);
|
|
82
|
+
else if (candidates.length > 0)
|
|
83
|
+
process.stdout.write("\nre-run with --stage to record these\n");
|
|
84
|
+
return 0;
|
|
85
|
+
}
|
|
86
|
+
async function listCommand(args) {
|
|
87
|
+
const root = rootOf(args);
|
|
88
|
+
const rows = latestPerCluster(await readCandidates(sidecarDir(root)));
|
|
89
|
+
if (flag(args, "json")) {
|
|
90
|
+
process.stdout.write(JSON.stringify(rows, null, 2) + "\n");
|
|
91
|
+
return 0;
|
|
92
|
+
}
|
|
93
|
+
if (rows.length === 0) {
|
|
94
|
+
process.stdout.write("no staged candidates (run: stratum learn harvest --stage)\n");
|
|
95
|
+
return 0;
|
|
96
|
+
}
|
|
97
|
+
for (const row of rows) {
|
|
98
|
+
process.stdout.write(`${row.revisionId.slice(0, 12)} ${row.claim}\n`);
|
|
99
|
+
}
|
|
100
|
+
return 0;
|
|
101
|
+
}
|
|
102
|
+
async function applyCommandLine(args) {
|
|
103
|
+
const root = rootOf(args);
|
|
104
|
+
const revision = args.find((arg) => !arg.startsWith("--") && arg !== option(args, "root"));
|
|
105
|
+
if (revision === undefined) {
|
|
106
|
+
process.stderr.write("Usage: stratum learn apply <revision-id> [--root <dir>]\n");
|
|
107
|
+
return 2;
|
|
108
|
+
}
|
|
109
|
+
const matches = (await readCandidates(sidecarDir(root))).filter((row) => row.revisionId.startsWith(revision));
|
|
110
|
+
if (matches.length === 0) {
|
|
111
|
+
process.stderr.write(`no staged candidate matching ${revision}\n`);
|
|
112
|
+
return 1;
|
|
113
|
+
}
|
|
114
|
+
if (matches.length > 1) {
|
|
115
|
+
// Applying "one of them" is how the wrong lesson gets written.
|
|
116
|
+
process.stderr.write(`ambiguous revision ${revision} matches ${matches.length} candidates: ` +
|
|
117
|
+
`${matches.map((m) => m.revisionId.slice(0, 12)).join(", ")}\n`);
|
|
118
|
+
return 2;
|
|
119
|
+
}
|
|
120
|
+
const candidate = matches[0];
|
|
121
|
+
try {
|
|
122
|
+
const applied = await applyCandidate(candidate, {});
|
|
123
|
+
process.stdout.write(`applied ${applied.applyId} -> ${applied.targetPath}\n`);
|
|
124
|
+
return 0;
|
|
125
|
+
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
process.stderr.write(`${error instanceof Error ? error.message : String(error)}\n`);
|
|
128
|
+
return 1;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
async function revertCommand(args) {
|
|
132
|
+
const root = rootOf(args);
|
|
133
|
+
const applyId = args.find((arg) => !arg.startsWith("--") && arg !== option(args, "root"));
|
|
134
|
+
if (applyId === undefined) {
|
|
135
|
+
process.stderr.write("Usage: stratum learn revert <apply-id> [--root <dir>]\n");
|
|
136
|
+
return 2;
|
|
137
|
+
}
|
|
138
|
+
try {
|
|
139
|
+
await revertApply(applyId, root, {});
|
|
140
|
+
process.stdout.write(`reverted ${applyId}\n`);
|
|
141
|
+
return 0;
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
process.stderr.write(`${error instanceof Error ? error.message : String(error)}\n`);
|
|
145
|
+
return 1;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
async function reconcileCommand(args) {
|
|
149
|
+
try {
|
|
150
|
+
const report = await reconcile(rootOf(args), {});
|
|
151
|
+
process.stdout.write(`completed ${report.completed}, rolled back ${report.rolledBack}, diverged ${report.diverged}\n`);
|
|
152
|
+
return report.diverged > 0 ? 1 : 0;
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
process.stderr.write(`${error instanceof Error ? error.message : String(error)}\n`);
|
|
156
|
+
return 1;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
async function egressCommand(args) {
|
|
160
|
+
const [action, ...rest] = args;
|
|
161
|
+
const runId = option(rest, "run");
|
|
162
|
+
const store = new StateStore(process.env.STRATUM_STATE_ROOT || undefined);
|
|
163
|
+
const locks = new Map();
|
|
164
|
+
const withRunLock = (id, operation) => {
|
|
165
|
+
const previous = locks.get(id) ?? Promise.resolve();
|
|
166
|
+
const result = previous.then(operation);
|
|
167
|
+
const tail = result.catch(() => undefined);
|
|
168
|
+
locks.set(id, tail);
|
|
169
|
+
void tail.then(() => { if (locks.get(id) === tail)
|
|
170
|
+
locks.delete(id); });
|
|
171
|
+
return result;
|
|
172
|
+
};
|
|
173
|
+
const egress = new LearnEgress({
|
|
174
|
+
store,
|
|
175
|
+
withReceiptUpdate: (id, update) => withRunLock(id, async () => {
|
|
176
|
+
const run = await store.load(id);
|
|
177
|
+
const result = await update(run);
|
|
178
|
+
await store.save(run);
|
|
179
|
+
return result;
|
|
180
|
+
}),
|
|
181
|
+
});
|
|
182
|
+
try {
|
|
183
|
+
switch (action) {
|
|
184
|
+
case "drain":
|
|
185
|
+
if (runId === undefined) {
|
|
186
|
+
await egress.drainAll();
|
|
187
|
+
process.stdout.write("SmartMemory egress drain complete\n");
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
await egress.drainRun(runId);
|
|
191
|
+
process.stdout.write(`SmartMemory egress drain complete for ${runId}\n`);
|
|
192
|
+
}
|
|
193
|
+
return 0;
|
|
194
|
+
case "verify": {
|
|
195
|
+
if (runId === undefined)
|
|
196
|
+
return egressUsage("verify requires --run <id>");
|
|
197
|
+
const report = await egress.verifyRun(runId);
|
|
198
|
+
process.stdout.write(`${runId}: missing ${report.missingCount}, duplicates ${report.duplicateCount}, wrong-type ${report.wrongTypeCount}, dead ${report.deadCount}\n`);
|
|
199
|
+
return report.missingCount > 0 ? 1 : 0;
|
|
200
|
+
}
|
|
201
|
+
case "retry-dead": {
|
|
202
|
+
if (runId === undefined)
|
|
203
|
+
return egressUsage("retry-dead requires --run <id>");
|
|
204
|
+
const retried = await egress.retryDead(runId);
|
|
205
|
+
process.stdout.write(`${runId}: retried ${retried} dead receipt(s)\n`);
|
|
206
|
+
return 0;
|
|
207
|
+
}
|
|
208
|
+
default:
|
|
209
|
+
return egressUsage();
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
catch (error) {
|
|
213
|
+
process.stderr.write(`stratum learn egress: ${error instanceof Error ? error.message : String(error)}\n`);
|
|
214
|
+
return 1;
|
|
215
|
+
}
|
|
216
|
+
finally {
|
|
217
|
+
await egress.close();
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
function egressUsage(problem) {
|
|
221
|
+
if (problem !== undefined)
|
|
222
|
+
process.stderr.write(`stratum learn egress: ${problem}\n`);
|
|
223
|
+
process.stderr.write("Usage: stratum learn egress <drain [--run <id>]|verify --run <id>|retry-dead --run <id>>\n");
|
|
224
|
+
return 2;
|
|
225
|
+
}
|
|
226
|
+
//# sourceMappingURL=learn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"learn.js","sourceRoot":"","sources":["../../src/cli/learn.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/stratum.js
CHANGED
|
@@ -34,9 +34,11 @@ export async function main(argv = process.argv.slice(2)) {
|
|
|
34
34
|
return (await import("./mcp_install.js")).doctorCommand(args);
|
|
35
35
|
if (command === "upgrade" || command === "update")
|
|
36
36
|
return (await import("./mcp_install.js")).upgradeCommand(args);
|
|
37
|
+
if (command === "learn")
|
|
38
|
+
return (await import("./learn.js")).learnCommand(args);
|
|
37
39
|
if (command === "watch")
|
|
38
40
|
return watchCommand(args);
|
|
39
|
-
process.stderr.write("Usage: stratum <validate|migrate|query|gate|guard|mcp|doctor|upgrade|watch> ...\n");
|
|
41
|
+
process.stderr.write("Usage: stratum <validate|migrate|query|gate|guard|learn|mcp|doctor|upgrade|watch> ...\n");
|
|
40
42
|
return 2;
|
|
41
43
|
}
|
|
42
44
|
async function validateCommand(args) {
|
package/dist/cli/stratum.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stratum.js","sourceRoot":"","sources":["../../src/cli/stratum.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"stratum.js","sourceRoot":"","sources":["../../src/cli/stratum.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { randomBytes } from "node:crypto";
|
|
2
2
|
import { spawn } from "node:child_process";
|
|
3
|
-
import { createReadStream } from "node:fs";
|
|
4
|
-
import {
|
|
3
|
+
import { constants, createReadStream } from "node:fs";
|
|
4
|
+
import { mkdir, open, readFile, rename, stat, writeFile } from "node:fs/promises";
|
|
5
5
|
import { homedir } from "node:os";
|
|
6
6
|
import { dirname, join } from "node:path";
|
|
7
7
|
import { fileURLToPath } from "node:url";
|
|
8
8
|
import { Worker } from "node:worker_threads";
|
|
9
9
|
import { finiteNonnegative, modelIdentity } from "./base.js";
|
|
10
|
-
import { applyHeadlessShellEnv, codexCommand, defaultCodexModel, withSandboxPreamble } from "./codex.js";
|
|
10
|
+
import { applyHeadlessShellEnv, codexCommand, codexModelWithEffort, defaultCodexModel, withSandboxPreamble } from "./codex.js";
|
|
11
11
|
import { procStartTime, processGroupId, processIdentityMatches } from "./proc_identity.js";
|
|
12
12
|
const claudeWorkerRegistry = new Map();
|
|
13
13
|
// Single serialization point for all terminal writes on a claude bg run.
|
|
@@ -64,7 +64,7 @@ export async function startBackgroundRun(options) {
|
|
|
64
64
|
writeFile(stderrPath, "", { encoding: "utf8", mode: 0o600 }),
|
|
65
65
|
writeFile(inputPath, withSandboxPreamble(options.prompt), { encoding: "utf8", mode: 0o600 }),
|
|
66
66
|
]);
|
|
67
|
-
const model = options.model ?? defaultCodexModel();
|
|
67
|
+
const model = codexModelWithEffort(options.model ?? (options.effort === undefined ? defaultCodexModel() : modelIdentity(defaultCodexModel()).model), options.effort);
|
|
68
68
|
const command = options.command ?? codexCommand(model, options.cwd, sandboxMode);
|
|
69
69
|
const env = {
|
|
70
70
|
...(options.env ?? process.env),
|
|
@@ -147,6 +147,8 @@ async function startClaudeBackgroundRun(options) {
|
|
|
147
147
|
prompt: options.prompt,
|
|
148
148
|
connectorOptions: {
|
|
149
149
|
model,
|
|
150
|
+
...(options.thinking !== undefined ? { thinking: options.thinking } : {}),
|
|
151
|
+
...(options.effort !== undefined ? { effort: options.effort } : {}),
|
|
150
152
|
cwd: options.cwd,
|
|
151
153
|
...(options.allowedTools !== undefined ? { allowedTools: options.allowedTools } : {}),
|
|
152
154
|
...(options.disallowedTools !== undefined ? { disallowedTools: options.disallowedTools } : {}),
|
|
@@ -193,7 +195,7 @@ async function startClaudeBackgroundRun(options) {
|
|
|
193
195
|
const scan = await scanStream(streamPath);
|
|
194
196
|
if (scan.exitCode !== undefined)
|
|
195
197
|
return; // worker's terminal record is authoritative
|
|
196
|
-
await
|
|
198
|
+
await appendExistingStream(streamPath, errorLine + sentinelLine);
|
|
197
199
|
});
|
|
198
200
|
});
|
|
199
201
|
const meta = {
|
|
@@ -253,7 +255,7 @@ export async function pollBackgroundRun(runId, options = {}) {
|
|
|
253
255
|
}
|
|
254
256
|
const telemetry = await terminalTelemetry(loaded.meta, streamPath);
|
|
255
257
|
if (scan.exitCode === 0 && scan.error === undefined) {
|
|
256
|
-
return { status: "complete", runId, text, usage: scan.usage, exitCode: 0, telemetry };
|
|
258
|
+
return { status: "complete", runId, text, usage: scan.usage, split: scan.split, ...(scan.usdSource !== undefined ? { usdSource: scan.usdSource } : {}), exitCode: 0, telemetry };
|
|
257
259
|
}
|
|
258
260
|
return {
|
|
259
261
|
status: "error", runId, exitCode: scan.exitCode, textTail: text,
|
|
@@ -280,7 +282,7 @@ export async function pollBackgroundRun(runId, options = {}) {
|
|
|
280
282
|
}
|
|
281
283
|
const telemetry = await terminalTelemetry(loaded.meta, streamPath);
|
|
282
284
|
if (scan.exitCode === 0 && scan.error === undefined) {
|
|
283
|
-
return { status: "complete", runId, text, usage: scan.usage, exitCode: 0, telemetry };
|
|
285
|
+
return { status: "complete", runId, text, usage: scan.usage, split: scan.split, ...(scan.usdSource !== undefined ? { usdSource: scan.usdSource } : {}), exitCode: 0, telemetry };
|
|
284
286
|
}
|
|
285
287
|
return {
|
|
286
288
|
status: "error", runId, exitCode: scan.exitCode, textTail: text,
|
|
@@ -422,6 +424,11 @@ async function scanStream(path) {
|
|
|
422
424
|
let text = "";
|
|
423
425
|
let inputTokens = 0;
|
|
424
426
|
let outputTokens = 0;
|
|
427
|
+
let cacheRead = 0;
|
|
428
|
+
let cacheCreation = 0;
|
|
429
|
+
// Claude bg worker writes the SDK's cumulative total_cost_usd on turn.completed;
|
|
430
|
+
// codex streams carry no price. Last value wins (it is cumulative).
|
|
431
|
+
let costUsd = 0;
|
|
425
432
|
let exitCode;
|
|
426
433
|
let error;
|
|
427
434
|
let eventsSeen = 0;
|
|
@@ -440,9 +447,26 @@ async function scanStream(path) {
|
|
|
440
447
|
if (record.type === "turn.completed" && isRecord(record.usage)) {
|
|
441
448
|
inputTokens += finiteNonnegative(record.usage.input_tokens);
|
|
442
449
|
outputTokens += finiteNonnegative(record.usage.output_tokens);
|
|
450
|
+
cacheRead += finiteNonnegative(record.usage.cache_read_input_tokens);
|
|
451
|
+
cacheCreation += finiteNonnegative(record.usage.cache_creation_input_tokens);
|
|
452
|
+
if (typeof record.usage.total_cost_usd === "number")
|
|
453
|
+
costUsd = finiteNonnegative(record.usage.total_cost_usd);
|
|
443
454
|
}
|
|
444
455
|
}
|
|
445
|
-
return {
|
|
456
|
+
return {
|
|
457
|
+
text,
|
|
458
|
+
usage: { ...(costUsd > 0 ? { usd: costUsd } : {}), tokens: inputTokens + outputTokens },
|
|
459
|
+
split: {
|
|
460
|
+
input: inputTokens,
|
|
461
|
+
output: outputTokens,
|
|
462
|
+
...(cacheRead > 0 ? { cacheRead } : {}),
|
|
463
|
+
...(cacheCreation > 0 ? { cacheCreation } : {}),
|
|
464
|
+
},
|
|
465
|
+
...(costUsd > 0 ? { usdSource: "reported" } : {}),
|
|
466
|
+
...(exitCode !== undefined ? { exitCode } : {}),
|
|
467
|
+
...(error ? { error } : {}),
|
|
468
|
+
eventsSeen,
|
|
469
|
+
};
|
|
446
470
|
}
|
|
447
471
|
// Writes a sentinel to the stream only if none is present yet.
|
|
448
472
|
// Used by exit/error handlers. Cancel path calls this via claimFinalization().
|
|
@@ -451,7 +475,27 @@ async function writeSentinelIfAbsent(streamPath, exitCode) {
|
|
|
451
475
|
if (scan.exitCode !== undefined)
|
|
452
476
|
return; // already has a sentinel
|
|
453
477
|
const line = JSON.stringify({ [T2F5_DONE_SENTINEL]: exitCode }) + "\n";
|
|
454
|
-
await
|
|
478
|
+
await appendExistingStream(streamPath, line);
|
|
479
|
+
}
|
|
480
|
+
// Terminal artifacts may be removed as soon as the caller sees the sentinel,
|
|
481
|
+
// before the worker exit handler runs. Never resurrect a deleted stream during
|
|
482
|
+
// fallback finalization. O_APPEND retains atomic append semantics against workers.
|
|
483
|
+
async function appendExistingStream(path, text) {
|
|
484
|
+
let handle;
|
|
485
|
+
try {
|
|
486
|
+
handle = await open(path, constants.O_WRONLY | constants.O_APPEND);
|
|
487
|
+
}
|
|
488
|
+
catch (error) {
|
|
489
|
+
if (error.code === "ENOENT")
|
|
490
|
+
return;
|
|
491
|
+
throw error;
|
|
492
|
+
}
|
|
493
|
+
try {
|
|
494
|
+
await handle.writeFile(text, "utf8");
|
|
495
|
+
}
|
|
496
|
+
finally {
|
|
497
|
+
await handle.close();
|
|
498
|
+
}
|
|
455
499
|
}
|
|
456
500
|
async function* completeJsonLines(path) {
|
|
457
501
|
let stream;
|