@ashlr/hub 2.2.0 → 3.0.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/CHANGELOG.md +55 -0
- package/README.md +59 -2
- package/dist/api/plugin.d.ts +1 -0
- package/dist/cli/backlog.js +2 -0
- package/dist/cli/backlog.js.map +1 -1
- package/dist/cli/digest.d.ts +6 -0
- package/dist/cli/digest.js +127 -2
- package/dist/cli/digest.js.map +1 -1
- package/dist/cli/eval-fixtures.d.ts +18 -0
- package/dist/cli/eval-fixtures.js +38 -0
- package/dist/cli/eval-fixtures.js.map +1 -0
- package/dist/cli/eval.d.ts +56 -0
- package/dist/cli/eval.js +283 -0
- package/dist/cli/eval.js.map +1 -0
- package/dist/cli/fleet.d.ts +27 -0
- package/dist/cli/fleet.js +222 -0
- package/dist/cli/fleet.js.map +1 -0
- package/dist/cli/goal.d.ts +15 -0
- package/dist/cli/goal.js +91 -0
- package/dist/cli/goal.js.map +1 -0
- package/dist/cli/help.js +10 -3
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/inbox.d.ts +6 -0
- package/dist/cli/inbox.js +183 -8
- package/dist/cli/inbox.js.map +1 -1
- package/dist/cli/index.js +42 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/loop.d.ts +16 -0
- package/dist/cli/loop.js +66 -0
- package/dist/cli/loop.js.map +1 -0
- package/dist/cli/mcp.d.ts +12 -0
- package/dist/cli/mcp.js +148 -0
- package/dist/cli/mcp.js.map +1 -1
- package/dist/cli/onboard.d.ts +16 -0
- package/dist/cli/onboard.js +71 -0
- package/dist/cli/onboard.js.map +1 -1
- package/dist/cli/plugins.js +9 -8
- package/dist/cli/plugins.js.map +1 -1
- package/dist/cli/pulse.d.ts +10 -0
- package/dist/cli/pulse.js +261 -0
- package/dist/cli/pulse.js.map +1 -1
- package/dist/cli/run.js +21 -3
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/stack.d.ts +34 -0
- package/dist/cli/stack.js +221 -0
- package/dist/cli/stack.js.map +1 -0
- package/dist/cli/update.js +12 -5
- package/dist/cli/update.js.map +1 -1
- package/dist/core/daemon/loop.d.ts +10 -5
- package/dist/core/daemon/loop.js +167 -37
- package/dist/core/daemon/loop.js.map +1 -1
- package/dist/core/env-bridge.js +3 -2
- package/dist/core/env-bridge.js.map +1 -1
- package/dist/core/fleet/automerge-pass.d.ts +33 -0
- package/dist/core/fleet/automerge-pass.js +61 -0
- package/dist/core/fleet/automerge-pass.js.map +1 -0
- package/dist/core/fleet/quota.d.ts +70 -0
- package/dist/core/fleet/quota.js +198 -0
- package/dist/core/fleet/quota.js.map +1 -0
- package/dist/core/fleet/router.d.ts +46 -0
- package/dist/core/fleet/router.js +121 -0
- package/dist/core/fleet/router.js.map +1 -0
- package/dist/core/fleet/self.d.ts +58 -0
- package/dist/core/fleet/self.js +187 -0
- package/dist/core/fleet/self.js.map +1 -0
- package/dist/core/fleet/status.d.ts +54 -0
- package/dist/core/fleet/status.js +157 -0
- package/dist/core/fleet/status.js.map +1 -0
- package/dist/core/foundry/provenance.d.ts +78 -0
- package/dist/core/foundry/provenance.js +172 -0
- package/dist/core/foundry/provenance.js.map +1 -0
- package/dist/core/git.d.ts +13 -0
- package/dist/core/git.js +26 -0
- package/dist/core/git.js.map +1 -1
- package/dist/core/inbox/merge.d.ts +151 -0
- package/dist/core/inbox/merge.js +858 -0
- package/dist/core/inbox/merge.js.map +1 -0
- package/dist/core/inbox/store.js +10 -1
- package/dist/core/inbox/store.js.map +1 -1
- package/dist/core/integrations/markdown.d.ts +66 -0
- package/dist/core/integrations/markdown.js +132 -0
- package/dist/core/integrations/markdown.js.map +1 -0
- package/dist/core/integrations/secrets.d.ts +37 -0
- package/dist/core/integrations/secrets.js +67 -0
- package/dist/core/integrations/secrets.js.map +1 -0
- package/dist/core/integrations/stack.d.ts +47 -0
- package/dist/core/integrations/stack.js +107 -0
- package/dist/core/integrations/stack.js.map +1 -0
- package/dist/core/mcp-native-engineer.d.ts +123 -0
- package/dist/core/mcp-native-engineer.js +936 -0
- package/dist/core/mcp-native-engineer.js.map +1 -0
- package/dist/core/mcp-native.js +20 -42
- package/dist/core/mcp-native.js.map +1 -1
- package/dist/core/mcp-registry.js +2 -0
- package/dist/core/mcp-registry.js.map +1 -1
- package/dist/core/observability/codex-source.d.ts +53 -0
- package/dist/core/observability/codex-source.js +390 -0
- package/dist/core/observability/codex-source.js.map +1 -0
- package/dist/core/observability/estimate.d.ts +12 -0
- package/dist/core/observability/estimate.js +26 -0
- package/dist/core/observability/estimate.js.map +1 -1
- package/dist/core/observability/limits.d.ts +52 -0
- package/dist/core/observability/limits.js +316 -0
- package/dist/core/observability/limits.js.map +1 -0
- package/dist/core/observability/usage-source.js +3 -1
- package/dist/core/observability/usage-source.js.map +1 -1
- package/dist/core/portfolio/scanners.d.ts +1 -0
- package/dist/core/portfolio/scanners.js +40 -1
- package/dist/core/portfolio/scanners.js.map +1 -1
- package/dist/core/providers.js +4 -0
- package/dist/core/providers.js.map +1 -1
- package/dist/core/quality/health.js +1 -0
- package/dist/core/quality/health.js.map +1 -1
- package/dist/core/run/agent-loop.d.ts +8 -0
- package/dist/core/run/agent-loop.js +24 -14
- package/dist/core/run/agent-loop.js.map +1 -1
- package/dist/core/run/engine-registry.d.ts +48 -0
- package/dist/core/run/engine-registry.js +190 -0
- package/dist/core/run/engine-registry.js.map +1 -0
- package/dist/core/run/engines.d.ts +17 -3
- package/dist/core/run/engines.js +63 -44
- package/dist/core/run/engines.js.map +1 -1
- package/dist/core/run/learned-router.d.ts +121 -0
- package/dist/core/run/learned-router.js +374 -0
- package/dist/core/run/learned-router.js.map +1 -0
- package/dist/core/run/model-manager.js +3 -3
- package/dist/core/run/model-manager.js.map +1 -1
- package/dist/core/run/model-profile.d.ts +67 -0
- package/dist/core/run/model-profile.js +132 -0
- package/dist/core/run/model-profile.js.map +1 -0
- package/dist/core/run/orchestrator.d.ts +1 -1
- package/dist/core/run/orchestrator.js +642 -510
- package/dist/core/run/orchestrator.js.map +1 -1
- package/dist/core/run/prompts/budget.d.ts +25 -0
- package/dist/core/run/prompts/budget.js +51 -0
- package/dist/core/run/prompts/budget.js.map +1 -0
- package/dist/core/run/prompts/index.d.ts +14 -0
- package/dist/core/run/prompts/index.js +59 -0
- package/dist/core/run/prompts/index.js.map +1 -0
- package/dist/core/run/prompts/layers.d.ts +26 -0
- package/dist/core/run/prompts/layers.js +73 -0
- package/dist/core/run/prompts/layers.js.map +1 -0
- package/dist/core/run/prompts/roles.d.ts +23 -0
- package/dist/core/run/prompts/roles.js +48 -0
- package/dist/core/run/prompts/roles.js.map +1 -0
- package/dist/core/run/prompts/types.d.ts +38 -0
- package/dist/core/run/prompts/types.js +5 -0
- package/dist/core/run/prompts/types.js.map +1 -0
- package/dist/core/run/provider-client.d.ts +6 -24
- package/dist/core/run/provider-client.js +125 -61
- package/dist/core/run/provider-client.js.map +1 -1
- package/dist/core/run/router.js +8 -0
- package/dist/core/run/router.js.map +1 -1
- package/dist/core/run/sandboxed-engine.d.ts +66 -0
- package/dist/core/run/sandboxed-engine.js +262 -0
- package/dist/core/run/sandboxed-engine.js.map +1 -0
- package/dist/core/run/verify-commands.d.ts +83 -0
- package/dist/core/run/verify-commands.js +234 -0
- package/dist/core/run/verify-commands.js.map +1 -0
- package/dist/core/run/verify.d.ts +31 -1
- package/dist/core/run/verify.js +48 -0
- package/dist/core/run/verify.js.map +1 -1
- package/dist/core/sandbox/audit.d.ts +27 -0
- package/dist/core/sandbox/audit.js +34 -0
- package/dist/core/sandbox/audit.js.map +1 -1
- package/dist/core/sandbox/confine.d.ts +134 -0
- package/dist/core/sandbox/confine.js +370 -0
- package/dist/core/sandbox/confine.js.map +1 -0
- package/dist/core/types.d.ts +227 -5
- package/dist/core/web/api.js +77 -28
- package/dist/core/web/api.js.map +1 -1
- package/dist/core/web/control.d.ts +116 -0
- package/dist/core/web/control.js +307 -0
- package/dist/core/web/control.js.map +1 -0
- package/dist/core/web/public/app.js +512 -6
- package/dist/core/web/public/styles.css +468 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify-commands.js","sourceRoot":"","sources":["../../../src/core/run/verify-commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* - Mutates `usage` in-place (same pattern as agent-loop.ts) to account for
|
|
11
11
|
* the optional model check.
|
|
12
12
|
*/
|
|
13
|
-
import type { RunTask, ProviderClient, RunBudget, RunUsage, VerifyVerdict } from '../types.js';
|
|
13
|
+
import type { RunTask, ProviderClient, RunBudget, RunUsage, VerifyVerdict, AshlrConfig } from '../types.js';
|
|
14
14
|
/**
|
|
15
15
|
* Judge whether `task.result` plausibly satisfies `task.goal`.
|
|
16
16
|
*
|
|
@@ -28,3 +28,33 @@ import type { RunTask, ProviderClient, RunBudget, RunUsage, VerifyVerdict } from
|
|
|
28
28
|
export declare function verifyTask(task: RunTask, client: ProviderClient, budget: RunBudget, usage: RunUsage, opts?: {
|
|
29
29
|
model?: boolean;
|
|
30
30
|
}): Promise<VerifyVerdict>;
|
|
31
|
+
/**
|
|
32
|
+
* A VerifyVerdict enriched with the command that produced it. When a structured
|
|
33
|
+
* (command) verification fails, `command` names the failing command and
|
|
34
|
+
* `failure` carries the tail of its output for the repair loop to feed back.
|
|
35
|
+
*/
|
|
36
|
+
export interface StructuredVerdict extends VerifyVerdict {
|
|
37
|
+
/** The verify command that produced this verdict (when method === 'command'). */
|
|
38
|
+
command?: string;
|
|
39
|
+
/** Tail of the failing command's output (~2KB), for repair feedback. */
|
|
40
|
+
failure?: string;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Structured verification for a completed task.
|
|
44
|
+
*
|
|
45
|
+
* When a workspace is available AND execution is permitted AND detectable
|
|
46
|
+
* verify commands exist, run them in order (typecheck → test → lint). The FIRST
|
|
47
|
+
* non-ok command short-circuits to a failure verdict carrying the command + a
|
|
48
|
+
* tail of its output. When every command passes, return an ok 'command' verdict.
|
|
49
|
+
*
|
|
50
|
+
* Otherwise (no workspace, exec not allowed, no cfg, or nothing detected) fall
|
|
51
|
+
* back to the heuristic/model verifyTask, wrapped to the StructuredVerdict shape.
|
|
52
|
+
*
|
|
53
|
+
* Never throws (runVerifyCommand and verifyTask are both non-throwing).
|
|
54
|
+
*/
|
|
55
|
+
export declare function verifyTaskStructured(task: RunTask, client: ProviderClient, budget: RunBudget, usage: RunUsage, opts: {
|
|
56
|
+
model?: boolean;
|
|
57
|
+
workspaceRoot?: string;
|
|
58
|
+
allowExec?: boolean;
|
|
59
|
+
cfg?: AshlrConfig;
|
|
60
|
+
}): Promise<StructuredVerdict>;
|
package/dist/core/run/verify.js
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
* the optional model check.
|
|
12
12
|
*/
|
|
13
13
|
import { overBudget, addUsage } from './budget.js';
|
|
14
|
+
import { detectVerifyCommands, runVerifyCommand } from './verify-commands.js';
|
|
14
15
|
// ---------------------------------------------------------------------------
|
|
15
16
|
// Internal helpers
|
|
16
17
|
// ---------------------------------------------------------------------------
|
|
@@ -201,4 +202,51 @@ export async function verifyTask(task, client, budget, usage, opts) {
|
|
|
201
202
|
};
|
|
202
203
|
}
|
|
203
204
|
}
|
|
205
|
+
// ---------------------------------------------------------------------------
|
|
206
|
+
// M43: Structured verification (typecheck/test/lint) + verdict wrapper
|
|
207
|
+
// ---------------------------------------------------------------------------
|
|
208
|
+
/** Tail of a command's output to surface in a failure verdict (~2KB). */
|
|
209
|
+
const FAILURE_TAIL_CHARS = 2 * 1024;
|
|
210
|
+
/**
|
|
211
|
+
* Structured verification for a completed task.
|
|
212
|
+
*
|
|
213
|
+
* When a workspace is available AND execution is permitted AND detectable
|
|
214
|
+
* verify commands exist, run them in order (typecheck → test → lint). The FIRST
|
|
215
|
+
* non-ok command short-circuits to a failure verdict carrying the command + a
|
|
216
|
+
* tail of its output. When every command passes, return an ok 'command' verdict.
|
|
217
|
+
*
|
|
218
|
+
* Otherwise (no workspace, exec not allowed, no cfg, or nothing detected) fall
|
|
219
|
+
* back to the heuristic/model verifyTask, wrapped to the StructuredVerdict shape.
|
|
220
|
+
*
|
|
221
|
+
* Never throws (runVerifyCommand and verifyTask are both non-throwing).
|
|
222
|
+
*/
|
|
223
|
+
export async function verifyTaskStructured(task, client, budget, usage, opts) {
|
|
224
|
+
const { workspaceRoot, allowExec, cfg } = opts;
|
|
225
|
+
if (workspaceRoot && allowExec && cfg) {
|
|
226
|
+
const commands = detectVerifyCommands(workspaceRoot);
|
|
227
|
+
if (commands.length > 0) {
|
|
228
|
+
for (const vc of commands) {
|
|
229
|
+
const res = runVerifyCommand(vc, workspaceRoot, cfg);
|
|
230
|
+
if (!res.ok) {
|
|
231
|
+
return {
|
|
232
|
+
ok: false,
|
|
233
|
+
method: 'command',
|
|
234
|
+
reason: `${vc.kind} failed: ${res.command}`,
|
|
235
|
+
command: res.command,
|
|
236
|
+
failure: res.output.slice(-FAILURE_TAIL_CHARS),
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
return {
|
|
241
|
+
ok: true,
|
|
242
|
+
method: 'command',
|
|
243
|
+
reason: `verify commands passed (${commands.length})`,
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
// Fall back to the heuristic/model verdict (already StructuredVerdict-shaped:
|
|
248
|
+
// StructuredVerdict only adds optional fields over VerifyVerdict).
|
|
249
|
+
const verdict = await verifyTask(task, client, budget, usage, { model: opts.model });
|
|
250
|
+
return verdict;
|
|
251
|
+
}
|
|
204
252
|
//# sourceMappingURL=verify.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../src/core/run/verify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;
|
|
1
|
+
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../src/core/run/verify.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,33 @@ export declare function auditDir(): string;
|
|
|
22
22
|
* Never throws — errors are swallowed silently to keep callers unblocked.
|
|
23
23
|
*/
|
|
24
24
|
export declare function audit(entry: Omit<AuditEntry, 'ts'>): void;
|
|
25
|
+
/**
|
|
26
|
+
* Append a `confinement` audit event for a contained engine run.
|
|
27
|
+
*
|
|
28
|
+
* Fields:
|
|
29
|
+
* engine — the EngineId being contained.
|
|
30
|
+
* mode — 'off' | 'os' (the resolved profile mode).
|
|
31
|
+
* networkEgress — whether outbound network was permitted.
|
|
32
|
+
* readAllowed — extra read-allowed paths (if any).
|
|
33
|
+
* platform — process.platform at the time of the run.
|
|
34
|
+
* launched — true when an OS jail launcher was actually built (false = env-only fallback).
|
|
35
|
+
* fallback — true when launched:false but mode was 'os' (i.e. unsupported platform, fallback).
|
|
36
|
+
*
|
|
37
|
+
* Delegates to audit() — append-only, never throws.
|
|
38
|
+
*/
|
|
39
|
+
export declare function auditConfinement(event: {
|
|
40
|
+
engine: string;
|
|
41
|
+
mode: string;
|
|
42
|
+
networkEgress: boolean;
|
|
43
|
+
readAllowed?: string[];
|
|
44
|
+
platform: string;
|
|
45
|
+
launched: boolean;
|
|
46
|
+
fallback?: boolean;
|
|
47
|
+
/** Worktree path (used as `repo`). */
|
|
48
|
+
worktree: string;
|
|
49
|
+
/** Sandbox id (or null). */
|
|
50
|
+
sandboxId: string | null;
|
|
51
|
+
}): void;
|
|
25
52
|
/**
|
|
26
53
|
* Read audit entries across all date files, newest-first.
|
|
27
54
|
* `limit` caps the number returned (undefined or 0 => return all).
|
|
@@ -94,6 +94,40 @@ export function audit(entry) {
|
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
96
|
// ---------------------------------------------------------------------------
|
|
97
|
+
// M52: auditConfinement() — typed confinement audit event
|
|
98
|
+
// ---------------------------------------------------------------------------
|
|
99
|
+
/**
|
|
100
|
+
* Append a `confinement` audit event for a contained engine run.
|
|
101
|
+
*
|
|
102
|
+
* Fields:
|
|
103
|
+
* engine — the EngineId being contained.
|
|
104
|
+
* mode — 'off' | 'os' (the resolved profile mode).
|
|
105
|
+
* networkEgress — whether outbound network was permitted.
|
|
106
|
+
* readAllowed — extra read-allowed paths (if any).
|
|
107
|
+
* platform — process.platform at the time of the run.
|
|
108
|
+
* launched — true when an OS jail launcher was actually built (false = env-only fallback).
|
|
109
|
+
* fallback — true when launched:false but mode was 'os' (i.e. unsupported platform, fallback).
|
|
110
|
+
*
|
|
111
|
+
* Delegates to audit() — append-only, never throws.
|
|
112
|
+
*/
|
|
113
|
+
export function auditConfinement(event) {
|
|
114
|
+
audit({
|
|
115
|
+
action: 'confinement.run',
|
|
116
|
+
repo: event.worktree,
|
|
117
|
+
sandboxId: event.sandboxId,
|
|
118
|
+
summary: [
|
|
119
|
+
`engine=${event.engine}`,
|
|
120
|
+
`mode=${event.mode}`,
|
|
121
|
+
`platform=${event.platform}`,
|
|
122
|
+
`launched=${event.launched}`,
|
|
123
|
+
`networkEgress=${event.networkEgress}`,
|
|
124
|
+
event.fallback ? 'fallback=true' : '',
|
|
125
|
+
event.readAllowed?.length ? `readAllowed=${event.readAllowed.length}` : '',
|
|
126
|
+
].filter(Boolean).join(' '),
|
|
127
|
+
result: 'ok',
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
// ---------------------------------------------------------------------------
|
|
97
131
|
// Public: readAudit()
|
|
98
132
|
// ---------------------------------------------------------------------------
|
|
99
133
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../../src/core/sandbox/audit.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../../src/core/sandbox/audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EACL,UAAU,EACV,SAAS,EACT,WAAW,EACX,cAAc,EACd,YAAY,GACb,MAAM,SAAS,CAAC;AAGjB,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,UAAU,QAAQ;IACtB,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E,gEAAgE;AAChE,SAAS,eAAe;IACtB,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,YAAY,CAAC,OAAe;IACnC,OAAO,CACL,OAAO;QACL,wBAAwB;SACvB,OAAO,CAAC,0DAA0D,EAAE,eAAe,CAAC;QACrF,oFAAoF;SACnF,OAAO,CACN,oFAAoF,EACpF,eAAe,CAChB;QACD,0EAA0E;QAC1E,6EAA6E;QAC7E,uEAAuE;SACtE,OAAO,CAAC,0BAA0B,EAAE,YAAY,CAAC;SACjD,OAAO,CAAC,gCAAgC,EAAE,YAAY,CAAC;SACvD,OAAO,CAAC,kCAAkC,EAAE,YAAY,CAAC;SACzD,OAAO,CAAC,uBAAuB,EAAE,YAAY,CAAC;QAC/C,4EAA4E;SAC3E,OAAO,CAAC,sDAAsD,EAAE,YAAY,CAAC;QAC9E,0EAA0E;QAC1E,2EAA2E;QAC3E,2EAA2E;QAC3E,yEAAyE;QACzE,yEAAyE;SACxE,OAAO,CAAC,uBAAuB,EAAE,YAAY,CAAC,CAClD,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E;;;;;;GAMG;AACH,MAAM,UAAU,KAAK,CAAC,KAA6B;IACjD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,QAAQ,EAAE,CAAC;QAEvB,8CAA8C;QAC9C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,CAAC;QAED,MAAM,MAAM,GAAe;YACzB,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,oEAAoE;YACpE,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC;YACpC,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC;QAEF,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,eAAe,EAAE,QAAQ,CAAC,CAAC;QAEzD,6EAA6E;QAC7E,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,uEAAuE;IACzE,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,0DAA0D;AAC1D,8EAA8E;AAE9E;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAYhC;IACC,KAAK,CAAC;QACJ,MAAM,EAAE,iBAAiB;QACzB,IAAI,EAAE,KAAK,CAAC,QAAQ;QACpB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,OAAO,EAAE;YACP,UAAU,KAAK,CAAC,MAAM,EAAE;YACxB,QAAQ,KAAK,CAAC,IAAI,EAAE;YACpB,YAAY,KAAK,CAAC,QAAQ,EAAE;YAC5B,YAAY,KAAK,CAAC,QAAQ,EAAE;YAC5B,iBAAiB,KAAK,CAAC,aAAa,EAAE;YACtC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;YACrC,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,eAAe,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE;SAC3E,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAC3B,MAAM,EAAE,IAAI;KACb,CAAC,CAAC;AACL,CAAC;AAED,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,QAAQ,EAAE,CAAC;QAEvB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,8DAA8D;QAC9D,IAAI,KAAe,CAAC;QACpB,IAAI,CAAC;YACH,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC;iBACrB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;iBACnC,IAAI,EAAE;iBACN,OAAO,EAAE,CAAC;QACf,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,OAAO,GAAiB,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,KAAK,KAAK,SAAS,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;QAEhE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,OAAO,CAAC,MAAM,IAAI,GAAG;gBAAE,MAAM;YAEjC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACjC,IAAI,GAAW,CAAC;YAChB,IAAI,CAAC;gBACH,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACvC,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS,CAAC,yBAAyB;YACrC,CAAC;YAED,+EAA+E;YAC/E,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;YAEvE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,OAAO,CAAC,MAAM,IAAI,GAAG;oBAAE,MAAM;gBAEjC,IAAI,CAAC;oBACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACzC,IACE,MAAM,KAAK,IAAI;wBACf,OAAO,MAAM,KAAK,QAAQ;wBAC1B,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EACtB,CAAC;wBACD,gEAAgE;wBAChE,MAAM,GAAG,GAAG,MAAiC,CAAC;wBAC9C,IACE,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,QAAQ;4BAC7B,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,QAAQ;4BACjC,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,QAAQ;4BAClC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,IAAI;gCACrB,GAAG,CAAC,QAAQ,CAAC,KAAK,SAAS;gCAC3B,GAAG,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,EAC5B,CAAC;4BACD,OAAO,CAAC,IAAI,CAAC,GAA4B,CAAC,CAAC;wBAC7C,CAAC;oBACH,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,uCAAuC;gBACzC,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,+CAA+C;QAC/C,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* confine.ts — M52: OS-level confinement (closes v4 read-residual).
|
|
3
|
+
*
|
|
4
|
+
* Wraps the contained engine spawn with a platform-native read-jail +
|
|
5
|
+
* network-egress gate. ENTIRELY OPT-IN — absent cfg.foundry.confinement the
|
|
6
|
+
* launcher is null and spawnEngine behaves byte-identically to v4.
|
|
7
|
+
*
|
|
8
|
+
* SUPPORTED PLATFORMS:
|
|
9
|
+
* macOS (darwin) — sandbox-exec(1) with a custom SBPL profile.
|
|
10
|
+
* Linux — bwrap (bubblewrap) when on PATH; else null.
|
|
11
|
+
* Other — null (env-only v4 behavior).
|
|
12
|
+
*
|
|
13
|
+
* THREAT MODEL (macOS sandbox-exec):
|
|
14
|
+
* Goal: prevent the contained CLI from reading arbitrary paths outside its
|
|
15
|
+
* worktree — specifically other source trees (e.g. sibling repos) and
|
|
16
|
+
* secrets dirs (e.g. ~/.ssh, ~/.gnupg, ~/.aws).
|
|
17
|
+
*
|
|
18
|
+
* Strategy: (allow default) keeps the process functional (dynamic linker,
|
|
19
|
+
* frameworks, sockets for IPC, etc.). We then layer targeted denials:
|
|
20
|
+
*
|
|
21
|
+
* 1. (deny file-read*) — blocks all file reads by default.
|
|
22
|
+
* 2. (allow file-read* (subpath "<worktree>")) — re-allow the worktree.
|
|
23
|
+
* 3. (allow file-read* (subpath "<$HOME/.claude>")) etc. — re-allow each
|
|
24
|
+
* vendor config home the agent needs for its own auth (read-only).
|
|
25
|
+
* 4. (allow file-read* (subpath "<readAllowed[i]>")) — caller extras.
|
|
26
|
+
* 5. (allow file-read* (subpath "/usr") (subpath "/lib") ...)
|
|
27
|
+
* — allow system paths needed for the OS and CLIs to function.
|
|
28
|
+
* 6. (deny network-outbound*) unless networkEgress:true.
|
|
29
|
+
* 7. (allow file-write* (subpath "<worktree>") (subpath "<TMPDIR>")
|
|
30
|
+
* (subpath "<home>/.claude") ...)
|
|
31
|
+
* — write inside worktree + tmp + vendor config dirs (HOME_CONFIG_SUBDIRS
|
|
32
|
+
* + VENDOR_HOME_ENVS values) so confined agents can write session state.
|
|
33
|
+
*
|
|
34
|
+
* What this DOES NOT protect:
|
|
35
|
+
* - Reads of /proc, /dev, and similar pseudo-filesystems that have no
|
|
36
|
+
* file-read* equivalent in SBPL. These are generally safe (no user data).
|
|
37
|
+
* - Writes to paths outside worktree/TMPDIR that are NOT covered by the
|
|
38
|
+
* allow-file-write* list. Those writes ARE blocked (allow default does
|
|
39
|
+
* not include file-write*).
|
|
40
|
+
* - Against a process that can exploit the macOS sandbox itself. This is
|
|
41
|
+
* an OS-level trust boundary, not a VM boundary.
|
|
42
|
+
*
|
|
43
|
+
* IMPORTANT LIMITATION: sandbox-exec's SBPL `(deny file-read*)` interacts
|
|
44
|
+
* with macOS's TCC/SIP stack. On some system paths (Frameworks, dylibs) the
|
|
45
|
+
* deny fires before dyld can load, causing the wrapped binary to crash. The
|
|
46
|
+
* system subpath allow-list below is empirically derived to keep `cat`,
|
|
47
|
+
* `sh`, and major CLIs (claude, codex) functional. For production hardening,
|
|
48
|
+
* run the profile under `sandbox-exec -D/tmp/sbpl.profile.tmp` and check
|
|
49
|
+
* sandbox-violation lines in the system log.
|
|
50
|
+
*
|
|
51
|
+
* INJECTION SAFETY:
|
|
52
|
+
* All caller-supplied paths are escaped via escapeSbplPath() before
|
|
53
|
+
* embedding in the SBPL profile string. The escaper replaces `"` and `\`
|
|
54
|
+
* with their escaped forms so a malicious path cannot break out of the
|
|
55
|
+
* (subpath "...") SBPL string literal.
|
|
56
|
+
*/
|
|
57
|
+
import type { AshlrConfig, EngineId } from '../types.js';
|
|
58
|
+
export interface SandboxLauncher {
|
|
59
|
+
/** The executable to invoke (e.g. 'sandbox-exec', 'bwrap'). */
|
|
60
|
+
bin: string;
|
|
61
|
+
/**
|
|
62
|
+
* Arguments that PREFIX the engine command. The final argv given to
|
|
63
|
+
* spawnEngine will be [...prefixArgs, engineBin, ...engineArgs].
|
|
64
|
+
*/
|
|
65
|
+
prefixArgs: string[];
|
|
66
|
+
}
|
|
67
|
+
export interface ConfinementProfile {
|
|
68
|
+
mode: 'off' | 'os';
|
|
69
|
+
readAllowed?: string[];
|
|
70
|
+
networkEgress?: boolean;
|
|
71
|
+
onUnsupported?: 'fallback' | 'fail';
|
|
72
|
+
}
|
|
73
|
+
export interface ConfinementCtx {
|
|
74
|
+
/** Absolute path to the sandbox worktree. */
|
|
75
|
+
worktree: string;
|
|
76
|
+
/** The real HOME directory (for vendor config-homes). */
|
|
77
|
+
home?: string;
|
|
78
|
+
/** Extra env vars in scope (used to find CODEX_HOME, CLAUDE_CONFIG_DIR, etc.). */
|
|
79
|
+
env?: NodeJS.ProcessEnv;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Escape a path for safe embedding in a SBPL (sandbox profile language) string
|
|
83
|
+
* literal. SBPL string literals are delimited by `"`. Only `"` and `\` need
|
|
84
|
+
* escaping — forward slashes and parens in paths are literal and valid.
|
|
85
|
+
*
|
|
86
|
+
* A path containing `)` is safe because it appears inside `"..."` — the
|
|
87
|
+
* parser reads the closing `"` to end the literal before looking for `)`.
|
|
88
|
+
*
|
|
89
|
+
* PROOF: sandbox-exec's parser (Scheme-like) reads `(subpath "<escaped>")`.
|
|
90
|
+
* The literal ends at the first unescaped `"`. After escaping, `"` → `\"` and
|
|
91
|
+
* `\` → `\\`, so no injected character can terminate the string early.
|
|
92
|
+
*/
|
|
93
|
+
export declare function escapeSbplPath(p: string): string;
|
|
94
|
+
/**
|
|
95
|
+
* Build a macOS SBPL profile string for sandbox-exec.
|
|
96
|
+
*
|
|
97
|
+
* The profile:
|
|
98
|
+
* (version 1)
|
|
99
|
+
* (allow default) — keep process functional
|
|
100
|
+
* (deny file-read*) — block all file reads by default
|
|
101
|
+
* (allow file-read* ...) — re-allow: worktree, vendor homes, system
|
|
102
|
+
* (deny network-outbound*) — block egress (omitted when networkEgress)
|
|
103
|
+
* (allow file-write* ...) — write only under worktree + TMPDIR
|
|
104
|
+
*/
|
|
105
|
+
export declare function buildMacosSbplProfile(profile: ConfinementProfile, ctx: ConfinementCtx): string;
|
|
106
|
+
/**
|
|
107
|
+
* Build the OS sandbox launcher for the given confinement profile and context.
|
|
108
|
+
*
|
|
109
|
+
* Returns `{ bin, prefixArgs }` that callers prepend to the engine spawn, or
|
|
110
|
+
* `null` when confinement is off or not supported on this platform.
|
|
111
|
+
*
|
|
112
|
+
* This function is PURE on the happy path (macOS profile string is built from
|
|
113
|
+
* inputs only). The only side-effect is the bwrap PATH probe on Linux and the
|
|
114
|
+
* audit call on fallback/unsupported.
|
|
115
|
+
*
|
|
116
|
+
* Invariant: when `profile.mode === 'off'` (or undefined), always returns null
|
|
117
|
+
* with no side effects — byte-identical v4 behavior.
|
|
118
|
+
*/
|
|
119
|
+
export declare function buildSandboxLauncher(profile: ConfinementProfile, ctx: ConfinementCtx): SandboxLauncher | null;
|
|
120
|
+
/**
|
|
121
|
+
* Resolve the effective ConfinementProfile for a specific engine from
|
|
122
|
+
* `cfg.foundry.confinement`. Per-engine key overrides the `*` (fleet-wide)
|
|
123
|
+
* default; absent → mode:'off' (v4 env-only, no side effects).
|
|
124
|
+
*
|
|
125
|
+
* A `*` key in cfg.foundry.confinement sets the fleet-wide default.
|
|
126
|
+
*/
|
|
127
|
+
export declare function confinementProfileFor(engine: EngineId, cfg: AshlrConfig): ConfinementProfile;
|
|
128
|
+
/**
|
|
129
|
+
* Terminal error thrown when OS confinement is required (mode:'os',
|
|
130
|
+
* onUnsupported:'fail') but the platform has no supported jail binary.
|
|
131
|
+
*/
|
|
132
|
+
export declare class ConfinementUnsupportedError extends Error {
|
|
133
|
+
constructor(message: string);
|
|
134
|
+
}
|