@goah/cli 0.3.1 → 0.4.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/dist/cli.js +49 -4
- package/dist/cli.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/inspect.d.ts +1 -0
- package/dist/inspect.d.ts.map +1 -1
- package/dist/inspect.js +1 -0
- package/dist/inspect.js.map +1 -1
- package/node_modules/goah-ledger-contract/dist/execution.d.ts +50 -4
- package/node_modules/goah-ledger-contract/dist/execution.d.ts.map +1 -1
- package/node_modules/goah-ledger-contract/dist/execution.js +5 -1
- package/node_modules/goah-ledger-contract/dist/execution.js.map +1 -1
- package/node_modules/goah-ledger-contract/dist/kernel.d.ts +3 -1
- package/node_modules/goah-ledger-contract/dist/kernel.d.ts.map +1 -1
- package/node_modules/goah-ledger-contract/dist/kernel.js +1 -1
- package/node_modules/goah-ledger-contract/dist/kernel.js.map +1 -1
- package/node_modules/goah-ledger-contract/dist/session.d.ts +24 -0
- package/node_modules/goah-ledger-contract/dist/session.d.ts.map +1 -1
- package/node_modules/goah-ledger-contract/dist/session.js +67 -5
- package/node_modules/goah-ledger-contract/dist/session.js.map +1 -1
- package/node_modules/goah-ledger-contract/package.json +1 -1
- package/node_modules/goah-ledger-sqlite/dist/index.d.ts +5 -3
- package/node_modules/goah-ledger-sqlite/dist/index.d.ts.map +1 -1
- package/node_modules/goah-ledger-sqlite/dist/index.js +159 -9
- package/node_modules/goah-ledger-sqlite/dist/index.js.map +1 -1
- package/node_modules/goah-ledger-sqlite/package.json +2 -2
- package/node_modules/goah-runner-pi/dist/pi-worker.d.ts +1 -1
- package/node_modules/goah-runner-pi/dist/pi-worker.d.ts.map +1 -1
- package/node_modules/goah-runner-pi/dist/pi-worker.js +28 -15
- package/node_modules/goah-runner-pi/dist/pi-worker.js.map +1 -1
- package/node_modules/goah-runner-pi/package.json +2 -2
- package/node_modules/goah-supervisor/dist/context-view.d.ts +4 -1
- package/node_modules/goah-supervisor/dist/context-view.d.ts.map +1 -1
- package/node_modules/goah-supervisor/dist/context-view.js +3 -2
- package/node_modules/goah-supervisor/dist/context-view.js.map +1 -1
- package/node_modules/goah-supervisor/dist/index.d.ts +15 -1
- package/node_modules/goah-supervisor/dist/index.d.ts.map +1 -1
- package/node_modules/goah-supervisor/dist/index.js +182 -6
- package/node_modules/goah-supervisor/dist/index.js.map +1 -1
- package/node_modules/goah-supervisor/dist/roles.d.ts.map +1 -1
- package/node_modules/goah-supervisor/dist/roles.js +5 -1
- package/node_modules/goah-supervisor/dist/roles.js.map +1 -1
- package/node_modules/goah-supervisor/package.json +2 -2
- package/node_modules/goah-testkit/dist/faux-runner-worker.js +4 -1
- package/node_modules/goah-testkit/dist/faux-runner-worker.js.map +1 -1
- package/node_modules/goah-testkit/dist/index.d.ts.map +1 -1
- package/node_modules/goah-testkit/dist/index.js +15 -0
- package/node_modules/goah-testkit/dist/index.js.map +1 -1
- package/node_modules/goah-testkit/package.json +5 -5
- package/package.json +6 -6
|
@@ -5,6 +5,7 @@ import { promisify } from "node:util";
|
|
|
5
5
|
import { fileURLToPath } from "node:url";
|
|
6
6
|
import { Agent } from "@earendil-works/pi-agent-core";
|
|
7
7
|
import { fauxAssistantMessage, fauxToolCall, Type } from "@earendil-works/pi-ai";
|
|
8
|
+
import { SESSION_FORMAT_VERSION } from "goah-ledger-contract";
|
|
8
9
|
import { runProcessWorker } from "./index.js";
|
|
9
10
|
import { createPiModel, providerApiKey } from "./model-provider.js";
|
|
10
11
|
const execFileAsync = promisify(execFile);
|
|
@@ -48,10 +49,13 @@ export async function runPiWorker() {
|
|
|
48
49
|
return id;
|
|
49
50
|
};
|
|
50
51
|
const root = resolve(process.cwd());
|
|
51
|
-
const tools = createTools(root, (value) => { output = value; }, process.env.GOAH_PI_ALLOW_BASH === "true", rpc, request.wake.startedAt);
|
|
52
|
-
const contextPolicy = resolveContextPolicy(model.contextWindow, process.env);
|
|
53
|
-
emit({ type: "session.started", data: { provider, model: modelId, runner: "pi", contextWindowTokens: model.contextWindow, maxOutputTokensPerTurn: model.maxTokens } });
|
|
54
52
|
const contextRecord = typeof request.context === "object" && request.context !== null && !Array.isArray(request.context) ? request.context : {};
|
|
53
|
+
const capabilities = Array.isArray(contextRecord.capabilities)
|
|
54
|
+
? new Set(contextRecord.capabilities.filter((value) => typeof value === "string"))
|
|
55
|
+
: undefined;
|
|
56
|
+
const tools = createTools(root, (value) => { output = value; }, process.env.GOAH_PI_ALLOW_BASH === "true", rpc, request.wake.startedAt, capabilities);
|
|
57
|
+
const contextPolicy = resolveContextPolicy(model.contextWindow, process.env);
|
|
58
|
+
emit({ type: "session.started", data: { formatVersion: SESSION_FORMAT_VERSION, provider, model: modelId, runner: "pi", contextWindowTokens: model.contextWindow, maxOutputTokensPerTurn: model.maxTokens } });
|
|
55
59
|
const suppliedPrompt = typeof contextRecord.systemPrompt === "string" ? contextRecord.systemPrompt : undefined;
|
|
56
60
|
const activeContext = typeof contextRecord.text === "string" ? contextRecord.text : JSON.stringify(request.context);
|
|
57
61
|
const sourceSeqs = Array.isArray(contextRecord.sourceSeqs) ? contextRecord.sourceSeqs.filter((value) => Number.isInteger(value)) : [];
|
|
@@ -145,7 +149,7 @@ function sessionMessage(message, id) {
|
|
|
145
149
|
const role = message.role === "assistant" ? "assistant" : message.role === "user" ? "user" : "tool";
|
|
146
150
|
return { id, role, content: (value.content ?? value), ...(value.usage !== undefined ? { usage: value.usage } : {}) };
|
|
147
151
|
}
|
|
148
|
-
function createTools(root, handoff, allowBash, rpc, wakeStartedAt) {
|
|
152
|
+
function createTools(root, handoff, allowBash, rpc, wakeStartedAt, capabilities) {
|
|
149
153
|
const handoffTool = {
|
|
150
154
|
name: "handoff",
|
|
151
155
|
label: "Handoff",
|
|
@@ -155,16 +159,17 @@ function createTools(root, handoff, allowBash, rpc, wakeStartedAt) {
|
|
|
155
159
|
results: Type.Array(Type.String()),
|
|
156
160
|
nextSteps: Type.Array(Type.String()),
|
|
157
161
|
blocker: Type.Optional(Type.String()),
|
|
162
|
+
material: Type.Optional(Type.Boolean()),
|
|
158
163
|
nextWakeAt: Type.Optional(Type.String()),
|
|
159
164
|
}),
|
|
160
165
|
execute: async (_id, params) => {
|
|
161
166
|
const input = params;
|
|
162
|
-
const value = { handoff: { observations: input.observations, results: input.results, nextSteps: input.nextSteps, ...(input.blocker ? { blocker: input.blocker } : {}) }, mail: [], nextWakeAt: validateNextWakeAt(input.nextWakeAt, wakeStartedAt) };
|
|
167
|
+
const value = { handoff: { observations: input.observations, results: input.results, nextSteps: input.nextSteps, ...(input.blocker ? { blocker: input.blocker } : {}), ...(input.material === true ? { material: true } : {}) }, mail: [], nextWakeAt: validateNextWakeAt(input.nextWakeAt, wakeStartedAt) };
|
|
163
168
|
handoff(value);
|
|
164
169
|
return { content: [{ type: "text", text: "handoff recorded" }], details: value, terminate: true };
|
|
165
170
|
},
|
|
166
171
|
};
|
|
167
|
-
const rpcTools = createRpcTools(rpc);
|
|
172
|
+
const rpcTools = createRpcTools(rpc, capabilities);
|
|
168
173
|
const readTool = {
|
|
169
174
|
name: "read_file", label: "Read file", description: "Read a UTF-8 file inside the local runner root.",
|
|
170
175
|
parameters: Type.Object({ path: Type.String() }),
|
|
@@ -235,20 +240,28 @@ export function compactMessagesToTokenBudget(messages, retainTokens) {
|
|
|
235
240
|
...messages.slice(start),
|
|
236
241
|
];
|
|
237
242
|
}
|
|
238
|
-
function createRpcTools(rpc) {
|
|
243
|
+
function createRpcTools(rpc, allowed) {
|
|
239
244
|
const tool = (name, description, method, parameters) => ({
|
|
240
245
|
name, label: name, description, parameters,
|
|
241
246
|
execute: async (_id, params) => { const result = await rpc(method, params); return { content: [{ type: "text", text: JSON.stringify(result) }], details: result }; },
|
|
242
247
|
});
|
|
243
|
-
|
|
244
|
-
tool("ledger_search", "Search durable ledger facts.", "ledger.search", Type.Object({ query: Type.String(), limit: Type.Optional(Type.Number()) })),
|
|
245
|
-
tool("send_mail", "Send a durable message to another agent or human.", "mail.send", Type.Object({ to: Type.String(), level: Type.Union([Type.Literal("fyi"), Type.Literal("decision"), Type.Literal("emergency")]), body: Type.Any() })),
|
|
246
|
-
tool("schedule_wake", "Schedule this agent's next wake.", "schedule.set", Type.Object({ at: Type.String(), reason: Type.String() })),
|
|
247
|
-
tool("submit_action", "Submit a gated external action with evidence.", "action.submit", Type.Object({ id: Type.String(), kind: Type.String(), connector: Type.String(), payload: Type.Any(), reason: Type.String(), evidence: Type.Array(Type.Number()) })),
|
|
248
|
-
tool("ack_audit_advice", "Acknowledge audit advice after incorporating it.", "audit.ack", Type.Object({ actionId: Type.String() })),
|
|
249
|
-
tool("write_audit_advice", "Write audit advice for an action.", "audit.write", Type.Object({ actionId: Type.String(), body: Type.Any(), evidence: Type.Array(Type.Number()) })),
|
|
250
|
-
tool("
|
|
248
|
+
const definitions = [
|
|
249
|
+
["ledger.search", tool("ledger_search", "Search durable ledger facts.", "ledger.search", Type.Object({ query: Type.String(), limit: Type.Optional(Type.Number()) }))],
|
|
250
|
+
["mail.send", tool("send_mail", "Send a durable message to another agent or human.", "mail.send", Type.Object({ to: Type.String(), level: Type.Union([Type.Literal("fyi"), Type.Literal("decision"), Type.Literal("emergency")]), body: Type.Any() }))],
|
|
251
|
+
["schedule.set", tool("schedule_wake", "Schedule this agent's next wake.", "schedule.set", Type.Object({ at: Type.String(), reason: Type.String() }))],
|
|
252
|
+
["action.submit", tool("submit_action", "Submit a gated external action with evidence.", "action.submit", Type.Object({ id: Type.String(), kind: Type.String(), connector: Type.String(), payload: Type.Any(), reason: Type.String(), evidence: Type.Array(Type.Number()) }))],
|
|
253
|
+
["audit.ack", tool("ack_audit_advice", "Acknowledge audit advice after incorporating it.", "audit.ack", Type.Object({ actionId: Type.String() }))],
|
|
254
|
+
["audit.write", tool("write_audit_advice", "Write audit advice for an action.", "audit.write", Type.Object({ actionId: Type.String(), body: Type.Any(), evidence: Type.Array(Type.Number()) }))],
|
|
255
|
+
["team.list", tool("team_list", "Read the ledger-derived team roster and liveness state.", "team.list", Type.Object({}))],
|
|
256
|
+
["goal.delegate", tool("delegate_goal", "Atomically create a child goal, send its decision brief, and queue its owner.", "goal.delegate", Type.Object({ id: Type.String(), parentGoalId: Type.String(), childGoal: Type.Object({ id: Type.String(), objective: Type.String(), owner: Type.String() }), brief: Type.Any(), reason: Type.String(), evidence: Type.Array(Type.Number()) }))],
|
|
257
|
+
["goal.reassign", tool("reassign_goal", "Atomically transfer a child goal, notify both owners, and queue the new owner.", "goal.reassign", Type.Object({ id: Type.String(), goalId: Type.String(), newOwner: Type.String(), brief: Type.Any(), reason: Type.String(), evidence: Type.Array(Type.Number()) }))],
|
|
258
|
+
["goal.pause", tool("pause_goal", "Pause a child goal and suppress queued motion.", "goal.pause", Type.Object({ goalId: Type.String() }))],
|
|
259
|
+
["goal.resume", tool("resume_goal", "Resume a child goal and ensure its owner is queued.", "goal.resume", Type.Object({ goalId: Type.String() }))],
|
|
260
|
+
["goal.complete", tool("complete_goal", "Complete a child goal. Root completion remains human authority.", "goal.complete", Type.Object({ goalId: Type.String() }))],
|
|
261
|
+
["human.request", tool("request_human", "Ask the human for a decision or recommend root completion with evidence.", "human.request", Type.Object({ type: Type.Union([Type.Literal("decision"), Type.Literal("completion_recommendation")]), message: Type.Any(), evidence: Type.Array(Type.Number()) }))],
|
|
262
|
+
["goal.put", tool("put_goal", "Create or update a goal using parent-layer authority.", "goal.put", Type.Object({ goal: Type.Any() }))],
|
|
251
263
|
];
|
|
264
|
+
return definitions.filter(([capability]) => !allowed || allowed.has(capability)).map(([, value]) => value);
|
|
252
265
|
}
|
|
253
266
|
function scoped(root, path) {
|
|
254
267
|
const resolved = resolve(root, path);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pi-worker.js","sourceRoot":"","sources":["../src/pi-worker.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pi-worker.js","sourceRoot":"","sources":["../src/pi-worker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "goah-runner-pi",
|
|
3
3
|
"private": true,
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.4.0",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -23,6 +23,6 @@
|
|
|
23
23
|
"dependencies": {
|
|
24
24
|
"@earendil-works/pi-agent-core": "0.84.2",
|
|
25
25
|
"@earendil-works/pi-ai": "0.84.2",
|
|
26
|
-
"goah-ledger-contract": "0.
|
|
26
|
+
"goah-ledger-contract": "0.4.0"
|
|
27
27
|
}
|
|
28
28
|
}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
import type { ActionSnapshot, AgentRole, EventRecord, GoalSnapshot, MailSnapshot, WakeSnapshot } from "goah-ledger-contract";
|
|
1
|
+
import type { ActionSnapshot, AgentCapability, AgentRole, EventRecord, GoalSnapshot, MailSnapshot, TeamMemberView, WakeSnapshot } from "goah-ledger-contract";
|
|
2
2
|
export interface ActiveContextView {
|
|
3
3
|
role: AgentRole;
|
|
4
|
+
capabilities: AgentCapability[];
|
|
4
5
|
systemPrompt: string;
|
|
5
6
|
text: string;
|
|
6
7
|
sourceSeqs: number[];
|
|
7
8
|
}
|
|
8
9
|
export interface ActiveContextInput {
|
|
9
10
|
role: AgentRole;
|
|
11
|
+
capabilities: AgentCapability[];
|
|
10
12
|
systemPrompt: string;
|
|
11
13
|
wake: WakeSnapshot;
|
|
12
14
|
goals: GoalSnapshot[];
|
|
@@ -14,6 +16,7 @@ export interface ActiveContextInput {
|
|
|
14
16
|
actions: ActionSnapshot[];
|
|
15
17
|
lastHandoff: EventRecord | null;
|
|
16
18
|
teamHandoffs: EventRecord[];
|
|
19
|
+
team: TeamMemberView[];
|
|
17
20
|
recoveryEvents: EventRecord[];
|
|
18
21
|
}
|
|
19
22
|
/** Keep recovery actionable and bounded; raw Session history remains queryable in the ledger. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-view.d.ts","sourceRoot":"","sources":["../src/context-view.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAa,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"context-view.d.ts","sourceRoot":"","sources":["../src/context-view.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAa,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzK,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,SAAS,CAAC;IAChB,YAAY,EAAE,eAAe,EAAE,CAAC;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,SAAS,CAAC;IAChB,YAAY,EAAE,eAAe,EAAE,CAAC;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,IAAI,EAAE,YAAY,EAAE,CAAC;IACrB,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,IAAI,EAAE,cAAc,EAAE,CAAC;IACvB,cAAc,EAAE,WAAW,EAAE,CAAC;CAC/B;AAED,iGAAiG;AACjG,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE,CAQzE;AAED,0FAA0F;AAC1F,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,kBAAkB,GAAG,iBAAiB,CA0BjF"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
export function selectRecoveryEvents(events) {
|
|
3
3
|
const unknownCalls = new Set(events.filter((event) => event.type === "tool.completed" && field(field(event.data, "result"), "outcome") === "unknown").map((event) => String(field(event.data, "callId"))));
|
|
4
4
|
return events.filter((event) => {
|
|
5
|
-
if (["wake.abnormal_reason", "session.interrupted", "context.compacted"].includes(event.type))
|
|
5
|
+
if (["wake.abnormal_reason", "session.interrupted", "context.compacted", "ceo.motion_invalid"].includes(event.type))
|
|
6
6
|
return true;
|
|
7
7
|
if (event.type === "tool.called")
|
|
8
8
|
return unknownCalls.has(String(field(event.data, "callId")));
|
|
@@ -35,11 +35,12 @@ export function composeActiveContext(input) {
|
|
|
35
35
|
["Next", lines(handoff?.nextSteps)],
|
|
36
36
|
["Incoming", input.mail.map((mail) => `- [${mail.level}] from ${mail.from}: ${render(mail.body)}`)],
|
|
37
37
|
["External actions", input.actions.filter((action) => !["confirmed", "failed"].includes(action.status)).map((action) => `- ${action.id}: ${action.kind} — ${action.status}`)],
|
|
38
|
+
["Team motion", input.team.map((member) => `- ${member.agent}: ${member.status}; goals=${member.goalIds.join(",") || "none"}; next=${member.nextWakeAt ?? "none"}; handoff=${member.lastHandoffSeq ?? "none"}`)],
|
|
38
39
|
["Team handoffs", input.teamHandoffs.map((event) => `- ${event.actor}: ${render(event.data)} [event:${event.seq}]`)],
|
|
39
40
|
["Recovery", input.recoveryEvents.map((event) => `- ${event.type}: ${render(event.data)} [event:${event.seq}]`)],
|
|
40
41
|
];
|
|
41
42
|
const text = sections.filter(([, values]) => values.length > 0).map(([title, values]) => `# ${title}\n\n${values.join("\n")}`).join("\n\n");
|
|
42
|
-
return { role: input.role, systemPrompt: input.systemPrompt, text, sourceSeqs: [...sourceSeqs].sort((a, b) => a - b) };
|
|
43
|
+
return { role: input.role, capabilities: input.capabilities, systemPrompt: input.systemPrompt, text, sourceSeqs: [...sourceSeqs].sort((a, b) => a - b) };
|
|
43
44
|
}
|
|
44
45
|
function lines(value) { return Array.isArray(value) ? value.filter((item) => typeof item === "string").map((item) => `- ${item}`) : []; }
|
|
45
46
|
function render(value) { return typeof value === "string" ? value : JSON.stringify(value); }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-view.js","sourceRoot":"","sources":["../src/context-view.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"context-view.js","sourceRoot":"","sources":["../src/context-view.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type ActionSnapshot, type AgentProfile, type AuditAdvice, type Clock, type ConnectorProcessSpec, type GoalSnapshot, type Ledger, type MetricEvaluation, type MetricContract, type MetricProcessSpec, type MetricSample, type Runner, type WakeSnapshot } from "goah-ledger-contract";
|
|
1
|
+
import { type ActionSnapshot, type AgentProfile, type AuditAdvice, type Clock, type ConnectorProcessSpec, type DelegationRequest, type DelegationResult, type GoalSnapshot, type GoalPhase, type JsonValue, type Ledger, type MailSnapshot, type MetricEvaluation, type MetricContract, type MetricProcessSpec, type MetricSample, type ReassignmentRequest, type ReassignmentResult, type Runner, type TeamMemberView, type WakeSnapshot } from "goah-ledger-contract";
|
|
2
2
|
export { composeActiveContext, selectRecoveryEvents, type ActiveContextInput, type ActiveContextView } from "./context-view.js";
|
|
3
3
|
export interface SupervisorOptions {
|
|
4
4
|
leaseMs?: number;
|
|
@@ -28,6 +28,19 @@ export declare class Supervisor {
|
|
|
28
28
|
registerMetricContract(goalId: string, contract: MetricContract): void;
|
|
29
29
|
registerMetricCollector(goalId: string, contract: MetricContract, spec: MetricProcessSpec, intervalMs?: number): void;
|
|
30
30
|
createGoal(goal: GoalSnapshot, actor?: string): void;
|
|
31
|
+
startGoal(objective: string, id?: string): {
|
|
32
|
+
goal: GoalSnapshot;
|
|
33
|
+
wake: WakeSnapshot;
|
|
34
|
+
};
|
|
35
|
+
sendToCeo(body: JsonValue, level?: "fyi" | "decision" | "emergency"): {
|
|
36
|
+
mail: MailSnapshot;
|
|
37
|
+
wake: WakeSnapshot;
|
|
38
|
+
};
|
|
39
|
+
delegate(request: DelegationRequest, actor?: string, wakeId?: string): DelegationResult;
|
|
40
|
+
reassignGoal(request: ReassignmentRequest, actor?: string, wakeId?: string): ReassignmentResult;
|
|
41
|
+
teamList(now?: string): TeamMemberView[];
|
|
42
|
+
updateGoal(id: string, patch: Partial<Pick<GoalSnapshot, "objective" | "owner">>, actor?: string): GoalSnapshot;
|
|
43
|
+
transitionGoal(id: string, phase: GoalPhase, actor?: string): GoalSnapshot;
|
|
31
44
|
planWake(agent: string, at: string, reason: string, setBy?: string): WakeSnapshot | null;
|
|
32
45
|
recover(): Promise<void>;
|
|
33
46
|
tick(): Promise<WakeSnapshot | null>;
|
|
@@ -48,6 +61,7 @@ export declare function runSupervisorDaemon(supervisor: Supervisor, options?: {
|
|
|
48
61
|
signal?: AbortSignal;
|
|
49
62
|
onError?: (error: unknown) => void;
|
|
50
63
|
}): Promise<void>;
|
|
64
|
+
export declare function deriveTeam(ledger: Ledger, now?: string): TeamMemberView[];
|
|
51
65
|
export declare function renderDashboard(ledger: Ledger): string;
|
|
52
66
|
export * from "./verification.js";
|
|
53
67
|
export * from "./roles.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAKL,KAAK,cAAc,EAEnB,KAAK,YAAY,EAEjB,KAAK,WAAW,EAChB,KAAK,KAAK,EAEV,KAAK,oBAAoB,EAEzB,KAAK,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,7 +30,7 @@ export class Supervisor {
|
|
|
30
30
|
this.#auditWriters = new Set(options.auditWriters ?? ["verifier", "audit"]);
|
|
31
31
|
this.#heartbeatPolicies = options.heartbeatPolicies ?? [];
|
|
32
32
|
this.#retryPolicy = options.retryPolicy ?? { maxAttempts: 0, baseDelayMs: 1_000 };
|
|
33
|
-
this.#profiles = new Map((options.profiles ?? []).map((profile) => [profile.agent, profile]));
|
|
33
|
+
this.#profiles = new Map([["ceo", { agent: "ceo", role: "ceo" }], ...(options.profiles ?? []).map((profile) => [profile.agent, profile])]);
|
|
34
34
|
this.#verifyMetricsAfterWake = options.verifyMetricsAfterWake ?? false;
|
|
35
35
|
}
|
|
36
36
|
registerConnector(connector) { this.#connectors.set(connector.manifest.connector, connector); }
|
|
@@ -40,6 +40,53 @@ export class Supervisor {
|
|
|
40
40
|
this.#metricCollectors.set(goalId, { goalId, contract, spec, intervalMs, nextAt: 0 });
|
|
41
41
|
}
|
|
42
42
|
createGoal(goal, actor = "human") { this.ledger.putGoal(goal, actor); }
|
|
43
|
+
startGoal(objective, id = randomUUID()) {
|
|
44
|
+
if (!objective.trim())
|
|
45
|
+
throw new Error("root objective is required");
|
|
46
|
+
const goal = { id, parentId: null, objective, owner: "ceo", phase: "active", revision: 0 };
|
|
47
|
+
this.ledger.putGoal(goal, "human");
|
|
48
|
+
const wake = this.#enqueueTrigger("ceo", `root:${id}:created`);
|
|
49
|
+
if (!wake)
|
|
50
|
+
throw new Error("CEO wake was not admitted for an active root goal");
|
|
51
|
+
return { goal, wake };
|
|
52
|
+
}
|
|
53
|
+
sendToCeo(body, level = "decision") {
|
|
54
|
+
const mail = { id: randomUUID(), to: "ceo", from: "human", level, body, readAt: null };
|
|
55
|
+
this.ledger.putMail(mail, "human");
|
|
56
|
+
const wake = this.#enqueueTrigger("ceo", `mail:${mail.id}`);
|
|
57
|
+
if (!wake)
|
|
58
|
+
throw new Error("CEO wake was not admitted");
|
|
59
|
+
return { mail, wake };
|
|
60
|
+
}
|
|
61
|
+
delegate(request, actor = "ceo", wakeId) { return this.ledger.commitDelegation(request, actor, wakeId); }
|
|
62
|
+
reassignGoal(request, actor = "ceo", wakeId) { return this.ledger.commitReassignment(request, actor, wakeId); }
|
|
63
|
+
teamList(now = this.#now()) { return deriveTeam(this.ledger, now); }
|
|
64
|
+
updateGoal(id, patch, actor = "human") {
|
|
65
|
+
if (patch.objective === undefined && patch.owner === undefined)
|
|
66
|
+
throw new Error("goal update requires objective or owner");
|
|
67
|
+
const current = this.#goal(id);
|
|
68
|
+
const next = { ...current, ...patch, revision: current.revision + 1 };
|
|
69
|
+
this.ledger.putGoal(next, actor);
|
|
70
|
+
if (next.parentId === null && next.owner === "ceo" && actor === "human")
|
|
71
|
+
this.#enqueueTrigger("ceo", `root:${id}:revised:${next.revision}`);
|
|
72
|
+
return next;
|
|
73
|
+
}
|
|
74
|
+
transitionGoal(id, phase, actor = "human") {
|
|
75
|
+
const current = this.#goal(id);
|
|
76
|
+
if (current.phase === phase)
|
|
77
|
+
return current;
|
|
78
|
+
if (current.parentId === null && phase === "complete" && this.#hasNonCompleteDescendant(id))
|
|
79
|
+
throw new Error("root goal cannot complete while descendants remain non-complete");
|
|
80
|
+
const next = { ...current, phase, revision: current.revision + 1 };
|
|
81
|
+
this.ledger.putGoal(next, actor);
|
|
82
|
+
if (phase === "complete" || phase === "paused")
|
|
83
|
+
this.#suppressQueuedWake(next.owner, `goal:${id}:${phase}`);
|
|
84
|
+
if (phase === "active")
|
|
85
|
+
this.#enqueueTrigger(next.owner, `${next.parentId ? "goal" : "root"}:${id}:resumed:${next.revision}`);
|
|
86
|
+
if (next.parentId && actor !== "ceo" && (phase === "complete" || phase === "blocked"))
|
|
87
|
+
this.#enqueueTrigger("ceo", `goal:${id}:${phase}:${next.revision}`);
|
|
88
|
+
return next;
|
|
89
|
+
}
|
|
43
90
|
planWake(agent, at, reason, setBy = agent) {
|
|
44
91
|
const schedule = { id: `schedule:${agent}`, agent, nextWakeAt: at, reason, setBy };
|
|
45
92
|
this.ledger.putSchedule(schedule, setBy);
|
|
@@ -93,12 +140,16 @@ export class Supervisor {
|
|
|
93
140
|
await this.#markAbnormal(running, result.reason);
|
|
94
141
|
return this.#wake(running.id);
|
|
95
142
|
}
|
|
143
|
+
this.#validateCeoHandoff(running, result.output);
|
|
96
144
|
const outgoingMail = result.output.mail.map((draft) => ({ id: randomUUID(), to: draft.to, from: running.agent, level: draft.level, body: draft.body, readAt: null }));
|
|
97
145
|
const schedule = result.output.nextWakeAt
|
|
98
146
|
? { id: `schedule:${running.agent}`, agent: running.agent, nextWakeAt: result.output.nextWakeAt, reason: "handoff.next_steps", setBy: running.agent }
|
|
99
147
|
: null;
|
|
100
|
-
this.ledger.commitHandoff({ agent: running.agent, wakeId: running.id, ts: this.#now(), output: result.output, outgoingMail, schedule });
|
|
148
|
+
const handoffEvent = this.ledger.commitHandoff({ agent: running.agent, wakeId: running.id, ts: this.#now(), output: result.output, outgoingMail, schedule });
|
|
101
149
|
this.ledger.finishWake(running.id, "done", this.#now());
|
|
150
|
+
if (this.#role(running.agent) !== "ceo" && (result.output.handoff.material || result.output.handoff.blocker) && this.#hasActiveRoot()) {
|
|
151
|
+
this.#enqueueTrigger("ceo", `child-handoff:${handoffEvent.seq}`);
|
|
152
|
+
}
|
|
102
153
|
if (this.#verifyMetricsAfterWake) {
|
|
103
154
|
for (const goal of this.ledger.goalsForOwner(running.agent))
|
|
104
155
|
if (this.#metricCollectors.has(goal.id))
|
|
@@ -245,6 +296,9 @@ export class Supervisor {
|
|
|
245
296
|
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
297
|
this.ledger.putSchedule(schedule, "supervisor", current.id);
|
|
247
298
|
}
|
|
299
|
+
else if (current.agent !== "ceo" && this.#hasActiveRoot()) {
|
|
300
|
+
this.#enqueueTrigger("ceo", `child-retry-exhausted:${current.id}`);
|
|
301
|
+
}
|
|
248
302
|
}
|
|
249
303
|
}
|
|
250
304
|
#enqueueSchedule(schedule) {
|
|
@@ -254,6 +308,10 @@ export class Supervisor {
|
|
|
254
308
|
const exact = this.ledger.wakeByTrigger(agent, triggerRef);
|
|
255
309
|
if (exact)
|
|
256
310
|
return exact;
|
|
311
|
+
const ownsLiveGoal = this.ledger.goalsForOwner(agent).some((goal) => goal.phase === "active" || goal.phase === "blocked");
|
|
312
|
+
const ceoInterrupt = agent === "ceo" && (triggerRef.startsWith("mail:") || triggerRef.startsWith("heartbeat:") || triggerRef.startsWith("child-"));
|
|
313
|
+
if (!ownsLiveGoal && !ceoInterrupt)
|
|
314
|
+
return null;
|
|
257
315
|
const queued = this.ledger.queuedWakeForAgent(agent);
|
|
258
316
|
if (queued) {
|
|
259
317
|
this.ledger.appendEvent({ streamId: wakeStream(queued.id), ts: this.#now(), actor: "supervisor", type: "wake.trigger_coalesced", data: { wakeId: queued.id, triggerRef } });
|
|
@@ -268,8 +326,52 @@ export class Supervisor {
|
|
|
268
326
|
throw new Error("deduplicated wake is missing");
|
|
269
327
|
return existing;
|
|
270
328
|
}
|
|
329
|
+
#suppressQueuedWake(agent, reason) {
|
|
330
|
+
const wake = this.ledger.queuedWakeForAgent(agent);
|
|
331
|
+
if (!wake)
|
|
332
|
+
return;
|
|
333
|
+
this.ledger.appendEvent({ streamId: wakeStream(wake.id), ts: this.#now(), actor: "supervisor", type: "wake.suppressed", data: { reason } });
|
|
334
|
+
this.ledger.finishWake(wake.id, "abnormal", this.#now());
|
|
335
|
+
}
|
|
336
|
+
#hasActiveRoot() { return this.ledger.goals().some((goal) => goal.parentId === null && goal.owner === "ceo" && goal.phase === "active"); }
|
|
337
|
+
#hasNonCompleteDescendant(rootId) {
|
|
338
|
+
const goals = this.ledger.goals();
|
|
339
|
+
const descendants = new Set([rootId]);
|
|
340
|
+
let changed = true;
|
|
341
|
+
while (changed) {
|
|
342
|
+
changed = false;
|
|
343
|
+
for (const goal of goals)
|
|
344
|
+
if (goal.parentId && descendants.has(goal.parentId) && !descendants.has(goal.id)) {
|
|
345
|
+
descendants.add(goal.id);
|
|
346
|
+
changed = true;
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
return goals.some((goal) => goal.id !== rootId && descendants.has(goal.id) && goal.phase !== "complete");
|
|
350
|
+
}
|
|
351
|
+
#role(agent) { return this.#profiles.get(agent)?.role ?? "child"; }
|
|
352
|
+
#validateCeoHandoff(wake, output) {
|
|
353
|
+
if (this.#role(wake.agent) !== "ceo")
|
|
354
|
+
return;
|
|
355
|
+
const idle = this.teamList().filter((member) => member.agent !== "ceo" && member.status === "idle_unplanned");
|
|
356
|
+
const activeRoot = this.#hasActiveRoot();
|
|
357
|
+
const hasChildMotion = this.teamList().some((member) => member.agent !== "ceo" && !["idle_unplanned", "retired"].includes(member.status));
|
|
358
|
+
const hasReview = Boolean(output.nextWakeAt);
|
|
359
|
+
const hasBlocker = Boolean(output.handoff.blocker);
|
|
360
|
+
const asksHuman = output.mail.some((mail) => mail.to === "human" && (mail.level === "decision" || mail.level === "emergency"))
|
|
361
|
+
|| this.ledger.unreadMail("human").some((mail) => mail.from === "ceo" && (mail.level === "decision" || mail.level === "emergency"));
|
|
362
|
+
if (idle.length === 0 && (!activeRoot || hasChildMotion || hasReview || hasBlocker || asksHuman))
|
|
363
|
+
return;
|
|
364
|
+
const violation = {
|
|
365
|
+
idleAgents: idle.map((member) => member.agent),
|
|
366
|
+
reason: idle.length ? "active child goal has no liveness route" : "active root has no motion, review, wait, blocker, or human request",
|
|
367
|
+
};
|
|
368
|
+
this.ledger.appendEvent({ streamId: wakeStream(wake.id), ts: this.#now(), actor: "supervisor", type: "ceo.motion_invalid", data: violation });
|
|
369
|
+
throw new Error(`CEO motion invalid: ${violation.reason}${violation.idleAgents.length ? ` (${violation.idleAgents.join(", ")})` : ""}`);
|
|
370
|
+
}
|
|
271
371
|
#loadContext(wake) {
|
|
272
|
-
const
|
|
372
|
+
const profile = this.#profiles.get(wake.agent) ?? { agent: wake.agent, role: "child" };
|
|
373
|
+
const role = profile.role;
|
|
374
|
+
const capabilities = profile.capabilities ?? defaultCapabilities(role);
|
|
273
375
|
const goals = role === "ceo" ? this.ledger.goals() : this.ledger.goalsForOwner(wake.agent);
|
|
274
376
|
const mail = this.ledger.unreadMail(wake.agent);
|
|
275
377
|
const handoff = this.ledger.lastEvent(wake.agent, "handoff.recorded");
|
|
@@ -281,7 +383,7 @@ export class Supervisor {
|
|
|
281
383
|
? [...this.ledger.eventsSince(0, ["handoff.recorded"])].reverse().filter((event, index, all) => all.findIndex((candidate) => candidate.actor === event.actor) === index)
|
|
282
384
|
: [];
|
|
283
385
|
const actions = this.ledger.actions().filter((action) => action.agent === wake.agent && (action.status === "unknown" || Boolean(action.auditAdvice && !action.adviceAcked)));
|
|
284
|
-
return composeActiveContext({ role, systemPrompt:
|
|
386
|
+
return composeActiveContext({ role, capabilities, systemPrompt: profile.systemPrompt ?? defaultRolePrompt(role), wake, goals, mail, actions, lastHandoff: handoff, teamHandoffs, team: role === "ceo" ? this.teamList() : [], recoveryEvents });
|
|
285
387
|
}
|
|
286
388
|
#requiredConnector(name) { const value = this.#connectors.get(name); if (!value)
|
|
287
389
|
throw new Error(`connector not registered: ${name}`); return value; }
|
|
@@ -289,6 +391,8 @@ export class Supervisor {
|
|
|
289
391
|
throw new Error(`wake not found: ${id}`); return value; }
|
|
290
392
|
#action(id) { const value = this.ledger.action(id); if (!value)
|
|
291
393
|
throw new Error(`action not found: ${id}`); return value; }
|
|
394
|
+
#goal(id) { const value = this.ledger.goal(id); if (!value)
|
|
395
|
+
throw new Error(`goal not found: ${id}`); return value; }
|
|
292
396
|
#now() { return this.clock.now().toISOString(); }
|
|
293
397
|
async #agentRpc(wake, leaseToken, method, params) {
|
|
294
398
|
const current = this.ledger.wake(wake.id);
|
|
@@ -302,6 +406,40 @@ export class Supervisor {
|
|
|
302
406
|
const input = asRecord(params);
|
|
303
407
|
if (method === "ledger.search")
|
|
304
408
|
return this.ledger.searchEvents(String(input.query), Number(input.limit ?? 20));
|
|
409
|
+
if (method === "team.list")
|
|
410
|
+
return this.teamList();
|
|
411
|
+
if (method === "goal.delegate")
|
|
412
|
+
return this.delegate({
|
|
413
|
+
id: String(input.id),
|
|
414
|
+
parentGoalId: String(input.parentGoalId),
|
|
415
|
+
childGoal: asChildGoal(input.childGoal),
|
|
416
|
+
brief: (input.brief ?? null),
|
|
417
|
+
reason: String(input.reason),
|
|
418
|
+
evidence: numberArray(input.evidence),
|
|
419
|
+
}, wake.agent, wake.id);
|
|
420
|
+
if (method === "goal.reassign")
|
|
421
|
+
return this.reassignGoal({
|
|
422
|
+
id: String(input.id),
|
|
423
|
+
goalId: String(input.goalId),
|
|
424
|
+
newOwner: String(input.newOwner),
|
|
425
|
+
brief: (input.brief ?? null),
|
|
426
|
+
reason: String(input.reason),
|
|
427
|
+
evidence: numberArray(input.evidence),
|
|
428
|
+
}, wake.agent, wake.id);
|
|
429
|
+
if (method === "goal.pause" || method === "goal.resume" || method === "goal.complete") {
|
|
430
|
+
const phase = method === "goal.pause" ? "paused" : method === "goal.resume" ? "active" : "complete";
|
|
431
|
+
return this.transitionGoal(String(input.goalId), phase, wake.agent);
|
|
432
|
+
}
|
|
433
|
+
if (method === "human.request") {
|
|
434
|
+
const evidence = numberArray(input.evidence);
|
|
435
|
+
for (const seq of evidence)
|
|
436
|
+
if (!this.ledger.eventsSince(seq - 1).some((event) => event.seq === seq))
|
|
437
|
+
throw new Error(`evidence event does not exist: ${seq}`);
|
|
438
|
+
const mail = { id: randomUUID(), to: "human", from: wake.agent, level: "decision", body: { type: String(input.type ?? "decision"), message: input.message ?? null, evidence }, readAt: null };
|
|
439
|
+
this.ledger.putMail(mail, wake.agent, wake.id);
|
|
440
|
+
this.ledger.appendRunnerEvent({ streamId: wakeStream(wake.id), ts: this.#now(), actor: wake.agent, type: "ceo.human_requested", data: mail.body }, leaseToken);
|
|
441
|
+
return mail;
|
|
442
|
+
}
|
|
305
443
|
if (method === "mail.send") {
|
|
306
444
|
const mail = { id: randomUUID(), to: String(input.to), from: wake.agent, level: String(input.level), body: (input.body ?? null), readAt: null };
|
|
307
445
|
this.ledger.putMail(mail, wake.agent, wake.id);
|
|
@@ -371,9 +509,43 @@ export async function runSupervisorDaemon(supervisor, options = {}) {
|
|
|
371
509
|
});
|
|
372
510
|
}
|
|
373
511
|
}
|
|
512
|
+
export function deriveTeam(ledger, now = new Date().toISOString()) {
|
|
513
|
+
const goals = ledger.goals();
|
|
514
|
+
const wakes = ledger.wakes();
|
|
515
|
+
const schedules = ledger.schedules();
|
|
516
|
+
const handoffs = ledger.eventsSince(0, ["handoff.recorded"]);
|
|
517
|
+
const owners = [...new Set(goals.map((goal) => goal.owner))].sort();
|
|
518
|
+
return owners.map((agent) => {
|
|
519
|
+
const owned = goals.filter((goal) => goal.owner === agent);
|
|
520
|
+
const live = owned.filter((goal) => goal.phase !== "complete");
|
|
521
|
+
const agentWakes = wakes.filter((wake) => wake.agent === agent).sort((a, b) => b.enqueuedSeq - a.enqueuedSeq);
|
|
522
|
+
const activeWake = agentWakes.find((wake) => ["running", "leased", "queued"].includes(wake.status));
|
|
523
|
+
const nextWakeAt = schedules.filter((schedule) => schedule.agent === agent && schedule.nextWakeAt > now).map((schedule) => schedule.nextWakeAt).sort()[0] ?? null;
|
|
524
|
+
const lastHandoff = [...handoffs].reverse().find((event) => event.actor === agent) ?? null;
|
|
525
|
+
const blocker = lastHandoff && typeof lastHandoff.data === "object" && lastHandoff.data !== null && !Array.isArray(lastHandoff.data)
|
|
526
|
+
? lastHandoff.data.blocker
|
|
527
|
+
: null;
|
|
528
|
+
let status;
|
|
529
|
+
if (live.length === 0)
|
|
530
|
+
status = "retired";
|
|
531
|
+
else if (activeWake?.status === "running")
|
|
532
|
+
status = "running";
|
|
533
|
+
else if (activeWake)
|
|
534
|
+
status = "queued";
|
|
535
|
+
else if (nextWakeAt)
|
|
536
|
+
status = "scheduled";
|
|
537
|
+
else if (live.every((goal) => goal.phase === "blocked"))
|
|
538
|
+
status = "blocked";
|
|
539
|
+
else if (live.every((goal) => goal.phase === "paused") || typeof blocker === "string" && blocker.length > 0)
|
|
540
|
+
status = "waiting";
|
|
541
|
+
else
|
|
542
|
+
status = "idle_unplanned";
|
|
543
|
+
return { agent, goalIds: owned.map((goal) => goal.id), status, lastHandoffSeq: lastHandoff?.seq ?? null, lastWakeStatus: agentWakes[0]?.status ?? null, nextWakeAt };
|
|
544
|
+
});
|
|
545
|
+
}
|
|
374
546
|
export function renderDashboard(ledger) {
|
|
375
547
|
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>`;
|
|
548
|
+
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>Team</h2><table>${rows(deriveTeam(ledger))}</table></section><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
549
|
}
|
|
378
550
|
async function runConnector(spec, operation, action) {
|
|
379
551
|
return runJsonProcess(spec, { operation, action });
|
|
@@ -422,9 +594,13 @@ function asRecord(value) { if (typeof value !== "object" || value === null || Ar
|
|
|
422
594
|
throw new Error("RPC params must be an object"); return value; }
|
|
423
595
|
function numberArray(value) { if (!Array.isArray(value) || value.some((item) => typeof item !== "number"))
|
|
424
596
|
throw new Error("RPC evidence must be a number array"); return value; }
|
|
597
|
+
function asChildGoal(value) {
|
|
598
|
+
const input = asRecord(value ?? null);
|
|
599
|
+
return { id: String(input.id), objective: String(input.objective), owner: String(input.owner) };
|
|
600
|
+
}
|
|
425
601
|
function defaultCapabilities(role) {
|
|
426
602
|
if (role === "ceo")
|
|
427
|
-
return ["ledger.search", "mail.send", "schedule.set", "action.submit", "audit.ack", "goal.
|
|
603
|
+
return ["ledger.search", "mail.send", "schedule.set", "action.submit", "audit.ack", "team.list", "goal.delegate", "goal.reassign", "goal.pause", "goal.resume", "goal.complete", "human.request"];
|
|
428
604
|
if (role === "verifier")
|
|
429
605
|
return ["ledger.search", "mail.send", "audit.write"];
|
|
430
606
|
if (role === "audit")
|