@calliopelabs/cli 3.5.4 → 3.7.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/controls.d.ts +10 -0
- package/dist/acp/controls.d.ts.map +1 -0
- package/dist/acp/controls.js +81 -0
- package/dist/acp/controls.js.map +1 -0
- package/dist/acp.d.ts +21 -7
- package/dist/acp.d.ts.map +1 -1
- package/dist/acp.js +139 -23
- 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/build-identity.d.ts +27 -0
- package/dist/build-identity.d.ts.map +1 -0
- package/dist/build-identity.js +32 -0
- package/dist/build-identity.js.map +1 -0
- package/dist/build-metadata.json +1 -0
- 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 +29 -3
- package/dist/improvement/cli.js.map +1 -1
- package/dist/improvement/host-capabilities.d.ts +119 -0
- package/dist/improvement/host-capabilities.d.ts.map +1 -0
- package/dist/improvement/host-capabilities.js +18 -0
- package/dist/improvement/host-capabilities.js.map +1 -0
- package/dist/improvement/index.d.ts +6 -0
- package/dist/improvement/index.d.ts.map +1 -1
- package/dist/improvement/index.js +6 -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 +57 -0
- package/dist/orchestration/reviewed-ledger.js.map +1 -0
- package/dist/orchestration/routing.d.ts +3 -0
- package/dist/orchestration/routing.d.ts.map +1 -1
- package/dist/orchestration/routing.js +5 -1
- package/dist/orchestration/routing.js.map +1 -1
- 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 +5 -0
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +10 -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/acp.md +228 -0
- package/docs/delegation-ledger.md +331 -0
- package/docs/improvement-cycles.md +304 -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/docs/releases/3.7.0.md +53 -0
- package/package.json +11 -3
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { canonicalJson } from '../approvals/index.js';
|
|
2
|
+
import { authorizeSessionAction } from '../session-management/index.js';
|
|
3
|
+
import { OrchestrationError } from '../orchestration/types.js';
|
|
4
|
+
import { uuid, hex } from '../orchestration/validation.js';
|
|
5
|
+
import { inspectImprovements } from './actions.js';
|
|
6
|
+
import { projectImprovementReviews, validateImprovementReviewRequest } from './review-contract.js';
|
|
7
|
+
/** Separately negotiated metadata API; not an extension of the execution capability contract. */
|
|
8
|
+
export function improvementReviewCapabilities() {
|
|
9
|
+
return { version: 1, kind: 'improvement.review-capabilities', owner: 'calliope-cli', operations: ['request', 'inspect', 'dismiss'],
|
|
10
|
+
actions: ['propose', 'run', 'rollback'], authority: 'request-only-no-execution', storage: 'native-execution-journal', maxRequests: 64 };
|
|
11
|
+
}
|
|
12
|
+
export async function inspectImprovementReviews(cwd, runId, options = {}) {
|
|
13
|
+
const current = await inspectImprovements(cwd, runId, options);
|
|
14
|
+
return projectImprovementReviews(current.execution);
|
|
15
|
+
}
|
|
16
|
+
export async function requestImprovementReview(cwd, runId, request, options = {}) {
|
|
17
|
+
validateImprovementReviewRequest(request);
|
|
18
|
+
request = structuredClone(request);
|
|
19
|
+
const current = await inspectImprovements(cwd, runId, options), store = current.store;
|
|
20
|
+
if (current.owner?.alive || current.execution.state.ownerId)
|
|
21
|
+
throw new OrchestrationError('conflict', 'Stop or recover the active coordinator before requesting review.');
|
|
22
|
+
const duplicate = () => { const last = store.read().events.at(-1); return last?.change.type === 'improvement_review_requested' && canonicalJson(last.change.request) === canonicalJson(request) ? last : null; };
|
|
23
|
+
if (!duplicate())
|
|
24
|
+
store.assertRevision(request.executionRevision);
|
|
25
|
+
await authorizeSessionAction(cwd, 'orchestration_improvement_review_request', { path: cwd, runId: current.view.run.id, request, scope: 'record untrusted review request only; no model calls or execution authority' }, { ...options, confirmation: options.confirmation ?? 'mutating' });
|
|
26
|
+
const lease = store.acquire();
|
|
27
|
+
try {
|
|
28
|
+
lease.check();
|
|
29
|
+
const prior = store.read();
|
|
30
|
+
store.assertApproval(prior.header);
|
|
31
|
+
if (prior.state.ownerId)
|
|
32
|
+
throw new OrchestrationError('conflict', 'Execution became active during review request.');
|
|
33
|
+
const existing = duplicate();
|
|
34
|
+
if (existing)
|
|
35
|
+
return { requestId: existing.id, existing: true, reviews: projectImprovementReviews(prior) };
|
|
36
|
+
store.assertRevision(request.executionRevision);
|
|
37
|
+
const event = await store.append({ type: 'improvement_review_requested', request }, options.signal, undefined, () => { lease.check(); store.assertApproval(prior.header); store.assertRevision(request.executionRevision); });
|
|
38
|
+
return { requestId: event.id, existing: false, reviews: projectImprovementReviews(store.read()) };
|
|
39
|
+
}
|
|
40
|
+
finally {
|
|
41
|
+
lease.release();
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
export async function dismissImprovementReview(cwd, runId, requestId, executionRevision, options = {}) {
|
|
45
|
+
if (!uuid(requestId) || !hex(executionRevision))
|
|
46
|
+
throw new OrchestrationError('invalid', 'Review dismissal requires its exact request and revision.');
|
|
47
|
+
const current = await inspectImprovements(cwd, runId, options), store = current.store;
|
|
48
|
+
store.assertRevision(executionRevision);
|
|
49
|
+
const last = current.execution.events.at(-1);
|
|
50
|
+
if (current.owner?.alive || current.execution.state.ownerId || last?.id !== requestId || last.change.type !== 'improvement_review_requested')
|
|
51
|
+
throw new OrchestrationError('conflict', 'Review request is no longer pending.');
|
|
52
|
+
await authorizeSessionAction(cwd, 'orchestration_improvement_review_dismiss', { path: cwd, runId: current.view.run.id, requestId, executionRevision, scope: 'dismiss request only; retain the strategy and execution evidence' }, { ...options, confirmation: options.confirmation ?? 'mutating' });
|
|
53
|
+
const lease = store.acquire();
|
|
54
|
+
try {
|
|
55
|
+
const before = current.execution;
|
|
56
|
+
await store.append({ type: 'improvement_review_dismissed', requestId, executionRevision }, options.signal, undefined, () => { lease.check(); store.assertApproval(before.header); store.assertRevision(executionRevision); });
|
|
57
|
+
return projectImprovementReviews(store.read());
|
|
58
|
+
}
|
|
59
|
+
finally {
|
|
60
|
+
lease.release();
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=review-requests.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-requests.js","sourceRoot":"","sources":["../../src/improvement/review-requests.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import type { RunActionOptions } from '../orchestration/actions.js';
|
|
2
|
+
export interface SourceChangeSelection {
|
|
3
|
+
runId: string;
|
|
4
|
+
cycleId: string;
|
|
5
|
+
executionRevision: string;
|
|
6
|
+
proposalHash: string;
|
|
7
|
+
taskId: string;
|
|
8
|
+
artifactId: string;
|
|
9
|
+
artifactHash: string;
|
|
10
|
+
}
|
|
11
|
+
export interface SourceChangeReview {
|
|
12
|
+
version: 1;
|
|
13
|
+
kind: 'source-change-review';
|
|
14
|
+
writer: 'git';
|
|
15
|
+
project: {
|
|
16
|
+
root: string;
|
|
17
|
+
key: string;
|
|
18
|
+
};
|
|
19
|
+
source: SourceChangeSelection;
|
|
20
|
+
manifestHash: string;
|
|
21
|
+
sourceHash: string;
|
|
22
|
+
baseCommit: string;
|
|
23
|
+
author: {
|
|
24
|
+
name: string;
|
|
25
|
+
email: string;
|
|
26
|
+
};
|
|
27
|
+
paths: string[];
|
|
28
|
+
patchBytes: number;
|
|
29
|
+
}
|
|
30
|
+
export declare function sourceChangeCapabilities(): {
|
|
31
|
+
readonly version: 1;
|
|
32
|
+
readonly owner: 'calliope-cli';
|
|
33
|
+
readonly writer: 'git';
|
|
34
|
+
readonly operations: readonly ['preview', 'propose', 'inspect', 'list'];
|
|
35
|
+
readonly semantics: 'verified-patch-to-local-review-branch';
|
|
36
|
+
readonly installation: false;
|
|
37
|
+
readonly merge: false;
|
|
38
|
+
readonly push: false;
|
|
39
|
+
readonly mayCallModel: false;
|
|
40
|
+
};
|
|
41
|
+
/** Preview reads verified evidence and Git metadata; it creates no Git object or ref. */
|
|
42
|
+
export declare function previewSourceChange(cwd: string, source: SourceChangeSelection, options?: RunActionOptions): Promise<{
|
|
43
|
+
review: SourceChangeReview;
|
|
44
|
+
hash: string;
|
|
45
|
+
branch: string;
|
|
46
|
+
patch: string;
|
|
47
|
+
}>;
|
|
48
|
+
export declare const proposeSourceChange: (cwd: string, source: SourceChangeSelection, reviewedHash: string, options?: RunActionOptions) => Promise<{
|
|
49
|
+
version: 1;
|
|
50
|
+
status: "prepared" | "proposed";
|
|
51
|
+
hash: string;
|
|
52
|
+
branch: string;
|
|
53
|
+
review: SourceChangeReview;
|
|
54
|
+
createdAt: string;
|
|
55
|
+
commit: string | null;
|
|
56
|
+
tree: string | null;
|
|
57
|
+
}>;
|
|
58
|
+
export declare const inspectSourceChange: (cwd: string, runId: string, hash: string, options?: RunActionOptions) => Promise<{
|
|
59
|
+
version: 1;
|
|
60
|
+
status: "prepared" | "proposed";
|
|
61
|
+
hash: string;
|
|
62
|
+
branch: string;
|
|
63
|
+
review: SourceChangeReview;
|
|
64
|
+
createdAt: string;
|
|
65
|
+
commit: string | null;
|
|
66
|
+
tree: string | null;
|
|
67
|
+
}>;
|
|
68
|
+
export declare const listSourceChanges: (cwd: string, runId: string, options?: RunActionOptions) => Promise<{
|
|
69
|
+
version: 1;
|
|
70
|
+
status: "prepared" | "proposed";
|
|
71
|
+
hash: string;
|
|
72
|
+
branch: string;
|
|
73
|
+
review: SourceChangeReview;
|
|
74
|
+
createdAt: string;
|
|
75
|
+
commit: string | null;
|
|
76
|
+
tree: string | null;
|
|
77
|
+
}[]>;
|
|
78
|
+
//# sourceMappingURL=source-changes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-changes.d.ts","sourceRoot":"","sources":["../../src/improvement/source-changes.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,6BAA6B,CAAC;AAIlE,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAC,MAAM,CAAC;IAAA,OAAO,EAAC,MAAM,CAAC;IAAA,iBAAiB,EAAC,MAAM,CAAC;IAAA,YAAY,EAAC,MAAM,CAAC;IACzE,MAAM,EAAC,MAAM,CAAC;IAAA,UAAU,EAAC,MAAM,CAAC;IAAA,YAAY,EAAC,MAAM,CAAC;CACrD;AACD,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAC,CAAC,CAAC;IAAA,IAAI,EAAC,sBAAsB,CAAC;IAAA,MAAM,EAAC,KAAK,CAAC;IAAA,OAAO,EAAC;QAAC,IAAI,EAAC,MAAM,CAAC;QAAA,GAAG,EAAC,MAAM,CAAA;KAAC,CAAC;IACpF,MAAM,EAAC,qBAAqB,CAAC;IAAA,YAAY,EAAC,MAAM,CAAC;IAAA,UAAU,EAAC,MAAM,CAAC;IAAA,UAAU,EAAC,MAAM,CAAC;IACrF,MAAM,EAAC;QAAC,IAAI,EAAC,MAAM,CAAC;QAAA,KAAK,EAAC,MAAM,CAAA;KAAC,CAAC;IAAA,KAAK,EAAC,MAAM,EAAE,CAAC;IAAA,UAAU,EAAC,MAAM,CAAC;CACpE;AASD,wBAAgB,wBAAwB;aAAW,OAAO,EAAC,CAAC;aAAC,KAAK,EAAC,cAAc;aAAC,MAAM,EAAC,KAAK;aAC5F,UAAU,YAAE,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,MAAM;aAAE,SAAS,EAAC,uCAAuC;aACnG,YAAY;aAAO,KAAK;aAAO,IAAI;aAAO,YAAY;EAAkB;AAS1E,yFAAyF;AACzF,wBAAsB,mBAAmB,CAAC,GAAG,EAAC,MAAM,EAAC,MAAM,EAAC,qBAAqB,EAAC,OAAO,GAAC,gBAAmB;;;;;GAE5G;AA6CD,eAAO,MAAM,mBAAmB;;;;;;;;;EAAa,CAAC;AAC9C,eAAO,MAAM,mBAAmB;;;;;;;;;EAAe,CAAC;AAChD,eAAO,MAAM,iBAAiB;;;;;;;;;IAAY,CAAC"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/** Verified source changes become review branches in their owning repository. */
|
|
2
|
+
import { sourceWriter } from '../source-changes/writer.js';
|
|
3
|
+
import { canonicalJson, digest } from '../approvals/index.js';
|
|
4
|
+
import { readCollectedArtifact } from '../orchestration/verification.js';
|
|
5
|
+
import { OrchestrationError } from '../orchestration/types.js';
|
|
6
|
+
import { id, pathName, shape } from '../orchestration/validation.js';
|
|
7
|
+
import { readPinnedWorktreeBase, worktreeGit } from '../isolation/worktree.js';
|
|
8
|
+
import { inspectImprovements, improvementProposalHash } from './actions.js';
|
|
9
|
+
function conflict(message) { throw new OrchestrationError('conflict', message); }
|
|
10
|
+
const hex = (v) => typeof v === 'string' && /^[a-f0-9]{64}$/.test(v);
|
|
11
|
+
const uuid = (v) => typeof v === 'string' && /^[a-f0-9]{8}(?:-[a-f0-9]{4}){3}-[a-f0-9]{12}$/.test(v);
|
|
12
|
+
const branchFor = (source, hash) => `refs/heads/calliope-proposals/${source.runId}/${hash}`;
|
|
13
|
+
const commitMessage = (source, hash) => `Propose source change for ${source.taskId}\n\nCalliope-Source-Proposal: ${hash}\nRun: ${source.runId}\nArtifact-SHA256: ${source.artifactHash}\n`;
|
|
14
|
+
const git = (project, args, options, input, accepted = [0]) => worktreeGit(project, ['--no-replace-objects', ...args], options.signal, accepted, input);
|
|
15
|
+
export function sourceChangeCapabilities() {
|
|
16
|
+
return { version: 1, owner: 'calliope-cli', writer: 'git',
|
|
17
|
+
operations: ['preview', 'propose', 'inspect', 'list'], semantics: 'verified-patch-to-local-review-branch',
|
|
18
|
+
installation: false, merge: false, push: false, mayCallModel: false };
|
|
19
|
+
}
|
|
20
|
+
function selection(value) {
|
|
21
|
+
shape(value, ['runId', 'cycleId', 'executionRevision', 'proposalHash', 'taskId', 'artifactId', 'artifactHash']);
|
|
22
|
+
if (!uuid(value.runId) || !uuid(value.cycleId) || ![value.executionRevision, value.proposalHash, value.artifactHash].every(hex))
|
|
23
|
+
throw new OrchestrationError('invalid', 'Select exact native improvement and artifact identities.');
|
|
24
|
+
id(value.taskId);
|
|
25
|
+
id(value.artifactId);
|
|
26
|
+
}
|
|
27
|
+
/** Preview reads verified evidence and Git metadata; it creates no Git object or ref. */
|
|
28
|
+
export async function previewSourceChange(cwd, source, options = {}) {
|
|
29
|
+
return preview(cwd, source, options);
|
|
30
|
+
}
|
|
31
|
+
async function preview(cwd, source, options, leaseId) {
|
|
32
|
+
selection(source);
|
|
33
|
+
const current = await inspectImprovements(cwd, source.runId, options), { store, view } = current, state = current.execution.state;
|
|
34
|
+
if (state.revision !== source.executionRevision || state.ownerId || current.owner?.alive && current.owner.id !== leaseId)
|
|
35
|
+
conflict('The source execution changed or is still owned. Refresh its verified results.');
|
|
36
|
+
store.assertApproval(current.execution.header);
|
|
37
|
+
const cycle = current.history.cycles.find(c => c.id === source.cycleId);
|
|
38
|
+
if (!cycle || cycle.status !== 'verified' || cycle.withdrawal || improvementProposalHash(cycle) !== source.proposalHash)
|
|
39
|
+
conflict('Select an exact verified improvement that has not been withdrawn.');
|
|
40
|
+
const task = store.context().plan.tasks.find(t => t.id === source.taskId), result = cycle.results.find(r => r.taskId === source.taskId);
|
|
41
|
+
if (!task?.isolation || task.isolation.mode === 'read-only-v1' || task.isolation.patchArtifactId !== source.artifactId ||
|
|
42
|
+
!result || result.status !== 'completed' || !result.checks.length || result.checks.some(c => !c.passed))
|
|
43
|
+
conflict('Source proposals require a completed isolated task and its executor-collected patch.');
|
|
44
|
+
const artifact = result.artifacts.find(a => a.id === source.artifactId);
|
|
45
|
+
if (!artifact || artifact.sha256 !== source.artifactHash || artifact.kind !== 'patch' || artifact.bytes < 1 || artifact.bytes > 1024 * 1024)
|
|
46
|
+
conflict('Select the verified nonempty native patch, up to 1 MiB.');
|
|
47
|
+
const bytes = await readCollectedArtifact(store, artifact, options);
|
|
48
|
+
let patch;
|
|
49
|
+
try {
|
|
50
|
+
patch = new TextDecoder('utf-8', { fatal: true }).decode(bytes);
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
conflict('Native patches must use UTF-8.');
|
|
54
|
+
}
|
|
55
|
+
const project = view.manifest.project, baseCommit = readPinnedWorktreeBase(store.root, project.root, view.manifest.planHash);
|
|
56
|
+
const head = (await git(project.root, ['rev-parse', '--verify', 'HEAD^{commit}'], options)).trim();
|
|
57
|
+
if (head !== baseCommit)
|
|
58
|
+
conflict('The owning repository advanced beyond the verified base. Prepare and verify a new change.');
|
|
59
|
+
const author = { name: (await git(project.root, ['config', '--local', '--get', 'user.name'], options)).trim(),
|
|
60
|
+
email: (await git(project.root, ['config', '--local', '--get', 'user.email'], options)).trim() };
|
|
61
|
+
if (Object.values(author).some(v => !v || v.length > 256 || /[\r\n<>\x00]/.test(v)))
|
|
62
|
+
conflict('Configure a valid repository-local Git author before reviewing a source proposal.');
|
|
63
|
+
const stats = await git(project.root, ['apply', '--numstat', '-z', '--'], options, { text: patch });
|
|
64
|
+
const paths = stats.split('\0').filter(Boolean).map(line => {
|
|
65
|
+
const match = /^(?:\d+|-)\t(?:\d+|-)\t(.+)$/s.exec(line);
|
|
66
|
+
if (!match)
|
|
67
|
+
conflict('Native patch path inventory is unavailable.');
|
|
68
|
+
const value = match[1];
|
|
69
|
+
pathName(value);
|
|
70
|
+
if (value.split('/').some(p => p.toLowerCase() === '.git'))
|
|
71
|
+
conflict('Git metadata cannot be proposed.');
|
|
72
|
+
return value;
|
|
73
|
+
});
|
|
74
|
+
const grants = store.context().plan.agents.find(a => a.id === task.agentId).allowedPaths.filter(g => g.access === 'write');
|
|
75
|
+
if (!paths.length || paths.length > 10000 || paths.some(p => !grants.some(g => g.path === '.' || p === g.path || p.startsWith(g.path + '/'))))
|
|
76
|
+
conflict('The patch includes paths outside the selected worker’s original write scope.');
|
|
77
|
+
const review = { version: 1, kind: 'source-change-review', writer: 'git', project: { root: project.root, key: project.key },
|
|
78
|
+
source, manifestHash: view.manifest.hash, sourceHash: digest(canonicalJson({ cycle, artifact })), baseCommit, author, paths, patchBytes: bytes.length };
|
|
79
|
+
const hash = digest(canonicalJson(review));
|
|
80
|
+
store.assertRevision(source.executionRevision);
|
|
81
|
+
store.assertApproval(current.execution.header);
|
|
82
|
+
return { review, hash, branch: branchFor(source, hash), patch };
|
|
83
|
+
}
|
|
84
|
+
const writer = sourceWriter({
|
|
85
|
+
directory: 'source-proposals', kind: 'source-change-review', status: 'proposed', tool: 'orchestration_source_proposal',
|
|
86
|
+
operation: 'Create one local review branch; do not merge, install, push or run work.', selection, branchFor, commitMessage, preview,
|
|
87
|
+
});
|
|
88
|
+
export const proposeSourceChange = writer.write;
|
|
89
|
+
export const inspectSourceChange = writer.inspect;
|
|
90
|
+
export const listSourceChanges = writer.list;
|
|
91
|
+
//# sourceMappingURL=source-changes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-changes.js","sourceRoot":"","sources":["../../src/improvement/source-changes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import type { RunActionOptions } from '../orchestration/actions.js';
|
|
2
|
+
export interface TaskOutcomeSelection {
|
|
3
|
+
taskId: string;
|
|
4
|
+
attempt: number;
|
|
5
|
+
executionRevision: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function taskOutcomeCapabilities(): {
|
|
8
|
+
readonly version: 1;
|
|
9
|
+
readonly owner: 'calliope-cli';
|
|
10
|
+
readonly operations: readonly ['inspect'];
|
|
11
|
+
readonly semantics: 'exact-native-attempt-observation';
|
|
12
|
+
readonly artifactValidation: 'retained-bytes';
|
|
13
|
+
readonly assessment: false;
|
|
14
|
+
readonly reward: false;
|
|
15
|
+
readonly mayCallModel: false;
|
|
16
|
+
};
|
|
17
|
+
export declare function inspectTaskOutcome(cwd: string, runId: string, selection: TaskOutcomeSelection, options?: RunActionOptions): Promise<{
|
|
18
|
+
value: {
|
|
19
|
+
version: 1;
|
|
20
|
+
kind: 'task.outcome-observation';
|
|
21
|
+
interpretation: 'native-attempt-evidence-not-user-assessment-or-reward';
|
|
22
|
+
source: {
|
|
23
|
+
runId: string;
|
|
24
|
+
manifestHash: string;
|
|
25
|
+
planHash: string;
|
|
26
|
+
approvalRevision: string;
|
|
27
|
+
executionRevision: string;
|
|
28
|
+
taskId: string;
|
|
29
|
+
agentId: string;
|
|
30
|
+
attempt: number;
|
|
31
|
+
sessionId: string;
|
|
32
|
+
started: {
|
|
33
|
+
id: string;
|
|
34
|
+
hash: string;
|
|
35
|
+
at: string;
|
|
36
|
+
sequence: number;
|
|
37
|
+
};
|
|
38
|
+
configurationHash: string;
|
|
39
|
+
graphHash: string;
|
|
40
|
+
};
|
|
41
|
+
status: "cancelled" | "completed" | "denied" | "failed" | "review_required" | "unknown";
|
|
42
|
+
executorStatus: "cancelled" | "completed" | "denied" | "failed" | "review_required" | "unknown";
|
|
43
|
+
finished: {
|
|
44
|
+
id: string;
|
|
45
|
+
hash: string;
|
|
46
|
+
at: string;
|
|
47
|
+
sequence: number;
|
|
48
|
+
} | null;
|
|
49
|
+
accepted: {
|
|
50
|
+
id: string;
|
|
51
|
+
hash: string;
|
|
52
|
+
at: string;
|
|
53
|
+
sequence: number;
|
|
54
|
+
} | null;
|
|
55
|
+
checks: import("../orchestration/coordinator-types.js").CheckEvidence[];
|
|
56
|
+
artifacts: {
|
|
57
|
+
id: string;
|
|
58
|
+
taskId: string;
|
|
59
|
+
agentId: string;
|
|
60
|
+
kind: "decision" | "evidence" | "file" | "patch" | "report" | "test_result";
|
|
61
|
+
sha256: string;
|
|
62
|
+
bytes: number;
|
|
63
|
+
source: {
|
|
64
|
+
runId: string;
|
|
65
|
+
eventId: string;
|
|
66
|
+
};
|
|
67
|
+
}[];
|
|
68
|
+
measurements: {
|
|
69
|
+
durationMs: number | null;
|
|
70
|
+
toolCalls: number;
|
|
71
|
+
toolFailures: number;
|
|
72
|
+
settledCostNanos: number | null;
|
|
73
|
+
};
|
|
74
|
+
accounting: {
|
|
75
|
+
basis: 'native-reservations-and-settlements';
|
|
76
|
+
revision: string | null;
|
|
77
|
+
charge: import("../orchestration/request-accounting.js").AttributedCharge | null;
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
hash: string;
|
|
81
|
+
}>;
|
|
82
|
+
//# sourceMappingURL=task-outcomes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-outcomes.d.ts","sourceRoot":"","sources":["../../src/improvement/task-outcomes.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,6BAA6B,CAAC;AAGlE,MAAM,WAAW,oBAAoB;IAAE,MAAM,EAAC,MAAM,CAAC;IAAA,OAAO,EAAC,MAAM,CAAC;IAAA,iBAAiB,EAAC,MAAM,CAAA;CAAC;AAG7F,wBAAgB,uBAAuB;aAAW,OAAO,EAAC,CAAC;aAAC,KAAK,EAAC,cAAc;aAAC,UAAU,YAAE,SAAS;aACpG,SAAS,EAAC,kCAAkC;aAAC,kBAAkB,EAAC,gBAAgB;aAAC,UAAU;aAAO,MAAM;aAAO,YAAY;EAAkB;AAE/I,wBAAsB,kBAAkB,CAAC,GAAG,EAAC,MAAM,EAAC,KAAK,EAAC,MAAM,EAAC,SAAS,EAAC,oBAAoB,EAAC,OAAO,GAAC,gBAAmB;;iBAgCpG,CAAC;cAAe,0BAA0B;wBAC9C,uDAAuD;;YAC9D,KAAK;YAAa,YAAY;YAAoB,QAAQ;YAAwB,gBAAgB;YACxG,iBAAiB;YAA0B,MAAM;YAAS,OAAO;YAAc,OAAO;YAAgB,SAAS;YAC/G,OAAO;;;;;;YAAY,iBAAiB;YACpC,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAKG,UAAU;YACtB,SAAS;YAAc,YAAY;YACnC,gBAAgB;;;YACN,KAAK,EAAC,qCAAqC;YAAU,QAAQ;YAA6D,MAAM;;;;GAG/I"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/** Exact native attempt evidence for reviewed feedback, without assigning rewards. */
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { canonicalJson, digest } from '../approvals/index.js';
|
|
4
|
+
import { throwIfCancelled } from '../cancellation.js';
|
|
5
|
+
import { assertExecutionStoreOutsideProject } from '../execution/index.js';
|
|
6
|
+
import { inspectExecution } from '../orchestration/coordinator-actions.js';
|
|
7
|
+
import { replayExecution } from '../orchestration/execution-journal.js';
|
|
8
|
+
import { readCollectedArtifact } from '../orchestration/verification.js';
|
|
9
|
+
import { readRunAccounting } from '../orchestration/accounting.js';
|
|
10
|
+
import { workerAttemptContext } from '../orchestration/worker-context.js';
|
|
11
|
+
import { id, shape } from '../orchestration/validation.js';
|
|
12
|
+
import { OrchestrationError } from '../orchestration/types.js';
|
|
13
|
+
const ref = (event) => ({ id: event.id, hash: event.hash, at: event.at, sequence: event.sequence });
|
|
14
|
+
function conflict(message) { throw new OrchestrationError('conflict', message); }
|
|
15
|
+
export function taskOutcomeCapabilities() {
|
|
16
|
+
return { version: 1, owner: 'calliope-cli', operations: ['inspect'],
|
|
17
|
+
semantics: 'exact-native-attempt-observation', artifactValidation: 'retained-bytes', assessment: false, reward: false, mayCallModel: false };
|
|
18
|
+
}
|
|
19
|
+
export async function inspectTaskOutcome(cwd, runId, selection, options = {}) {
|
|
20
|
+
shape(selection, ['taskId', 'attempt', 'executionRevision']);
|
|
21
|
+
id(selection.taskId);
|
|
22
|
+
if (!Number.isSafeInteger(selection.attempt) || selection.attempt < 1 || typeof selection.executionRevision !== 'string' || !/^[a-f0-9]{64}$/.test(selection.executionRevision))
|
|
23
|
+
throw new OrchestrationError('invalid', 'Select the exact task attempt and execution revision.');
|
|
24
|
+
const current = await inspectExecution(cwd, runId, options), { store, view, execution } = current;
|
|
25
|
+
assertExecutionStoreOutsideProject(view.manifest.project.root, join(store.root, '..', '..'));
|
|
26
|
+
if (!execution || execution.state.revision !== selection.executionRevision || execution.state.ownerId || current.owner?.alive)
|
|
27
|
+
conflict('Stop or recover active execution and refresh its exact task evidence.');
|
|
28
|
+
const starts = execution.events.filter((event) => event.change.type === 'task_started' && event.change.taskId === selection.taskId);
|
|
29
|
+
const start = starts.find(event => event.change.attempt === selection.attempt);
|
|
30
|
+
if (!start)
|
|
31
|
+
throw new OrchestrationError('unavailable', 'No native task start has this attempt identity.');
|
|
32
|
+
const next = starts.find(event => event.sequence > start.sequence);
|
|
33
|
+
const events = execution.events.filter(event => event.sequence >= start.sequence && (!next || event.sequence < next.sequence));
|
|
34
|
+
const prefixEvents = execution.events.slice(0, start.sequence);
|
|
35
|
+
const prefix = { header: execution.header, events: prefixEvents, state: replayExecution(execution.header, view.manifest, prefixEvents) };
|
|
36
|
+
const context = store.context(prefix), task = context.plan.tasks.find(t => t.id === selection.taskId);
|
|
37
|
+
const agent = context.plan.agents.find(a => a.id === task.agentId);
|
|
38
|
+
const attempt = workerAttemptContext(context.plan, task, prefix).attempt;
|
|
39
|
+
const finished = events.filter((event) => event.change.type === 'task_finished' && event.change.taskId === task.id).at(-1);
|
|
40
|
+
const accepted = finished ? events.find(event => event.change.type === 'task_accepted' && event.change.taskId === task.id && event.sequence > finished.sequence) : undefined;
|
|
41
|
+
const output = finished?.change.output;
|
|
42
|
+
let bytes = 0;
|
|
43
|
+
for (const artifact of output?.artifacts ?? []) {
|
|
44
|
+
throwIfCancelled(options.signal);
|
|
45
|
+
bytes += artifact.bytes;
|
|
46
|
+
if (bytes > 64 * 1024 * 1024)
|
|
47
|
+
throw new OrchestrationError('limit', 'Selected attempt evidence exceeds the 64 MiB inspection bound.');
|
|
48
|
+
await readCollectedArtifact(store, artifact, options);
|
|
49
|
+
}
|
|
50
|
+
const accounting = readRunAccounting(store, execution);
|
|
51
|
+
const attribution = accounting.status === 'available' ? accounting.attribution : undefined;
|
|
52
|
+
const charge = attribution?.status === 'available' && attribution.executionRevision === execution.state.revision ? attribution.groups[start.id] ?? null : null;
|
|
53
|
+
const tools = events.filter(event => event.change.type === 'tool' && event.change.taskId === task.id && event.change.stage === 'finished');
|
|
54
|
+
const value = { version: 1, kind: 'task.outcome-observation',
|
|
55
|
+
interpretation: 'native-attempt-evidence-not-user-assessment-or-reward',
|
|
56
|
+
source: { runId: view.run.id, manifestHash: view.manifest.hash, planHash: view.manifest.planHash, approvalRevision: execution.header.approvalRevision,
|
|
57
|
+
executionRevision: execution.state.revision, taskId: task.id, agentId: task.agentId, attempt: attempt.number, sessionId: start.change.sessionId,
|
|
58
|
+
started: ref(start), configurationHash: digest(canonicalJson({ task, agent, strategy: prefix.state.supervision?.strategies[task.id] ?? null })),
|
|
59
|
+
graphHash: prefix.state.graph?.hash ?? view.manifest.planHash },
|
|
60
|
+
status: accepted ? 'completed' : finished?.change.status ?? 'unknown',
|
|
61
|
+
executorStatus: finished?.change.status ?? 'unknown', finished: finished ? ref(finished) : null, accepted: accepted ? ref(accepted) : null,
|
|
62
|
+
checks: structuredClone(output?.checks ?? []),
|
|
63
|
+
artifacts: (output?.artifacts ?? []).map(a => ({ id: a.id, taskId: a.taskId, agentId: a.agentId, kind: a.kind, sha256: a.sha256, bytes: a.bytes, source: { ...a.source } })),
|
|
64
|
+
measurements: { durationMs: finished ? Date.parse(finished.at) - Date.parse(start.at) : null,
|
|
65
|
+
toolCalls: tools.length, toolFailures: tools.filter(e => e.change.type === 'tool' && !e.change.success).length,
|
|
66
|
+
settledCostNanos: charge?.status === 'available' && charge.usageComplete ? charge.accounted.costNanos : null },
|
|
67
|
+
accounting: { basis: 'native-reservations-and-settlements', revision: attribution?.status === 'available' ? attribution.revision : null, charge: charge ? structuredClone(charge) : null } };
|
|
68
|
+
store.assertRevision(selection.executionRevision);
|
|
69
|
+
throwIfCancelled(options.signal);
|
|
70
|
+
return { value, hash: digest(canonicalJson(value)) };
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=task-outcomes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-outcomes.js","sourceRoot":"","sources":["../../src/improvement/task-outcomes.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAC,aAAa,EAAC,MAAM,EAAC,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAC,kCAAkC,EAAC,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAC,gBAAgB,EAAC,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAC,eAAe,EAAC,MAAM,uCAAuC,CAAC;AACtE,OAAO,EAAC,qBAAqB,EAAC,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAC,iBAAiB,EAAC,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAC,oBAAoB,EAAC,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAC,EAAE,EAAC,KAAK,EAAC,MAAM,gCAAgC,CAAC;AACxD,OAAO,EAAC,kBAAkB,EAAC,MAAM,2BAA2B,CAAC;AAK7D,MAAM,GAAG,GAAC,CAAC,KAAoB,EAAC,EAAE,CAAA,CAAC,EAAC,EAAE,EAAC,KAAK,CAAC,EAAE,EAAC,IAAI,EAAC,KAAK,CAAC,IAAI,EAAC,EAAE,EAAC,KAAK,CAAC,EAAE,EAAC,QAAQ,EAAC,KAAK,CAAC,QAAQ,EAAC,CAAC,CAAC;AACtG,SAAS,QAAQ,CAAC,OAAc,IAAQ,MAAM,IAAI,kBAAkB,CAAC,UAAU,EAAC,OAAO,CAAC,CAAC,CAAA,CAAC;AAC1F,MAAM,UAAU,uBAAuB;IAAG,OAAO,EAAC,OAAO,EAAC,CAAC,EAAC,KAAK,EAAC,cAAc,EAAC,UAAU,EAAC,CAAC,SAAS,CAAC;QACrG,SAAS,EAAC,kCAAkC,EAAC,kBAAkB,EAAC,gBAAgB,EAAC,UAAU,EAAC,KAAK,EAAC,MAAM,EAAC,KAAK,EAAC,YAAY,EAAC,KAAK,EAAU,CAAC;AAAA,CAAC;AAE/I,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,GAAU,EAAC,KAAY,EAAC,SAA8B,EAAC,OAAO,GAAkB,EAAE;IACzH,KAAK,CAAC,SAAS,EAAC,CAAC,QAAQ,EAAC,SAAS,EAAC,mBAAmB,CAAC,CAAC,CAAC;IAAA,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC/E,IAAG,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,IAAE,SAAS,CAAC,OAAO,GAAC,CAAC,IAAE,OAAO,SAAS,CAAC,iBAAiB,KAAG,QAAQ,IAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC;QAClK,MAAM,IAAI,kBAAkB,CAAC,SAAS,EAAC,uDAAuD,CAAC,CAAC;IAClG,MAAM,OAAO,GAAC,MAAM,gBAAgB,CAAC,GAAG,EAAC,KAAK,EAAC,OAAO,CAAC,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,SAAS,EAAC,GAAC,OAAO,CAAC;IACvF,kCAAkC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,CAAC,CAAC;IAC1F,IAAG,CAAC,SAAS,IAAE,SAAS,CAAC,KAAK,CAAC,QAAQ,KAAG,SAAS,CAAC,iBAAiB,IAAE,SAAS,CAAC,KAAK,CAAC,OAAO,IAAE,OAAO,CAAC,KAAK,EAAE,KAAK;QAClH,QAAQ,CAAC,uEAAuE,CAAC,CAAC;IACpF,MAAM,MAAM,GAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAA0F,EAAE,CACrI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAG,cAAc,IAAE,KAAK,CAAC,MAAM,CAAC,MAAM,KAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9E,MAAM,KAAK,GAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAA,EAAE,CAAA,KAAK,CAAC,MAAM,CAAC,OAAO,KAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IACzE,IAAG,CAAC,KAAK;QAAC,MAAM,IAAI,kBAAkB,CAAC,aAAa,EAAC,iDAAiD,CAAC,CAAC;IACxG,MAAM,IAAI,GAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAA,EAAE,CAAA,KAAK,CAAC,QAAQ,GAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAA,EAAE,CAAA,KAAK,CAAC,QAAQ,IAAE,KAAK,CAAC,QAAQ,IAAE,CAAC,CAAC,IAAI,IAAE,KAAK,CAAC,QAAQ,GAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACnH,MAAM,YAAY,GAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAC,EAAC,MAAM,EAAC,SAAS,CAAC,MAAM,EAAC,MAAM,EAAC,YAAY,EAAC,KAAK,EAAC,eAAe,CAAC,SAAS,CAAC,MAAM,EAAC,IAAI,CAAC,QAAQ,EAAC,YAAY,CAAC,EAAC,CAAC;IAC9H,MAAM,OAAO,GAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAC,IAAI,GAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,EAAE,KAAG,SAAS,CAAC,MAAM,CAAE,CAAC;IAC9F,MAAM,KAAK,GAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,EAAE,KAAG,IAAI,CAAC,OAAO,CAAE,CAAC;IAC9D,MAAM,OAAO,GAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,EAAC,IAAI,EAAC,MAAM,CAAC,CAAC,OAAO,CAAC;IACrE,MAAM,QAAQ,GAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAA2F,EAAE,CAC9H,KAAK,CAAC,MAAM,CAAC,IAAI,KAAG,eAAe,IAAE,KAAK,CAAC,MAAM,CAAC,MAAM,KAAG,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7E,MAAM,QAAQ,GAAC,QAAQ,CAAA,CAAC,CAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAA,EAAE,CAAA,KAAK,CAAC,MAAM,CAAC,IAAI,KAAG,eAAe,IAAE,KAAK,CAAC,MAAM,CAAC,MAAM,KAAG,IAAI,CAAC,EAAE,IAAE,KAAK,CAAC,QAAQ,GAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA,CAAC,CAAA,SAAS,CAAC;IAC3J,MAAM,MAAM,GAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC;IAAA,IAAI,KAAK,GAAC,CAAC,CAAC;IACjD,KAAI,MAAM,QAAQ,IAAI,MAAM,EAAE,SAAS,IAAE,EAAE,EAAC,CAAC;QAC3C,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAAA,KAAK,IAAE,QAAQ,CAAC,KAAK,CAAC;QACvD,IAAG,KAAK,GAAC,EAAE,GAAC,IAAI,GAAC,IAAI;YAAC,MAAM,IAAI,kBAAkB,CAAC,OAAO,EAAC,gEAAgE,CAAC,CAAC;QAC7H,MAAM,qBAAqB,CAAC,KAAK,EAAC,QAAQ,EAAC,OAAO,CAAC,CAAC;IACtD,CAAC;IACD,MAAM,UAAU,GAAC,iBAAiB,CAAC,KAAK,EAAC,SAAS,CAAC,CAAC;IACpD,MAAM,WAAW,GAAC,UAAU,CAAC,MAAM,KAAG,WAAW,CAAA,CAAC,CAAA,UAAU,CAAC,WAAW,CAAA,CAAC,CAAA,SAAS,CAAC;IACnF,MAAM,MAAM,GAAC,WAAW,EAAE,MAAM,KAAG,WAAW,IAAE,WAAW,CAAC,iBAAiB,KAAG,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAA,CAAC,CAAA,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,IAAE,IAAI,CAAA,CAAC,CAAA,IAAI,CAAC;IACjJ,MAAM,KAAK,GAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAA,EAAE,CAAA,KAAK,CAAC,MAAM,CAAC,IAAI,KAAG,MAAM,IAAE,KAAK,CAAC,MAAM,CAAC,MAAM,KAAG,IAAI,CAAC,EAAE,IAAE,KAAK,CAAC,MAAM,CAAC,KAAK,KAAG,UAAU,CAAC,CAAC;IAC7H,MAAM,KAAK,GAAC,EAAC,OAAO,EAAC,CAAU,EAAC,IAAI,EAAC,0BAAmC;QACtE,cAAc,EAAC,uDAAgE;QAC/E,MAAM,EAAC,EAAC,KAAK,EAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAC,YAAY,EAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAC,QAAQ,EAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAC,gBAAgB,EAAC,SAAS,CAAC,MAAM,CAAC,gBAAgB;YAC1I,iBAAiB,EAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAC,MAAM,EAAC,IAAI,CAAC,EAAE,EAAC,OAAO,EAAC,IAAI,CAAC,OAAO,EAAC,OAAO,EAAC,OAAO,CAAC,MAAM,EAAC,SAAS,EAAC,KAAK,CAAC,MAAM,CAAC,SAAS;YACtI,OAAO,EAAC,GAAG,CAAC,KAAK,CAAC,EAAC,iBAAiB,EAAC,MAAM,CAAC,aAAa,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,QAAQ,EAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,IAAE,IAAI,EAAC,CAAC,CAAC;YACrI,SAAS,EAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,IAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAC;QAC7D,MAAM,EAAC,QAAQ,CAAA,CAAC,CAAA,WAAoB,CAAA,CAAC,CAAA,QAAQ,EAAE,MAAM,CAAC,MAAM,IAAE,SAAkB;QAChF,cAAc,EAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,IAAE,SAAkB,EAAC,QAAQ,EAAC,QAAQ,CAAA,CAAC,CAAA,GAAG,CAAC,QAAQ,CAAC,CAAA,CAAC,CAAA,IAAI,EAAC,QAAQ,EAAC,QAAQ,CAAA,CAAC,CAAA,GAAG,CAAC,QAAQ,CAAC,CAAA,CAAC,CAAA,IAAI;QACpI,MAAM,EAAC,eAAe,CAAC,MAAM,EAAE,MAAM,IAAE,EAAE,CAAC;QAC1C,SAAS,EAAC,CAAC,MAAM,EAAE,SAAS,IAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,EAAC,EAAE,EAAC,CAAC,CAAC,EAAE,EAAC,MAAM,EAAC,CAAC,CAAC,MAAM,EAAC,OAAO,EAAC,CAAC,CAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC,IAAI,EAAC,MAAM,EAAC,CAAC,CAAC,MAAM,EAAC,KAAK,EAAC,CAAC,CAAC,KAAK,EAAC,MAAM,EAAC,EAAC,GAAG,CAAC,CAAC,MAAM,EAAC,EAAC,CAAC,CAAC;QACtJ,YAAY,EAAC,EAAC,UAAU,EAAC,QAAQ,CAAA,CAAC,CAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA,CAAC,CAAA,IAAI;YACjF,SAAS,EAAC,KAAK,CAAC,MAAM,EAAC,YAAY,EAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,MAAM,CAAC,IAAI,KAAG,MAAM,IAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM;YACrG,gBAAgB,EAAC,MAAM,EAAE,MAAM,KAAG,WAAW,IAAE,MAAM,CAAC,aAAa,CAAA,CAAC,CAAA,MAAM,CAAC,SAAS,CAAC,SAAS,CAAA,CAAC,CAAA,IAAI,EAAC;QACtG,UAAU,EAAC,EAAC,KAAK,EAAC,qCAA8C,EAAC,QAAQ,EAAC,WAAW,EAAE,MAAM,KAAG,WAAW,CAAA,CAAC,CAAA,WAAW,CAAC,QAAQ,CAAA,CAAC,CAAA,IAAI,EAAC,MAAM,EAAC,MAAM,CAAA,CAAC,CAAA,eAAe,CAAC,MAAM,CAAC,CAAA,CAAC,CAAA,IAAI,EAAC,EAAC,CAAC;IACrL,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IAAA,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACnF,OAAO,EAAC,KAAK,EAAC,IAAI,EAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAC,CAAC;AACnD,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -22,4 +22,14 @@ export type { JudgmentRequest, JudgmentResponse, JudgmentEngine, Question, Answe
|
|
|
22
22
|
export { runHeadless } from './headless.js';
|
|
23
23
|
export type { HeadlessEvent, HeadlessOptions, HeadlessOutputMode } from './headless.js';
|
|
24
24
|
export * from './runtime/index.js';
|
|
25
|
+
export { inventorySource, runMigrationCommand, MigrationError, INVENTORY_SCHEMA } from './migration/index.js';
|
|
26
|
+
export type { MigrationInventory } from './migration/index.js';
|
|
27
|
+
export { analyzeVerificationPlan, verifyMigration, VERIFICATION_SCHEMAS } from './migration/index.js';
|
|
28
|
+
export type { VerificationPlan, VerificationOptions } from './migration/index.js';
|
|
29
|
+
export { comparatorHealthy, compareBehavior, migrationExample } from './migration/index.js';
|
|
30
|
+
export { analyzeVerificationEvidence, EVIDENCE_REVIEW_SCHEMA } from './migration/index.js';
|
|
31
|
+
export { assessMigration, analyzeAssessmentRequest, ASSESSMENT_SCHEMAS } from './migration/index.js';
|
|
32
|
+
export type { AssessmentRequest, AssessmentOptions, AssessmentReview, AssessmentReviewRequest, AssessmentImplementation, PilotMeasurement } from './migration/index.js';
|
|
33
|
+
export { analyzeBaselinePlan, verifyMigrationBaseline, analyzeBaselineEvidence, BASELINE_SCHEMAS } from './migration/index.js';
|
|
34
|
+
export type { BaselinePlan } from './migration/index.js';
|
|
25
35
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACL,SAAS,EACT,GAAG,EACH,GAAG,EACH,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,sBAAsB,EACtB,SAAS,EACT,UAAU,EACV,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACnG,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,eAAe,EAAE,YAAY,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC5J,YAAY,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AACjG,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGnI,OAAO,EACL,cAAc,EACd,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAC3C,WAAW,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,EAC/D,WAAW,EAAE,iBAAiB,EAC9B,aAAa,GACd,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG1G,OAAO,EAAE,QAAQ,IAAI,KAAK,EAAE,eAAe,IAAI,uBAAuB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACnH,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC/G,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAIxF,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACL,SAAS,EACT,GAAG,EACH,GAAG,EACH,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,sBAAsB,EACtB,SAAS,EACT,UAAU,EACV,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACnG,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,eAAe,EAAE,YAAY,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC5J,YAAY,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AACjG,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGnI,OAAO,EACL,cAAc,EACd,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAC3C,WAAW,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,EAC/D,WAAW,EAAE,iBAAiB,EAC9B,aAAa,GACd,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG1G,OAAO,EAAE,QAAQ,IAAI,KAAK,EAAE,eAAe,IAAI,uBAAuB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACnH,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC/G,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAIxF,cAAc,oBAAoB,CAAC;AAEnC,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC9G,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACtG,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC5F,OAAO,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC3F,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrG,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxK,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC/H,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -21,4 +21,10 @@ export { evaluate as judge, validateRequest as validateJudgmentRequest, Judgment
|
|
|
21
21
|
export { runHeadless } from './headless.js';
|
|
22
22
|
// Shared runtime for terminal, editor and programmatic clients.
|
|
23
23
|
export * from './runtime/index.js';
|
|
24
|
+
export { inventorySource, runMigrationCommand, MigrationError, INVENTORY_SCHEMA } from './migration/index.js';
|
|
25
|
+
export { analyzeVerificationPlan, verifyMigration, VERIFICATION_SCHEMAS } from './migration/index.js';
|
|
26
|
+
export { comparatorHealthy, compareBehavior, migrationExample } from './migration/index.js';
|
|
27
|
+
export { analyzeVerificationEvidence, EVIDENCE_REVIEW_SCHEMA } from './migration/index.js';
|
|
28
|
+
export { assessMigration, analyzeAssessmentRequest, ASSESSMENT_SCHEMAS } from './migration/index.js';
|
|
29
|
+
export { analyzeBaselinePlan, verifyMigrationBaseline, analyzeBaselineEvidence, BASELINE_SCHEMAS } from './migration/index.js';
|
|
24
30
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,+DAA+D;AAC/D,OAAO,EACL,SAAS,EACT,GAAG,EACH,GAAG,EACH,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,sBAAsB,EACtB,SAAS,EACT,UAAU,GAEX,MAAM,aAAa,CAAC;AACrB,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACnG,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,eAAe,EAAE,YAAY,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE5J,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAGjG,aAAa;AACb,OAAO,EACL,cAAc,EACd,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAC3C,WAAW,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,EAC/D,WAAW,EAAE,iBAAiB,EAC9B,aAAa,GACd,MAAM,cAAc,CAAC;AAGtB,oBAAoB;AACpB,OAAO,EAAE,QAAQ,IAAI,KAAK,EAAE,eAAe,IAAI,uBAAuB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEnH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAI5C,gEAAgE;AAChE,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,+DAA+D;AAC/D,OAAO,EACL,SAAS,EACT,GAAG,EACH,GAAG,EACH,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,sBAAsB,EACtB,SAAS,EACT,UAAU,GAEX,MAAM,aAAa,CAAC;AACrB,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACnG,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,eAAe,EAAE,YAAY,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE5J,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAGjG,aAAa;AACb,OAAO,EACL,cAAc,EACd,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAC3C,WAAW,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,EAC/D,WAAW,EAAE,iBAAiB,EAC9B,aAAa,GACd,MAAM,cAAc,CAAC;AAGtB,oBAAoB;AACpB,OAAO,EAAE,QAAQ,IAAI,KAAK,EAAE,eAAe,IAAI,uBAAuB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEnH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAI5C,gEAAgE;AAChE,cAAc,oBAAoB,CAAC;AAEnC,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE9G,OAAO,EAAE,uBAAuB,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEtG,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC5F,OAAO,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC3F,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAErG,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -9,6 +9,7 @@ export interface VerificationCommand {
|
|
|
9
9
|
timeoutMs: number;
|
|
10
10
|
}
|
|
11
11
|
export interface TaskIsolation {
|
|
12
|
+
mode?: 'read-only-v1';
|
|
12
13
|
patchArtifactId: string;
|
|
13
14
|
commands: VerificationCommand[];
|
|
14
15
|
}
|
|
@@ -25,6 +26,18 @@ export interface CommandEvidence {
|
|
|
25
26
|
durationMs: number;
|
|
26
27
|
container: string;
|
|
27
28
|
cleanupConfirmed: boolean;
|
|
29
|
+
/** Raw captured bytes, before display redaction. Never compare truncated output. */
|
|
30
|
+
outputDigests?: {
|
|
31
|
+
version: 1;
|
|
32
|
+
stdout: {
|
|
33
|
+
sha256: string;
|
|
34
|
+
bytes: number;
|
|
35
|
+
};
|
|
36
|
+
stderr: {
|
|
37
|
+
sha256: string;
|
|
38
|
+
bytes: number;
|
|
39
|
+
};
|
|
40
|
+
};
|
|
28
41
|
cleanup?: {
|
|
29
42
|
version: 1;
|
|
30
43
|
removal: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/isolation/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAG1E,MAAM,WAAW,iBAAiB;IAAG,OAAO,EAAE,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AAChE,MAAM,WAAW,mBAAmB;IAAG,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE;AAC9F,MAAM,WAAW,aAAa;IAAG,eAAe,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,mBAAmB,EAAE,CAAA;CAAE;
|
|
1
|
+
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/isolation/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAG1E,MAAM,WAAW,iBAAiB;IAAG,OAAO,EAAE,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AAChE,MAAM,WAAW,mBAAmB;IAAG,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE;AAC9F,MAAM,WAAW,aAAa;IAAG,IAAI,CAAC,EAAE,cAAc,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,mBAAmB,EAAE,CAAA;CAAE;AAClH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,CAAC,CAAC;IAAC,IAAI,EAAE,kBAAkB,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IACpE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,aAAa,CAAC;IACzF,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IACvE,SAAS,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,OAAO,CAAC;IAC7C,oFAAoF;IACpF,aAAa,CAAC,EAAE;QAAE,OAAO,EAAE,CAAC,CAAC;QAAC,MAAM,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC;QAAC,MAAM,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;IACrH,OAAO,CAAC,EAAE;QAAC,OAAO,EAAC,CAAC,CAAC;QAAA,OAAO,EAAC;YAAC,OAAO,EAAC,SAAS,GAAC,QAAQ,GAAC,SAAS,GAAC,OAAO,CAAC;YAAA,QAAQ,EAAC,MAAM,GAAC,IAAI,CAAA;SAAC,CAAC;QAC/F,YAAY,CAAC,EAAC;YAAC,OAAO,EAAC,QAAQ,GAAC,SAAS,GAAC,SAAS,GAAC,OAAO,CAAC;YAAA,QAAQ,EAAC,MAAM,GAAC,IAAI,CAAA;SAAC,CAAA;KAAC,CAAC;CACtF;AACD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,iBAAiB,CAIpF;AACD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,KAAK,IAAI,aAAa,CAsB1H"}
|
|
@@ -5,13 +5,21 @@ export function validateIsolation(value) {
|
|
|
5
5
|
fail('Isolated workers require version 1 and a pinned local Docker image ID (sha256:...).');
|
|
6
6
|
}
|
|
7
7
|
export function validateTaskIsolation(value, task, plan) {
|
|
8
|
-
shape(value, ['patchArtifactId', 'commands']);
|
|
8
|
+
shape(value, ['patchArtifactId', 'commands'], ['mode']);
|
|
9
|
+
if (value.mode !== undefined && value.mode !== 'read-only-v1')
|
|
10
|
+
fail('Unknown isolated task mode.');
|
|
9
11
|
id(value.patchArtifactId);
|
|
10
12
|
array(value.commands, 8);
|
|
11
13
|
const agent = plan.agents.find(a => a.id === task.agentId);
|
|
12
14
|
const output = (name, kind) => task.outputs.some(o => o.id === name && o.kind === kind && o.path === undefined);
|
|
13
15
|
if (!output(value.patchArtifactId, 'patch'))
|
|
14
16
|
fail('An isolated task requires a declared patch artifact without a project path.');
|
|
17
|
+
if (value.mode === 'read-only-v1') {
|
|
18
|
+
if (value.commands.length || agent.allowedTools.some(tool => !['think', 'ask_question', 'read_file', 'list_files', 'brain_search', 'brain_entity'].includes(tool)) || agent.allowedPaths.some(grant => grant.access !== 'read'))
|
|
19
|
+
fail('Read-only tasks require read-only tools and paths, without command execution.');
|
|
20
|
+
if (task.outputs.some(output => output.path !== undefined || output.id !== value.patchArtifactId && !['report', 'decision', 'evidence'].includes(output.kind)))
|
|
21
|
+
fail('Read-only tasks return pathless reports, decisions or evidence; only the executor supplies the patch.');
|
|
22
|
+
}
|
|
15
23
|
const seen = new Set();
|
|
16
24
|
for (const command of value.commands) {
|
|
17
25
|
shape(command, ['artifactId', 'argv', 'timeoutMs']);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../src/isolation/contracts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../src/isolation/contracts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coordinator.d.ts","sourceRoot":"","sources":["../../src/isolation/coordinator.ts"],"names":[],"mappings":"AAOA,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACjF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAyC,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAG3F,wBAAsB,YAAY,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"coordinator.d.ts","sourceRoot":"","sources":["../../src/isolation/coordinator.ts"],"names":[],"mappings":"AAOA,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACjF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAyC,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAG3F,wBAAsB,YAAY,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAqB3I;AACD,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,gBAAgB,GAAC;IAAC,qBAAqB,CAAC,EAAC,MAAM,CAAA;CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA0B1N"}
|
|
@@ -39,6 +39,8 @@ export async function taskWorktree(store, task, options) {
|
|
|
39
39
|
copied.set(path, artifact.sha256);
|
|
40
40
|
}
|
|
41
41
|
options.runlog?.policyEvent({ tool: 'orchestration_workspace', source: 'isolation', decision: 'allow', reason: canonicalJson({ taskId: task.id, base, root, inputs: [...copied] }), durationMs: 0 });
|
|
42
|
+
if (task.isolation?.mode === 'read-only-v1')
|
|
43
|
+
workspace.rememberVerification(agent.allowedPaths, workspace.snapshot(agent.allowedPaths, options.signal));
|
|
42
44
|
return workspace;
|
|
43
45
|
}
|
|
44
46
|
export async function verifyInWorktree(store, task, workspace, guard, options) {
|
|
@@ -72,6 +74,8 @@ export async function verifyInWorktree(store, task, workspace, guard, options) {
|
|
|
72
74
|
workspace.rememberVerification(agent.allowedPaths, before);
|
|
73
75
|
}
|
|
74
76
|
guard.assertActive(options.signal);
|
|
77
|
+
if (task.isolation?.mode === 'read-only-v1')
|
|
78
|
+
workspace.assertVerified(options.signal);
|
|
75
79
|
const patch = await workspace.patch(options.signal);
|
|
76
80
|
outputs.set(task.isolation.patchArtifactId, patch);
|
|
77
81
|
return outputs;
|