@calliopelabs/cli 3.5.4 → 3.6.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 +8 -0
- package/dist/acp.d.ts +10 -3
- package/dist/acp.d.ts.map +1 -1
- package/dist/acp.js +27 -7
- package/dist/acp.js.map +1 -1
- package/dist/bin.d.ts.map +1 -1
- package/dist/bin.js +28 -8
- package/dist/bin.js.map +1 -1
- package/dist/execution/authority.d.ts +4 -1
- package/dist/execution/authority.d.ts.map +1 -1
- package/dist/execution/authority.js +23 -7
- package/dist/execution/authority.js.map +1 -1
- package/dist/execution/child-grants.d.ts +2 -0
- package/dist/execution/child-grants.d.ts.map +1 -1
- package/dist/execution/child-grants.js +19 -4
- package/dist/execution/child-grants.js.map +1 -1
- package/dist/execution/delegated.d.ts +14 -0
- package/dist/execution/delegated.d.ts.map +1 -0
- package/dist/execution/delegated.js +66 -0
- package/dist/execution/delegated.js.map +1 -0
- package/dist/execution/files.js +6 -6
- package/dist/execution/files.js.map +1 -1
- package/dist/execution/guard.d.ts +5 -0
- package/dist/execution/guard.d.ts.map +1 -1
- package/dist/execution/guard.js +31 -16
- package/dist/execution/guard.js.map +1 -1
- package/dist/execution/index.d.ts +4 -0
- package/dist/execution/index.d.ts.map +1 -1
- package/dist/execution/index.js +4 -0
- package/dist/execution/index.js.map +1 -1
- package/dist/execution/ledger-cli.d.ts +2 -1
- package/dist/execution/ledger-cli.d.ts.map +1 -1
- package/dist/execution/ledger-cli.js +51 -14
- package/dist/execution/ledger-cli.js.map +1 -1
- package/dist/execution/ledger-protocol.d.ts +6 -2
- package/dist/execution/ledger-protocol.d.ts.map +1 -1
- package/dist/execution/ledger-protocol.js +110 -24
- package/dist/execution/ledger-protocol.js.map +1 -1
- package/dist/execution/ledger-server.d.ts +13 -0
- package/dist/execution/ledger-server.d.ts.map +1 -1
- package/dist/execution/ledger-server.js +57 -13
- package/dist/execution/ledger-server.js.map +1 -1
- package/dist/execution/ledger-tunnel.d.ts +50 -0
- package/dist/execution/ledger-tunnel.d.ts.map +1 -0
- package/dist/execution/ledger-tunnel.js +307 -0
- package/dist/execution/ledger-tunnel.js.map +1 -0
- package/dist/execution/ledger.d.ts +4 -0
- package/dist/execution/ledger.d.ts.map +1 -1
- package/dist/execution/ledger.js +30 -4
- package/dist/execution/ledger.js.map +1 -1
- package/dist/execution/parent-accounting.d.ts +41 -0
- package/dist/execution/parent-accounting.d.ts.map +1 -0
- package/dist/execution/parent-accounting.js +52 -0
- package/dist/execution/parent-accounting.js.map +1 -0
- package/dist/execution/parent-budget.d.ts +25 -0
- package/dist/execution/parent-budget.d.ts.map +1 -0
- package/dist/execution/parent-budget.js +102 -0
- package/dist/execution/parent-budget.js.map +1 -0
- package/dist/execution/project-spend.d.ts.map +1 -1
- package/dist/execution/project-spend.js +35 -5
- package/dist/execution/project-spend.js.map +1 -1
- package/dist/execution/remote-checkpoint.d.ts +15 -0
- package/dist/execution/remote-checkpoint.d.ts.map +1 -0
- package/dist/execution/remote-checkpoint.js +165 -0
- package/dist/execution/remote-checkpoint.js.map +1 -0
- package/dist/execution/remote-ledger.d.ts +12 -2
- package/dist/execution/remote-ledger.d.ts.map +1 -1
- package/dist/execution/remote-ledger.js +53 -21
- package/dist/execution/remote-ledger.js.map +1 -1
- package/dist/execution/types.d.ts +23 -5
- package/dist/execution/types.d.ts.map +1 -1
- package/dist/execution/types.js.map +1 -1
- package/dist/goals/supervised.js +2 -2
- package/dist/goals/supervised.js.map +1 -1
- package/dist/headless.d.ts +2 -6
- package/dist/headless.d.ts.map +1 -1
- package/dist/headless.js +17 -21
- package/dist/headless.js.map +1 -1
- package/dist/improvement/actions.d.ts +3 -4
- package/dist/improvement/actions.d.ts.map +1 -1
- package/dist/improvement/actions.js +10 -7
- package/dist/improvement/actions.js.map +1 -1
- package/dist/improvement/capabilities.d.ts +54 -0
- package/dist/improvement/capabilities.d.ts.map +1 -0
- package/dist/improvement/capabilities.js +44 -0
- package/dist/improvement/capabilities.js.map +1 -0
- package/dist/improvement/cli.d.ts +1 -1
- package/dist/improvement/cli.d.ts.map +1 -1
- package/dist/improvement/cli.js +14 -2
- package/dist/improvement/cli.js.map +1 -1
- package/dist/improvement/index.d.ts +5 -0
- package/dist/improvement/index.d.ts.map +1 -1
- package/dist/improvement/index.js +5 -0
- package/dist/improvement/index.js.map +1 -1
- package/dist/improvement/proposal-hash.d.ts +3 -0
- package/dist/improvement/proposal-hash.d.ts.map +1 -0
- package/dist/improvement/proposal-hash.js +5 -0
- package/dist/improvement/proposal-hash.js.map +1 -0
- package/dist/improvement/review-contract.d.ts +32 -0
- package/dist/improvement/review-contract.d.ts.map +1 -0
- package/dist/improvement/review-contract.js +62 -0
- package/dist/improvement/review-contract.js.map +1 -0
- package/dist/improvement/review-requests.d.ts +72 -0
- package/dist/improvement/review-requests.d.ts.map +1 -0
- package/dist/improvement/review-requests.js +63 -0
- package/dist/improvement/review-requests.js.map +1 -0
- package/dist/improvement/source-changes.d.ts +78 -0
- package/dist/improvement/source-changes.d.ts.map +1 -0
- package/dist/improvement/source-changes.js +91 -0
- package/dist/improvement/source-changes.js.map +1 -0
- package/dist/improvement/task-outcomes.d.ts +82 -0
- package/dist/improvement/task-outcomes.d.ts.map +1 -0
- package/dist/improvement/task-outcomes.js +72 -0
- package/dist/improvement/task-outcomes.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/isolation/contracts.d.ts +13 -0
- package/dist/isolation/contracts.d.ts.map +1 -1
- package/dist/isolation/contracts.js +9 -1
- package/dist/isolation/contracts.js.map +1 -1
- package/dist/isolation/coordinator.d.ts.map +1 -1
- package/dist/isolation/coordinator.js +4 -0
- package/dist/isolation/coordinator.js.map +1 -1
- package/dist/isolation/process.d.ts.map +1 -1
- package/dist/isolation/process.js +3 -1
- package/dist/isolation/process.js.map +1 -1
- package/dist/isolation/worktree.d.ts +9 -1
- package/dist/isolation/worktree.d.ts.map +1 -1
- package/dist/isolation/worktree.js +8 -3
- package/dist/isolation/worktree.js.map +1 -1
- package/dist/memory.d.ts +5 -3
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +8 -6
- package/dist/memory.js.map +1 -1
- package/dist/migration/assessment-contract.d.ts +60 -0
- package/dist/migration/assessment-contract.d.ts.map +1 -0
- package/dist/migration/assessment-contract.js +132 -0
- package/dist/migration/assessment-contract.js.map +1 -0
- package/dist/migration/assessment-schema.d.ts +19 -0
- package/dist/migration/assessment-schema.d.ts.map +1 -0
- package/dist/migration/assessment-schema.js +43 -0
- package/dist/migration/assessment-schema.js.map +1 -0
- package/dist/migration/assessment.d.ts +159 -0
- package/dist/migration/assessment.d.ts.map +1 -0
- package/dist/migration/assessment.js +219 -0
- package/dist/migration/assessment.js.map +1 -0
- package/dist/migration/cli.d.ts +6 -0
- package/dist/migration/cli.d.ts.map +1 -0
- package/dist/migration/cli.js +101 -0
- package/dist/migration/cli.js.map +1 -0
- package/dist/migration/evidence.d.ts +27 -0
- package/dist/migration/evidence.d.ts.map +1 -0
- package/dist/migration/evidence.js +124 -0
- package/dist/migration/evidence.js.map +1 -0
- package/dist/migration/example.d.ts +33 -0
- package/dist/migration/example.d.ts.map +1 -0
- package/dist/migration/example.js +28 -0
- package/dist/migration/example.js.map +1 -0
- package/dist/migration/index.d.ts +21 -0
- package/dist/migration/index.d.ts.map +1 -0
- package/dist/migration/index.js +15 -0
- package/dist/migration/index.js.map +1 -0
- package/dist/migration/inventory.d.ts +70 -0
- package/dist/migration/inventory.d.ts.map +1 -0
- package/dist/migration/inventory.js +233 -0
- package/dist/migration/inventory.js.map +1 -0
- package/dist/migration/schema.d.ts +61 -0
- package/dist/migration/schema.d.ts.map +1 -0
- package/dist/migration/schema.js +76 -0
- package/dist/migration/schema.js.map +1 -0
- package/dist/migration/verification.d.ts +146 -0
- package/dist/migration/verification.d.ts.map +1 -0
- package/dist/migration/verification.js +260 -0
- package/dist/migration/verification.js.map +1 -0
- package/dist/orchestration/actions.d.ts +2 -0
- package/dist/orchestration/actions.d.ts.map +1 -1
- package/dist/orchestration/actions.js.map +1 -1
- package/dist/orchestration/artifact-host.d.ts +46 -0
- package/dist/orchestration/artifact-host.d.ts.map +1 -0
- package/dist/orchestration/artifact-host.js +64 -0
- package/dist/orchestration/artifact-host.js.map +1 -0
- package/dist/orchestration/coordinator-actions.d.ts +1 -1
- package/dist/orchestration/coordinator-actions.d.ts.map +1 -1
- package/dist/orchestration/coordinator-actions.js +5 -3
- package/dist/orchestration/coordinator-actions.js.map +1 -1
- package/dist/orchestration/coordinator-types.d.ts +23 -2
- package/dist/orchestration/coordinator-types.d.ts.map +1 -1
- package/dist/orchestration/coordinator.d.ts +5 -0
- package/dist/orchestration/coordinator.d.ts.map +1 -1
- package/dist/orchestration/coordinator.js +30 -13
- package/dist/orchestration/coordinator.js.map +1 -1
- package/dist/orchestration/execution-cli.d.ts +1 -1
- package/dist/orchestration/execution-cli.d.ts.map +1 -1
- package/dist/orchestration/execution-cli.js +29 -6
- package/dist/orchestration/execution-cli.js.map +1 -1
- package/dist/orchestration/execution-journal.d.ts.map +1 -1
- package/dist/orchestration/execution-journal.js +79 -6
- package/dist/orchestration/execution-journal.js.map +1 -1
- package/dist/orchestration/execution-store.d.ts +5 -1
- package/dist/orchestration/execution-store.d.ts.map +1 -1
- package/dist/orchestration/execution-store.js +66 -5
- package/dist/orchestration/execution-store.js.map +1 -1
- package/dist/orchestration/execution.d.ts.map +1 -1
- package/dist/orchestration/execution.js +37 -10
- package/dist/orchestration/execution.js.map +1 -1
- package/dist/orchestration/index.d.ts +6 -0
- package/dist/orchestration/index.d.ts.map +1 -1
- package/dist/orchestration/index.js +6 -0
- package/dist/orchestration/index.js.map +1 -1
- package/dist/orchestration/interruption.d.ts +10 -0
- package/dist/orchestration/interruption.d.ts.map +1 -0
- package/dist/orchestration/interruption.js +38 -0
- package/dist/orchestration/interruption.js.map +1 -0
- package/dist/orchestration/question-contract.d.ts +19 -0
- package/dist/orchestration/question-contract.d.ts.map +1 -0
- package/dist/orchestration/question-contract.js +21 -0
- package/dist/orchestration/question-contract.js.map +1 -0
- package/dist/orchestration/questions.d.ts +9 -0
- package/dist/orchestration/questions.d.ts.map +1 -0
- package/dist/orchestration/questions.js +75 -0
- package/dist/orchestration/questions.js.map +1 -0
- package/dist/orchestration/reviewed-ledger.d.ts +23 -0
- package/dist/orchestration/reviewed-ledger.d.ts.map +1 -0
- package/dist/orchestration/reviewed-ledger.js +49 -0
- package/dist/orchestration/reviewed-ledger.js.map +1 -0
- package/dist/orchestration/source-candidates.d.ts +64 -0
- package/dist/orchestration/source-candidates.d.ts.map +1 -0
- package/dist/orchestration/source-candidates.js +95 -0
- package/dist/orchestration/source-candidates.js.map +1 -0
- package/dist/orchestration/validation.js +1 -1
- package/dist/orchestration/validation.js.map +1 -1
- package/dist/runlog.js +2 -2
- package/dist/runlog.js.map +1 -1
- package/dist/runtime/permissions.d.ts.map +1 -1
- package/dist/runtime/permissions.js +3 -2
- package/dist/runtime/permissions.js.map +1 -1
- package/dist/runtime/turn.d.ts +2 -0
- package/dist/runtime/turn.d.ts.map +1 -1
- package/dist/runtime/turn.js +21 -7
- package/dist/runtime/turn.js.map +1 -1
- package/dist/session-management/actions.js +1 -1
- package/dist/session-management/actions.js.map +1 -1
- package/dist/sessions/execution-binding.d.ts +8 -0
- package/dist/sessions/execution-binding.d.ts.map +1 -0
- package/dist/sessions/execution-binding.js +9 -0
- package/dist/sessions/execution-binding.js.map +1 -0
- package/dist/sessions/index.d.ts +1 -0
- package/dist/sessions/index.d.ts.map +1 -1
- package/dist/sessions/index.js +1 -0
- package/dist/sessions/index.js.map +1 -1
- package/dist/source-changes/writer.d.ts +77 -0
- package/dist/source-changes/writer.d.ts.map +1 -0
- package/dist/source-changes/writer.js +189 -0
- package/dist/source-changes/writer.js.map +1 -0
- package/dist/spawning/actions.d.ts +10 -1
- package/dist/spawning/actions.d.ts.map +1 -1
- package/dist/spawning/actions.js +26 -7
- package/dist/spawning/actions.js.map +1 -1
- package/dist/spawning/cli.js +1 -1
- package/dist/spawning/cli.js.map +1 -1
- package/dist/spawning/execution.d.ts.map +1 -1
- package/dist/spawning/execution.js +2 -0
- package/dist/spawning/execution.js.map +1 -1
- package/dist/spawning/types.d.ts +19 -6
- package/dist/spawning/types.d.ts.map +1 -1
- package/dist/spawning/validation.d.ts +16 -0
- package/dist/spawning/validation.d.ts.map +1 -1
- package/dist/spawning/validation.js +44 -8
- package/dist/spawning/validation.js.map +1 -1
- package/dist/storage.d.ts +3 -0
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +6 -1
- package/dist/storage.js.map +1 -1
- package/dist/supervision/contracts.js +4 -1
- package/dist/supervision/contracts.js.map +1 -1
- package/dist/tools.d.ts +1 -0
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +5 -0
- package/dist/tools.js.map +1 -1
- package/docs/README.md +66 -0
- package/docs/delegation-ledger.md +329 -0
- package/docs/migration-assessment.md +113 -0
- package/docs/migration-example-plan.json +88 -0
- package/docs/migration-example-report.json +511 -0
- package/docs/migration-inventory.md +63 -0
- package/docs/migration-playbook.md +152 -0
- package/docs/migration-verification.md +177 -0
- package/docs/releases/3.6.0.md +43 -0
- package/package.json +7 -2
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Readable, Writable } from 'node:stream';
|
|
2
|
+
export declare const LEDGER_TUNNEL_CAPABILITY: Readonly<{
|
|
3
|
+
version: 1;
|
|
4
|
+
transport: "http-exec-v1";
|
|
5
|
+
tokenVersion: 2;
|
|
6
|
+
role: "child";
|
|
7
|
+
replay: false;
|
|
8
|
+
}>;
|
|
9
|
+
/** Supplied by the trusted dispatch owner from the original admitted credential.
|
|
10
|
+
* Decoding claims adds restrictions; only the native ledger verifies authority.
|
|
11
|
+
*/
|
|
12
|
+
export interface LedgerTunnelBinding {
|
|
13
|
+
version: 1;
|
|
14
|
+
credentialSha256: string;
|
|
15
|
+
runId: string;
|
|
16
|
+
grantId: string;
|
|
17
|
+
authority: string;
|
|
18
|
+
deadline: number;
|
|
19
|
+
}
|
|
20
|
+
interface TunnelOptions {
|
|
21
|
+
input: Readable;
|
|
22
|
+
output: Writable;
|
|
23
|
+
binding: LedgerTunnelBinding;
|
|
24
|
+
signal?: AbortSignal;
|
|
25
|
+
/** Bounds a request and loss-of-owner detection, including stalled stream writes. */
|
|
26
|
+
timeoutMs?: number;
|
|
27
|
+
}
|
|
28
|
+
export interface LedgerTunnelHandle {
|
|
29
|
+
close: () => Promise<void>;
|
|
30
|
+
closed: Promise<void>;
|
|
31
|
+
}
|
|
32
|
+
/** Owner side: accepts HTTP only on the injected private stream. ledgerUrl must
|
|
33
|
+
* come from the owned prepareReviewedLedger listener, never from a task/model.
|
|
34
|
+
* The host rechecks its authenticated task/placement lease through assertConnection.
|
|
35
|
+
*/
|
|
36
|
+
export declare function attachLedgerTunnel(options: TunnelOptions & {
|
|
37
|
+
ledgerUrl: string;
|
|
38
|
+
assertConnection: () => void;
|
|
39
|
+
}): LedgerTunnelHandle;
|
|
40
|
+
/** Task side: caller must pin the original port and binding before launch. A
|
|
41
|
+
* conflict never selects another port. Reconnect uses the same token/checkpoint;
|
|
42
|
+
* it is a new authenticated stream, not a new allowance or token enrollment.
|
|
43
|
+
*/
|
|
44
|
+
export declare function listenLedgerTunnel(options: TunnelOptions & {
|
|
45
|
+
port: number;
|
|
46
|
+
}): Promise<LedgerTunnelHandle & {
|
|
47
|
+
url: string;
|
|
48
|
+
}>;
|
|
49
|
+
export {};
|
|
50
|
+
//# sourceMappingURL=ledger-tunnel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ledger-tunnel.d.ts","sourceRoot":"","sources":["../../src/execution/ledger-tunnel.ts"],"names":[],"mappings":"AAQA,OAAO,EAAkB,QAAQ,EAAC,QAAQ,EAAC,MAAM,aAAa,CAAC;AAS/D,eAAO,MAAM,wBAAwB;;;;;;EAA6F,CAAC;AAQnI;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAC,CAAC,CAAC;IAAA,gBAAgB,EAAC,MAAM,CAAC;IAAA,KAAK,EAAC,MAAM,CAAC;IAAA,OAAO,EAAC,MAAM,CAAC;IAAA,SAAS,EAAC,MAAM,CAAC;IAAA,QAAQ,EAAC,MAAM,CAAC;CAChG;AACD,UAAU,aAAa;IACrB,KAAK,EAAC,QAAQ,CAAC;IAAA,MAAM,EAAC,QAAQ,CAAC;IAAA,OAAO,EAAC,mBAAmB,CAAC;IAAA,MAAM,CAAC,EAAC,WAAW,CAAC;IAC/E,qFAAqF;IACrF,SAAS,CAAC,EAAC,MAAM,CAAC;CACnB;AACD,MAAM,WAAW,kBAAkB;IAAE,KAAK,EAAC,MAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAAA,MAAM,EAAC,OAAO,CAAC,IAAI,CAAC,CAAA;CAAC;AAoFlF;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAC,aAAa,GAAC;IAAC,SAAS,EAAC,MAAM,CAAC;IAAA,gBAAgB,EAAC,MAAI,IAAI,CAAA;CAAC,GAAE,kBAAkB,CAkCxH;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAC,aAAa,GAAC;IAAC,IAAI,EAAC,MAAM,CAAA;CAAC,GAAE,OAAO,CAAC,kBAAkB,GAAC;IAAC,GAAG,EAAC,MAAM,CAAA;CAAC,CAAC,CAwCrH"}
|
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
/** A private reverse HTTP connection to the original reviewed ledger (cykick#19).
|
|
2
|
+
* The host supplies authenticated, non-replayed exec streams. This module does
|
|
3
|
+
* not authenticate an Astrolift user, enroll a task, mint a token or grant budget.
|
|
4
|
+
* HTTP framing/backpressure runs over those streams; no public listener is needed
|
|
5
|
+
* on the owner. Only the task listens, on its predeclared loopback port.
|
|
6
|
+
*/
|
|
7
|
+
import * as http from 'node:http';
|
|
8
|
+
import { Duplex, Transform, Readable, Writable } from 'node:stream';
|
|
9
|
+
import { pipeline } from 'node:stream/promises';
|
|
10
|
+
import { createHash } from 'node:crypto';
|
|
11
|
+
import { canonicalJson } from '../approvals/index.js';
|
|
12
|
+
import { hex, uuid } from './authority.js';
|
|
13
|
+
import { MAX_RESERVATION_BYTES } from './ledger.js';
|
|
14
|
+
import { LEDGER_OPERATIONS, MAX_LEDGER_REQUEST_BYTES } from './ledger-protocol.js';
|
|
15
|
+
import { ExecutionLimitError } from './types.js';
|
|
16
|
+
export const LEDGER_TUNNEL_CAPABILITY = Object.freeze({ version: 1, transport: 'http-exec-v1', tokenVersion: 2, role: 'child', replay: false });
|
|
17
|
+
const PING = '/bridge/v1/ping', HEADER = 'x-calliope-ledger-binding';
|
|
18
|
+
// Journals are bounded at source. Allow space for the manifest and JSON envelope.
|
|
19
|
+
const MAX_RESPONSE_BYTES = 2 * MAX_RESERVATION_BYTES;
|
|
20
|
+
const operations = new Set(LEDGER_OPERATIONS.filter(op => op !== 'revoke').map(op => `/v1/${op}`));
|
|
21
|
+
const unavailable = () => new ExecutionLimitError('unavailable', 'The private ledger connection is unavailable; retain the original enrollment.');
|
|
22
|
+
const digest = (value) => createHash('sha256').update(value).digest('hex');
|
|
23
|
+
function settings(options) {
|
|
24
|
+
const binding = structuredClone(options.binding), timeout = options.timeoutMs ?? 15000;
|
|
25
|
+
if (!binding || Object.keys(binding).sort().join(',') !== 'authority,credentialSha256,deadline,grantId,runId,version' ||
|
|
26
|
+
binding.version !== 1 || !hex(binding.credentialSha256) || !hex(binding.authority) || !uuid(binding.runId) || !uuid(binding.grantId) ||
|
|
27
|
+
!Number.isSafeInteger(binding.deadline) || binding.deadline <= Date.now() ||
|
|
28
|
+
!Number.isInteger(timeout) || timeout < 100 || timeout > 30000 || options.signal?.aborted)
|
|
29
|
+
throw unavailable();
|
|
30
|
+
return { binding, timeout, fingerprint: digest(canonicalJson(binding)) };
|
|
31
|
+
}
|
|
32
|
+
function credential(header, binding) {
|
|
33
|
+
if (typeof header !== 'string' || !header.startsWith('Bearer ') || header.length > 8199)
|
|
34
|
+
throw unavailable();
|
|
35
|
+
const token = header.slice(7);
|
|
36
|
+
if (digest(token) !== binding.credentialSha256)
|
|
37
|
+
throw unavailable();
|
|
38
|
+
try {
|
|
39
|
+
const [body, mac, extra] = token.split('.');
|
|
40
|
+
if (!body || !mac || extra !== undefined)
|
|
41
|
+
throw unavailable();
|
|
42
|
+
const claims = JSON.parse(Buffer.from(body, 'base64url').toString('utf8'));
|
|
43
|
+
if (claims.v !== 2 || claims.role !== 'child' || claims.owner !== undefined || claims.run !== binding.runId ||
|
|
44
|
+
claims.grant !== binding.grantId || claims.authority !== binding.authority || claims.exp !== binding.deadline ||
|
|
45
|
+
Date.now() >= binding.deadline)
|
|
46
|
+
throw unavailable();
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
throw unavailable();
|
|
50
|
+
}
|
|
51
|
+
return token;
|
|
52
|
+
}
|
|
53
|
+
function refuse(response, status = 503) {
|
|
54
|
+
// No admission:'refused': a broken transport cannot prove non-admission.
|
|
55
|
+
if (response.headersSent) {
|
|
56
|
+
response.destroy();
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
response.writeHead(status, { 'content-type': 'application/json', 'connection': 'close' });
|
|
60
|
+
response.end(JSON.stringify({ ok: false, code: 'unavailable', message: 'Private ledger connection unavailable.' }));
|
|
61
|
+
}
|
|
62
|
+
async function body(request) {
|
|
63
|
+
const chunks = [];
|
|
64
|
+
let size = 0;
|
|
65
|
+
for await (const chunk of request) {
|
|
66
|
+
size += chunk.length;
|
|
67
|
+
if (size > MAX_LEDGER_REQUEST_BYTES)
|
|
68
|
+
throw unavailable();
|
|
69
|
+
chunks.push(chunk);
|
|
70
|
+
}
|
|
71
|
+
return Buffer.concat(chunks, size);
|
|
72
|
+
}
|
|
73
|
+
/** One exec stream is one connection. Never fall back to a network socket or
|
|
74
|
+
* reuse a closed stream. Override TCP-only keepalive/ref calls for generic pipes.
|
|
75
|
+
*/
|
|
76
|
+
class StreamAgent extends http.Agent {
|
|
77
|
+
stream;
|
|
78
|
+
used = false;
|
|
79
|
+
constructor(stream) {
|
|
80
|
+
super({ keepAlive: true, maxSockets: 1, maxTotalSockets: 1 });
|
|
81
|
+
this.stream = stream;
|
|
82
|
+
// Pipes have no socket handle to ref. Keep the native agent's reuse cleanup.
|
|
83
|
+
Object.assign(stream, { ref: () => stream });
|
|
84
|
+
}
|
|
85
|
+
createConnection(_options, callback) {
|
|
86
|
+
if (this.used || this.stream.destroyed) {
|
|
87
|
+
callback?.(unavailable(), this.stream);
|
|
88
|
+
return undefined;
|
|
89
|
+
}
|
|
90
|
+
this.used = true;
|
|
91
|
+
return this.stream;
|
|
92
|
+
}
|
|
93
|
+
keepSocketAlive() { return true; }
|
|
94
|
+
}
|
|
95
|
+
function lifetime(options, server, timeout) {
|
|
96
|
+
const stream = Duplex.fromWeb({ readable: Readable.toWeb(options.input), writable: Writable.toWeb(options.output) });
|
|
97
|
+
const deadline = options.binding.deadline;
|
|
98
|
+
const controller = new AbortController();
|
|
99
|
+
let finish, closing;
|
|
100
|
+
const closed = new Promise(resolve => { finish = resolve; });
|
|
101
|
+
const close = () => {
|
|
102
|
+
if (closing)
|
|
103
|
+
return closing;
|
|
104
|
+
closing = closed;
|
|
105
|
+
clearInterval(watch);
|
|
106
|
+
options.signal?.removeEventListener('abort', stop);
|
|
107
|
+
controller.abort();
|
|
108
|
+
server.closeAllConnections();
|
|
109
|
+
stream.destroy();
|
|
110
|
+
if (server.listening)
|
|
111
|
+
server.close(() => finish());
|
|
112
|
+
else
|
|
113
|
+
finish();
|
|
114
|
+
return closed;
|
|
115
|
+
};
|
|
116
|
+
const stop = () => { void close(); };
|
|
117
|
+
let seen = Date.now();
|
|
118
|
+
const watch = setInterval(() => { if (Date.now() - seen >= timeout || Date.now() >= deadline)
|
|
119
|
+
stop(); }, Math.max(25, Math.floor(timeout / 4)));
|
|
120
|
+
stream.on('error', stop);
|
|
121
|
+
stream.once('close', stop);
|
|
122
|
+
stream.once('end', stop);
|
|
123
|
+
server.on('error', stop);
|
|
124
|
+
server.on('clientError', (_error, socket) => { socket.destroy(); });
|
|
125
|
+
server.on('connect', (_request, socket) => { socket.destroy(); });
|
|
126
|
+
server.on('upgrade', (_request, socket) => { socket.destroy(); });
|
|
127
|
+
options.signal?.addEventListener('abort', stop, { once: true });
|
|
128
|
+
return { stream, controller, close, closed, touch: () => { seen = Date.now(); } };
|
|
129
|
+
}
|
|
130
|
+
async function exchange(url, path, headers, bytes, signal, agent) {
|
|
131
|
+
return new Promise((resolve, reject) => {
|
|
132
|
+
const request = http.request(url, { method: 'POST', path, headers: { ...headers, 'content-length': String(bytes.length) }, agent, signal }, resolve);
|
|
133
|
+
request.once('error', () => reject(unavailable()));
|
|
134
|
+
request.end(bytes);
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
async function forward(response, output, signal) {
|
|
138
|
+
if (!response.statusCode || response.statusCode < 200 || response.statusCode >= 600 || response.statusCode >= 300 && response.statusCode < 400) {
|
|
139
|
+
response.destroy();
|
|
140
|
+
throw unavailable();
|
|
141
|
+
}
|
|
142
|
+
let bytes = 0;
|
|
143
|
+
const bound = new Transform({ transform(chunk, _encoding, done) { bytes += chunk.length; done(bytes > MAX_RESPONSE_BYTES ? unavailable() : null, chunk); } });
|
|
144
|
+
output.writeHead(response.statusCode, { 'content-type': 'application/json' });
|
|
145
|
+
await pipeline(response, bound, output, { signal });
|
|
146
|
+
}
|
|
147
|
+
/** Owner side: accepts HTTP only on the injected private stream. ledgerUrl must
|
|
148
|
+
* come from the owned prepareReviewedLedger listener, never from a task/model.
|
|
149
|
+
* The host rechecks its authenticated task/placement lease through assertConnection.
|
|
150
|
+
*/
|
|
151
|
+
export function attachLedgerTunnel(options) {
|
|
152
|
+
const { binding, timeout, fingerprint } = settings(options);
|
|
153
|
+
let url;
|
|
154
|
+
try {
|
|
155
|
+
url = new URL(options.ledgerUrl);
|
|
156
|
+
}
|
|
157
|
+
catch {
|
|
158
|
+
throw unavailable();
|
|
159
|
+
}
|
|
160
|
+
if (url.protocol !== 'http:' || url.hostname !== '127.0.0.1' || !url.port || url.username || url.password || url.pathname !== '/' || url.search || url.hash)
|
|
161
|
+
throw unavailable();
|
|
162
|
+
options.assertConnection();
|
|
163
|
+
const server = http.createServer({ maxHeaderSize: 16384, requestTimeout: timeout, headersTimeout: timeout });
|
|
164
|
+
// Pings own the idle deadline; Node's HTTP keepalive timeout must not close the exec stream.
|
|
165
|
+
server.keepAliveTimeout = 0;
|
|
166
|
+
const life = lifetime(options, server, timeout);
|
|
167
|
+
let busy = false;
|
|
168
|
+
server.on('request', async (request, response) => {
|
|
169
|
+
if (busy) {
|
|
170
|
+
refuse(response);
|
|
171
|
+
void life.close();
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
busy = true;
|
|
175
|
+
try {
|
|
176
|
+
options.assertConnection();
|
|
177
|
+
if (request.method !== 'POST' || request.headers[HEADER] !== fingerprint)
|
|
178
|
+
throw unavailable();
|
|
179
|
+
const signal = AbortSignal.any([life.controller.signal, AbortSignal.timeout(timeout)]);
|
|
180
|
+
const abort = () => { request.destroy(); };
|
|
181
|
+
signal.addEventListener('abort', abort, { once: true });
|
|
182
|
+
let bytes;
|
|
183
|
+
try {
|
|
184
|
+
bytes = await body(request);
|
|
185
|
+
}
|
|
186
|
+
finally {
|
|
187
|
+
signal.removeEventListener('abort', abort);
|
|
188
|
+
}
|
|
189
|
+
if (request.url === PING) {
|
|
190
|
+
if (bytes.length || request.headers.authorization)
|
|
191
|
+
throw unavailable();
|
|
192
|
+
response.writeHead(204, { [HEADER]: fingerprint });
|
|
193
|
+
response.end();
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
if (!operations.has(request.url))
|
|
197
|
+
throw unavailable();
|
|
198
|
+
const token = credential(request.headers.authorization, binding);
|
|
199
|
+
options.assertConnection();
|
|
200
|
+
const incoming = await exchange(url, request.url, { authorization: `Bearer ${token}`, 'content-type': 'application/json' }, bytes, signal);
|
|
201
|
+
options.assertConnection();
|
|
202
|
+
await forward(incoming, response, signal);
|
|
203
|
+
}
|
|
204
|
+
life.touch();
|
|
205
|
+
}
|
|
206
|
+
catch {
|
|
207
|
+
refuse(response);
|
|
208
|
+
void life.close();
|
|
209
|
+
}
|
|
210
|
+
finally {
|
|
211
|
+
busy = false;
|
|
212
|
+
}
|
|
213
|
+
});
|
|
214
|
+
server.emit('connection', life.stream);
|
|
215
|
+
return { close: life.close, closed: life.closed };
|
|
216
|
+
}
|
|
217
|
+
/** Task side: caller must pin the original port and binding before launch. A
|
|
218
|
+
* conflict never selects another port. Reconnect uses the same token/checkpoint;
|
|
219
|
+
* it is a new authenticated stream, not a new allowance or token enrollment.
|
|
220
|
+
*/
|
|
221
|
+
export async function listenLedgerTunnel(options) {
|
|
222
|
+
const { binding, timeout, fingerprint } = settings(options);
|
|
223
|
+
if (!Number.isInteger(options.port) || options.port < 1 || options.port > 65535)
|
|
224
|
+
throw unavailable();
|
|
225
|
+
const server = http.createServer({ maxHeaderSize: 16384, requestTimeout: timeout, headersTimeout: timeout });
|
|
226
|
+
server.maxConnections = 8;
|
|
227
|
+
const life = lifetime(options, server, timeout), agent = new StreamAgent(life.stream);
|
|
228
|
+
const url = new URL(`http://127.0.0.1:${options.port}`);
|
|
229
|
+
let busy = false, pinging;
|
|
230
|
+
const signal = () => AbortSignal.any([life.controller.signal, AbortSignal.timeout(timeout)]);
|
|
231
|
+
const ping = async () => {
|
|
232
|
+
const incoming = await exchange(url, PING, { [HEADER]: fingerprint }, Buffer.alloc(0), signal(), agent);
|
|
233
|
+
if (incoming.statusCode !== 204 || incoming.headers[HEADER] !== fingerprint) {
|
|
234
|
+
incoming.destroy();
|
|
235
|
+
throw unavailable();
|
|
236
|
+
}
|
|
237
|
+
incoming.resume();
|
|
238
|
+
await new Promise((resolve, reject) => { incoming.once('end', resolve); incoming.once('error', () => reject(unavailable())); });
|
|
239
|
+
life.touch();
|
|
240
|
+
};
|
|
241
|
+
const heartbeat = setInterval(() => {
|
|
242
|
+
if (busy || pinging)
|
|
243
|
+
return;
|
|
244
|
+
pinging = ping().catch(() => life.close()).finally(() => { pinging = undefined; });
|
|
245
|
+
}, Math.max(25, Math.floor(timeout / 3)));
|
|
246
|
+
void life.closed.then(() => { clearInterval(heartbeat); agent.destroy(); });
|
|
247
|
+
server.on('request', async (request, response) => {
|
|
248
|
+
if (busy) {
|
|
249
|
+
refuse(response);
|
|
250
|
+
return;
|
|
251
|
+
}
|
|
252
|
+
let token;
|
|
253
|
+
try {
|
|
254
|
+
if (request.method !== 'POST' || !operations.has(request.url))
|
|
255
|
+
throw unavailable();
|
|
256
|
+
token = credential(request.headers.authorization, binding);
|
|
257
|
+
}
|
|
258
|
+
catch {
|
|
259
|
+
refuse(response, 403);
|
|
260
|
+
return;
|
|
261
|
+
}
|
|
262
|
+
busy = true;
|
|
263
|
+
try {
|
|
264
|
+
const requestSignal = signal(), abort = () => { request.destroy(); };
|
|
265
|
+
requestSignal.addEventListener('abort', abort, { once: true });
|
|
266
|
+
let bytes;
|
|
267
|
+
try {
|
|
268
|
+
bytes = await body(request);
|
|
269
|
+
}
|
|
270
|
+
finally {
|
|
271
|
+
requestSignal.removeEventListener('abort', abort);
|
|
272
|
+
}
|
|
273
|
+
// One task request may wait behind the in-flight heartbeat. A health
|
|
274
|
+
// probe must not make native hello/execution negotiation spuriously fail.
|
|
275
|
+
await pinging;
|
|
276
|
+
const incoming = await exchange(url, request.url, { [HEADER]: fingerprint, authorization: `Bearer ${token}`, 'content-type': 'application/json' }, bytes, requestSignal, agent);
|
|
277
|
+
await forward(incoming, response, requestSignal);
|
|
278
|
+
life.touch();
|
|
279
|
+
}
|
|
280
|
+
catch {
|
|
281
|
+
refuse(response);
|
|
282
|
+
void life.close();
|
|
283
|
+
}
|
|
284
|
+
finally {
|
|
285
|
+
busy = false;
|
|
286
|
+
}
|
|
287
|
+
});
|
|
288
|
+
try {
|
|
289
|
+
busy = true;
|
|
290
|
+
await ping();
|
|
291
|
+
busy = false;
|
|
292
|
+
if (life.controller.signal.aborted)
|
|
293
|
+
throw unavailable();
|
|
294
|
+
await new Promise((resolve, reject) => { server.once('error', reject); server.listen(options.port, '127.0.0.1', () => { server.off('error', reject); resolve(); }); });
|
|
295
|
+
if (life.controller.signal.aborted) {
|
|
296
|
+
server.closeAllConnections();
|
|
297
|
+
await new Promise(resolve => server.close(() => resolve()));
|
|
298
|
+
throw unavailable();
|
|
299
|
+
}
|
|
300
|
+
return { url: url.origin, close: life.close, closed: life.closed };
|
|
301
|
+
}
|
|
302
|
+
catch {
|
|
303
|
+
await life.close();
|
|
304
|
+
throw unavailable();
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
//# sourceMappingURL=ledger-tunnel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ledger-tunnel.js","sourceRoot":"","sources":["../../src/execution/ledger-tunnel.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,10 @@ export declare function replayReservations(input: ExecutionManifest, events: Res
|
|
|
7
7
|
export type ReservationLedgerAccess = Pick<ReservationLedger, 'root' | 'read' | 'reserve' | 'settle'> & {
|
|
8
8
|
/** A transport must confirm rejection; cached absence cannot rule out an in-flight commit. */
|
|
9
9
|
canReleaseFailedReservation?: (error: unknown) => boolean;
|
|
10
|
+
/** Revalidate live owner/token authority; cached history is not an execution grant. */
|
|
11
|
+
refreshAuthority?: (cwd: string, agentId: string, signal?: AbortSignal) => Promise<void>;
|
|
12
|
+
/** Native transport verified this exact account's owner-declared local workspace. */
|
|
13
|
+
executionProject?: (cwd: string, agentId: string) => ExecutionManifest['project'];
|
|
10
14
|
};
|
|
11
15
|
export declare class ReservationLedger {
|
|
12
16
|
private readonly now;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledger.d.ts","sourceRoot":"","sources":["../../src/execution/ledger.ts"],"names":[],"mappings":"AAOA,OAAO,EAAuB,KAAK,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,KAAK,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,KAAK,qBAAqB,EAAC,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAM7L,eAAO,MAAM,sBAAsB,QAAQ,EAAE,qBAAqB,QAAmB,CAAC;AAEtF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAK/G;AA8BD,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,qBAAqB,CA0C9G;AAgCD,yGAAyG;AACzG,MAAM,MAAM,uBAAuB,GAAG,IAAI,CAAC,iBAAiB,EAAC,MAAM,GAAC,MAAM,GAAC,SAAS,GAAC,QAAQ,CAAC,GAAG;IAC/F,8FAA8F;IAC9F,2BAA2B,CAAC,EAAC,CAAC,KAAK,EAAC,OAAO,KAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ledger.d.ts","sourceRoot":"","sources":["../../src/execution/ledger.ts"],"names":[],"mappings":"AAOA,OAAO,EAAuB,KAAK,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,KAAK,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,KAAK,qBAAqB,EAAC,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAM7L,eAAO,MAAM,sBAAsB,QAAQ,EAAE,qBAAqB,QAAmB,CAAC;AAEtF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAK/G;AA8BD,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,qBAAqB,CA0C9G;AAgCD,yGAAyG;AACzG,MAAM,MAAM,uBAAuB,GAAG,IAAI,CAAC,iBAAiB,EAAC,MAAM,GAAC,MAAM,GAAC,SAAS,GAAC,QAAQ,CAAC,GAAG;IAC/F,8FAA8F;IAC9F,2BAA2B,CAAC,EAAC,CAAC,KAAK,EAAC,OAAO,KAAG,OAAO,CAAC;IACtD,uFAAuF;IACvF,gBAAgB,CAAC,EAAC,CAAC,GAAG,EAAC,MAAM,EAAC,OAAO,EAAC,MAAM,EAAC,MAAM,CAAC,EAAC,WAAW,KAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjF,qFAAqF;IACrF,gBAAgB,CAAC,EAAC,CAAC,GAAG,EAAC,MAAM,EAAC,OAAO,EAAC,MAAM,KAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;CAC7E,CAAC;AACF,qBAAa,iBAAiB;IAEJ,OAAO,CAAC,QAAQ,CAAC,GAAG;IAD5C,QAAQ,CAAC,IAAI,EAAC,MAAM,CAAC;IACrB,YAAY,IAAI,EAAC,MAAM,EAAkB,GAAG,eAAS,EAA2B;IAChF,iGAAiG;IACjG,MAAM,CAAC,KAAK,EAAC,iBAAiB,EAAC,MAAM,CAAC,EAAC,WAAW,GAAE,qBAAqB,CAUxE;IACD,IAAI,CAAC,GAAG,EAAC,MAAM,GAAE;QAAC,QAAQ,EAAC,iBAAiB,CAAC;QAAA,MAAM,EAAC,gBAAgB,EAAE,CAAC;QAAA,UAAU,EAAC,qBAAqB,CAAA;KAAC,CAGvG;IACK,OAAO,CAAC,GAAG,EAAC,MAAM,EAAC,gBAAgB,EAAC,MAAM,EAAC,KAAK,EAAC,kBAAkB,EAAC,MAAM,CAAC,EAAC,WAAW,EAAC,YAAY,CAAC,EAAC,MAAI,IAAI,GAAE,OAAO,CAAC,qBAAqB,CAAC,CAEnJ;IACK,aAAa,CAAC,GAAG,EAAC,MAAM,EAAC,gBAAgB,EAAC,MAAM,EAAC,KAAK,EAAC,UAAU,EAAC,MAAM,CAAC,EAAC,WAAW,EAAC,YAAY,CAAC,EAAC,MAAI,IAAI,GAAE,OAAO,CAAC,qBAAqB,CAAC,CAEjJ;IACD,8FAA8F;IACxF,MAAM,CAAC,GAAG,EAAC,MAAM,EAAC,gBAAgB,EAAC,MAAM,EAAC,KAAK,EAAC,iBAAiB,GAAE,OAAO,CAAC,qBAAqB,CAAC,CAgBtG;YACa,MAAM;CA+BrB"}
|
package/dist/execution/ledger.js
CHANGED
|
@@ -69,7 +69,7 @@ function settlement(value) {
|
|
|
69
69
|
}
|
|
70
70
|
function validateEvent(value) {
|
|
71
71
|
shape(value, ['version', 'id', 'at', 'previous', 'change', 'hash']);
|
|
72
|
-
if (![1, 2, 3, 4].includes(value.version) || !uuid(value.id) || !hex(value.previous) || !hex(value.hash))
|
|
72
|
+
if (![1, 2, 3, 4, 5].includes(value.version) || !uuid(value.id) || !hex(value.previous) || !hex(value.hash))
|
|
73
73
|
invalid();
|
|
74
74
|
integer(value.at, 1, 8640000000000000);
|
|
75
75
|
shape(value.change, ['type'], ['reservation', 'settlement', 'grant']);
|
|
@@ -136,7 +136,7 @@ export function replayReservations(input, events) {
|
|
|
136
136
|
assertChildCapacity(manifest, state, next.agentId, tokens, next.costNanos);
|
|
137
137
|
apply(next.agentId, tokens, next.costNanos);
|
|
138
138
|
state.requests[next.id] = { reservation: structuredClone(next), state: 'pending', ...(next.attribution ? { accounted: { tokens, costNanos: next.costNanos } } : {}) };
|
|
139
|
-
if (next.attribution)
|
|
139
|
+
if (next.attribution && state.version < 3)
|
|
140
140
|
state.version = 3;
|
|
141
141
|
}
|
|
142
142
|
else {
|
|
@@ -171,7 +171,7 @@ export function replayReservations(input, events) {
|
|
|
171
171
|
return state;
|
|
172
172
|
}
|
|
173
173
|
function reservationVersion(change) {
|
|
174
|
-
return change.type === 'reserve' && change.reservation.quoteEvidence?.version === 2 ? 4 : change.type === 'reserve' && change.reservation.attribution ? 3 : change.type === 'child_grant' ? 2 : 1;
|
|
174
|
+
return change.type === 'child_grant' && change.grant.version === 2 ? 5 : change.type === 'reserve' && change.reservation.quoteEvidence?.version === 2 ? 4 : change.type === 'reserve' && change.reservation.attribution ? 3 : change.type === 'child_grant' ? 2 : 1;
|
|
175
175
|
}
|
|
176
176
|
function decode(raw) {
|
|
177
177
|
let value;
|
|
@@ -298,7 +298,25 @@ export class ReservationLedger {
|
|
|
298
298
|
/** Settlement is allowed after cancellation/deadline so known spend can still be recorded. */
|
|
299
299
|
async settle(cwd, expectedManifest, value) {
|
|
300
300
|
settlement(value);
|
|
301
|
-
|
|
301
|
+
const saved = this.read(cwd);
|
|
302
|
+
if (saved.projection.manifestHash !== expectedManifest)
|
|
303
|
+
throw new ExecutionLimitError('conflict', 'Execution contract changed; settlement denied.');
|
|
304
|
+
let result;
|
|
305
|
+
const entry = saved.projection.requests[value.requestId];
|
|
306
|
+
if (saved.manifest.parent && entry && entry.state !== 'pending') {
|
|
307
|
+
const event = saved.events.find(event => event.change.type === 'settle' && event.change.settlement.requestId === value.requestId);
|
|
308
|
+
if (!event || event.change.type !== 'settle' || canonicalJson(event.change.settlement) !== canonicalJson(value))
|
|
309
|
+
throw new ExecutionLimitError('conflict', 'Request was already settled differently.');
|
|
310
|
+
result = saved.projection;
|
|
311
|
+
}
|
|
312
|
+
else
|
|
313
|
+
result = await this.append(cwd, expectedManifest, { type: 'settle', settlement: structuredClone(value) });
|
|
314
|
+
if (saved.manifest.parent) {
|
|
315
|
+
const { parentBudgetAuthority, settleParent } = await import('./parent-budget.js');
|
|
316
|
+
const parent = await parentBudgetAuthority(saved.manifest, cwd, false);
|
|
317
|
+
await settleParent(parent, cwd, parent.settlement(value));
|
|
318
|
+
}
|
|
319
|
+
return result;
|
|
302
320
|
}
|
|
303
321
|
async append(cwd, expectedManifest, change, signal, beforeCommit) {
|
|
304
322
|
throwIfCancelled(signal);
|
|
@@ -331,11 +349,14 @@ export class ReservationLedger {
|
|
|
331
349
|
checkExecutionIdentity(journal.manifest, cwd);
|
|
332
350
|
if (current.manifestHash !== expectedManifest)
|
|
333
351
|
throw new ExecutionLimitError('conflict', 'Execution contract changed; request denied.');
|
|
352
|
+
const funding = journal.manifest.parent && change.type !== 'settle'
|
|
353
|
+
? await (await import('./parent-budget.js')).parentBudgetAuthority(journal.manifest, cwd, true, signal) : undefined;
|
|
334
354
|
if (change.type === 'child_grant') {
|
|
335
355
|
const prior = current.childGrants?.find(r => r.grant.id === change.grant.id);
|
|
336
356
|
if (prior) {
|
|
337
357
|
if (canonicalJson(prior.grant) !== canonicalJson(change.grant))
|
|
338
358
|
throw new ExecutionLimitError('conflict', 'Child grant identity already belongs to another proposal.');
|
|
359
|
+
funding?.assertActive();
|
|
339
360
|
beforeCommit?.();
|
|
340
361
|
throwIfCancelled(signal);
|
|
341
362
|
return current;
|
|
@@ -347,6 +368,10 @@ export class ReservationLedger {
|
|
|
347
368
|
throw new ExecutionLimitError('limit', 'Budget history reached its event limit; pending reservations remain charged.');
|
|
348
369
|
const body = { version: reservationVersion(change), id: randomUUID(), at: Math.max(this.now(), journal.events.at(-1)?.at ?? journal.manifest.createdAt), previous: current.revision, change };
|
|
349
370
|
const event = { ...body, hash: digest(canonicalJson(body)) }, events = [...journal.events, event], next = replayReservations(journal.manifest, events), output = encode(journal.manifest, events);
|
|
371
|
+
if (funding && change.type === 'reserve') {
|
|
372
|
+
const { reserveParent } = await import('./parent-budget.js');
|
|
373
|
+
await reserveParent(funding, cwd, funding.reservation(change.reservation), signal, beforeCommit);
|
|
374
|
+
}
|
|
350
375
|
temp = join(this.root, `${randomUUID()}.tmp`);
|
|
351
376
|
writeNew(temp, output);
|
|
352
377
|
throwIfCancelled(signal);
|
|
@@ -357,6 +382,7 @@ export class ReservationLedger {
|
|
|
357
382
|
throw new ExecutionLimitError('deadline', 'Agent deadline expired before reservation or grant commit.');
|
|
358
383
|
if (read(file) !== raw)
|
|
359
384
|
throw new ExecutionLimitError('conflict', 'Budget history changed before commit.');
|
|
385
|
+
funding?.assertActive();
|
|
360
386
|
beforeCommit?.();
|
|
361
387
|
throwIfCancelled(signal);
|
|
362
388
|
fs.renameSync(temp, file);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../src/execution/ledger.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../src/execution/ledger.ts"],"names":[],"mappings":"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"}
|