@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.
Files changed (50) hide show
  1. package/README.md +50 -0
  2. package/dist/engines/acp.d.ts +10 -0
  3. package/dist/engines/acp.d.ts.map +1 -1
  4. package/dist/engines/acp.js +12 -1
  5. package/dist/engines/acp.js.map +1 -1
  6. package/dist/engines/acpDriver.d.ts +2 -0
  7. package/dist/engines/acpDriver.d.ts.map +1 -1
  8. package/dist/engines/acpDriver.js +6 -1
  9. package/dist/engines/acpDriver.js.map +1 -1
  10. package/dist/engines/claudeCode.d.ts +6 -4
  11. package/dist/engines/claudeCode.d.ts.map +1 -1
  12. package/dist/engines/claudeCode.js +12 -5
  13. package/dist/engines/claudeCode.js.map +1 -1
  14. package/dist/engines/claudeCodeDriver.d.ts +8 -0
  15. package/dist/engines/claudeCodeDriver.d.ts.map +1 -1
  16. package/dist/engines/claudeCodeDriver.js +14 -1
  17. package/dist/engines/claudeCodeDriver.js.map +1 -1
  18. package/dist/engines/codex.d.ts.map +1 -1
  19. package/dist/engines/codex.js +6 -1
  20. package/dist/engines/codex.js.map +1 -1
  21. package/dist/engines/codexDriver.d.ts +2 -0
  22. package/dist/engines/codexDriver.d.ts.map +1 -1
  23. package/dist/engines/codexDriver.js +15 -9
  24. package/dist/engines/codexDriver.js.map +1 -1
  25. package/dist/engines/index.d.ts +7 -0
  26. package/dist/engines/index.d.ts.map +1 -1
  27. package/dist/engines/index.js +4 -1
  28. package/dist/engines/index.js.map +1 -1
  29. package/dist/engines/isolation.d.ts +45 -0
  30. package/dist/engines/isolation.d.ts.map +1 -0
  31. package/dist/engines/isolation.js +119 -0
  32. package/dist/engines/isolation.js.map +1 -0
  33. package/dist/engines/native.d.ts +9 -1
  34. package/dist/engines/native.d.ts.map +1 -1
  35. package/dist/engines/native.js +71 -1
  36. package/dist/engines/native.js.map +1 -1
  37. package/dist/engines/types.d.ts +22 -0
  38. package/dist/engines/types.d.ts.map +1 -1
  39. package/dist/events.d.ts +6 -0
  40. package/dist/events.d.ts.map +1 -1
  41. package/dist/events.js.map +1 -1
  42. package/dist/index.d.ts +2 -0
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +3 -0
  45. package/dist/index.js.map +1 -1
  46. package/dist/private.d.ts +76 -0
  47. package/dist/private.d.ts.map +1 -0
  48. package/dist/private.js +245 -0
  49. package/dist/private.js.map +1 -0
  50. package/package.json +2 -2
@@ -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.8.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.129.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",