@rarebit-one/harness-kernel 0.8.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +50 -0
- package/dist/engines/acp.d.ts +10 -0
- package/dist/engines/acp.d.ts.map +1 -1
- package/dist/engines/acp.js +12 -1
- package/dist/engines/acp.js.map +1 -1
- package/dist/engines/acpDriver.d.ts +2 -0
- package/dist/engines/acpDriver.d.ts.map +1 -1
- package/dist/engines/acpDriver.js +6 -1
- package/dist/engines/acpDriver.js.map +1 -1
- package/dist/engines/claudeCode.d.ts +6 -4
- package/dist/engines/claudeCode.d.ts.map +1 -1
- package/dist/engines/claudeCode.js +12 -5
- package/dist/engines/claudeCode.js.map +1 -1
- package/dist/engines/claudeCodeDriver.d.ts +8 -0
- package/dist/engines/claudeCodeDriver.d.ts.map +1 -1
- package/dist/engines/claudeCodeDriver.js +14 -1
- package/dist/engines/claudeCodeDriver.js.map +1 -1
- package/dist/engines/codex.d.ts.map +1 -1
- package/dist/engines/codex.js +6 -1
- package/dist/engines/codex.js.map +1 -1
- package/dist/engines/codexDriver.d.ts +2 -0
- package/dist/engines/codexDriver.d.ts.map +1 -1
- package/dist/engines/codexDriver.js +15 -9
- package/dist/engines/codexDriver.js.map +1 -1
- package/dist/engines/index.d.ts +7 -0
- package/dist/engines/index.d.ts.map +1 -1
- package/dist/engines/index.js +4 -1
- package/dist/engines/index.js.map +1 -1
- package/dist/engines/isolation.d.ts +45 -0
- package/dist/engines/isolation.d.ts.map +1 -0
- package/dist/engines/isolation.js +119 -0
- package/dist/engines/isolation.js.map +1 -0
- package/dist/engines/native.d.ts +9 -1
- package/dist/engines/native.d.ts.map +1 -1
- package/dist/engines/native.js +71 -1
- package/dist/engines/native.js.map +1 -1
- package/dist/engines/types.d.ts +22 -0
- package/dist/engines/types.d.ts.map +1 -1
- package/dist/events.d.ts +6 -0
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/private.d.ts +76 -0
- package/dist/private.d.ts.map +1 -0
- package/dist/private.js +245 -0
- package/dist/private.js.map +1 -0
- package/package.json +2 -2
package/dist/private.js
ADDED
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Private runs: the run's observable channels carry phase codes only.
|
|
3
|
+
*
|
|
4
|
+
* A run marked `RunSpec.private` works on material its caller must not let out
|
|
5
|
+
* of the host: the tool arguments, tool results and model prose of such a run
|
|
6
|
+
* are the material itself. Everything else in the kernel assumes the opposite —
|
|
7
|
+
* `log` lines quote tool errors and cancel reasons, and the event stream carries
|
|
8
|
+
* raw tool arguments and every turn's text — so a private run cannot simply
|
|
9
|
+
* reuse those channels and hope each sink redacts.
|
|
10
|
+
*
|
|
11
|
+
* Instead the channels are narrowed at the source. {@link privateRunChannels}
|
|
12
|
+
* wraps a caller's `log` and event sink so that:
|
|
13
|
+
*
|
|
14
|
+
* - **`log` receives no free text at all.** Every line the kernel (or a loop,
|
|
15
|
+
* a context provider, a connector) would have written is dropped, and one
|
|
16
|
+
* fixed-vocabulary phase line is written per event instead.
|
|
17
|
+
* - **Events keep their shape, `seq` and `at`, but lose their content.**
|
|
18
|
+
* Model text, tool arguments, error messages and the final text are
|
|
19
|
+
* removed; the event is marked `redacted: true` so a consumer can tell an
|
|
20
|
+
* empty field from a withheld one. A tool name the run did not register (a
|
|
21
|
+
* name the model made up, which is model output) is replaced as well, and
|
|
22
|
+
* every tool-call id (provider output) becomes a per-run `call-<n>`
|
|
23
|
+
* surrogate. Events are rebuilt from an allow-list of fields, so anything
|
|
24
|
+
* the kernel does not know about is dropped rather than forwarded.
|
|
25
|
+
*
|
|
26
|
+
* What survives is deliberately structural: event types, step numbers, the
|
|
27
|
+
* registered tool names, outcomes, budgets, numeric usage and result sizes in
|
|
28
|
+
* bytes. That is enough for a caller to show progress and account for cost, and
|
|
29
|
+
* none of it is the run's material.
|
|
30
|
+
*
|
|
31
|
+
* The run's return value is NOT narrowed: `EngineResult.text` goes back to the
|
|
32
|
+
* caller that started the run, which decides where (if anywhere) it is written.
|
|
33
|
+
*/
|
|
34
|
+
/** What every withheld string field is replaced with. */
|
|
35
|
+
export const PRIVATE_REDACTION = "[redacted]";
|
|
36
|
+
/** Stands in for a tool name the run never registered (model output). */
|
|
37
|
+
const UNREGISTERED_TOOL = "(unregistered)";
|
|
38
|
+
/**
|
|
39
|
+
* Thrown by an engine in place of whatever a private run threw. The original
|
|
40
|
+
* error's message can quote the run's material (a tool's error, a provider's
|
|
41
|
+
* echo of the prompt), so it is not carried — not as the message and not as
|
|
42
|
+
* `cause`, which error reporters walk and upload. Only the phase survives.
|
|
43
|
+
*/
|
|
44
|
+
export class PrivateRunError extends Error {
|
|
45
|
+
/** Where the run failed: setting the run up, or inside the loop. */
|
|
46
|
+
phase;
|
|
47
|
+
constructor(phase) {
|
|
48
|
+
super(`private run failed during ${phase} (details withheld)`);
|
|
49
|
+
this.name = "PrivateRunError";
|
|
50
|
+
this.phase = phase;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Narrow a run's `log` and event sink for a private run. One instance per run:
|
|
55
|
+
* it learns the registered tool names from that run's `run.started`.
|
|
56
|
+
*/
|
|
57
|
+
export function privateRunChannels(log, sink) {
|
|
58
|
+
let registered;
|
|
59
|
+
const toolName = (name) => (registered?.has(name) ? name : UNREGISTERED_TOOL);
|
|
60
|
+
// Tool-call ids come from the provider's output, so they are model output
|
|
61
|
+
// too. Each is replaced by a surrogate assigned in first-seen order; the map
|
|
62
|
+
// lives for the run, so a turn's call and its tool events still correlate.
|
|
63
|
+
const surrogates = new Map();
|
|
64
|
+
const callId = (id) => {
|
|
65
|
+
let surrogate = surrogates.get(id);
|
|
66
|
+
if (surrogate === undefined) {
|
|
67
|
+
surrogate = `call-${surrogates.size + 1}`;
|
|
68
|
+
surrogates.set(id, surrogate);
|
|
69
|
+
}
|
|
70
|
+
return surrogate;
|
|
71
|
+
};
|
|
72
|
+
// Each redacted event is REBUILT from an allow-list of fields rather than
|
|
73
|
+
// spread from the original: a field the kernel does not know about (one a
|
|
74
|
+
// custom loop added, say) is dropped, never forwarded. Enum-typed fields are
|
|
75
|
+
// re-checked at runtime, since a custom loop's value is only as narrow as
|
|
76
|
+
// its author's types.
|
|
77
|
+
const base = (event) => ({
|
|
78
|
+
seq: event.seq,
|
|
79
|
+
at: event.at,
|
|
80
|
+
redacted: true,
|
|
81
|
+
});
|
|
82
|
+
const redact = (event) => {
|
|
83
|
+
switch (event.type) {
|
|
84
|
+
case "run.started":
|
|
85
|
+
registered = new Set(event.tools);
|
|
86
|
+
return {
|
|
87
|
+
...base(event),
|
|
88
|
+
type: event.type,
|
|
89
|
+
maxSteps: event.maxSteps,
|
|
90
|
+
maxDurationMs: event.maxDurationMs,
|
|
91
|
+
tools: [...event.tools],
|
|
92
|
+
};
|
|
93
|
+
case "model.turn": {
|
|
94
|
+
const usage = redactUsage(event.usage);
|
|
95
|
+
return {
|
|
96
|
+
...base(event),
|
|
97
|
+
type: event.type,
|
|
98
|
+
step: event.step,
|
|
99
|
+
text: "",
|
|
100
|
+
toolCalls: event.toolCalls.map((c) => ({ id: callId(c.id), name: toolName(c.name) })),
|
|
101
|
+
...(usage ? { usage } : {}),
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
case "model.turn.failed":
|
|
105
|
+
return {
|
|
106
|
+
...base(event),
|
|
107
|
+
type: event.type,
|
|
108
|
+
step: event.step,
|
|
109
|
+
phase: "summary",
|
|
110
|
+
error: PRIVATE_REDACTION,
|
|
111
|
+
};
|
|
112
|
+
case "tool.called":
|
|
113
|
+
return {
|
|
114
|
+
...base(event),
|
|
115
|
+
type: event.type,
|
|
116
|
+
step: event.step,
|
|
117
|
+
callId: callId(event.callId),
|
|
118
|
+
name: toolName(event.name),
|
|
119
|
+
input: {},
|
|
120
|
+
...undoFields(event),
|
|
121
|
+
};
|
|
122
|
+
case "tool.succeeded":
|
|
123
|
+
return {
|
|
124
|
+
...base(event),
|
|
125
|
+
type: event.type,
|
|
126
|
+
step: event.step,
|
|
127
|
+
callId: callId(event.callId),
|
|
128
|
+
name: toolName(event.name),
|
|
129
|
+
bytes: event.bytes,
|
|
130
|
+
...undoFields(event),
|
|
131
|
+
};
|
|
132
|
+
case "tool.failed":
|
|
133
|
+
return {
|
|
134
|
+
...base(event),
|
|
135
|
+
type: event.type,
|
|
136
|
+
step: event.step,
|
|
137
|
+
callId: callId(event.callId),
|
|
138
|
+
name: toolName(event.name),
|
|
139
|
+
reason: oneOf(event.reason, FAILURE_REASONS, "threw"),
|
|
140
|
+
error: PRIVATE_REDACTION,
|
|
141
|
+
};
|
|
142
|
+
case "run.budget_exhausted":
|
|
143
|
+
return {
|
|
144
|
+
...base(event),
|
|
145
|
+
type: event.type,
|
|
146
|
+
kind: oneOf(event.kind, BUDGET_KINDS, "steps"),
|
|
147
|
+
step: event.step,
|
|
148
|
+
};
|
|
149
|
+
case "run.finished":
|
|
150
|
+
// `text` is the run's final prose; dropped rather than blanked, the same
|
|
151
|
+
// way the failure path omits it.
|
|
152
|
+
return {
|
|
153
|
+
...base(event),
|
|
154
|
+
type: event.type,
|
|
155
|
+
outcome: oneOf(event.outcome, OUTCOMES, "failed"),
|
|
156
|
+
...(event.steps !== undefined ? { steps: event.steps } : {}),
|
|
157
|
+
...(event.error !== undefined ? { error: PRIVATE_REDACTION } : {}),
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
};
|
|
161
|
+
return {
|
|
162
|
+
log: () => { },
|
|
163
|
+
emit(event) {
|
|
164
|
+
const redacted = redact(event);
|
|
165
|
+
log(phaseLine(redacted));
|
|
166
|
+
sink?.(redacted);
|
|
167
|
+
},
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
const FAILURE_REASONS = ["threw", "unknown_tool", "aborted"];
|
|
171
|
+
const BUDGET_KINDS = ["steps", "duration"];
|
|
172
|
+
const OUTCOMES = ["completed", "steps_exhausted", "timed_out", "canceled", "failed"];
|
|
173
|
+
/** `value` when it is one of `allowed`, else `fallback`. */
|
|
174
|
+
function oneOf(value, allowed, fallback) {
|
|
175
|
+
return allowed.includes(value) ? value : fallback;
|
|
176
|
+
}
|
|
177
|
+
/** Numbers only. A unit-usage `unit` label is provider-supplied text, so it goes. */
|
|
178
|
+
function redactUsage(usage) {
|
|
179
|
+
if (!usage)
|
|
180
|
+
return undefined;
|
|
181
|
+
if ("units" in usage)
|
|
182
|
+
return typeof usage.units === "number" ? { units: usage.units } : undefined;
|
|
183
|
+
const out = {};
|
|
184
|
+
for (const key of [
|
|
185
|
+
"inputTokens",
|
|
186
|
+
"outputTokens",
|
|
187
|
+
"totalTokens",
|
|
188
|
+
"cacheReadTokens",
|
|
189
|
+
"cacheWriteTokens",
|
|
190
|
+
]) {
|
|
191
|
+
const n = usage[key];
|
|
192
|
+
if (typeof n === "number")
|
|
193
|
+
out[key] = n;
|
|
194
|
+
}
|
|
195
|
+
return out;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* The reversibility fields, copied from the tool's own registered metadata
|
|
199
|
+
* (application-supplied, never model output), each only when declared.
|
|
200
|
+
*/
|
|
201
|
+
function undoFields(event) {
|
|
202
|
+
return {
|
|
203
|
+
...(typeof event.reversible === "boolean" ? { reversible: event.reversible } : {}),
|
|
204
|
+
...(event.undoToolName !== undefined ? { undoToolName: event.undoToolName } : {}),
|
|
205
|
+
...(event.undoWindowSeconds !== undefined
|
|
206
|
+
? { undoWindowSeconds: event.undoWindowSeconds }
|
|
207
|
+
: {}),
|
|
208
|
+
...(event.replay === "safe" || event.replay === "unsafe" ? { replay: event.replay } : {}),
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
/** The one log line a redacted event becomes: fixed keys, structural values. */
|
|
212
|
+
function phaseLine(event) {
|
|
213
|
+
switch (event.type) {
|
|
214
|
+
case "run.started":
|
|
215
|
+
return `phase=${event.type} tools=${event.tools.length} max_steps=${event.maxSteps}`;
|
|
216
|
+
case "model.turn":
|
|
217
|
+
return `phase=${event.type} step=${event.step} tool_calls=${event.toolCalls.length}`;
|
|
218
|
+
case "model.turn.failed":
|
|
219
|
+
return `phase=${event.type} step=${event.step} during=${event.phase}`;
|
|
220
|
+
case "tool.called":
|
|
221
|
+
case "tool.succeeded":
|
|
222
|
+
return `phase=${event.type} step=${event.step} tool=${event.name}`;
|
|
223
|
+
case "tool.failed":
|
|
224
|
+
return `phase=${event.type} step=${event.step} tool=${event.name} reason=${event.reason}`;
|
|
225
|
+
case "run.budget_exhausted":
|
|
226
|
+
return `phase=${event.type} step=${event.step} kind=${event.kind}`;
|
|
227
|
+
case "run.finished":
|
|
228
|
+
return `phase=${event.type} outcome=${event.outcome}${event.steps !== undefined ? ` steps=${event.steps}` : ""}`;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* The `supports()` refusal every out-of-process engine gives a private run.
|
|
233
|
+
* Such an engine hands the run's material to a harness process the kernel does
|
|
234
|
+
* not observe, so it cannot keep the private-run guarantees — and per the
|
|
235
|
+
* fail-loud rule it refuses rather than running without them.
|
|
236
|
+
*/
|
|
237
|
+
export function refusePrivateRun(engine, spec) {
|
|
238
|
+
if (!spec.private)
|
|
239
|
+
return undefined;
|
|
240
|
+
return {
|
|
241
|
+
ok: false,
|
|
242
|
+
reason: `${engine} engine cannot run a private run: only the in-process native engine keeps its material off the run's log and event channels`,
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
//# sourceMappingURL=private.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"private.js","sourceRoot":"","sources":["../src/private.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rarebit-one/harness-kernel",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"description": "Provider-neutral AI-harness kernel — LLM adapters, tool-use loop, MCP connectors, and a pluggable agent-engine seam",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Jaryl Sim <code@jaryl.dev>",
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
},
|
|
52
52
|
"dependencies": {
|
|
53
53
|
"@anthropic-ai/claude-agent-sdk": "^0.3.228",
|
|
54
|
-
"@anthropic-ai/sdk": "^0.
|
|
54
|
+
"@anthropic-ai/sdk": "^0.131.0",
|
|
55
55
|
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
56
56
|
"@zed-industries/agent-client-protocol": "^0.4.5",
|
|
57
57
|
"openai": "^7.4.0",
|