@aisy/core 0.1.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/LICENSE +202 -0
- package/dist/agent-loop/index.d.ts +4 -0
- package/dist/agent-loop/index.d.ts.map +1 -0
- package/dist/agent-loop/index.js +352 -0
- package/dist/agent-loop/index.js.map +1 -0
- package/dist/agent-loop/types.d.ts +183 -0
- package/dist/agent-loop/types.d.ts.map +1 -0
- package/dist/agent-loop/types.js +3 -0
- package/dist/agent-loop/types.js.map +1 -0
- package/dist/bin/aisy.d.ts +3 -0
- package/dist/bin/aisy.d.ts.map +1 -0
- package/dist/bin/aisy.js +14 -0
- package/dist/bin/aisy.js.map +1 -0
- package/dist/cli/index.d.ts +17 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +114 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/context-engine/index.d.ts +4 -0
- package/dist/context-engine/index.d.ts.map +1 -0
- package/dist/context-engine/index.js +126 -0
- package/dist/context-engine/index.js.map +1 -0
- package/dist/context-engine/types.d.ts +54 -0
- package/dist/context-engine/types.d.ts.map +1 -0
- package/dist/context-engine/types.js +4 -0
- package/dist/context-engine/types.js.map +1 -0
- package/dist/eval/index.d.ts +20 -0
- package/dist/eval/index.d.ts.map +1 -0
- package/dist/eval/index.js +128 -0
- package/dist/eval/index.js.map +1 -0
- package/dist/eval/types.d.ts +62 -0
- package/dist/eval/types.d.ts.map +1 -0
- package/dist/eval/types.js +17 -0
- package/dist/eval/types.js.map +1 -0
- package/dist/gateway/index.d.ts +5 -0
- package/dist/gateway/index.d.ts.map +1 -0
- package/dist/gateway/index.js +288 -0
- package/dist/gateway/index.js.map +1 -0
- package/dist/gateway/types.d.ts +194 -0
- package/dist/gateway/types.d.ts.map +1 -0
- package/dist/gateway/types.js +94 -0
- package/dist/gateway/types.js.map +1 -0
- package/dist/goals/index.d.ts +11 -0
- package/dist/goals/index.d.ts.map +1 -0
- package/dist/goals/index.js +21 -0
- package/dist/goals/index.js.map +1 -0
- package/dist/goals/types.d.ts +47 -0
- package/dist/goals/types.d.ts.map +1 -0
- package/dist/goals/types.js +5 -0
- package/dist/goals/types.js.map +1 -0
- package/dist/index.d.ts +56 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +50 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/index.d.ts +5 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +215 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/types.d.ts +148 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +4 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/memory/index.d.ts +6 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +419 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/types.d.ts +131 -0
- package/dist/memory/types.d.ts.map +1 -0
- package/dist/memory/types.js +33 -0
- package/dist/memory/types.js.map +1 -0
- package/dist/nightly/index.d.ts +4 -0
- package/dist/nightly/index.d.ts.map +1 -0
- package/dist/nightly/index.js +470 -0
- package/dist/nightly/index.js.map +1 -0
- package/dist/nightly/types.d.ts +326 -0
- package/dist/nightly/types.d.ts.map +1 -0
- package/dist/nightly/types.js +3 -0
- package/dist/nightly/types.js.map +1 -0
- package/dist/observability/index.d.ts +11 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +396 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/types.d.ts +139 -0
- package/dist/observability/types.d.ts.map +1 -0
- package/dist/observability/types.js +4 -0
- package/dist/observability/types.js.map +1 -0
- package/dist/onboarding/index.d.ts +16 -0
- package/dist/onboarding/index.d.ts.map +1 -0
- package/dist/onboarding/index.js +787 -0
- package/dist/onboarding/index.js.map +1 -0
- package/dist/onboarding/interactive.d.ts +23 -0
- package/dist/onboarding/interactive.d.ts.map +1 -0
- package/dist/onboarding/interactive.js +45 -0
- package/dist/onboarding/interactive.js.map +1 -0
- package/dist/onboarding/types.d.ts +388 -0
- package/dist/onboarding/types.d.ts.map +1 -0
- package/dist/onboarding/types.js +35 -0
- package/dist/onboarding/types.js.map +1 -0
- package/dist/orchestration/index.d.ts +8 -0
- package/dist/orchestration/index.d.ts.map +1 -0
- package/dist/orchestration/index.js +706 -0
- package/dist/orchestration/index.js.map +1 -0
- package/dist/orchestration/types.d.ts +391 -0
- package/dist/orchestration/types.d.ts.map +1 -0
- package/dist/orchestration/types.js +30 -0
- package/dist/orchestration/types.js.map +1 -0
- package/dist/personality/index.d.ts +65 -0
- package/dist/personality/index.d.ts.map +1 -0
- package/dist/personality/index.js +339 -0
- package/dist/personality/index.js.map +1 -0
- package/dist/personality/types.d.ts +103 -0
- package/dist/personality/types.d.ts.map +1 -0
- package/dist/personality/types.js +15 -0
- package/dist/personality/types.js.map +1 -0
- package/dist/provider/index.d.ts +4 -0
- package/dist/provider/index.d.ts.map +1 -0
- package/dist/provider/index.js +236 -0
- package/dist/provider/index.js.map +1 -0
- package/dist/provider/types.d.ts +180 -0
- package/dist/provider/types.d.ts.map +1 -0
- package/dist/provider/types.js +4 -0
- package/dist/provider/types.js.map +1 -0
- package/dist/runtime/agent-cards.d.ts +14 -0
- package/dist/runtime/agent-cards.d.ts.map +1 -0
- package/dist/runtime/agent-cards.js +90 -0
- package/dist/runtime/agent-cards.js.map +1 -0
- package/dist/runtime/agent-runner.d.ts +30 -0
- package/dist/runtime/agent-runner.d.ts.map +1 -0
- package/dist/runtime/agent-runner.js +37 -0
- package/dist/runtime/agent-runner.js.map +1 -0
- package/dist/runtime/budget.d.ts +15 -0
- package/dist/runtime/budget.d.ts.map +1 -0
- package/dist/runtime/budget.js +24 -0
- package/dist/runtime/budget.js.map +1 -0
- package/dist/runtime/delegation-driver.d.ts +11 -0
- package/dist/runtime/delegation-driver.d.ts.map +1 -0
- package/dist/runtime/delegation-driver.js +132 -0
- package/dist/runtime/delegation-driver.js.map +1 -0
- package/dist/runtime/exact-cache.d.ts +10 -0
- package/dist/runtime/exact-cache.d.ts.map +1 -0
- package/dist/runtime/exact-cache.js +30 -0
- package/dist/runtime/exact-cache.js.map +1 -0
- package/dist/runtime/execute-tool.d.ts +29 -0
- package/dist/runtime/execute-tool.d.ts.map +1 -0
- package/dist/runtime/execute-tool.js +80 -0
- package/dist/runtime/execute-tool.js.map +1 -0
- package/dist/runtime/guardian.d.ts +9 -0
- package/dist/runtime/guardian.d.ts.map +1 -0
- package/dist/runtime/guardian.js +41 -0
- package/dist/runtime/guardian.js.map +1 -0
- package/dist/runtime/hook-gate.d.ts +17 -0
- package/dist/runtime/hook-gate.d.ts.map +1 -0
- package/dist/runtime/hook-gate.js +56 -0
- package/dist/runtime/hook-gate.js.map +1 -0
- package/dist/runtime/memory-adapter.d.ts +6 -0
- package/dist/runtime/memory-adapter.d.ts.map +1 -0
- package/dist/runtime/memory-adapter.js +38 -0
- package/dist/runtime/memory-adapter.js.map +1 -0
- package/dist/runtime/nightly-adapters.d.ts +48 -0
- package/dist/runtime/nightly-adapters.d.ts.map +1 -0
- package/dist/runtime/nightly-adapters.js +139 -0
- package/dist/runtime/nightly-adapters.js.map +1 -0
- package/dist/runtime/nightly-generator.d.ts +10 -0
- package/dist/runtime/nightly-generator.d.ts.map +1 -0
- package/dist/runtime/nightly-generator.js +335 -0
- package/dist/runtime/nightly-generator.js.map +1 -0
- package/dist/runtime/onboarding-node.d.ts +6 -0
- package/dist/runtime/onboarding-node.d.ts.map +1 -0
- package/dist/runtime/onboarding-node.js +356 -0
- package/dist/runtime/onboarding-node.js.map +1 -0
- package/dist/runtime/provider-anthropic.d.ts +43 -0
- package/dist/runtime/provider-anthropic.d.ts.map +1 -0
- package/dist/runtime/provider-anthropic.js +148 -0
- package/dist/runtime/provider-anthropic.js.map +1 -0
- package/dist/runtime/provider-cli.d.ts +18 -0
- package/dist/runtime/provider-cli.d.ts.map +1 -0
- package/dist/runtime/provider-cli.js +73 -0
- package/dist/runtime/provider-cli.js.map +1 -0
- package/dist/runtime/provider-openai.d.ts +30 -0
- package/dist/runtime/provider-openai.d.ts.map +1 -0
- package/dist/runtime/provider-openai.js +114 -0
- package/dist/runtime/provider-openai.js.map +1 -0
- package/dist/runtime/providers.d.ts +43 -0
- package/dist/runtime/providers.d.ts.map +1 -0
- package/dist/runtime/providers.js +72 -0
- package/dist/runtime/providers.js.map +1 -0
- package/dist/runtime/sandbox-bash.d.ts +21 -0
- package/dist/runtime/sandbox-bash.d.ts.map +1 -0
- package/dist/runtime/sandbox-bash.js +51 -0
- package/dist/runtime/sandbox-bash.js.map +1 -0
- package/dist/runtime/scoped-tool-executor.d.ts +10 -0
- package/dist/runtime/scoped-tool-executor.d.ts.map +1 -0
- package/dist/runtime/scoped-tool-executor.js +30 -0
- package/dist/runtime/scoped-tool-executor.js.map +1 -0
- package/dist/runtime/session-log.d.ts +6 -0
- package/dist/runtime/session-log.d.ts.map +1 -0
- package/dist/runtime/session-log.js +54 -0
- package/dist/runtime/session-log.js.map +1 -0
- package/dist/runtime/settings.d.ts +24 -0
- package/dist/runtime/settings.d.ts.map +1 -0
- package/dist/runtime/settings.js +29 -0
- package/dist/runtime/settings.js.map +1 -0
- package/dist/runtime/spawn-plan.d.ts +13 -0
- package/dist/runtime/spawn-plan.d.ts.map +1 -0
- package/dist/runtime/spawn-plan.js +107 -0
- package/dist/runtime/spawn-plan.js.map +1 -0
- package/dist/runtime/spend.d.ts +41 -0
- package/dist/runtime/spend.d.ts.map +1 -0
- package/dist/runtime/spend.js +0 -0
- package/dist/runtime/spend.js.map +1 -0
- package/dist/runtime/sub-agent-runner.d.ts +19 -0
- package/dist/runtime/sub-agent-runner.d.ts.map +1 -0
- package/dist/runtime/sub-agent-runner.js +47 -0
- package/dist/runtime/sub-agent-runner.js.map +1 -0
- package/dist/safety/grants.d.ts +7 -0
- package/dist/safety/grants.d.ts.map +1 -0
- package/dist/safety/grants.js +53 -0
- package/dist/safety/grants.js.map +1 -0
- package/dist/safety/index.d.ts +72 -0
- package/dist/safety/index.d.ts.map +1 -0
- package/dist/safety/index.js +464 -0
- package/dist/safety/index.js.map +1 -0
- package/dist/safety/types.d.ts +254 -0
- package/dist/safety/types.d.ts.map +1 -0
- package/dist/safety/types.js +3 -0
- package/dist/safety/types.js.map +1 -0
- package/dist/skills/index.d.ts +4 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +463 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/types.d.ts +177 -0
- package/dist/skills/types.d.ts.map +1 -0
- package/dist/skills/types.js +3 -0
- package/dist/skills/types.js.map +1 -0
- package/dist/testing/clock.d.ts +8 -0
- package/dist/testing/clock.d.ts.map +1 -0
- package/dist/testing/clock.js +13 -0
- package/dist/testing/clock.js.map +1 -0
- package/dist/testing/effect-verifier.d.ts +15 -0
- package/dist/testing/effect-verifier.d.ts.map +1 -0
- package/dist/testing/effect-verifier.js +27 -0
- package/dist/testing/effect-verifier.js.map +1 -0
- package/dist/testing/index.d.ts +5 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +5 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/provider-fake.d.ts +14 -0
- package/dist/testing/provider-fake.d.ts.map +1 -0
- package/dist/testing/provider-fake.js +18 -0
- package/dist/testing/provider-fake.js.map +1 -0
- package/dist/testing/sandbox-stub.d.ts +15 -0
- package/dist/testing/sandbox-stub.d.ts.map +1 -0
- package/dist/testing/sandbox-stub.js +15 -0
- package/dist/testing/sandbox-stub.js.map +1 -0
- package/dist/tools/index.d.ts +11 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +0 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/types.d.ts +138 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +4 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/triggers/index.d.ts +4 -0
- package/dist/triggers/index.d.ts.map +1 -0
- package/dist/triggers/index.js +187 -0
- package/dist/triggers/index.js.map +1 -0
- package/dist/triggers/types.d.ts +74 -0
- package/dist/triggers/types.d.ts.map +1 -0
- package/dist/triggers/types.js +5 -0
- package/dist/triggers/types.js.map +1 -0
- package/package.json +36 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// Settings store (runtime, ADR-0050 Phase 2).
|
|
2
|
+
//
|
|
3
|
+
// A tiny typed key/value of operator preferences, persisted to
|
|
4
|
+
// ~/.aisy/settings.json. The defaults are conservative: the per-turn cost
|
|
5
|
+
// summary is OFF (spend is viewed on demand, not spammed in the main chat), and
|
|
6
|
+
// budget enforcement is OFF. Toggled from the Settings ⚙️ menu.
|
|
7
|
+
export const DEFAULT_SETTINGS = {
|
|
8
|
+
showCostPerTurn: false,
|
|
9
|
+
budgetEnabled: false,
|
|
10
|
+
debug: false,
|
|
11
|
+
};
|
|
12
|
+
export function makeSettingsStore(deps) {
|
|
13
|
+
const state = { ...DEFAULT_SETTINGS, ...(deps.persistence?.load() ?? {}) };
|
|
14
|
+
const persist = () => deps.persistence?.save({ ...state });
|
|
15
|
+
return {
|
|
16
|
+
get: () => ({ ...state }),
|
|
17
|
+
set(key, value) {
|
|
18
|
+
state[key] = value;
|
|
19
|
+
persist();
|
|
20
|
+
},
|
|
21
|
+
toggle(key) {
|
|
22
|
+
const next = !state[key];
|
|
23
|
+
state[key] = next;
|
|
24
|
+
persist();
|
|
25
|
+
return next;
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/runtime/settings.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,EAAE;AACF,+DAA+D;AAC/D,0EAA0E;AAC1E,gFAAgF;AAChF,gEAAgE;AAWhE,MAAM,CAAC,MAAM,gBAAgB,GAAa;IACxC,eAAe,EAAE,KAAK;IACtB,aAAa,EAAE,KAAK;IACpB,KAAK,EAAE,KAAK;CACb,CAAA;AAeD,MAAM,UAAU,iBAAiB,CAAC,IAA+C;IAC/E,MAAM,KAAK,GAAa,EAAE,GAAG,gBAAgB,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAA;IAEpF,MAAM,OAAO,GAAG,GAAS,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAA;IAEhE,OAAO;QACL,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC;QACzB,GAAG,CAAC,GAAG,EAAE,KAAK;YACZ,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;YAClB,OAAO,EAAE,CAAA;QACX,CAAC;QACD,MAAM,CAAC,GAAG;YACR,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACxB,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;YACjB,OAAO,EAAE,CAAA;YACT,OAAO,IAAI,CAAA;QACb,CAAC;KACF,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { PlanDAG } from '../orchestration/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Normalize an unknown parsed value into a PlanDAG with every node having a
|
|
4
|
+
* non-null assignedTo set to `defaultCardName` when the node omits it.
|
|
5
|
+
*
|
|
6
|
+
* Accepted shapes:
|
|
7
|
+
* - PlanDAG `{ nodes: [...], edges?: [...] }`
|
|
8
|
+
* - Linear `{ steps: [{intent?}, ...] }`
|
|
9
|
+
* - Single `{ intent: string, ... }`
|
|
10
|
+
* - Anything else → `{ nodes: [], edges: [] }`
|
|
11
|
+
*/
|
|
12
|
+
export declare function normalizeSpawnPlan(parsed: unknown, defaultCardName: string): PlanDAG;
|
|
13
|
+
//# sourceMappingURL=spawn-plan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spawn-plan.d.ts","sourceRoot":"","sources":["../../src/runtime/spawn-plan.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAkB,MAAM,2BAA2B,CAAA;AAiBxE;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAuFpF"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
// spawn-plan.ts — normalizes an unknown parsed plan into a PlanDAG with every
|
|
2
|
+
// node having a non-null assignedTo. Used by the app layer so that linear
|
|
3
|
+
// {steps} plans (and single-intent objects) can be safely passed to
|
|
4
|
+
// makeDelegationManager without triggering the null-card spawn error.
|
|
5
|
+
// Default scope/budget/contract/retry values for nodes where fields are absent.
|
|
6
|
+
const DEFAULT_SCOPE = { owns: [], doNotTouch: [], taskClass: 'reasoning' };
|
|
7
|
+
const DEFAULT_BUDGET = { iterations: 12, spendUsd: 1 };
|
|
8
|
+
const DEFAULT_RETRY = { maxReplans: 0, maxIterations: 12 };
|
|
9
|
+
function defaultNode(overrides) {
|
|
10
|
+
return {
|
|
11
|
+
scope: DEFAULT_SCOPE,
|
|
12
|
+
budgetSlice: DEFAULT_BUDGET,
|
|
13
|
+
outputContract: '',
|
|
14
|
+
retryPolicy: DEFAULT_RETRY,
|
|
15
|
+
...overrides,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Normalize an unknown parsed value into a PlanDAG with every node having a
|
|
20
|
+
* non-null assignedTo set to `defaultCardName` when the node omits it.
|
|
21
|
+
*
|
|
22
|
+
* Accepted shapes:
|
|
23
|
+
* - PlanDAG `{ nodes: [...], edges?: [...] }`
|
|
24
|
+
* - Linear `{ steps: [{intent?}, ...] }`
|
|
25
|
+
* - Single `{ intent: string, ... }`
|
|
26
|
+
* - Anything else → `{ nodes: [], edges: [] }`
|
|
27
|
+
*/
|
|
28
|
+
export function normalizeSpawnPlan(parsed, defaultCardName) {
|
|
29
|
+
if (parsed === null || typeof parsed !== 'object') {
|
|
30
|
+
return { nodes: [], edges: [] };
|
|
31
|
+
}
|
|
32
|
+
const p = parsed;
|
|
33
|
+
// ── PlanDAG: has an array `.nodes` ─────────────────────────────────────────
|
|
34
|
+
if (Array.isArray(p['nodes'])) {
|
|
35
|
+
const rawNodes = p['nodes'];
|
|
36
|
+
const edges = Array.isArray(p['edges'])
|
|
37
|
+
? p['edges']
|
|
38
|
+
: [];
|
|
39
|
+
const nodes = rawNodes.map((raw, i) => {
|
|
40
|
+
const n = (raw !== null && typeof raw === 'object' ? raw : {});
|
|
41
|
+
const taskId = typeof n['taskId'] === 'string' ? n['taskId'] : `t${i + 1}`;
|
|
42
|
+
const intent = typeof n['intent'] === 'string' ? n['intent'] : '';
|
|
43
|
+
const assignedTo = typeof n['assignedTo'] === 'string' ? n['assignedTo'] : defaultCardName;
|
|
44
|
+
const dependsOn = Array.isArray(n['dependsOn']) ? n['dependsOn'] : [];
|
|
45
|
+
const scope = (n['scope'] !== null && typeof n['scope'] === 'object')
|
|
46
|
+
? n['scope']
|
|
47
|
+
: {};
|
|
48
|
+
const budgetSlice = (n['budgetSlice'] !== null && typeof n['budgetSlice'] === 'object')
|
|
49
|
+
? n['budgetSlice']
|
|
50
|
+
: {};
|
|
51
|
+
const retryPolicy = (n['retryPolicy'] !== null && typeof n['retryPolicy'] === 'object')
|
|
52
|
+
? n['retryPolicy']
|
|
53
|
+
: {};
|
|
54
|
+
return defaultNode({
|
|
55
|
+
taskId,
|
|
56
|
+
intent,
|
|
57
|
+
assignedTo,
|
|
58
|
+
dependsOn,
|
|
59
|
+
scope: {
|
|
60
|
+
owns: Array.isArray(scope['owns']) ? scope['owns'] : [],
|
|
61
|
+
doNotTouch: Array.isArray(scope['doNotTouch']) ? scope['doNotTouch'] : [],
|
|
62
|
+
taskClass: scope['taskClass'] ?? 'reasoning',
|
|
63
|
+
},
|
|
64
|
+
budgetSlice: {
|
|
65
|
+
iterations: typeof budgetSlice['iterations'] === 'number' ? budgetSlice['iterations'] : 12,
|
|
66
|
+
spendUsd: typeof budgetSlice['spendUsd'] === 'number' ? budgetSlice['spendUsd'] : 1,
|
|
67
|
+
},
|
|
68
|
+
outputContract: typeof n['outputContract'] === 'string' ? n['outputContract'] : '',
|
|
69
|
+
retryPolicy: {
|
|
70
|
+
maxReplans: typeof retryPolicy['maxReplans'] === 'number' ? retryPolicy['maxReplans'] : 0,
|
|
71
|
+
maxIterations: typeof retryPolicy['maxIterations'] === 'number' ? retryPolicy['maxIterations'] : 12,
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
return { nodes, edges };
|
|
76
|
+
}
|
|
77
|
+
// ── Linear plan: has an array `.steps` ─────────────────────────────────────
|
|
78
|
+
if (Array.isArray(p['steps'])) {
|
|
79
|
+
const rawSteps = p['steps'];
|
|
80
|
+
const nodes = rawSteps.map((raw, i) => {
|
|
81
|
+
const s = (raw !== null && typeof raw === 'object' ? raw : {});
|
|
82
|
+
const taskId = `s${i + 1}`;
|
|
83
|
+
const intent = typeof s['intent'] === 'string' ? s['intent'] : '';
|
|
84
|
+
return defaultNode({
|
|
85
|
+
taskId,
|
|
86
|
+
intent,
|
|
87
|
+
assignedTo: defaultCardName,
|
|
88
|
+
dependsOn: i > 0 ? [`s${i}`] : [],
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
const edges = nodes.slice(1).map((n, i) => ({ from: `s${i + 1}`, to: n.taskId }));
|
|
92
|
+
return { nodes, edges };
|
|
93
|
+
}
|
|
94
|
+
// ── Single task: has a string `.intent` ────────────────────────────────────
|
|
95
|
+
if (typeof p['intent'] === 'string') {
|
|
96
|
+
const node = defaultNode({
|
|
97
|
+
taskId: 's1',
|
|
98
|
+
intent: p['intent'],
|
|
99
|
+
assignedTo: defaultCardName,
|
|
100
|
+
dependsOn: [],
|
|
101
|
+
});
|
|
102
|
+
return { nodes: [node], edges: [] };
|
|
103
|
+
}
|
|
104
|
+
// ── Unrecognised ───────────────────────────────────────────────────────────
|
|
105
|
+
return { nodes: [], edges: [] };
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=spawn-plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spawn-plan.js","sourceRoot":"","sources":["../../src/runtime/spawn-plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export interface SpendUsage {
|
|
2
|
+
inputTokens: number;
|
|
3
|
+
outputTokens: number;
|
|
4
|
+
dollars: number;
|
|
5
|
+
}
|
|
6
|
+
/** One charge: a model call attributed to an agent (default "main"). */
|
|
7
|
+
export interface SpendEntry {
|
|
8
|
+
model: string;
|
|
9
|
+
agentId?: string;
|
|
10
|
+
usage: SpendUsage;
|
|
11
|
+
}
|
|
12
|
+
export interface ModelSpend {
|
|
13
|
+
model: string;
|
|
14
|
+
inputTokens: number;
|
|
15
|
+
outputTokens: number;
|
|
16
|
+
dollars: number;
|
|
17
|
+
}
|
|
18
|
+
export interface AgentSpend {
|
|
19
|
+
agentId: string;
|
|
20
|
+
inputTokens: number;
|
|
21
|
+
outputTokens: number;
|
|
22
|
+
dollars: number;
|
|
23
|
+
}
|
|
24
|
+
/** Persistence seam — load the aggregated entries, save after every record. */
|
|
25
|
+
export interface SpendPersistencePort {
|
|
26
|
+
load(): SpendEntry[];
|
|
27
|
+
save(entries: SpendEntry[]): void;
|
|
28
|
+
}
|
|
29
|
+
export interface SpendStore {
|
|
30
|
+
record(entry: SpendEntry): void;
|
|
31
|
+
/** Per-model totals, sorted by model id. */
|
|
32
|
+
byModel(): ModelSpend[];
|
|
33
|
+
/** Per-agent totals, sorted by agent id. */
|
|
34
|
+
byAgent(): AgentSpend[];
|
|
35
|
+
/** Grand total across all models/agents. */
|
|
36
|
+
total(): SpendUsage;
|
|
37
|
+
}
|
|
38
|
+
export declare function makeSpendStore(deps: {
|
|
39
|
+
persistence?: SpendPersistencePort;
|
|
40
|
+
}): SpendStore;
|
|
41
|
+
//# sourceMappingURL=spend.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spend.d.ts","sourceRoot":"","sources":["../../src/runtime/spend.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,wEAAwE;AACxE,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,UAAU,CAAA;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,+EAA+E;AAC/E,MAAM,WAAW,oBAAoB;IACnC,IAAI,IAAI,UAAU,EAAE,CAAA;IACpB,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI,CAAA;CAClC;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAA;IAC/B,4CAA4C;IAC5C,OAAO,IAAI,UAAU,EAAE,CAAA;IACvB,4CAA4C;IAC5C,OAAO,IAAI,UAAU,EAAE,CAAA;IACvB,4CAA4C;IAC5C,KAAK,IAAI,UAAU,CAAA;CACpB;AAYD,wBAAgB,cAAc,CAAC,IAAI,EAAE;IAAE,WAAW,CAAC,EAAE,oBAAoB,CAAA;CAAE,GAAG,UAAU,CAkEvF"}
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spend.js","sourceRoot":"","sources":["../../src/runtime/spend.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type AgentRunnerDeps, type AgentRunner } from './agent-runner.js';
|
|
2
|
+
import type { ProviderAdapter, MemoryPort, SessionLog, ToolCall } from '../agent-loop/types.js';
|
|
3
|
+
import type { ApprovalDecision } from './hook-gate.js';
|
|
4
|
+
import type { PendingAction } from '../gateway/index.js';
|
|
5
|
+
import type { DelegationHandle } from '../orchestration/index.js';
|
|
6
|
+
import type { ToolResult } from './execute-tool.js';
|
|
7
|
+
export interface SubAgentRunnerDeps {
|
|
8
|
+
handle: DelegationHandle;
|
|
9
|
+
provider: ProviderAdapter;
|
|
10
|
+
baseExecuteTool: (call: ToolCall) => Promise<ToolResult>;
|
|
11
|
+
approve: (action: PendingAction) => Promise<ApprovalDecision>;
|
|
12
|
+
memory: MemoryPort;
|
|
13
|
+
sessionLog: SessionLog;
|
|
14
|
+
parentNarrowed: boolean;
|
|
15
|
+
doNotTouch: string[];
|
|
16
|
+
budgetCheck?: AgentRunnerDeps['budgetCheck'];
|
|
17
|
+
}
|
|
18
|
+
export declare function makeSubAgentRunner(deps: SubAgentRunnerDeps): AgentRunner;
|
|
19
|
+
//# sourceMappingURL=sub-agent-runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sub-agent-runner.d.ts","sourceRoot":"","sources":["../../src/runtime/sub-agent-runner.ts"],"names":[],"mappings":"AAQA,OAAO,EAAmB,KAAK,eAAe,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAI3F,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAyB,MAAM,wBAAwB,CAAA;AACtH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAEnD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,gBAAgB,CAAA;IACxB,QAAQ,EAAE,eAAe,CAAA;IACzB,eAAe,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC,UAAU,CAAC,CAAA;IACxD,OAAO,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAC7D,MAAM,EAAE,UAAU,CAAA;IAClB,UAAU,EAAE,UAAU,CAAA;IACtB,cAAc,EAAE,OAAO,CAAA;IACvB,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,WAAW,CAAC,EAAE,eAAe,CAAC,aAAa,CAAC,CAAA;CAC7C;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,kBAAkB,GAAG,WAAW,CAsCxE"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// Sub-agent runner factory (runtime, ADR-0052).
|
|
2
|
+
//
|
|
3
|
+
// Builds a card-scoped child AgentRunner for one delegation: a FRESH empty
|
|
4
|
+
// GrantStore (parent grants are never inherited — tier-2/3 re-prompt), the
|
|
5
|
+
// card's tools gated via the scoped executor, a fresh Loop Guardian, and the
|
|
6
|
+
// card's maxIterations as the tool-call cap. Parent narrowing is inherited by
|
|
7
|
+
// forcing the sub-agent's span provenance to untrusted.
|
|
8
|
+
import { makeAgentRunner } from './agent-runner.js';
|
|
9
|
+
import { makeGrantStore } from '../safety/index.js';
|
|
10
|
+
import { makeScopedToolExecutor } from './scoped-tool-executor.js';
|
|
11
|
+
import { makeGuardian } from './guardian.js';
|
|
12
|
+
export function makeSubAgentRunner(deps) {
|
|
13
|
+
// Fresh, empty grant store: the sub-agent inherits NO approvals from the parent.
|
|
14
|
+
const grants = makeGrantStore();
|
|
15
|
+
const scoped = makeScopedToolExecutor({
|
|
16
|
+
base: deps.baseExecuteTool,
|
|
17
|
+
permitsTool: deps.handle.permitsTool.bind(deps.handle),
|
|
18
|
+
owns: deps.handle.owns,
|
|
19
|
+
doNotTouch: deps.doNotTouch,
|
|
20
|
+
});
|
|
21
|
+
// The sub-agent runs its own agent-loop, so it needs its own agent-loop guardian
|
|
22
|
+
// (observe/note shape). The DelegationHandle.guardian is the orchestration-layer
|
|
23
|
+
// guardian (check/reset) — a different, incompatible type. Build a fresh one.
|
|
24
|
+
const guardian = makeGuardian();
|
|
25
|
+
const runner = makeAgentRunner({
|
|
26
|
+
provider: deps.provider,
|
|
27
|
+
memory: deps.memory,
|
|
28
|
+
grants,
|
|
29
|
+
executeTool: scoped,
|
|
30
|
+
approve: deps.approve,
|
|
31
|
+
guardian,
|
|
32
|
+
sessionLog: deps.sessionLog,
|
|
33
|
+
maxTotalToolCalls: deps.handle.card.maxIterations,
|
|
34
|
+
...(deps.budgetCheck !== undefined ? { budgetCheck: deps.budgetCheck } : {}),
|
|
35
|
+
});
|
|
36
|
+
return {
|
|
37
|
+
handle: (input) => {
|
|
38
|
+
// Inherit parent narrowing: a narrowed parent forces the sub-agent's spans
|
|
39
|
+
// to untrusted provenance so the loop narrows and the motivated-call block applies.
|
|
40
|
+
const spans = deps.parentNarrowed
|
|
41
|
+
? input.spans.map((s) => ({ ...s, provenance: 'untrusted' }))
|
|
42
|
+
: input.spans;
|
|
43
|
+
return runner.handle({ ...input, spans });
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=sub-agent-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sub-agent-runner.js","sourceRoot":"","sources":["../../src/runtime/sub-agent-runner.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,EAAE;AACF,2EAA2E;AAC3E,2EAA2E;AAC3E,6EAA6E;AAC7E,8EAA8E;AAC9E,wDAAwD;AAExD,OAAO,EAAE,eAAe,EAA0C,MAAM,mBAAmB,CAAA;AAC3F,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAA;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAmB5C,MAAM,UAAU,kBAAkB,CAAC,IAAwB;IACzD,iFAAiF;IACjF,MAAM,MAAM,GAAG,cAAc,EAAE,CAAA;IAE/B,MAAM,MAAM,GAAG,sBAAsB,CAAC;QACpC,IAAI,EAAE,IAAI,CAAC,eAAe;QAC1B,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QACtD,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;QACtB,UAAU,EAAE,IAAI,CAAC,UAAU;KAC5B,CAAC,CAAA;IAEF,iFAAiF;IACjF,iFAAiF;IACjF,8EAA8E;IAC9E,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAA;IAE/B,MAAM,MAAM,GAAG,eAAe,CAAC;QAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,MAAM;QACN,WAAW,EAAE,MAAM;QACnB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,QAAQ;QACR,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa;QACjD,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC7E,CAAC,CAAA;IAEF,OAAO;QACL,MAAM,EAAE,CAAC,KAAgB,EAAuB,EAAE;YAChD,2EAA2E;YAC3E,oFAAoF;YACpF,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc;gBAC/B,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,UAAU,EAAE,WAAoB,EAAE,CAAC,CAAC;gBACtE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAA;YACf,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;QAC3C,CAAC;KACF,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { GrantStore, GrantPersistencePort } from './types.js';
|
|
2
|
+
export interface GrantStoreDeps {
|
|
3
|
+
/** Persistence for always grants. Absent ⇒ always grants are in-memory only. */
|
|
4
|
+
persistence?: GrantPersistencePort;
|
|
5
|
+
}
|
|
6
|
+
export declare function makeGrantStore(deps?: GrantStoreDeps): GrantStore;
|
|
7
|
+
//# sourceMappingURL=grants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grants.d.ts","sourceRoot":"","sources":["../../src/safety/grants.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAc,UAAU,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAE9E,MAAM,WAAW,cAAc;IAC7B,gFAAgF;IAChF,WAAW,CAAC,EAAE,oBAAoB,CAAA;CACnC;AAED,wBAAgB,cAAc,CAAC,IAAI,GAAE,cAAmB,GAAG,UAAU,CA6CpE"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
// Scoped approval grant store (ADR-0047).
|
|
2
|
+
//
|
|
3
|
+
// Remembers "session" / "always" approvals per base tool so repeated low-risk
|
|
4
|
+
// actions stop prompting. Session grants are in-memory (process lifetime);
|
|
5
|
+
// always grants are persisted via an injected port. This store ONLY answers
|
|
6
|
+
// "is this tool granted" — the safety verdict layer decides whether a grant is
|
|
7
|
+
// allowed to suppress a card (never for Tier-3, never over a deny).
|
|
8
|
+
export function makeGrantStore(deps = {}) {
|
|
9
|
+
const session = new Set();
|
|
10
|
+
const always = new Set(deps.persistence?.loadAlways() ?? []);
|
|
11
|
+
const persist = () => deps.persistence?.saveAlways([...always]);
|
|
12
|
+
return {
|
|
13
|
+
has(tool) {
|
|
14
|
+
return session.has(tool) || always.has(tool);
|
|
15
|
+
},
|
|
16
|
+
record(tool, scope) {
|
|
17
|
+
if (scope === 'always') {
|
|
18
|
+
// Promote: an always grant supersedes a session grant for the tool.
|
|
19
|
+
session.delete(tool);
|
|
20
|
+
if (!always.has(tool)) {
|
|
21
|
+
always.add(tool);
|
|
22
|
+
persist();
|
|
23
|
+
}
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
// session: skip if already covered by a durable always grant.
|
|
27
|
+
if (!always.has(tool))
|
|
28
|
+
session.add(tool);
|
|
29
|
+
},
|
|
30
|
+
revoke(tool) {
|
|
31
|
+
session.delete(tool);
|
|
32
|
+
if (always.delete(tool))
|
|
33
|
+
persist();
|
|
34
|
+
},
|
|
35
|
+
revokeAll() {
|
|
36
|
+
session.clear();
|
|
37
|
+
if (always.size > 0) {
|
|
38
|
+
always.clear();
|
|
39
|
+
persist();
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
list() {
|
|
43
|
+
const out = [];
|
|
44
|
+
for (const t of always)
|
|
45
|
+
out.push({ tool: t, scope: 'always' });
|
|
46
|
+
for (const t of session)
|
|
47
|
+
if (!always.has(t))
|
|
48
|
+
out.push({ tool: t, scope: 'session' });
|
|
49
|
+
return out;
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=grants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grants.js","sourceRoot":"","sources":["../../src/safety/grants.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,EAAE;AACF,8EAA8E;AAC9E,2EAA2E;AAC3E,4EAA4E;AAC5E,+EAA+E;AAC/E,oEAAoE;AASpE,MAAM,UAAU,cAAc,CAAC,OAAuB,EAAE;IACtD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAA;IACjC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAS,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAA;IAEpE,MAAM,OAAO,GAAG,GAAS,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAA;IAErE,OAAO;QACL,GAAG,CAAC,IAAY;YACd,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC9C,CAAC;QAED,MAAM,CAAC,IAAY,EAAE,KAAiB;YACpC,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACvB,oEAAoE;gBACpE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;gBACpB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBACtB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;oBAChB,OAAO,EAAE,CAAA;gBACX,CAAC;gBACD,OAAM;YACR,CAAC;YACD,8DAA8D;YAC9D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC1C,CAAC;QAED,MAAM,CAAC,IAAY;YACjB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YACpB,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;gBAAE,OAAO,EAAE,CAAA;QACpC,CAAC;QAED,SAAS;YACP,OAAO,CAAC,KAAK,EAAE,CAAA;YACf,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;gBACpB,MAAM,CAAC,KAAK,EAAE,CAAA;gBACd,OAAO,EAAE,CAAA;YACX,CAAC;QACH,CAAC;QAED,IAAI;YACF,MAAM,GAAG,GAA0C,EAAE,CAAA;YACrD,KAAK,MAAM,CAAC,IAAI,MAAM;gBAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAA;YAC9D,KAAK,MAAM,CAAC,IAAI,OAAO;gBAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;oBAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;YACpF,OAAO,GAAG,CAAA;QACZ,CAAC;KACF,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
export type { Provenance, ContextSpan, ToolCall, Verdict, Tier, AutonomyLevel, AutonomyTier, ConfirmationCard, HardDenyRule, HardDenyCategory, InjectionVerdict, InjectionClassifier, InputGuard, SafetyPolicy, SafetyClassifier, EgressMode, EgressAllowlistEntry, OutboundRequest, EgressGuard, ApprovalStatus, ApprovalRecord, ApprovalResult, ApprovalHandler, SecretRedactor, Vault, MountSpec, SandboxConfig, SandboxRunResult, SandboxSecurityLevel, SandboxRunner, NightlyOpKind, NightlyOp, NightlyCarveoutEntry, NightlyCarveout, LethalTrifectaState, LethalTrifectaResult, LethalTrifectaDetector, GrantScope, GrantStore, GrantPersistencePort, } from './types.js';
|
|
2
|
+
export { makeGrantStore } from './grants.js';
|
|
3
|
+
export type { GrantStoreDeps } from './grants.js';
|
|
4
|
+
import type { SafetyClassifier, SafetyPolicy, Vault, SandboxRunner, SandboxSecurityLevel, SandboxRunResult, SandboxConfig, InputGuard, InjectionVerdict, EgressGuard, EgressAllowlistEntry, ContextSpan, ApprovalHandler, NightlyCarveout, NightlyOp, LethalTrifectaDetector, GrantStore } from './types.js';
|
|
5
|
+
export interface SafetyPolicyDeps {
|
|
6
|
+
/** false = cold start: rule set not yet loaded → fail-closed deny-all. */
|
|
7
|
+
ready?: boolean;
|
|
8
|
+
/** Last sandbox probe; degraded mode denies high-risk tools (ADR-0012). */
|
|
9
|
+
sandboxSecurityLevel?: SandboxSecurityLevel;
|
|
10
|
+
/**
|
|
11
|
+
* Scoped approval grants (ADR-0047). When present, a per-tool grant suppresses
|
|
12
|
+
* the Tier-2 `ask` (only after every deny check; never for Tier-3). Absent ⇒
|
|
13
|
+
* no grants ⇒ baseline behavior.
|
|
14
|
+
*/
|
|
15
|
+
grants?: GrantStore;
|
|
16
|
+
}
|
|
17
|
+
export declare function makeSafetyPolicy(deps?: SafetyPolicyDeps): SafetyPolicy;
|
|
18
|
+
export declare function makeSafetyClassifier(deps?: SafetyPolicyDeps): SafetyClassifier;
|
|
19
|
+
export interface InputGuardDeps {
|
|
20
|
+
/** Advisory classifier override; failure never blocks defang. */
|
|
21
|
+
classify?: (span: ContextSpan) => Promise<InjectionVerdict>;
|
|
22
|
+
}
|
|
23
|
+
export declare function makeInputGuard(deps?: InputGuardDeps): InputGuard;
|
|
24
|
+
export interface EgressGuardDeps {
|
|
25
|
+
allowlist?: EgressAllowlistEntry[];
|
|
26
|
+
proxyAvailable?: boolean;
|
|
27
|
+
maxBodyBytes?: number;
|
|
28
|
+
}
|
|
29
|
+
export declare function makeEgressGuard(deps?: EgressGuardDeps): EgressGuard;
|
|
30
|
+
interface PendingApproval {
|
|
31
|
+
nonce: string;
|
|
32
|
+
actionHash: string;
|
|
33
|
+
requiresSecondFactor: boolean;
|
|
34
|
+
stagedHashAtAccept: string;
|
|
35
|
+
expiresAt: number;
|
|
36
|
+
}
|
|
37
|
+
export interface ApprovalHandlerDeps {
|
|
38
|
+
pending?: PendingApproval[];
|
|
39
|
+
/** Hash of the staging area at promote time (TOCTOU re-check). */
|
|
40
|
+
currentStagedHash?: () => string;
|
|
41
|
+
now?: () => number;
|
|
42
|
+
verifySecondFactor?: (factor: string) => boolean;
|
|
43
|
+
}
|
|
44
|
+
export declare function makeApprovalHandler(deps?: ApprovalHandlerDeps): ApprovalHandler;
|
|
45
|
+
export interface VaultDeps {
|
|
46
|
+
secrets?: Record<string, string>;
|
|
47
|
+
}
|
|
48
|
+
export declare function makeVault(deps?: VaultDeps): Vault;
|
|
49
|
+
export interface SandboxRunnerDeps {
|
|
50
|
+
/** Launch shim (spy-able); returns the container id. Default: deterministic id. */
|
|
51
|
+
launch?: (config: SandboxConfig, flags: string[]) => string;
|
|
52
|
+
/** Probe for the gVisor (runsc) runtime; default: available. */
|
|
53
|
+
gVisorProbe?: () => boolean;
|
|
54
|
+
/** Host paths mounts may live under (own worktree only). */
|
|
55
|
+
allowedMountRoots?: string[];
|
|
56
|
+
/** Exec shim for commands inside a container. */
|
|
57
|
+
execImpl?: (containerId: string, cmd: string, args: readonly string[]) => Promise<SandboxRunResult>;
|
|
58
|
+
/** Seccomp profile path applied to every container (ADR-0012, CSO-M1). */
|
|
59
|
+
seccompProfile?: string;
|
|
60
|
+
/** User-namespace remap target applied to every container (ADR-0012, CSO-M1). */
|
|
61
|
+
usernsRemap?: string;
|
|
62
|
+
}
|
|
63
|
+
export declare function makeSandboxRunner(deps?: SandboxRunnerDeps): SandboxRunner;
|
|
64
|
+
export interface NightlyCarveoutDeps {
|
|
65
|
+
/** Pre-op DB snapshot (reversibility); runs BEFORE the op. */
|
|
66
|
+
snapshot?: () => void;
|
|
67
|
+
/** Executes the permitted op. */
|
|
68
|
+
execOp?: (op: NightlyOp) => void;
|
|
69
|
+
}
|
|
70
|
+
export declare function makeNightlyCarveout(deps?: NightlyCarveoutDeps): NightlyCarveout;
|
|
71
|
+
export declare function makeLethalTrifectaDetector(): LethalTrifectaDetector;
|
|
72
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/safety/index.ts"],"names":[],"mappings":"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"}
|