@goah/cli 0.2.0 → 0.3.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.
Files changed (116) hide show
  1. package/dist/cli.js +51 -6
  2. package/dist/cli.js.map +1 -1
  3. package/dist/execution.d.ts +2 -0
  4. package/dist/execution.d.ts.map +1 -0
  5. package/dist/execution.js +2 -0
  6. package/dist/execution.js.map +1 -0
  7. package/dist/index.d.ts +5 -2
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +9 -8
  10. package/dist/index.js.map +1 -1
  11. package/dist/inspect.d.ts +60 -0
  12. package/dist/inspect.d.ts.map +1 -0
  13. package/dist/inspect.js +109 -0
  14. package/dist/inspect.js.map +1 -0
  15. package/dist/kernel.d.ts +2 -0
  16. package/dist/kernel.d.ts.map +1 -0
  17. package/dist/kernel.js +2 -0
  18. package/dist/kernel.js.map +1 -0
  19. package/dist/metrics.d.ts +2 -0
  20. package/dist/metrics.d.ts.map +1 -0
  21. package/dist/metrics.js +2 -0
  22. package/dist/metrics.js.map +1 -0
  23. package/dist/runner-pi.d.ts +2 -0
  24. package/dist/runner-pi.d.ts.map +1 -0
  25. package/dist/runner-pi.js +2 -0
  26. package/dist/runner-pi.js.map +1 -0
  27. package/dist/session.d.ts +2 -0
  28. package/dist/session.d.ts.map +1 -0
  29. package/dist/session.js +2 -0
  30. package/dist/session.js.map +1 -0
  31. package/dist/sqlite.d.ts +2 -0
  32. package/dist/sqlite.d.ts.map +1 -0
  33. package/dist/sqlite.js +2 -0
  34. package/dist/sqlite.js.map +1 -0
  35. package/dist/supervisor.d.ts +2 -0
  36. package/dist/supervisor.d.ts.map +1 -0
  37. package/dist/supervisor.js +2 -0
  38. package/dist/supervisor.js.map +1 -0
  39. package/dist/testkit.d.ts +2 -0
  40. package/dist/testkit.d.ts.map +1 -0
  41. package/dist/testkit.js +2 -0
  42. package/dist/testkit.js.map +1 -0
  43. package/node_modules/goah-ledger-contract/dist/execution.d.ts +205 -0
  44. package/node_modules/goah-ledger-contract/dist/execution.d.ts.map +1 -0
  45. package/node_modules/goah-ledger-contract/dist/execution.js +18 -0
  46. package/node_modules/goah-ledger-contract/dist/execution.js.map +1 -0
  47. package/node_modules/goah-ledger-contract/dist/index.d.ts +5 -0
  48. package/node_modules/goah-ledger-contract/dist/index.d.ts.map +1 -0
  49. package/node_modules/goah-ledger-contract/dist/index.js +5 -0
  50. package/node_modules/goah-ledger-contract/dist/index.js.map +1 -0
  51. package/node_modules/goah-ledger-contract/dist/kernel.d.ts +33 -0
  52. package/node_modules/goah-ledger-contract/dist/kernel.d.ts.map +1 -0
  53. package/node_modules/goah-ledger-contract/dist/kernel.js +6 -0
  54. package/node_modules/goah-ledger-contract/dist/kernel.js.map +1 -0
  55. package/node_modules/goah-ledger-contract/dist/metrics.d.ts +40 -0
  56. package/node_modules/goah-ledger-contract/dist/metrics.d.ts.map +1 -0
  57. package/node_modules/goah-ledger-contract/dist/metrics.js +25 -0
  58. package/node_modules/goah-ledger-contract/dist/metrics.js.map +1 -0
  59. package/node_modules/goah-ledger-contract/dist/session.d.ts +37 -0
  60. package/node_modules/goah-ledger-contract/dist/session.d.ts.map +1 -0
  61. package/node_modules/goah-ledger-contract/dist/session.js +53 -0
  62. package/node_modules/goah-ledger-contract/dist/session.js.map +1 -0
  63. package/node_modules/goah-ledger-contract/package.json +29 -0
  64. package/node_modules/goah-ledger-sqlite/dist/index.d.ts +66 -0
  65. package/node_modules/goah-ledger-sqlite/dist/index.d.ts.map +1 -0
  66. package/node_modules/goah-ledger-sqlite/dist/index.js +537 -0
  67. package/node_modules/goah-ledger-sqlite/dist/index.js.map +1 -0
  68. package/node_modules/goah-ledger-sqlite/package.json +26 -0
  69. package/node_modules/goah-runner-pi/dist/index.d.ts +53 -0
  70. package/node_modules/goah-runner-pi/dist/index.d.ts.map +1 -0
  71. package/node_modules/goah-runner-pi/dist/index.js +229 -0
  72. package/node_modules/goah-runner-pi/dist/index.js.map +1 -0
  73. package/node_modules/goah-runner-pi/dist/model-provider.d.ts +13 -0
  74. package/node_modules/goah-runner-pi/dist/model-provider.d.ts.map +1 -0
  75. package/node_modules/goah-runner-pi/dist/model-provider.js +75 -0
  76. package/node_modules/goah-runner-pi/dist/model-provider.js.map +1 -0
  77. package/node_modules/goah-runner-pi/dist/pi-worker.d.ts +14 -0
  78. package/node_modules/goah-runner-pi/dist/pi-worker.d.ts.map +1 -0
  79. package/node_modules/goah-runner-pi/dist/pi-worker.js +278 -0
  80. package/node_modules/goah-runner-pi/dist/pi-worker.js.map +1 -0
  81. package/node_modules/goah-runner-pi/dist/verification-worker.d.ts +2 -0
  82. package/node_modules/goah-runner-pi/dist/verification-worker.d.ts.map +1 -0
  83. package/node_modules/goah-runner-pi/dist/verification-worker.js +48 -0
  84. package/node_modules/goah-runner-pi/dist/verification-worker.js.map +1 -0
  85. package/node_modules/goah-runner-pi/package.json +28 -0
  86. package/node_modules/goah-supervisor/dist/context-view.d.ts +23 -0
  87. package/node_modules/goah-supervisor/dist/context-view.d.ts.map +1 -0
  88. package/node_modules/goah-supervisor/dist/context-view.js +47 -0
  89. package/node_modules/goah-supervisor/dist/context-view.js.map +1 -0
  90. package/node_modules/goah-supervisor/dist/index.d.ts +54 -0
  91. package/node_modules/goah-supervisor/dist/index.d.ts.map +1 -0
  92. package/node_modules/goah-supervisor/dist/index.js +436 -0
  93. package/node_modules/goah-supervisor/dist/index.js.map +1 -0
  94. package/node_modules/goah-supervisor/dist/roles.d.ts +3 -0
  95. package/node_modules/goah-supervisor/dist/roles.d.ts.map +1 -0
  96. package/node_modules/goah-supervisor/dist/roles.js +8 -0
  97. package/node_modules/goah-supervisor/dist/roles.js.map +1 -0
  98. package/node_modules/goah-supervisor/dist/verification.d.ts +82 -0
  99. package/node_modules/goah-supervisor/dist/verification.d.ts.map +1 -0
  100. package/node_modules/goah-supervisor/dist/verification.js +110 -0
  101. package/node_modules/goah-supervisor/dist/verification.js.map +1 -0
  102. package/node_modules/goah-supervisor/package.json +26 -0
  103. package/node_modules/goah-testkit/dist/faux-runner-worker.d.ts +2 -0
  104. package/node_modules/goah-testkit/dist/faux-runner-worker.d.ts.map +1 -0
  105. package/node_modules/goah-testkit/dist/faux-runner-worker.js +29 -0
  106. package/node_modules/goah-testkit/dist/faux-runner-worker.js.map +1 -0
  107. package/node_modules/goah-testkit/dist/index.d.ts +51 -0
  108. package/node_modules/goah-testkit/dist/index.d.ts.map +1 -0
  109. package/node_modules/goah-testkit/dist/index.js +96 -0
  110. package/node_modules/goah-testkit/dist/index.js.map +1 -0
  111. package/node_modules/goah-testkit/dist/mock-connector-worker.d.ts +2 -0
  112. package/node_modules/goah-testkit/dist/mock-connector-worker.d.ts.map +1 -0
  113. package/node_modules/goah-testkit/dist/mock-connector-worker.js +29 -0
  114. package/node_modules/goah-testkit/dist/mock-connector-worker.js.map +1 -0
  115. package/node_modules/goah-testkit/package.json +29 -0
  116. package/package.json +27 -8
