pi-amq 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +66 -0
- package/LICENSE +21 -0
- package/README.md +92 -0
- package/THIRD_PARTY_NOTICES.md +33 -0
- package/dist/extension/guidance.d.ts +25 -0
- package/dist/extension/guidance.d.ts.map +1 -0
- package/dist/extension/guidance.js +121 -0
- package/dist/extension/guidance.js.map +1 -0
- package/dist/extension/guide.d.ts +30 -0
- package/dist/extension/guide.d.ts.map +1 -0
- package/dist/extension/guide.js +128 -0
- package/dist/extension/guide.js.map +1 -0
- package/dist/extension/index.d.ts +4 -0
- package/dist/extension/index.d.ts.map +1 -0
- package/dist/extension/index.js +6 -0
- package/dist/extension/index.js.map +1 -0
- package/dist/extension/runtime.d.ts +48 -0
- package/dist/extension/runtime.d.ts.map +1 -0
- package/dist/extension/runtime.js +1095 -0
- package/dist/extension/runtime.js.map +1 -0
- package/dist/extension/tools.d.ts +12 -0
- package/dist/extension/tools.d.ts.map +1 -0
- package/dist/extension/tools.js +198 -0
- package/dist/extension/tools.js.map +1 -0
- package/dist/extension/worker-runtime.d.ts +34 -0
- package/dist/extension/worker-runtime.d.ts.map +1 -0
- package/dist/extension/worker-runtime.js +974 -0
- package/dist/extension/worker-runtime.js.map +1 -0
- package/dist/extension/worker-tools.d.ts +140 -0
- package/dist/extension/worker-tools.d.ts.map +1 -0
- package/dist/extension/worker-tools.js +217 -0
- package/dist/extension/worker-tools.js.map +1 -0
- package/dist/integration/confirmed-bind-onboarding.d.ts +44 -0
- package/dist/integration/confirmed-bind-onboarding.d.ts.map +1 -0
- package/dist/integration/confirmed-bind-onboarding.js +199 -0
- package/dist/integration/confirmed-bind-onboarding.js.map +1 -0
- package/dist/integration/fleet-view.d.ts +66 -0
- package/dist/integration/fleet-view.d.ts.map +1 -0
- package/dist/integration/fleet-view.js +238 -0
- package/dist/integration/fleet-view.js.map +1 -0
- package/dist/integration/fresh-session-dispatcher.d.ts +66 -0
- package/dist/integration/fresh-session-dispatcher.d.ts.map +1 -0
- package/dist/integration/fresh-session-dispatcher.js +103 -0
- package/dist/integration/fresh-session-dispatcher.js.map +1 -0
- package/dist/integration/launch-preview.d.ts +31 -0
- package/dist/integration/launch-preview.d.ts.map +1 -0
- package/dist/integration/launch-preview.js +325 -0
- package/dist/integration/launch-preview.js.map +1 -0
- package/dist/integration/transport-port.d.ts +39 -0
- package/dist/integration/transport-port.d.ts.map +1 -0
- package/dist/integration/transport-port.js +2 -0
- package/dist/integration/transport-port.js.map +1 -0
- package/dist/integration/worker-completion-notifier.d.ts +22 -0
- package/dist/integration/worker-completion-notifier.d.ts.map +1 -0
- package/dist/integration/worker-completion-notifier.js +81 -0
- package/dist/integration/worker-completion-notifier.js.map +1 -0
- package/dist/transport/amq-cli-adapter.d.ts +41 -0
- package/dist/transport/amq-cli-adapter.d.ts.map +1 -0
- package/dist/transport/amq-cli-adapter.js +291 -0
- package/dist/transport/amq-cli-adapter.js.map +1 -0
- package/dist/transport/amq-message.d.ts +47 -0
- package/dist/transport/amq-message.d.ts.map +1 -0
- package/dist/transport/amq-message.js +173 -0
- package/dist/transport/amq-message.js.map +1 -0
- package/dist/transport/amq-operations.d.ts +105 -0
- package/dist/transport/amq-operations.d.ts.map +1 -0
- package/dist/transport/amq-operations.js +320 -0
- package/dist/transport/amq-operations.js.map +1 -0
- package/dist/transport/atomic-json.d.ts +18 -0
- package/dist/transport/atomic-json.d.ts.map +1 -0
- package/dist/transport/atomic-json.js +90 -0
- package/dist/transport/atomic-json.js.map +1 -0
- package/dist/transport/binding-resolver.d.ts +46 -0
- package/dist/transport/binding-resolver.d.ts.map +1 -0
- package/dist/transport/binding-resolver.js +389 -0
- package/dist/transport/binding-resolver.js.map +1 -0
- package/dist/transport/bridge-journal.d.ts +100 -0
- package/dist/transport/bridge-journal.d.ts.map +1 -0
- package/dist/transport/bridge-journal.js +459 -0
- package/dist/transport/bridge-journal.js.map +1 -0
- package/dist/transport/dlq-retry-audit.d.ts +28 -0
- package/dist/transport/dlq-retry-audit.d.ts.map +1 -0
- package/dist/transport/dlq-retry-audit.js +66 -0
- package/dist/transport/dlq-retry-audit.js.map +1 -0
- package/dist/transport/inbox-pump.d.ts +81 -0
- package/dist/transport/inbox-pump.d.ts.map +1 -0
- package/dist/transport/inbox-pump.js +558 -0
- package/dist/transport/inbox-pump.js.map +1 -0
- package/dist/transport/index.d.ts +12 -0
- package/dist/transport/index.d.ts.map +1 -0
- package/dist/transport/index.js +12 -0
- package/dist/transport/index.js.map +1 -0
- package/dist/transport/presence-projector.d.ts +29 -0
- package/dist/transport/presence-projector.d.ts.map +1 -0
- package/dist/transport/presence-projector.js +73 -0
- package/dist/transport/presence-projector.js.map +1 -0
- package/dist/transport/priority-delivery-scheduler.d.ts +85 -0
- package/dist/transport/priority-delivery-scheduler.d.ts.map +1 -0
- package/dist/transport/priority-delivery-scheduler.js +210 -0
- package/dist/transport/priority-delivery-scheduler.js.map +1 -0
- package/dist/transport/receiver-lease.d.ts +102 -0
- package/dist/transport/receiver-lease.d.ts.map +1 -0
- package/dist/transport/receiver-lease.js +778 -0
- package/dist/transport/receiver-lease.js.map +1 -0
- package/dist/transport/runtime-status.d.ts +48 -0
- package/dist/transport/runtime-status.d.ts.map +1 -0
- package/dist/transport/runtime-status.js +71 -0
- package/dist/transport/runtime-status.js.map +1 -0
- package/dist/workflow/atomic-storage.d.ts +12 -0
- package/dist/workflow/atomic-storage.d.ts.map +1 -0
- package/dist/workflow/atomic-storage.js +104 -0
- package/dist/workflow/atomic-storage.js.map +1 -0
- package/dist/workflow/budget.d.ts +18 -0
- package/dist/workflow/budget.d.ts.map +1 -0
- package/dist/workflow/budget.js +74 -0
- package/dist/workflow/budget.js.map +1 -0
- package/dist/workflow/index.d.ts +17 -0
- package/dist/workflow/index.d.ts.map +1 -0
- package/dist/workflow/index.js +17 -0
- package/dist/workflow/index.js.map +1 -0
- package/dist/workflow/lifecycle-projection.d.ts +18 -0
- package/dist/workflow/lifecycle-projection.d.ts.map +1 -0
- package/dist/workflow/lifecycle-projection.js +22 -0
- package/dist/workflow/lifecycle-projection.js.map +1 -0
- package/dist/workflow/model-fallback.d.ts +2 -0
- package/dist/workflow/model-fallback.d.ts.map +1 -0
- package/dist/workflow/model-fallback.js +17 -0
- package/dist/workflow/model-fallback.js.map +1 -0
- package/dist/workflow/pi-session-fork.d.ts +18 -0
- package/dist/workflow/pi-session-fork.d.ts.map +1 -0
- package/dist/workflow/pi-session-fork.js +80 -0
- package/dist/workflow/pi-session-fork.js.map +1 -0
- package/dist/workflow/run-artifacts.d.ts +5 -0
- package/dist/workflow/run-artifacts.d.ts.map +1 -0
- package/dist/workflow/run-artifacts.js +25 -0
- package/dist/workflow/run-artifacts.js.map +1 -0
- package/dist/workflow/run-cleanup.d.ts +70 -0
- package/dist/workflow/run-cleanup.d.ts.map +1 -0
- package/dist/workflow/run-cleanup.js +222 -0
- package/dist/workflow/run-cleanup.js.map +1 -0
- package/dist/workflow/run-gate.d.ts +43 -0
- package/dist/workflow/run-gate.d.ts.map +1 -0
- package/dist/workflow/run-gate.js +70 -0
- package/dist/workflow/run-gate.js.map +1 -0
- package/dist/workflow/run-store.d.ts +208 -0
- package/dist/workflow/run-store.d.ts.map +1 -0
- package/dist/workflow/run-store.js +2965 -0
- package/dist/workflow/run-store.js.map +1 -0
- package/dist/workflow/spawn-confirmation.d.ts +44 -0
- package/dist/workflow/spawn-confirmation.d.ts.map +1 -0
- package/dist/workflow/spawn-confirmation.js +228 -0
- package/dist/workflow/spawn-confirmation.js.map +1 -0
- package/dist/workflow/system-process-inspector.d.ts +9 -0
- package/dist/workflow/system-process-inspector.d.ts.map +1 -0
- package/dist/workflow/system-process-inspector.js +129 -0
- package/dist/workflow/system-process-inspector.js.map +1 -0
- package/dist/workflow/worker-child-extension.d.ts +3 -0
- package/dist/workflow/worker-child-extension.d.ts.map +1 -0
- package/dist/workflow/worker-child-extension.js +182 -0
- package/dist/workflow/worker-child-extension.js.map +1 -0
- package/dist/workflow/worker-gate.d.ts +74 -0
- package/dist/workflow/worker-gate.d.ts.map +1 -0
- package/dist/workflow/worker-gate.js +165 -0
- package/dist/workflow/worker-gate.js.map +1 -0
- package/dist/workflow/worker-launch.d.ts +65 -0
- package/dist/workflow/worker-launch.d.ts.map +1 -0
- package/dist/workflow/worker-launch.js +338 -0
- package/dist/workflow/worker-launch.js.map +1 -0
- package/dist/workflow/worker-model-catalog.d.ts +36 -0
- package/dist/workflow/worker-model-catalog.d.ts.map +1 -0
- package/dist/workflow/worker-model-catalog.js +105 -0
- package/dist/workflow/worker-model-catalog.js.map +1 -0
- package/dist/workflow/worker-process-supervisor.d.ts +110 -0
- package/dist/workflow/worker-process-supervisor.d.ts.map +1 -0
- package/dist/workflow/worker-process-supervisor.js +1188 -0
- package/dist/workflow/worker-process-supervisor.js.map +1 -0
- package/dist/workflow/worker-prompt-capsule.d.ts +32 -0
- package/dist/workflow/worker-prompt-capsule.d.ts.map +1 -0
- package/dist/workflow/worker-prompt-capsule.js +52 -0
- package/dist/workflow/worker-prompt-capsule.js.map +1 -0
- package/dist/workflow/worker-role-presets.d.ts +38 -0
- package/dist/workflow/worker-role-presets.d.ts.map +1 -0
- package/dist/workflow/worker-role-presets.js +201 -0
- package/dist/workflow/worker-role-presets.js.map +1 -0
- package/dist/workflow/workflow-doctor.d.ts +57 -0
- package/dist/workflow/workflow-doctor.d.ts.map +1 -0
- package/dist/workflow/workflow-doctor.js +289 -0
- package/dist/workflow/workflow-doctor.js.map +1 -0
- package/dist/workflow/workflow-lease.d.ts +125 -0
- package/dist/workflow/workflow-lease.d.ts.map +1 -0
- package/dist/workflow/workflow-lease.js +689 -0
- package/dist/workflow/workflow-lease.js.map +1 -0
- package/dist/workflow/workflow-types.d.ts +335 -0
- package/dist/workflow/workflow-types.d.ts.map +1 -0
- package/dist/workflow/workflow-types.js +11 -0
- package/dist/workflow/workflow-types.js.map +1 -0
- package/dist/workflow/workspace-paths.d.ts +4 -0
- package/dist/workflow/workspace-paths.d.ts.map +1 -0
- package/dist/workflow/workspace-paths.js +22 -0
- package/dist/workflow/workspace-paths.js.map +1 -0
- package/docs/conformance.md +116 -0
- package/docs/demo-transcript.md +34 -0
- package/docs/design.md +1481 -0
- package/docs/operator-guide.md +100 -0
- package/extension/guidance.ts +162 -0
- package/extension/guide.ts +155 -0
- package/extension/index.ts +8 -0
- package/extension/runtime.ts +1224 -0
- package/extension/tools.ts +221 -0
- package/extension/worker-runtime.ts +1150 -0
- package/extension/worker-tools.ts +276 -0
- package/integration/confirmed-bind-onboarding.ts +296 -0
- package/integration/fleet-view.ts +286 -0
- package/integration/fresh-session-dispatcher.ts +166 -0
- package/integration/launch-preview.ts +396 -0
- package/integration/transport-port.ts +29 -0
- package/integration/worker-completion-notifier.ts +98 -0
- package/package.json +55 -0
- package/roles/oracle.md +9 -0
- package/roles/researcher.md +8 -0
- package/roles/reviewer.md +9 -0
- package/roles/scout.md +8 -0
- package/roles/worker.md +10 -0
- package/scripts/demo-two-terminal.sh +59 -0
- package/skills/coordination-patterns/SKILL.md +41 -0
- package/skills/coordination-patterns/references/supervised-worker-fan-out.md +12 -0
- package/skills/coordination-patterns/references/today-mail-team.md +36 -0
- package/transport/amq-cli-adapter.ts +381 -0
- package/transport/amq-message.ts +218 -0
- package/transport/amq-operations.ts +482 -0
- package/transport/atomic-json.ts +115 -0
- package/transport/binding-resolver.ts +565 -0
- package/transport/bridge-journal.ts +588 -0
- package/transport/dlq-retry-audit.ts +97 -0
- package/transport/inbox-pump.ts +729 -0
- package/transport/index.ts +11 -0
- package/transport/presence-projector.ts +104 -0
- package/transport/priority-delivery-scheduler.ts +328 -0
- package/transport/receiver-lease.ts +945 -0
- package/transport/runtime-status.ts +112 -0
- package/workflow/.gitkeep +1 -0
- package/workflow/atomic-storage.ts +120 -0
- package/workflow/budget.ts +90 -0
- package/workflow/index.ts +16 -0
- package/workflow/lifecycle-projection.ts +37 -0
- package/workflow/model-fallback.ts +17 -0
- package/workflow/pi-session-fork.ts +96 -0
- package/workflow/run-artifacts.ts +36 -0
- package/workflow/run-cleanup.ts +315 -0
- package/workflow/run-gate.ts +122 -0
- package/workflow/run-store.ts +3890 -0
- package/workflow/spawn-confirmation.ts +305 -0
- package/workflow/system-process-inspector.ts +142 -0
- package/workflow/worker-child-extension.ts +193 -0
- package/workflow/worker-gate.ts +238 -0
- package/workflow/worker-launch.ts +485 -0
- package/workflow/worker-model-catalog.ts +165 -0
- package/workflow/worker-process-supervisor.ts +1504 -0
- package/workflow/worker-prompt-capsule.ts +81 -0
- package/workflow/worker-role-presets.ts +241 -0
- package/workflow/workflow-doctor.ts +400 -0
- package/workflow/workflow-lease.ts +905 -0
- package/workflow/workflow-types.ts +367 -0
- package/workflow/workspace-paths.ts +32 -0
|
@@ -0,0 +1,367 @@
|
|
|
1
|
+
export type RunId = `run_${string}`;
|
|
2
|
+
export type StepId = `step_${string}`;
|
|
3
|
+
export type WorkerId = `worker_${string}`;
|
|
4
|
+
export type AttemptId = `attempt_${string}`;
|
|
5
|
+
export type AmbiguityId = `ambiguity_${string}`;
|
|
6
|
+
export type ContractRevisionId = `revision_${string}`;
|
|
7
|
+
export type PeerMessageId = `peer_${string}`;
|
|
8
|
+
|
|
9
|
+
export interface ReportFieldSchema {
|
|
10
|
+
readonly type: "string" | "number" | "boolean" | "object" | "array" | "null";
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export interface ReportSchemaV1 {
|
|
14
|
+
readonly schema: 1;
|
|
15
|
+
readonly required: readonly string[];
|
|
16
|
+
readonly properties: Readonly<Record<string, ReportFieldSchema>>;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export interface AcceptanceCheck {
|
|
20
|
+
readonly command: string;
|
|
21
|
+
readonly args: readonly string[];
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export type BudgetLimit =
|
|
25
|
+
| { readonly kind: "limited"; readonly value: number }
|
|
26
|
+
| { readonly kind: "unlimited" };
|
|
27
|
+
|
|
28
|
+
export interface RunBudget {
|
|
29
|
+
readonly maxWorkers: BudgetLimit;
|
|
30
|
+
readonly maxConcurrency: BudgetLimit;
|
|
31
|
+
readonly maxDepth: BudgetLimit;
|
|
32
|
+
readonly maxAttempts: BudgetLimit;
|
|
33
|
+
readonly maxWallClockMs: BudgetLimit;
|
|
34
|
+
readonly maxTokens: BudgetLimit;
|
|
35
|
+
readonly maxCostUsd: BudgetLimit;
|
|
36
|
+
readonly maxOutputBytes: BudgetLimit;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export interface WorkerBudget {
|
|
40
|
+
readonly maxAttempts: BudgetLimit;
|
|
41
|
+
readonly maxWallClockMs: BudgetLimit;
|
|
42
|
+
readonly maxTokens: BudgetLimit;
|
|
43
|
+
readonly maxCostUsd: BudgetLimit;
|
|
44
|
+
readonly maxOutputBytes: BudgetLimit;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export interface EvidenceNode {
|
|
48
|
+
readonly id: string;
|
|
49
|
+
readonly kind: "claim" | "artifact";
|
|
50
|
+
readonly assertion: string;
|
|
51
|
+
readonly verifier: string;
|
|
52
|
+
readonly requires: readonly string[];
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export interface ObjectiveContract {
|
|
56
|
+
readonly schema: 1;
|
|
57
|
+
readonly goal: string;
|
|
58
|
+
readonly acceptance: readonly string[];
|
|
59
|
+
readonly constraints: readonly string[];
|
|
60
|
+
readonly permissions: readonly string[];
|
|
61
|
+
readonly budget: RunBudget;
|
|
62
|
+
readonly evidenceGraph?: { readonly nodes: readonly EvidenceNode[] };
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export interface RunSource {
|
|
66
|
+
readonly kind: "interactive" | "amq" | "external-engine";
|
|
67
|
+
readonly amqMessageId: string | null;
|
|
68
|
+
readonly driverSessionId: string;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export interface ModelSpec {
|
|
72
|
+
readonly provider: string;
|
|
73
|
+
readonly id: string;
|
|
74
|
+
readonly thinkingLevel?: string;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export interface WorkspaceGrant {
|
|
78
|
+
readonly path: string;
|
|
79
|
+
readonly mode: "read-only" | "mutating";
|
|
80
|
+
readonly worktreePath?: string;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export interface ContentRef {
|
|
84
|
+
readonly kind: "file" | "session" | "artifact";
|
|
85
|
+
readonly value: string;
|
|
86
|
+
readonly hash?: string;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export interface WorkerRoleContract {
|
|
90
|
+
readonly name: string;
|
|
91
|
+
readonly tier: string;
|
|
92
|
+
readonly charter: string;
|
|
93
|
+
readonly presetSource: "builtin" | "user" | "project";
|
|
94
|
+
readonly presetFingerprint: string;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export type WorkerProposalEditableField = "role" | "task" | "model" | "difficulty" | "budget";
|
|
98
|
+
|
|
99
|
+
export interface WorkerProposalProvenance {
|
|
100
|
+
readonly source: "tool" | "human-edited";
|
|
101
|
+
readonly confirmSpawns: "on" | "multi-worker-only" | "off";
|
|
102
|
+
readonly disposition: "accepted" | "skipped-policy-off" | "skipped-single-worker";
|
|
103
|
+
readonly humanEditedFields: readonly WorkerProposalEditableField[];
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
export type WorkerContextMode = "fresh" | "fork";
|
|
107
|
+
|
|
108
|
+
export interface WorkerForkSource {
|
|
109
|
+
readonly sourceSessionFile: string;
|
|
110
|
+
readonly branchPointId: string;
|
|
111
|
+
readonly inheritedEntries: number;
|
|
112
|
+
readonly inheritedBytes: number;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
export interface WorkerRequest {
|
|
116
|
+
readonly schema: 1;
|
|
117
|
+
readonly requestKey: string;
|
|
118
|
+
readonly difficulty?: "hard" | "medium" | "easy";
|
|
119
|
+
readonly role?: WorkerRoleContract;
|
|
120
|
+
readonly proposal?: WorkerProposalProvenance;
|
|
121
|
+
readonly context?: WorkerContextMode;
|
|
122
|
+
readonly forkSource?: WorkerForkSource;
|
|
123
|
+
readonly goal: string;
|
|
124
|
+
readonly acceptance: readonly string[];
|
|
125
|
+
readonly constraints: readonly string[];
|
|
126
|
+
readonly budget: WorkerBudget;
|
|
127
|
+
readonly model: ModelSpec;
|
|
128
|
+
readonly modelFallbacks?: readonly ModelSpec[];
|
|
129
|
+
readonly capabilities: readonly string[];
|
|
130
|
+
readonly workspace: WorkspaceGrant;
|
|
131
|
+
readonly contextRefs: readonly ContentRef[];
|
|
132
|
+
readonly channel: "json-result" | "rpc";
|
|
133
|
+
readonly sideEffectPolicy: "none" | "idempotent" | "reconcilable" | "external";
|
|
134
|
+
readonly report_schema?: ReportSchemaV1;
|
|
135
|
+
readonly requires_human_approval?: boolean;
|
|
136
|
+
readonly acceptance_check?: AcceptanceCheck;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
export interface WorkerContract extends WorkerRequest {
|
|
140
|
+
readonly context: WorkerContextMode;
|
|
141
|
+
readonly runId: RunId;
|
|
142
|
+
readonly workerId: WorkerId;
|
|
143
|
+
readonly createdByDriverSessionId: string;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
export interface WorkerLaunchContractV1 {
|
|
147
|
+
readonly schema: 1;
|
|
148
|
+
readonly runId: RunId;
|
|
149
|
+
readonly workerId: WorkerId;
|
|
150
|
+
readonly attemptId: AttemptId;
|
|
151
|
+
readonly workerAttemptGeneration: string;
|
|
152
|
+
readonly supervisorGeneration: string;
|
|
153
|
+
readonly transportMode: "send-only";
|
|
154
|
+
readonly channel: "json-result" | "rpc";
|
|
155
|
+
readonly depth: number;
|
|
156
|
+
readonly model: ModelSpec;
|
|
157
|
+
readonly capabilities: readonly string[];
|
|
158
|
+
readonly tools: readonly string[];
|
|
159
|
+
readonly workspace: WorkspaceGrant;
|
|
160
|
+
readonly sessionDirectory: string;
|
|
161
|
+
readonly continuedSessionFile?: string;
|
|
162
|
+
readonly forkedSessionFile?: string;
|
|
163
|
+
readonly projectTrust: "trusted" | "untrusted";
|
|
164
|
+
readonly parentLivenessFd: 3;
|
|
165
|
+
readonly budget: WorkerBudget;
|
|
166
|
+
readonly sideEffectPolicy: WorkerRequest["sideEffectPolicy"];
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
export interface WorkerContinuationProvenance {
|
|
170
|
+
readonly priorWorkerId: WorkerId;
|
|
171
|
+
readonly priorAttemptId: AttemptId;
|
|
172
|
+
readonly priorLeaseGeneration: string;
|
|
173
|
+
readonly sessionFile: string;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
export interface ProcessStartEvidence {
|
|
177
|
+
readonly pid: number | null;
|
|
178
|
+
readonly processStartIdentity: string | null;
|
|
179
|
+
readonly bootIdentity: string | null;
|
|
180
|
+
readonly executable: string | null;
|
|
181
|
+
readonly hostname: string | null;
|
|
182
|
+
readonly spawnedAt: string | null;
|
|
183
|
+
readonly observedExitAt: string | null;
|
|
184
|
+
readonly exitStatus: {
|
|
185
|
+
readonly code: number | null;
|
|
186
|
+
readonly signal: string | null;
|
|
187
|
+
} | null;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
export interface AttemptUsageProjection {
|
|
191
|
+
readonly tokens: number;
|
|
192
|
+
readonly costUsd: number;
|
|
193
|
+
readonly outputBytes: number;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
export interface WorkerAttemptProjection {
|
|
197
|
+
readonly attemptId: AttemptId;
|
|
198
|
+
readonly attemptNumber: number;
|
|
199
|
+
readonly workerAttemptGeneration: string;
|
|
200
|
+
readonly supervisorGeneration: string;
|
|
201
|
+
readonly state: "pending" | "running" | "blocked" | "ambiguous" | "done" | "failed" | "cancelled";
|
|
202
|
+
readonly session: {
|
|
203
|
+
readonly path: string;
|
|
204
|
+
readonly file: string | null;
|
|
205
|
+
readonly leaseGeneration: string | null;
|
|
206
|
+
};
|
|
207
|
+
readonly launchContract: WorkerLaunchContractV1 | null;
|
|
208
|
+
readonly modelSelection?: {
|
|
209
|
+
readonly model: ModelSpec;
|
|
210
|
+
readonly fallbackReason: string | null;
|
|
211
|
+
};
|
|
212
|
+
readonly pidStartEvidence: ProcessStartEvidence;
|
|
213
|
+
readonly usage: AttemptUsageProjection;
|
|
214
|
+
readonly candidateOutcome: { readonly valueOrRef: string | null; readonly hash: string | null };
|
|
215
|
+
readonly sideEffects: {
|
|
216
|
+
readonly policy: WorkerRequest["sideEffectPolicy"];
|
|
217
|
+
readonly status: "none" | "known" | "uncertain";
|
|
218
|
+
};
|
|
219
|
+
readonly control: {
|
|
220
|
+
readonly status: "attached" | "detached";
|
|
221
|
+
readonly reason: string | null;
|
|
222
|
+
readonly recordedAt: string | null;
|
|
223
|
+
};
|
|
224
|
+
readonly cancellation: {
|
|
225
|
+
readonly reason: string | null;
|
|
226
|
+
readonly requestedAt: string | null;
|
|
227
|
+
readonly sentAt: string | null;
|
|
228
|
+
readonly observedAt: string | null;
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
export interface ContractRevisionProjection {
|
|
233
|
+
readonly revisionId: ContractRevisionId;
|
|
234
|
+
readonly revision: number;
|
|
235
|
+
readonly contract: WorkerContract;
|
|
236
|
+
readonly status: "pending" | "delivered";
|
|
237
|
+
readonly correlation: string | null;
|
|
238
|
+
readonly requestedAt: string;
|
|
239
|
+
readonly deliveredAt: string | null;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
export interface WorkerWaitProjection {
|
|
243
|
+
readonly attemptId: AttemptId;
|
|
244
|
+
readonly workerAttemptGeneration: string;
|
|
245
|
+
readonly reason: string;
|
|
246
|
+
readonly correlation: string;
|
|
247
|
+
readonly status: "waiting" | "satisfied";
|
|
248
|
+
readonly declaredAt: string;
|
|
249
|
+
readonly satisfiedAt: string | null;
|
|
250
|
+
readonly satisfiedBy: "steer" | "revise_contract" | "peer_message" | null;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
export interface WorkerStallProjection {
|
|
254
|
+
readonly silent: {
|
|
255
|
+
readonly detected: boolean;
|
|
256
|
+
readonly expectedCadenceMs: number | null;
|
|
257
|
+
readonly recordedAt: string | null;
|
|
258
|
+
};
|
|
259
|
+
readonly noProgress: {
|
|
260
|
+
readonly detected: boolean;
|
|
261
|
+
readonly fingerprint: string | null;
|
|
262
|
+
readonly identicalRounds: number;
|
|
263
|
+
readonly recordedAt: string | null;
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
export interface WorkerGateProjection {
|
|
268
|
+
readonly evidenceExists: boolean;
|
|
269
|
+
readonly reportMatches: boolean | null;
|
|
270
|
+
readonly acceptanceCheckExitCode: number | null;
|
|
271
|
+
readonly humanApproved: boolean | null;
|
|
272
|
+
readonly blockers: readonly string[];
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
export interface PeerMessageProjection {
|
|
276
|
+
readonly messageId: PeerMessageId;
|
|
277
|
+
readonly senderWorkerId: WorkerId;
|
|
278
|
+
readonly recipientWorkerId: WorkerId;
|
|
279
|
+
readonly grant: string;
|
|
280
|
+
readonly correlation: string;
|
|
281
|
+
readonly messageHash: string;
|
|
282
|
+
readonly status: "pending" | "delivered" | "indeterminate";
|
|
283
|
+
readonly requestedAt: string;
|
|
284
|
+
readonly deliveredAt: string | null;
|
|
285
|
+
readonly diagnostic: string | null;
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
export interface WorkerProjection {
|
|
289
|
+
readonly workerId: WorkerId;
|
|
290
|
+
readonly spawnRequestKey: string;
|
|
291
|
+
readonly atomicCallStepId: StepId;
|
|
292
|
+
readonly contractFingerprint: string;
|
|
293
|
+
readonly contract: WorkerContract;
|
|
294
|
+
readonly continuation: WorkerContinuationProvenance | null;
|
|
295
|
+
readonly parentWorkerId: WorkerId | null;
|
|
296
|
+
readonly depth: number;
|
|
297
|
+
readonly state: WorkerAttemptProjection["state"];
|
|
298
|
+
readonly lastLedgerAt: string;
|
|
299
|
+
readonly attempts: readonly WorkerAttemptProjection[];
|
|
300
|
+
readonly contractRevisions: readonly ContractRevisionProjection[];
|
|
301
|
+
readonly peerMessages: readonly PeerMessageProjection[];
|
|
302
|
+
readonly waits: readonly WorkerWaitProjection[];
|
|
303
|
+
readonly stall: WorkerStallProjection;
|
|
304
|
+
readonly gate: WorkerGateProjection;
|
|
305
|
+
readonly acceptedOutcome: null;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
export interface RunBudgetProjection {
|
|
309
|
+
readonly limits: RunBudget;
|
|
310
|
+
readonly reserved: {
|
|
311
|
+
readonly workers: number;
|
|
312
|
+
readonly attempts: number;
|
|
313
|
+
readonly tokens: number | "unlimited";
|
|
314
|
+
readonly costUsd: number | "unlimited";
|
|
315
|
+
readonly outputBytes: number | "unlimited";
|
|
316
|
+
};
|
|
317
|
+
readonly spent: {
|
|
318
|
+
readonly tokens: number;
|
|
319
|
+
readonly costUsd: number;
|
|
320
|
+
readonly outputBytes: number;
|
|
321
|
+
};
|
|
322
|
+
readonly remaining: {
|
|
323
|
+
readonly workers: BudgetLimit;
|
|
324
|
+
readonly attempts: BudgetLimit;
|
|
325
|
+
readonly tokens: BudgetLimit;
|
|
326
|
+
readonly wallClockMs: BudgetLimit;
|
|
327
|
+
readonly costUsd: BudgetLimit;
|
|
328
|
+
readonly outputBytes: BudgetLimit;
|
|
329
|
+
};
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
export interface AmbiguityProjection {
|
|
333
|
+
readonly ambiguityId: AmbiguityId;
|
|
334
|
+
readonly status: "needs-reconcile";
|
|
335
|
+
readonly reason: string;
|
|
336
|
+
readonly relatedIds: readonly string[];
|
|
337
|
+
readonly recordedAt: string;
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
export const RUN_STATES = [
|
|
341
|
+
"open",
|
|
342
|
+
"verifying",
|
|
343
|
+
"done",
|
|
344
|
+
"blocked",
|
|
345
|
+
"cancel-requested",
|
|
346
|
+
"cancelled",
|
|
347
|
+
"ambiguous",
|
|
348
|
+
"needs-attention",
|
|
349
|
+
] as const;
|
|
350
|
+
|
|
351
|
+
export type RunState = (typeof RUN_STATES)[number];
|
|
352
|
+
|
|
353
|
+
export interface RunProjectionV2 {
|
|
354
|
+
readonly schema: 2;
|
|
355
|
+
readonly runId: RunId;
|
|
356
|
+
readonly requestKey: string;
|
|
357
|
+
readonly requestFingerprint: string;
|
|
358
|
+
readonly source: RunSource;
|
|
359
|
+
readonly objective: ObjectiveContract;
|
|
360
|
+
readonly budget: RunBudgetProjection;
|
|
361
|
+
readonly state: RunState;
|
|
362
|
+
readonly workers: Readonly<Record<string, WorkerProjection>>;
|
|
363
|
+
readonly unresolvedAmbiguities: readonly AmbiguityProjection[];
|
|
364
|
+
readonly ledger: { readonly throughSeq: number; readonly chainHash: string };
|
|
365
|
+
readonly createdAt: string;
|
|
366
|
+
readonly updatedAt: string;
|
|
367
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { homedir } from "node:os";
|
|
3
|
+
import { isAbsolute, join, normalize, resolve } from "node:path";
|
|
4
|
+
|
|
5
|
+
export function defaultPiStateDirectory(): string {
|
|
6
|
+
return join(homedir(), ".pi", "agent");
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export function workflowWorkspaceId(workspacePath: string): string {
|
|
10
|
+
const canonical = canonicalWorkspacePath(workspacePath);
|
|
11
|
+
return createHash("sha256").update(canonical).digest("hex");
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export function workflowNamespaceDirectory(
|
|
15
|
+
piStateDirectory: string,
|
|
16
|
+
workspacePath: string,
|
|
17
|
+
): string {
|
|
18
|
+
if (!isAbsolute(piStateDirectory)) {
|
|
19
|
+
throw new TypeError("Pi state directory must be absolute");
|
|
20
|
+
}
|
|
21
|
+
return join(
|
|
22
|
+
normalize(piStateDirectory),
|
|
23
|
+
"workspaces",
|
|
24
|
+
workflowWorkspaceId(workspacePath),
|
|
25
|
+
"pi-amq-workflow",
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function canonicalWorkspacePath(workspacePath: string): string {
|
|
30
|
+
if (!isAbsolute(workspacePath)) throw new TypeError("Workspace path must be absolute");
|
|
31
|
+
return normalize(resolve(workspacePath));
|
|
32
|
+
}
|