@@ -0,0 +1,436 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { spawn } from "node:child_process";
3
+ import { capabilityFor, controlStream, evaluateMetric, interruptedSessionEvents, wakeStream, } from "goah-ledger-contract";
4
+ import { composeActiveContext, selectRecoveryEvents } from "./context-view.js";
5
+ import { defaultRolePrompt } from "./roles.js";
6
+ export { composeActiveContext, selectRecoveryEvents } from "./context-view.js";
7
+ export class Supervisor {
8
+ ledger;
9
+ runner;
10
+ clock;
11
+ #leaseMs;
12
+ #allowExternalActions;
13
+ #approvers;
14
+ #auditWriters;
15
+ #claimTail = Promise.resolve();
16
+ #connectors = new Map();
17
+ #metricCollectors = new Map();
18
+ #metricContracts = new Map();
19
+ #heartbeatPolicies;
20
+ #retryPolicy;
21
+ #profiles;
22
+ #verifyMetricsAfterWake;
23
+ constructor(ledger, runner, clock, options = {}) {
24
+ this.ledger = ledger;
25
+ this.runner = runner;
26
+ this.clock = clock;
27
+ this.#leaseMs = options.leaseMs ?? 30_000;
28
+ this.#allowExternalActions = options.allowExternalActions ?? false;
29
+ this.#approvers = new Set(options.approvers ?? ["human", "ceo"]);
30
+ this.#auditWriters = new Set(options.auditWriters ?? ["verifier", "audit"]);
31
+ this.#heartbeatPolicies = options.heartbeatPolicies ?? [];
32
+ this.#retryPolicy = options.retryPolicy ?? { maxAttempts: 0, baseDelayMs: 1_000 };
33
+ this.#profiles = new Map((options.profiles ?? []).map((profile) => [profile.agent, profile]));
34
+ this.#verifyMetricsAfterWake = options.verifyMetricsAfterWake ?? false;
35
+ }
36
+ registerConnector(connector) { this.#connectors.set(connector.manifest.connector, connector); }
37
+ registerMetricContract(goalId, contract) { this.#metricContracts.set(goalId, contract); }
38
+ registerMetricCollector(goalId, contract, spec, intervalMs = 60_000) {
39
+ this.registerMetricContract(goalId, contract);
40
+ this.#metricCollectors.set(goalId, { goalId, contract, spec, intervalMs, nextAt: 0 });
41
+ }
42
+ createGoal(goal, actor = "human") { this.ledger.putGoal(goal, actor); }
43
+ planWake(agent, at, reason, setBy = agent) {
44
+ const schedule = { id: `schedule:${agent}`, agent, nextWakeAt: at, reason, setBy };
45
+ this.ledger.putSchedule(schedule, setBy);
46
+ return at <= this.#now() ? this.#enqueueSchedule(schedule) : null;
47
+ }
48
+ async recover() {
49
+ this.ledger.recoverDispatchingActions();
50
+ for (const expired of this.ledger.expiredWakes(this.#now())) {
51
+ if (expired.status === "running" && expired.runnerPid)
52
+ await this.runner.terminateProcess(expired.runnerPid);
53
+ this.ledger.recoverExpiredWake(expired.id, this.#now());
54
+ }
55
+ }
56
+ async tick() {
57
+ const claimed = await this.#claimNextWake();
58
+ const wake = claimed?.wake ?? null;
59
+ if (!wake)
60
+ return null;
61
+ const leaseToken = claimed.leaseToken;
62
+ let running = wake;
63
+ let handle = null;
64
+ let renewal;
65
+ try {
66
+ running = this.ledger.markWakeRunning(wake.id, this.#now(), leaseToken);
67
+ const context = this.#loadContext(running);
68
+ handle = this.runner.prepare({
69
+ wake: running,
70
+ context,
71
+ now: () => this.#now(),
72
+ emit: (trace) => this.ledger.appendRunnerEvent({ streamId: wakeStream(running.id), ts: this.#now(), actor: running.agent, type: trace.type, data: trace.data }, leaseToken),
73
+ rpc: (method, params) => this.#agentRpc(running, leaseToken, method, params),
74
+ });
75
+ if (handle.pid)
76
+ running = this.ledger.attachWakeProcess(running.id, leaseToken, handle.pid, this.#now());
77
+ renewal = setInterval(() => {
78
+ try {
79
+ const now = this.clock.now();
80
+ this.ledger.renewWakeLease(running.id, leaseToken, new Date(now.getTime() + this.#leaseMs).toISOString(), now.toISOString());
81
+ }
82
+ catch {
83
+ void handle?.terminate();
84
+ }
85
+ }, Math.max(25, Math.floor(this.#leaseMs / 3)));
86
+ renewal.unref();
87
+ handle.begin();
88
+ const result = await handle.result;
89
+ clearInterval(renewal);
90
+ renewal = undefined;
91
+ await handle.terminate();
92
+ if (result.outcome === "abnormal") {
93
+ await this.#markAbnormal(running, result.reason);
94
+ return this.#wake(running.id);
95
+ }
96
+ const outgoingMail = result.output.mail.map((draft) => ({ id: randomUUID(), to: draft.to, from: running.agent, level: draft.level, body: draft.body, readAt: null }));
97
+ const schedule = result.output.nextWakeAt
98
+ ? { id: `schedule:${running.agent}`, agent: running.agent, nextWakeAt: result.output.nextWakeAt, reason: "handoff.next_steps", setBy: running.agent }
99
+ : null;
100
+ this.ledger.commitHandoff({ agent: running.agent, wakeId: running.id, ts: this.#now(), output: result.output, outgoingMail, schedule });
101
+ this.ledger.finishWake(running.id, "done", this.#now());
102
+ if (this.#verifyMetricsAfterWake) {
103
+ for (const goal of this.ledger.goalsForOwner(running.agent))
104
+ if (this.#metricCollectors.has(goal.id))
105
+ await this.collectMetricNow(goal.id);
106
+ }
107
+ return this.#wake(running.id);
108
+ }
109
+ catch (error) {
110
+ if (renewal)
111
+ clearInterval(renewal);
112
+ if (handle)
113
+ await handle.terminate();
114
+ await this.#markAbnormal(running, error instanceof Error ? error.message : String(error));
115
+ return this.#wake(running.id);
116
+ }
117
+ }
118
+ async #claimNextWake() {
119
+ const previous = this.#claimTail;
120
+ let release;
121
+ this.#claimTail = new Promise((resolve) => { release = resolve; });
122
+ await previous;
123
+ try {
124
+ for (const schedule of this.ledger.dueSchedules(this.#now()))
125
+ this.#enqueueSchedule(schedule);
126
+ await this.#collectMetrics();
127
+ this.#scheduleMetricAndHeartbeatAlerts();
128
+ for (const mail of this.ledger.triggeringMail())
129
+ this.#enqueueTrigger(mail.to, `mail:${mail.id}`);
130
+ const now = this.clock.now();
131
+ const leaseToken = randomUUID();
132
+ const wake = this.ledger.claimNextWake(now.toISOString(), new Date(now.getTime() + this.#leaseMs).toISOString(), leaseToken);
133
+ return wake ? { wake, leaseToken } : null;
134
+ }
135
+ finally {
136
+ release();
137
+ }
138
+ }
139
+ async runAvailable(concurrency = 4, maxWakes = 100) {
140
+ const completed = [];
141
+ while (true) {
142
+ const batch = await Promise.all(Array.from({ length: concurrency }, () => this.tick()));
143
+ const wakes = batch.filter((wake) => wake !== null);
144
+ completed.push(...wakes);
145
+ if (wakes.length === 0 || completed.length >= maxWakes)
146
+ return completed;
147
+ }
148
+ }
149
+ async submitAction(action, connectorName, wakeId) {
150
+ const connector = this.#connectors.get(connectorName);
151
+ const capability = connector ? capabilityFor(connector.manifest, action.kind) : null;
152
+ const gated = !connector || !capability || capability.risk !== "reversible"
153
+ || (!connector.manifest.dryRun && !this.#allowExternalActions);
154
+ const requested = { ...action, connector: connectorName, gated, status: "requested", reconciledAt: null, externalRef: null };
155
+ this.ledger.requestAction(requested, action.agent, wakeId);
156
+ if (gated || !connector)
157
+ return this.#action(action.id);
158
+ this.ledger.approveAction(action.id, "supervisor", "declared reversible dry-run capability", action.evidence);
159
+ return this.#dispatch(action.id);
160
+ }
161
+ async approveAction(id, approver, reason, evidence) {
162
+ if (!this.#approvers.has(approver))
163
+ throw new Error("actor is not authorized to approve actions");
164
+ this.ledger.approveAction(id, approver, reason, evidence);
165
+ return this.#dispatch(id);
166
+ }
167
+ rejectAction(id, approver, reason, evidence) {
168
+ if (!this.#approvers.has(approver))
169
+ throw new Error("actor is not authorized to reject actions");
170
+ return this.ledger.rejectAction(id, approver, reason, evidence);
171
+ }
172
+ putAuditAdvice(id, advice, wakeId) {
173
+ const role = this.#profiles.get(advice.by)?.role;
174
+ if (!this.#auditWriters.has(advice.by) && role !== "verifier" && role !== "audit")
175
+ throw new Error("actor is not authorized to write audit advice");
176
+ return this.ledger.putAuditAdvice(id, advice, wakeId);
177
+ }
178
+ ackAuditAdvice(id, agent) { return this.ledger.ackAuditAdvice(id, agent); }
179
+ recordMetric(sample) {
180
+ const goal = this.ledger.goal(sample.goalId);
181
+ if (!goal)
182
+ throw new Error(`metric goal not found: ${sample.goalId}`);
183
+ const contract = this.#metricContracts.get(goal.id);
184
+ if (!contract)
185
+ throw new Error(`metric contract is not registered: ${goal.id}`);
186
+ if (contract.source !== sample.source)
187
+ throw new Error("metric source does not match registered contract");
188
+ this.ledger.appendEvent({ streamId: `metric:${goal.id}`, ts: this.#now(), actor: "supervisor", type: "metric.sampled", data: sample });
189
+ const evaluation = evaluateMetric(contract, this.ledger.metricSamples(goal.id), this.#now());
190
+ this.ledger.appendEvent({ streamId: `metric:${goal.id}`, ts: this.#now(), actor: "supervisor", type: "metric.evaluated", data: evaluation });
191
+ if (evaluation.shouldWakeOwner)
192
+ this.#enqueueTrigger(goal.owner, `metric:${goal.id}:${sample.observedAt}`);
193
+ return evaluation;
194
+ }
195
+ async collectMetricNow(goalId) {
196
+ const registration = this.#metricCollectors.get(goalId);
197
+ if (!registration)
198
+ throw new Error(`metric collector is not registered: ${goalId}`);
199
+ registration.nextAt = this.clock.now().getTime() + registration.intervalMs;
200
+ const sample = await runJsonProcess(registration.spec, { goalId });
201
+ return this.recordMetric({ ...sample, goalId });
202
+ }
203
+ async reconcileAction(id) {
204
+ const action = this.#action(id);
205
+ if (action.status !== "unknown")
206
+ throw new Error("only unknown actions may be reconciled");
207
+ const connector = this.#requiredConnector(action.connector);
208
+ const capability = capabilityFor(connector.manifest, action.kind);
209
+ if (!capability || capability.query === "none")
210
+ throw new Error("connector cannot reconcile this action");
211
+ const result = await runConnector(connector, "query", action);
212
+ if (result.status === "pending")
213
+ return action;
214
+ return this.ledger.transitionAction(id, result.status, { reconciledAt: this.#now(), ...(result.externalRef ? { externalRef: result.externalRef } : {}) });
215
+ }
216
+ async retryUnknownAction(id) {
217
+ const action = this.#action(id);
218
+ if (action.status !== "unknown")
219
+ throw new Error("only unknown actions may be retried");
220
+ const connector = this.#requiredConnector(action.connector);
221
+ const capability = capabilityFor(connector.manifest, action.kind);
222
+ if (!capability?.nativeIdempotency || !capability.automaticRetry)
223
+ throw new Error("connector manifest forbids automatic retry");
224
+ return this.#dispatch(id);
225
+ }
226
+ async #dispatch(id) {
227
+ const current = this.#action(id);
228
+ const connector = this.#requiredConnector(current.connector);
229
+ const dispatching = this.ledger.transitionAction(id, "dispatching");
230
+ const result = await runConnector(connector, "dispatch", dispatching);
231
+ return this.ledger.transitionAction(id, result.status, result.externalRef ? { externalRef: result.externalRef } : {});
232
+ }
233
+ async #markAbnormal(wake, reason) {
234
+ const current = this.#wake(wake.id);
235
+ if (current.runnerPid)
236
+ await this.runner.terminateProcess(current.runnerPid);
237
+ this.ledger.appendEvent({ streamId: wakeStream(current.id), ts: this.#now(), actor: current.agent, type: "wake.abnormal_reason", data: { reason } });
238
+ const repairs = interruptedSessionEvents(this.ledger.eventsForWake(current.id), this.#now(), "supervisor");
239
+ if (repairs.length)
240
+ this.ledger.appendEvents(repairs);
241
+ if (["leased", "running", "queued"].includes(current.status)) {
242
+ this.ledger.finishWake(current.id, "abnormal", this.#now());
243
+ if (current.attempt < this.#retryPolicy.maxAttempts) {
244
+ const delay = this.#retryPolicy.baseDelayMs * 2 ** Math.max(0, current.attempt - 1);
245
+ const schedule = { id: `retry:${current.id}`, agent: current.agent, nextWakeAt: new Date(this.clock.now().getTime() + delay).toISOString(), reason: `recovery:${current.id}`, setBy: "supervisor" };
246
+ this.ledger.putSchedule(schedule, "supervisor", current.id);
247
+ }
248
+ }
249
+ }
250
+ #enqueueSchedule(schedule) {
251
+ return this.#enqueueTrigger(schedule.agent, `${schedule.id}@${schedule.nextWakeAt}`);
252
+ }
253
+ #enqueueTrigger(agent, triggerRef) {
254
+ const exact = this.ledger.wakeByTrigger(agent, triggerRef);
255
+ if (exact)
256
+ return exact;
257
+ const queued = this.ledger.queuedWakeForAgent(agent);
258
+ if (queued) {
259
+ this.ledger.appendEvent({ streamId: wakeStream(queued.id), ts: this.#now(), actor: "supervisor", type: "wake.trigger_coalesced", data: { wakeId: queued.id, triggerRef } });
260
+ return queued;
261
+ }
262
+ const wake = { id: randomUUID(), agent, triggerRef, status: "queued", leaseUntil: null, attempt: 0, startedAt: null, endedAt: null, enqueuedSeq: 0, leaseToken: null, runnerPid: null };
263
+ const result = this.ledger.enqueueWake(wake, "supervisor");
264
+ if (result.created)
265
+ return this.#wake(wake.id);
266
+ const existing = this.ledger.wakeByTrigger(agent, triggerRef);
267
+ if (!existing)
268
+ throw new Error("deduplicated wake is missing");
269
+ return existing;
270
+ }
271
+ #loadContext(wake) {
272
+ const role = this.#profiles.get(wake.agent)?.role ?? "child";
273
+ const goals = role === "ceo" ? this.ledger.goals() : this.ledger.goalsForOwner(wake.agent);
274
+ const mail = this.ledger.unreadMail(wake.agent);
275
+ const handoff = this.ledger.lastEvent(wake.agent, "handoff.recorded");
276
+ const recoveryId = wake.triggerRef.startsWith("recovery:")
277
+ ? wake.triggerRef.slice("recovery:".length)
278
+ : wake.triggerRef.startsWith("retry:") ? wake.triggerRef.slice("retry:".length).split("@")[0] : null;
279
+ const recoveryEvents = recoveryId ? selectRecoveryEvents(this.ledger.eventsForWake(recoveryId)) : [];
280
+ const teamHandoffs = role === "ceo"
281
+ ? [...this.ledger.eventsSince(0, ["handoff.recorded"])].reverse().filter((event, index, all) => all.findIndex((candidate) => candidate.actor === event.actor) === index)
282
+ : [];
283
+ const actions = this.ledger.actions().filter((action) => action.agent === wake.agent && (action.status === "unknown" || Boolean(action.auditAdvice && !action.adviceAcked)));
284
+ return composeActiveContext({ role, systemPrompt: this.#profiles.get(wake.agent)?.systemPrompt ?? defaultRolePrompt(role), wake, goals, mail, actions, lastHandoff: handoff, teamHandoffs, recoveryEvents });
285
+ }
286
+ #requiredConnector(name) { const value = this.#connectors.get(name); if (!value)
287
+ throw new Error(`connector not registered: ${name}`); return value; }
288
+ #wake(id) { const value = this.ledger.wake(id); if (!value)
289
+ throw new Error(`wake not found: ${id}`); return value; }
290
+ #action(id) { const value = this.ledger.action(id); if (!value)
291
+ throw new Error(`action not found: ${id}`); return value; }
292
+ #now() { return this.clock.now().toISOString(); }
293
+ async #agentRpc(wake, leaseToken, method, params) {
294
+ const current = this.ledger.wake(wake.id);
295
+ if (!current || current.status !== "running" || current.leaseToken !== leaseToken || !current.leaseUntil || current.leaseUntil < this.#now())
296
+ throw new Error("stale runner RPC rejected");
297
+ const profile = this.#profiles.get(wake.agent) ?? { agent: wake.agent, role: "child" };
298
+ const allowed = new Set(profile.capabilities ?? defaultCapabilities(profile.role));
299
+ if (!allowed.has(method))
300
+ throw new Error(`${profile.role} agent is not allowed to call ${method}`);
301
+ this.ledger.appendRunnerEvent({ streamId: wakeStream(wake.id), ts: this.#now(), actor: wake.agent, type: `rpc.${method}`, data: params }, leaseToken);
302
+ const input = asRecord(params);
303
+ if (method === "ledger.search")
304
+ return this.ledger.searchEvents(String(input.query), Number(input.limit ?? 20));
305
+ if (method === "mail.send") {
306
+ const mail = { id: randomUUID(), to: String(input.to), from: wake.agent, level: String(input.level), body: (input.body ?? null), readAt: null };
307
+ this.ledger.putMail(mail, wake.agent, wake.id);
308
+ return mail;
309
+ }
310
+ if (method === "schedule.set")
311
+ return (this.planWake(wake.agent, String(input.at), String(input.reason), wake.agent) ?? { scheduled: true });
312
+ if (method === "audit.ack")
313
+ return this.ackAuditAdvice(String(input.actionId), wake.agent);
314
+ if (method === "audit.write")
315
+ return this.putAuditAdvice(String(input.actionId), { by: wake.agent, body: (input.body ?? null), evidence: numberArray(input.evidence) }, wake.id);
316
+ if (method === "goal.put") {
317
+ this.ledger.putGoal(input.goal, wake.agent, wake.id);
318
+ return input.goal;
319
+ }
320
+ const action = await this.submitAction({
321
+ id: String(input.id), agent: wake.agent, kind: String(input.kind), payload: (input.payload ?? null), reason: String(input.reason), evidence: numberArray(input.evidence), auditAdvice: null, adviceAcked: false,
322
+ }, String(input.connector), wake.id);
323
+ return action;
324
+ }
325
+ async #collectMetrics() {
326
+ const now = this.clock.now().getTime();
327
+ for (const registration of this.#metricCollectors.values()) {
328
+ if (registration.nextAt > now)
329
+ continue;
330
+ registration.nextAt = now + registration.intervalMs;
331
+ const sample = await runJsonProcess(registration.spec, { goalId: registration.goalId });
332
+ this.recordMetric({ ...sample, goalId: registration.goalId });
333
+ }
334
+ }
335
+ #scheduleMetricAndHeartbeatAlerts() {
336
+ for (const [goalId, contract] of this.#metricContracts) {
337
+ const goal = this.ledger.goal(goalId);
338
+ if (!goal)
339
+ continue;
340
+ const samples = this.ledger.metricSamples(goal.id);
341
+ const evaluation = evaluateMetric(contract, samples, this.#now());
342
+ if (evaluation.shouldWakeOwner)
343
+ this.#enqueueTrigger(goal.owner, `metric:${goal.id}:${evaluation.status}:${samples.at(-1)?.observedAt ?? "none"}`);
344
+ }
345
+ for (const policy of this.#heartbeatPolicies) {
346
+ const last = this.ledger.lastEvent(policy.agent, "handoff.recorded");
347
+ const baseline = last?.ts ?? policy.since ?? this.#now();
348
+ if (this.clock.now().getTime() - Date.parse(baseline) <= policy.maxSilentMs)
349
+ continue;
350
+ const trigger = `heartbeat:${policy.agent}:${last?.seq ?? 0}`;
351
+ if (this.ledger.wakeByTrigger(policy.escalateTo, trigger))
352
+ continue;
353
+ this.ledger.appendEvent({ streamId: controlStream("watchdog"), ts: this.#now(), actor: "supervisor", type: "watchdog.heartbeat_violation", data: { agent: policy.agent, lastHandoffAt: last?.ts ?? null, escalateTo: policy.escalateTo } });
354
+ this.#enqueueTrigger(policy.escalateTo, trigger);
355
+ }
356
+ }
357
+ }
358
+ export async function runSupervisorDaemon(supervisor, options = {}) {
359
+ const pollMs = options.pollMs ?? 1_000;
360
+ await supervisor.recover();
361
+ while (!options.signal?.aborted) {
362
+ try {
363
+ await supervisor.runAvailable(options.concurrency ?? 4);
364
+ }
365
+ catch (error) {
366
+ options.onError?.(error);
367
+ }
368
+ await new Promise((resolve) => {
369
+ const timer = setTimeout(resolve, pollMs);
370
+ options.signal?.addEventListener("abort", () => { clearTimeout(timer); resolve(); }, { once: true });
371
+ });
372
+ }
373
+ }
374
+ export function renderDashboard(ledger) {
375
+ const rows = (values) => values.map((value) => `<tr><td><pre>${escapeHtml(JSON.stringify(value, null, 2))}</pre></td></tr>`).join("");
376
+ return `<!doctype html><html><head><meta charset="utf-8"><title>goah status</title><style>body{font:14px ui-monospace;margin:32px;background:#101418;color:#dce3e4}section{margin:32px 0}pre{white-space:pre-wrap;border:1px solid #334;padding:12px}</style></head><body><h1>goah</h1><p>seq ${ledger.events().at(-1)?.seq ?? 0}</p><section><h2>Goals</h2><table>${rows(ledger.goals())}</table></section><section><h2>Wakes</h2><table>${rows(ledger.wakes())}</table></section><section><h2>Actions</h2><table>${rows(ledger.actions())}</table></section><section><h2>Mailbox</h2><table>${rows(ledger.mailbox())}</table></section></body></html>`;
377
+ }
378
+ async function runConnector(spec, operation, action) {
379
+ return runJsonProcess(spec, { operation, action });
380
+ }
381
+ async function runJsonProcess(spec, input) {
382
+ const child = spawn(spec.command, spec.args, { detached: process.platform !== "win32", env: minimalEnvironment(spec.env), stdio: ["pipe", "pipe", "pipe"] });
383
+ let stdout = "";
384
+ let stderr = "";
385
+ child.stdout.on("data", (chunk) => { stdout += chunk.toString(); });
386
+ child.stderr.on("data", (chunk) => { stderr += chunk.toString(); });
387
+ child.stdin.end(`${JSON.stringify(input)}\n`);
388
+ const timeoutMs = spec.timeoutMs ?? 30_000;
389
+ let timer;
390
+ const exit = new Promise((resolve, reject) => {
391
+ child.once("error", reject);
392
+ child.once("close", (code, signal) => resolve({ code, signal }));
393
+ });
394
+ timer = setTimeout(() => { void terminateChild(child, 500); }, timeoutMs);
395
+ const result = await exit;
396
+ clearTimeout(timer);
397
+ if (result.code !== 0)
398
+ throw new Error(stderr.trim() || `connector exited (${result.code ?? result.signal})`);
399
+ return JSON.parse(stdout.trim());
400
+ }
401
+ async function terminateChild(child, graceMs) {
402
+ if (!child.pid || child.exitCode !== null || child.signalCode !== null)
403
+ return;
404
+ signalPid(child.pid, "SIGTERM");
405
+ await new Promise((resolve) => setTimeout(resolve, graceMs));
406
+ if (child.exitCode === null && child.signalCode === null)
407
+ signalPid(child.pid, "SIGKILL");
408
+ }
409
+ function signalPid(pid, signal) { try {
410
+ process.kill(process.platform === "win32" ? pid : -pid, signal);
411
+ }
412
+ catch { } }
413
+ function minimalEnvironment(explicit = {}) {
414
+ const env = {};
415
+ for (const name of ["PATH", "TMPDIR", "TMP", "TEMP", "SYSTEMROOT"])
416
+ if (process.env[name] !== undefined)
417
+ env[name] = process.env[name];
418
+ return { ...env, ...explicit };
419
+ }
420
+ function escapeHtml(value) { return value.replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;"); }
421
+ function asRecord(value) { if (typeof value !== "object" || value === null || Array.isArray(value))
422
+ throw new Error("RPC params must be an object"); return value; }
423
+ function numberArray(value) { if (!Array.isArray(value) || value.some((item) => typeof item !== "number"))
424
+ throw new Error("RPC evidence must be a number array"); return value; }
425
+ function defaultCapabilities(role) {
426
+ if (role === "ceo")
427
+ return ["ledger.search", "mail.send", "schedule.set", "action.submit", "audit.ack", "goal.put"];
428
+ if (role === "verifier")
429
+ return ["ledger.search", "mail.send", "audit.write"];
430
+ if (role === "audit")
431
+ return ["ledger.search", "mail.send", "audit.write"];
432
+ return ["ledger.search", "mail.send", "schedule.set", "action.submit", "audit.ack"];
433
+ }
434
+ export * from "./verification.js";
435
+ export * from "./roles.js";
436
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { AgentRole } from "goah-ledger-contract";
2
+ export declare function defaultRolePrompt(role: AgentRole): string;
3
+ //# sourceMappingURL=roles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roles.d.ts","sourceRoot":"","sources":["../src/roles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAStD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAA0B"}
@@ -0,0 +1,8 @@
1
+ const prompts = {
2
+ child: "Own the assigned goal and metric. Choose methods autonomously, cite ledger evidence for actions, manage local files and Git through runner tools when useful, and hand off bounded next steps.",
3
+ ceo: "Own the goal tree, not task execution. Diagnose cross-goal state, create or revise child goals through parent authority, assign one owner and metric per child, and re-plan only when evidence warrants it.",
4
+ verifier: "Verify one wake's handoff claims against trace, action evidence, and runner facts. Do not trust self-report. Write concise audit advice with exact evidence sequences.",
5
+ audit: "Independently reconstruct outcomes from facts and external metrics. In the blind phase do not use handoffs, notes, action reasons, or claimed evidence; compare reasons only after forming an independent judgment.",
6
+ };
7
+ export function defaultRolePrompt(role) { return prompts[role]; }
8
+ //# sourceMappingURL=roles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roles.js","sourceRoot":"","sources":["../src/roles.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,GAA8B;IACzC,KAAK,EAAE,gMAAgM;IACvM,GAAG,EAAE,6MAA6M;IAClN,QAAQ,EAAE,wKAAwK;IAClL,KAAK,EAAE,qNAAqN;CAC7N,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,IAAe,IAAY,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,82 @@
1
+ import { type ActionSnapshot, type EventRecord, type JsonValue, type Ledger } from "goah-ledger-contract";
2
+ import type { Supervisor } from "./index.js";
3
+ export interface VerificationFinding {
4
+ actionId: string;
5
+ body: JsonValue;
6
+ evidence: number[];
7
+ riskWeight: number;
8
+ }
9
+ export interface VerificationResult {
10
+ findings: VerificationFinding[];
11
+ tokensUsed: number;
12
+ }
13
+ export interface VerifierModel {
14
+ verifySession(input: {
15
+ wakeId: string;
16
+ handoff: JsonValue | null;
17
+ trace: EventRecord[];
18
+ actions: ActionSnapshot[];
19
+ }): Promise<VerificationResult>;
20
+ blindAudit(facts: EventRecord[]): Promise<VerificationResult>;
21
+ reasonAudit(input: {
22
+ facts: EventRecord[];
23
+ reasons: Array<{
24
+ actionId: string;
25
+ reason: string;
26
+ evidence: number[];
27
+ }>;
28
+ }): Promise<VerificationResult>;
29
+ }
30
+ export interface VerifierProcessSpec {
31
+ command: string;
32
+ args: string[];
33
+ env?: Record<string, string>;
34
+ timeoutMs?: number;
35
+ }
36
+ export declare class ProcessVerifierModel implements VerifierModel {
37
+ #private;
38
+ readonly spec: VerifierProcessSpec;
39
+ constructor(spec: VerifierProcessSpec);
40
+ verifySession(input: {
41
+ wakeId: string;
42
+ handoff: JsonValue | null;
43
+ trace: EventRecord[];
44
+ actions: ActionSnapshot[];
45
+ }): Promise<VerificationResult>;
46
+ blindAudit(facts: EventRecord[]): Promise<VerificationResult>;
47
+ reasonAudit(input: {
48
+ facts: EventRecord[];
49
+ reasons: Array<{
50
+ actionId: string;
51
+ reason: string;
52
+ evidence: number[];
53
+ }>;
54
+ }): Promise<VerificationResult>;
55
+ }
56
+ export declare class VerificationPlane {
57
+ #private;
58
+ readonly ledger: Ledger;
59
+ readonly supervisor: Supervisor;
60
+ readonly model: VerifierModel;
61
+ constructor(ledger: Ledger, supervisor: Supervisor, model: VerifierModel);
62
+ verifySession(wakeId: string): Promise<VerificationResult>;
63
+ auditGlobal(sinceSeq?: number): Promise<{
64
+ blind: VerificationResult;
65
+ reasoned: VerificationResult;
66
+ }>;
67
+ }
68
+ export interface VerificationLabel {
69
+ id: string;
70
+ shouldFlag: boolean;
71
+ riskWeight: number;
72
+ }
73
+ export interface ScoredPrediction {
74
+ id: string;
75
+ score: number;
76
+ }
77
+ export declare function evaluateVerification(labels: VerificationLabel[], predictedIds: string[]): {
78
+ precision: number;
79
+ riskWeightedRecall: number;
80
+ };
81
+ export declare function calibrateVerificationThreshold(labels: VerificationLabel[], predictions: ScoredPrediction[], minimumPrecision: number): number;
82
+ //# sourceMappingURL=verification.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verification.d.ts","sourceRoot":"","sources":["../src/verification.ts"],"names":[],"mappings":"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"}