pi-kot 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -0
- package/bin/pi-kot.mjs +125 -0
- package/dist/client/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- package/dist/client/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- package/dist/client/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- package/dist/client/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- package/dist/client/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- package/dist/client/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- package/dist/client/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- package/dist/client/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- package/dist/client/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- package/dist/client/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- package/dist/client/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- package/dist/client/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- package/dist/client/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- package/dist/client/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- package/dist/client/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- package/dist/client/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- package/dist/client/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- package/dist/client/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- package/dist/client/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- package/dist/client/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- package/dist/client/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- package/dist/client/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- package/dist/client/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- package/dist/client/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- package/dist/client/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- package/dist/client/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- package/dist/client/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- package/dist/client/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- package/dist/client/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- package/dist/client/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- package/dist/client/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- package/dist/client/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- package/dist/client/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- package/dist/client/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- package/dist/client/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- package/dist/client/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- package/dist/client/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- package/dist/client/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- package/dist/client/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- package/dist/client/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- package/dist/client/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- package/dist/client/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- package/dist/client/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- package/dist/client/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- package/dist/client/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- package/dist/client/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- package/dist/client/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- package/dist/client/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- package/dist/client/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- package/dist/client/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- package/dist/client/assets/index-UJgsBs6a.js +361 -0
- package/dist/client/assets/index-UJgsBs6a.js.map +1 -0
- package/dist/client/assets/index-ZuTc_0YY.css +1 -0
- package/dist/client/index.html +14 -0
- package/dist/server/ask-user-question/envelope.d.ts +11 -0
- package/dist/server/ask-user-question/envelope.d.ts.map +1 -0
- package/dist/server/ask-user-question/envelope.js +41 -0
- package/dist/server/ask-user-question/envelope.js.map +1 -0
- package/dist/server/ask-user-question/prompt-strings.d.ts +4 -0
- package/dist/server/ask-user-question/prompt-strings.d.ts.map +1 -0
- package/dist/server/ask-user-question/prompt-strings.js +18 -0
- package/dist/server/ask-user-question/prompt-strings.js.map +1 -0
- package/dist/server/ask-user-question/registry.d.ts +39 -0
- package/dist/server/ask-user-question/registry.d.ts.map +1 -0
- package/dist/server/ask-user-question/registry.js +124 -0
- package/dist/server/ask-user-question/registry.js.map +1 -0
- package/dist/server/ask-user-question/tool.d.ts +4 -0
- package/dist/server/ask-user-question/tool.d.ts.map +1 -0
- package/dist/server/ask-user-question/tool.js +68 -0
- package/dist/server/ask-user-question/tool.js.map +1 -0
- package/dist/server/ask-user-question/types.d.ts +50 -0
- package/dist/server/ask-user-question/types.d.ts.map +1 -0
- package/dist/server/ask-user-question/types.js +7 -0
- package/dist/server/ask-user-question/types.js.map +1 -0
- package/dist/server/ask-user-question/validate.d.ts +3 -0
- package/dist/server/ask-user-question/validate.d.ts.map +1 -0
- package/dist/server/ask-user-question/validate.js +67 -0
- package/dist/server/ask-user-question/validate.js.map +1 -0
- package/dist/server/config-manager.d.ts +47 -0
- package/dist/server/config-manager.d.ts.map +1 -0
- package/dist/server/config-manager.js +182 -0
- package/dist/server/config-manager.js.map +1 -0
- package/dist/server/config.d.ts +20 -0
- package/dist/server/config.d.ts.map +1 -0
- package/dist/server/config.js +58 -0
- package/dist/server/config.js.map +1 -0
- package/dist/server/extension-manager.d.ts +70 -0
- package/dist/server/extension-manager.d.ts.map +1 -0
- package/dist/server/extension-manager.js +401 -0
- package/dist/server/extension-manager.js.map +1 -0
- package/dist/server/extension-ui-bridge.d.ts +35 -0
- package/dist/server/extension-ui-bridge.d.ts.map +1 -0
- package/dist/server/extension-ui-bridge.js +228 -0
- package/dist/server/extension-ui-bridge.js.map +1 -0
- package/dist/server/file-manager.d.ts +79 -0
- package/dist/server/file-manager.d.ts.map +1 -0
- package/dist/server/file-manager.js +526 -0
- package/dist/server/file-manager.js.map +1 -0
- package/dist/server/file-searcher.d.ts +29 -0
- package/dist/server/file-searcher.d.ts.map +1 -0
- package/dist/server/file-searcher.js +318 -0
- package/dist/server/file-searcher.js.map +1 -0
- package/dist/server/git-clone.d.ts +56 -0
- package/dist/server/git-clone.d.ts.map +1 -0
- package/dist/server/git-clone.js +173 -0
- package/dist/server/git-clone.js.map +1 -0
- package/dist/server/index.d.ts +22 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +196 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/lifecycle-notifications.d.ts +28 -0
- package/dist/server/lifecycle-notifications.d.ts.map +1 -0
- package/dist/server/lifecycle-notifications.js +38 -0
- package/dist/server/lifecycle-notifications.js.map +1 -0
- package/dist/server/orchestration/config.d.ts +5 -0
- package/dist/server/orchestration/config.d.ts.map +1 -0
- package/dist/server/orchestration/config.js +35 -0
- package/dist/server/orchestration/config.js.map +1 -0
- package/dist/server/orchestration/event-bridge.d.ts +32 -0
- package/dist/server/orchestration/event-bridge.d.ts.map +1 -0
- package/dist/server/orchestration/event-bridge.js +110 -0
- package/dist/server/orchestration/event-bridge.js.map +1 -0
- package/dist/server/orchestration/inbox.d.ts +9 -0
- package/dist/server/orchestration/inbox.d.ts.map +1 -0
- package/dist/server/orchestration/inbox.js +186 -0
- package/dist/server/orchestration/inbox.js.map +1 -0
- package/dist/server/orchestration/init.d.ts +2 -0
- package/dist/server/orchestration/init.d.ts.map +1 -0
- package/dist/server/orchestration/init.js +22 -0
- package/dist/server/orchestration/init.js.map +1 -0
- package/dist/server/orchestration/store.d.ts +33 -0
- package/dist/server/orchestration/store.d.ts.map +1 -0
- package/dist/server/orchestration/store.js +331 -0
- package/dist/server/orchestration/store.js.map +1 -0
- package/dist/server/orchestration/tools.d.ts +15 -0
- package/dist/server/orchestration/tools.d.ts.map +1 -0
- package/dist/server/orchestration/tools.js +621 -0
- package/dist/server/orchestration/tools.js.map +1 -0
- package/dist/server/orchestration/types.d.ts +68 -0
- package/dist/server/orchestration/types.d.ts.map +1 -0
- package/dist/server/orchestration/types.js +43 -0
- package/dist/server/orchestration/types.js.map +1 -0
- package/dist/server/orchestration/worker-lifecycle.d.ts +15 -0
- package/dist/server/orchestration/worker-lifecycle.d.ts.map +1 -0
- package/dist/server/orchestration/worker-lifecycle.js +45 -0
- package/dist/server/orchestration/worker-lifecycle.js.map +1 -0
- package/dist/server/project-manager.d.ts +25 -0
- package/dist/server/project-manager.d.ts.map +1 -0
- package/dist/server/project-manager.js +157 -0
- package/dist/server/project-manager.js.map +1 -0
- package/dist/server/routes/_schemas.d.ts +16 -0
- package/dist/server/routes/_schemas.d.ts.map +1 -0
- package/dist/server/routes/_schemas.js +12 -0
- package/dist/server/routes/_schemas.js.map +1 -0
- package/dist/server/routes/ask-user-question.d.ts +3 -0
- package/dist/server/routes/ask-user-question.d.ts.map +1 -0
- package/dist/server/routes/ask-user-question.js +105 -0
- package/dist/server/routes/ask-user-question.js.map +1 -0
- package/dist/server/routes/auth.d.ts +7 -0
- package/dist/server/routes/auth.d.ts.map +1 -0
- package/dist/server/routes/auth.js +126 -0
- package/dist/server/routes/auth.js.map +1 -0
- package/dist/server/routes/config.d.ts +3 -0
- package/dist/server/routes/config.d.ts.map +1 -0
- package/dist/server/routes/config.js +203 -0
- package/dist/server/routes/config.js.map +1 -0
- package/dist/server/routes/control.d.ts +3 -0
- package/dist/server/routes/control.d.ts.map +1 -0
- package/dist/server/routes/control.js +180 -0
- package/dist/server/routes/control.js.map +1 -0
- package/dist/server/routes/extension-commands.d.ts +22 -0
- package/dist/server/routes/extension-commands.d.ts.map +1 -0
- package/dist/server/routes/extension-commands.js +178 -0
- package/dist/server/routes/extension-commands.js.map +1 -0
- package/dist/server/routes/extensions.d.ts +8 -0
- package/dist/server/routes/extensions.d.ts.map +1 -0
- package/dist/server/routes/extensions.js +169 -0
- package/dist/server/routes/extensions.js.map +1 -0
- package/dist/server/routes/files.d.ts +3 -0
- package/dist/server/routes/files.d.ts.map +1 -0
- package/dist/server/routes/files.js +549 -0
- package/dist/server/routes/files.js.map +1 -0
- package/dist/server/routes/orchestration.d.ts +3 -0
- package/dist/server/routes/orchestration.d.ts.map +1 -0
- package/dist/server/routes/orchestration.js +251 -0
- package/dist/server/routes/orchestration.js.map +1 -0
- package/dist/server/routes/projects.d.ts +3 -0
- package/dist/server/routes/projects.d.ts.map +1 -0
- package/dist/server/routes/projects.js +412 -0
- package/dist/server/routes/projects.js.map +1 -0
- package/dist/server/routes/prompt.d.ts +3 -0
- package/dist/server/routes/prompt.d.ts.map +1 -0
- package/dist/server/routes/prompt.js +192 -0
- package/dist/server/routes/prompt.js.map +1 -0
- package/dist/server/routes/sessions.d.ts +3 -0
- package/dist/server/routes/sessions.d.ts.map +1 -0
- package/dist/server/routes/sessions.js +581 -0
- package/dist/server/routes/sessions.js.map +1 -0
- package/dist/server/routes/stream.d.ts +3 -0
- package/dist/server/routes/stream.d.ts.map +1 -0
- package/dist/server/routes/stream.js +109 -0
- package/dist/server/routes/stream.js.map +1 -0
- package/dist/server/session-registry.d.ts +151 -0
- package/dist/server/session-registry.d.ts.map +1 -0
- package/dist/server/session-registry.js +655 -0
- package/dist/server/session-registry.js.map +1 -0
- package/dist/server/sse-bridge.d.ts +31 -0
- package/dist/server/sse-bridge.d.ts.map +1 -0
- package/dist/server/sse-bridge.js +126 -0
- package/dist/server/sse-bridge.js.map +1 -0
- package/package.json +69 -0
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Worker notification surface — the bridge between worker events and
|
|
3
|
+
* supervisor custom messages. The persisted inbox store remains as UI
|
|
4
|
+
* history/audit data.
|
|
5
|
+
*
|
|
6
|
+
* Delivery policy:
|
|
7
|
+
* - If the supervisor is active, every worker update is delivered as
|
|
8
|
+
* `steer` so it can enter the current run at the next model step.
|
|
9
|
+
* - If the supervisor is idle, every update except delete/unregister
|
|
10
|
+
* starts a new turn; delete/unregister only appends a visible card.
|
|
11
|
+
*/
|
|
12
|
+
import { sendCustomLifecycleMessage } from "../lifecycle-notifications.js";
|
|
13
|
+
import { getSession } from "../session-registry.js";
|
|
14
|
+
import { enqueueInboxItem, getSupervisorIdForWorker, readPendingInbox } from "./store.js";
|
|
15
|
+
const wakeCounters = new Map();
|
|
16
|
+
function nextWakeCounter(supervisorId) {
|
|
17
|
+
const n = (wakeCounters.get(supervisorId) ?? 0) + 1;
|
|
18
|
+
wakeCounters.set(supervisorId, n);
|
|
19
|
+
return n;
|
|
20
|
+
}
|
|
21
|
+
function logInbox(level, payload) {
|
|
22
|
+
process.stderr.write(`${JSON.stringify({ level, time: new Date().toISOString(), ...payload })}\n`);
|
|
23
|
+
}
|
|
24
|
+
export const ORCHESTRATION_WAKE_PREFIX = "[orchestration]";
|
|
25
|
+
export const ORCHESTRATION_NOTIFY_TYPE = "orchestration-notify";
|
|
26
|
+
export function shouldTriggerWorkerTurn(type) {
|
|
27
|
+
return type !== "worker.deleted";
|
|
28
|
+
}
|
|
29
|
+
function workerStateForInboxType(type) {
|
|
30
|
+
if (type === "worker.ended")
|
|
31
|
+
return "ended";
|
|
32
|
+
if (type === "worker.execution_stopped_without_agent_end")
|
|
33
|
+
return "failed";
|
|
34
|
+
if (type === "worker.deleted")
|
|
35
|
+
return "deleted";
|
|
36
|
+
if (type === "worker.ask_user")
|
|
37
|
+
return "awaiting_question";
|
|
38
|
+
if (type === "worker.process_alert")
|
|
39
|
+
return "process_alert";
|
|
40
|
+
return type.replace(/^worker\./, "");
|
|
41
|
+
}
|
|
42
|
+
function buildNotificationText(type, workerId, data) {
|
|
43
|
+
const state = workerStateForInboxType(type);
|
|
44
|
+
const lines = [`Worker ${workerId} reported ${state}.`];
|
|
45
|
+
const detail = summarizeWorkerEventData(type, data);
|
|
46
|
+
if (detail !== "")
|
|
47
|
+
lines.push(detail);
|
|
48
|
+
return lines.join("\n\n");
|
|
49
|
+
}
|
|
50
|
+
function summarizeWorkerEventData(type, data) {
|
|
51
|
+
if (type === "worker.ended") {
|
|
52
|
+
const stop = typeof data.stopReason === "string" ? data.stopReason : "unknown";
|
|
53
|
+
const err = typeof data.errorMessage === "string" && data.errorMessage.length > 0
|
|
54
|
+
? data.errorMessage
|
|
55
|
+
: "";
|
|
56
|
+
const text = typeof data.assistantText === "string" && data.assistantText.length > 0
|
|
57
|
+
? data.assistantText
|
|
58
|
+
: "";
|
|
59
|
+
const parts = [`stopReason: ${stop}`];
|
|
60
|
+
if (err !== "")
|
|
61
|
+
parts.push(`errorMessage:\n${err}`);
|
|
62
|
+
if (text !== "")
|
|
63
|
+
parts.push(`finalMessage:\n${text}`);
|
|
64
|
+
return parts.join("\n\n");
|
|
65
|
+
}
|
|
66
|
+
if (type === "worker.ask_user") {
|
|
67
|
+
const count = typeof data.questionCount === "number" ? data.questionCount : 1;
|
|
68
|
+
const header = typeof data.firstQuestionHeader === "string" ? data.firstQuestionHeader : "";
|
|
69
|
+
const text = typeof data.firstQuestionText === "string" ? data.firstQuestionText : "";
|
|
70
|
+
return [
|
|
71
|
+
`questionCount: ${count}`,
|
|
72
|
+
header !== "" ? `firstQuestionHeader: ${header}` : "",
|
|
73
|
+
text !== "" ? `firstQuestionText:\n${text}` : "",
|
|
74
|
+
]
|
|
75
|
+
.filter((part) => part !== "")
|
|
76
|
+
.join("\n\n");
|
|
77
|
+
}
|
|
78
|
+
if (type === "worker.execution_stopped_without_agent_end") {
|
|
79
|
+
const reason = typeof data.reason === "string" ? data.reason : "stopped";
|
|
80
|
+
const lastStart = typeof data.lastAgentStartAt === "string" ? data.lastAgentStartAt : "";
|
|
81
|
+
return `reason: ${reason}${lastStart !== "" ? `\nlastAgentStartAt: ${lastStart}` : ""}`;
|
|
82
|
+
}
|
|
83
|
+
if (type === "worker.deleted") {
|
|
84
|
+
return `wasLive: ${data.wasLive === true ? "true" : "false"}`;
|
|
85
|
+
}
|
|
86
|
+
try {
|
|
87
|
+
return JSON.stringify(data, null, 2);
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
return "";
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
async function tryWakeSupervisor(supervisorId, event) {
|
|
94
|
+
const live = getSession(supervisorId);
|
|
95
|
+
if (live === undefined)
|
|
96
|
+
return false;
|
|
97
|
+
const pendingItems = await readPendingInbox(supervisorId);
|
|
98
|
+
const pending = pendingItems.length;
|
|
99
|
+
const fallbackItem = pendingItems.find((it) => shouldTriggerWorkerTurn(it.type)) ?? pendingItems[0];
|
|
100
|
+
const effectiveEvent = event ??
|
|
101
|
+
(fallbackItem === undefined
|
|
102
|
+
? undefined
|
|
103
|
+
: {
|
|
104
|
+
type: fallbackItem.type,
|
|
105
|
+
workerId: fallbackItem.workerId,
|
|
106
|
+
itemId: fallbackItem.id,
|
|
107
|
+
data: fallbackItem.data,
|
|
108
|
+
});
|
|
109
|
+
if (effectiveEvent === undefined)
|
|
110
|
+
return false;
|
|
111
|
+
const triggerTurn = shouldTriggerWorkerTurn(effectiveEvent.type);
|
|
112
|
+
const seq = nextWakeCounter(supervisorId);
|
|
113
|
+
const type = effectiveEvent.type;
|
|
114
|
+
const workerId = effectiveEvent.workerId;
|
|
115
|
+
const text = buildNotificationText(type, workerId, effectiveEvent.data);
|
|
116
|
+
sendCustomLifecycleMessage(live.session, {
|
|
117
|
+
customType: ORCHESTRATION_NOTIFY_TYPE,
|
|
118
|
+
content: text,
|
|
119
|
+
display: true,
|
|
120
|
+
details: {
|
|
121
|
+
source: "orchestration",
|
|
122
|
+
state: workerStateForInboxType(type),
|
|
123
|
+
eventType: type,
|
|
124
|
+
workerId,
|
|
125
|
+
inboxItemId: effectiveEvent.itemId,
|
|
126
|
+
pendingCount: pending,
|
|
127
|
+
data: effectiveEvent.data,
|
|
128
|
+
},
|
|
129
|
+
}, {
|
|
130
|
+
triggerTurn,
|
|
131
|
+
dedupe: { detailKey: "inboxItemId", detailValue: effectiveEvent.itemId },
|
|
132
|
+
onError: (err) => {
|
|
133
|
+
logInbox("warn", {
|
|
134
|
+
msg: "orchestration-wake-failed",
|
|
135
|
+
supervisorId,
|
|
136
|
+
workerId,
|
|
137
|
+
type,
|
|
138
|
+
pending,
|
|
139
|
+
seq,
|
|
140
|
+
triggerTurn,
|
|
141
|
+
err: err instanceof Error ? err.message : String(err),
|
|
142
|
+
});
|
|
143
|
+
},
|
|
144
|
+
});
|
|
145
|
+
logInbox("info", {
|
|
146
|
+
msg: "orchestration-wake-delivered",
|
|
147
|
+
supervisorId,
|
|
148
|
+
workerId,
|
|
149
|
+
type,
|
|
150
|
+
pending,
|
|
151
|
+
seq,
|
|
152
|
+
triggerTurn,
|
|
153
|
+
});
|
|
154
|
+
return true;
|
|
155
|
+
}
|
|
156
|
+
export async function bridgeWorkerEvent(workerId, type, data) {
|
|
157
|
+
const supervisorId = await getSupervisorIdForWorker(workerId);
|
|
158
|
+
if (supervisorId === undefined)
|
|
159
|
+
return undefined;
|
|
160
|
+
const item = await enqueueInboxItem(supervisorId, {
|
|
161
|
+
type,
|
|
162
|
+
workerId,
|
|
163
|
+
occurredAt: new Date().toISOString(),
|
|
164
|
+
data,
|
|
165
|
+
delivered: true,
|
|
166
|
+
});
|
|
167
|
+
logInbox("info", {
|
|
168
|
+
msg: "orchestration-inbox-enqueued",
|
|
169
|
+
supervisorId,
|
|
170
|
+
workerId,
|
|
171
|
+
type,
|
|
172
|
+
itemId: item.id,
|
|
173
|
+
});
|
|
174
|
+
void tryWakeSupervisor(supervisorId, { type, workerId, itemId: item.id, data });
|
|
175
|
+
return item;
|
|
176
|
+
}
|
|
177
|
+
export async function notifySupervisorIdle(supervisorId) {
|
|
178
|
+
void tryWakeSupervisor(supervisorId);
|
|
179
|
+
}
|
|
180
|
+
export function notifySupervisorDisposed(supervisorId) {
|
|
181
|
+
wakeCounters.delete(supervisorId);
|
|
182
|
+
}
|
|
183
|
+
export async function drainInbox(supervisorId) {
|
|
184
|
+
return readPendingInbox(supervisorId, { markDelivered: true });
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=inbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../src/orchestration/inbox.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/orchestration/init.ts"],"names":[],"mappings":"AAeA,wBAAgB,sCAAsC,IAAI,MAAM,IAAI,CAKnE"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Boot-time wiring of the orchestration event bridge to the
|
|
3
|
+
* forge-native singleton event channels (ask-user-question).
|
|
4
|
+
*
|
|
5
|
+
* Per-AgentSession events (agent_start, agent_end) are dispatched
|
|
6
|
+
* from inside session-registry — those need the LiveSession context
|
|
7
|
+
* at construction time. session-registry also calls
|
|
8
|
+
* `notifySupervisorIdle` on supervisor agent_end.
|
|
9
|
+
*
|
|
10
|
+
* The DELETE-side `worker.deleted` event is fired from the sessions
|
|
11
|
+
* DELETE route.
|
|
12
|
+
*/
|
|
13
|
+
import { subscribe as subscribeAskQuestions } from "../ask-user-question/registry.js";
|
|
14
|
+
import { bridgeWorkerAskUserQuestion } from "./event-bridge.js";
|
|
15
|
+
export function initOrchestrationAskUserQuestionBridge() {
|
|
16
|
+
return subscribeAskQuestions((event) => {
|
|
17
|
+
if (event.type !== "ask_user_question")
|
|
18
|
+
return;
|
|
19
|
+
void bridgeWorkerAskUserQuestion(event.sessionId, event.questions, event.requestId);
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/orchestration/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,SAAS,IAAI,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACtF,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAEhE,MAAM,UAAU,sCAAsC;IACpD,OAAO,qBAAqB,CAAC,CAAC,KAAK,EAAE,EAAE;QACrC,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB;YAAE,OAAO;QAC/C,KAAK,2BAA2B,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACtF,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type InboxItem, type OrchestrationStore, type SupervisorRecord, type WorkerRecord } from "./types.js";
|
|
2
|
+
export declare function readStore(): Promise<OrchestrationStore>;
|
|
3
|
+
export declare class OrchestrationError extends Error {
|
|
4
|
+
readonly code: string;
|
|
5
|
+
constructor(code: string, message: string);
|
|
6
|
+
}
|
|
7
|
+
export declare function enableSupervisor(sessionId: string): Promise<SupervisorRecord>;
|
|
8
|
+
export declare function disableSupervisor(sessionId: string): Promise<void>;
|
|
9
|
+
export declare function registerWorker(opts: {
|
|
10
|
+
supervisorId: string;
|
|
11
|
+
workerId: string;
|
|
12
|
+
spawnedFrom?: {
|
|
13
|
+
sessionId: string;
|
|
14
|
+
mode: "fresh" | "summary";
|
|
15
|
+
};
|
|
16
|
+
}): Promise<void>;
|
|
17
|
+
export declare function unregisterWorker(workerId: string): Promise<void>;
|
|
18
|
+
export declare function getSupervisorIdForWorker(workerId: string): Promise<string | undefined>;
|
|
19
|
+
export declare function isSupervisor(sessionId: string): Promise<boolean>;
|
|
20
|
+
export declare function isWorker(sessionId: string): Promise<boolean>;
|
|
21
|
+
export declare function getWorkerIds(supervisorId: string): Promise<string[]>;
|
|
22
|
+
export declare function getWorkerRecord(workerId: string): Promise<WorkerRecord | undefined>;
|
|
23
|
+
export declare function updateWorkerLifecycle(workerId: string, patch: Partial<Pick<WorkerRecord, "state" | "turnOpen" | "lastStateAt" | "lastAgentStartAt" | "lastAgentEndAt" | "stopReason" | "errorMessage">>): Promise<WorkerRecord | undefined>;
|
|
24
|
+
export declare function enqueueInboxItem(supervisorId: string, item: Omit<InboxItem, "id" | "delivered"> & {
|
|
25
|
+
delivered?: boolean;
|
|
26
|
+
}): Promise<InboxItem>;
|
|
27
|
+
export declare function readPendingInbox(supervisorId: string, opts?: {
|
|
28
|
+
markDelivered?: boolean;
|
|
29
|
+
}): Promise<InboxItem[]>;
|
|
30
|
+
export declare function readAllInbox(supervisorId: string): Promise<InboxItem[]>;
|
|
31
|
+
export declare function pendingInboxCount(supervisorId: string): Promise<number>;
|
|
32
|
+
export declare function clearInbox(supervisorId: string): Promise<void>;
|
|
33
|
+
//# sourceMappingURL=store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/orchestration/store.ts"],"names":[],"mappings":"AAeA,OAAO,EAGL,KAAK,SAAS,EAKd,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EAErB,KAAK,YAAY,EAClB,MAAM,YAAY,CAAC;AAyGpB,wBAAsB,SAAS,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAE7D;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBACV,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAK1C;AAED,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAmBnF;AAED,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAWxE;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,GAAG,SAAS,CAAA;KAAE,CAAC;CAChE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmChB;AAED,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYtE;AAED,wBAAsB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAG5F;AAED,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGtE;AAED,wBAAsB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGlE;AAED,wBAAsB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAG1E;AAED,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAGzF;AAED,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO,CACZ,IAAI,CACF,YAAY,EACV,OAAO,GACP,UAAU,GACV,aAAa,GACb,kBAAkB,GAClB,gBAAgB,GAChB,YAAY,GACZ,cAAc,CACjB,CACF,GACA,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CASnC;AAmDD,wBAAsB,gBAAgB,CACpC,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,GAAG,WAAW,CAAC,GAAG;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GAClE,OAAO,CAAC,SAAS,CAAC,CAepB;AAED,wBAAsB,gBAAgB,CACpC,YAAY,EAAE,MAAM,EACpB,IAAI,GAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAO,GACrC,OAAO,CAAC,SAAS,EAAE,CAAC,CAYtB;AAED,wBAAsB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAI7E;AAED,wBAAsB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAI7E;AAED,wBAAsB,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOpE"}
|
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Disk-backed persistence for orchestration metadata.
|
|
3
|
+
*
|
|
4
|
+
* Two files in `${config.forgeDataDir}/`:
|
|
5
|
+
* - `session-orchestration.json` — supervisor opt-in + supervisor↔worker links
|
|
6
|
+
* - `orchestrator-inbox.json` — per-supervisor pending event queue
|
|
7
|
+
*
|
|
8
|
+
* Separate files so the chatty inbox writes don't fight the rare
|
|
9
|
+
* topology mutations. Same atomic-write + in-process lock pattern as
|
|
10
|
+
* pi-forge. Single-tenant / single-process assumption.
|
|
11
|
+
*/
|
|
12
|
+
import { randomUUID } from "node:crypto";
|
|
13
|
+
import { chmod, mkdir, readFile, rename, unlink, writeFile } from "node:fs/promises";
|
|
14
|
+
import { join } from "node:path";
|
|
15
|
+
import { config } from "../config.js";
|
|
16
|
+
import { emptyInboxStore, emptyStore, isInboxEventType, MAX_INBOX_ITEMS, ORCHESTRATION_VERSION, } from "./types.js";
|
|
17
|
+
const STORE_FILE = () => join(config.forgeDataDir, "session-orchestration.json");
|
|
18
|
+
const INBOX_FILE = () => join(config.forgeDataDir, "orchestrator-inbox.json");
|
|
19
|
+
async function ensureDir() {
|
|
20
|
+
await mkdir(config.forgeDataDir, { recursive: true });
|
|
21
|
+
}
|
|
22
|
+
async function atomicWriteJson(target, data, mode) {
|
|
23
|
+
await ensureDir();
|
|
24
|
+
const tmp = `${target}.${randomUUID()}.tmp`;
|
|
25
|
+
await writeFile(tmp, JSON.stringify(data, null, 2), "utf8");
|
|
26
|
+
try {
|
|
27
|
+
await chmod(tmp, mode);
|
|
28
|
+
await rename(tmp, target);
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
await unlink(tmp).catch(() => undefined);
|
|
32
|
+
throw err;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
// ---- session-orchestration.json (topology) ----
|
|
36
|
+
let storeLock = Promise.resolve();
|
|
37
|
+
function withStoreLock(fn) {
|
|
38
|
+
const next = storeLock.then(fn, fn);
|
|
39
|
+
storeLock = next.catch(() => undefined);
|
|
40
|
+
return next;
|
|
41
|
+
}
|
|
42
|
+
function isSupervisorRecord(v) {
|
|
43
|
+
if (typeof v !== "object" || v === null)
|
|
44
|
+
return false;
|
|
45
|
+
const r = v;
|
|
46
|
+
return (typeof r.enabledAt === "string" &&
|
|
47
|
+
Array.isArray(r.workerIds) &&
|
|
48
|
+
r.workerIds.every((id) => typeof id === "string"));
|
|
49
|
+
}
|
|
50
|
+
const WORKER_LIFECYCLE_STATES = new Set([
|
|
51
|
+
"idle",
|
|
52
|
+
"running",
|
|
53
|
+
"ended",
|
|
54
|
+
"errored",
|
|
55
|
+
"stopped",
|
|
56
|
+
"deleted",
|
|
57
|
+
"awaiting_question",
|
|
58
|
+
]);
|
|
59
|
+
function isWorkerLifecycleState(v) {
|
|
60
|
+
return typeof v === "string" && WORKER_LIFECYCLE_STATES.has(v);
|
|
61
|
+
}
|
|
62
|
+
function isWorkerRecord(v) {
|
|
63
|
+
if (typeof v !== "object" || v === null)
|
|
64
|
+
return false;
|
|
65
|
+
const r = v;
|
|
66
|
+
if (typeof r.supervisorId !== "string" || typeof r.spawnedAt !== "string")
|
|
67
|
+
return false;
|
|
68
|
+
if (r.spawnedFrom !== undefined) {
|
|
69
|
+
const sf = r.spawnedFrom;
|
|
70
|
+
if (typeof sf.sessionId !== "string")
|
|
71
|
+
return false;
|
|
72
|
+
if (sf.mode !== "fresh" && sf.mode !== "summary")
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
if (r.state !== undefined && !isWorkerLifecycleState(r.state))
|
|
76
|
+
return false;
|
|
77
|
+
if (r.turnOpen !== undefined && typeof r.turnOpen !== "boolean")
|
|
78
|
+
return false;
|
|
79
|
+
for (const key of ["lastStateAt", "lastAgentStartAt", "lastAgentEndAt"]) {
|
|
80
|
+
if (r[key] !== undefined && typeof r[key] !== "string")
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
for (const key of ["stopReason", "errorMessage"]) {
|
|
84
|
+
if (r[key] !== undefined && r[key] !== null && typeof r[key] !== "string")
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
return true;
|
|
88
|
+
}
|
|
89
|
+
async function readStoreFile() {
|
|
90
|
+
await ensureDir();
|
|
91
|
+
try {
|
|
92
|
+
const raw = await readFile(STORE_FILE(), "utf8");
|
|
93
|
+
const parsed = JSON.parse(raw);
|
|
94
|
+
if (typeof parsed !== "object" || parsed === null)
|
|
95
|
+
return emptyStore();
|
|
96
|
+
const r = parsed;
|
|
97
|
+
const supervisors = {};
|
|
98
|
+
const workers = {};
|
|
99
|
+
if (typeof r.supervisors === "object" && r.supervisors !== null) {
|
|
100
|
+
for (const [id, rec] of Object.entries(r.supervisors)) {
|
|
101
|
+
if (isSupervisorRecord(rec))
|
|
102
|
+
supervisors[id] = rec;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
if (typeof r.workers === "object" && r.workers !== null) {
|
|
106
|
+
for (const [id, rec] of Object.entries(r.workers)) {
|
|
107
|
+
if (isWorkerRecord(rec))
|
|
108
|
+
workers[id] = rec;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return { version: ORCHESTRATION_VERSION, supervisors, workers };
|
|
112
|
+
}
|
|
113
|
+
catch (err) {
|
|
114
|
+
if (err.code === "ENOENT")
|
|
115
|
+
return emptyStore();
|
|
116
|
+
throw err;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
async function writeStoreFile(s) {
|
|
120
|
+
await atomicWriteJson(STORE_FILE(), s, 0o600);
|
|
121
|
+
}
|
|
122
|
+
export async function readStore() {
|
|
123
|
+
return readStoreFile();
|
|
124
|
+
}
|
|
125
|
+
export class OrchestrationError extends Error {
|
|
126
|
+
code;
|
|
127
|
+
constructor(code, message) {
|
|
128
|
+
super(message);
|
|
129
|
+
this.code = code;
|
|
130
|
+
this.name = "OrchestrationError";
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
export async function enableSupervisor(sessionId) {
|
|
134
|
+
return withStoreLock(async () => {
|
|
135
|
+
const s = await readStoreFile();
|
|
136
|
+
if (s.workers[sessionId] !== undefined) {
|
|
137
|
+
throw new OrchestrationError("depth_limit_exceeded", `Session ${sessionId} is a worker and cannot become a supervisor (depth=1).`);
|
|
138
|
+
}
|
|
139
|
+
const existing = s.supervisors[sessionId];
|
|
140
|
+
if (existing !== undefined)
|
|
141
|
+
return existing;
|
|
142
|
+
const rec = {
|
|
143
|
+
enabledAt: new Date().toISOString(),
|
|
144
|
+
workerIds: [],
|
|
145
|
+
};
|
|
146
|
+
s.supervisors[sessionId] = rec;
|
|
147
|
+
await writeStoreFile(s);
|
|
148
|
+
return rec;
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
export async function disableSupervisor(sessionId) {
|
|
152
|
+
await withStoreLock(async () => {
|
|
153
|
+
const s = await readStoreFile();
|
|
154
|
+
const rec = s.supervisors[sessionId];
|
|
155
|
+
if (rec === undefined)
|
|
156
|
+
return;
|
|
157
|
+
for (const workerId of rec.workerIds) {
|
|
158
|
+
delete s.workers[workerId];
|
|
159
|
+
}
|
|
160
|
+
delete s.supervisors[sessionId];
|
|
161
|
+
await writeStoreFile(s);
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
export async function registerWorker(opts) {
|
|
165
|
+
await withStoreLock(async () => {
|
|
166
|
+
const s = await readStoreFile();
|
|
167
|
+
const sup = s.supervisors[opts.supervisorId];
|
|
168
|
+
if (sup === undefined) {
|
|
169
|
+
throw new OrchestrationError("supervisor_not_found", `No supervisor record for ${opts.supervisorId}.`);
|
|
170
|
+
}
|
|
171
|
+
if (s.workers[opts.workerId] !== undefined) {
|
|
172
|
+
throw new OrchestrationError("worker_already_linked", `Worker ${opts.workerId} is already linked to a supervisor.`);
|
|
173
|
+
}
|
|
174
|
+
if (s.supervisors[opts.workerId] !== undefined) {
|
|
175
|
+
throw new OrchestrationError("depth_limit_exceeded", `Session ${opts.workerId} is already a supervisor; cannot also be a worker.`);
|
|
176
|
+
}
|
|
177
|
+
sup.workerIds.push(opts.workerId);
|
|
178
|
+
const now = new Date().toISOString();
|
|
179
|
+
const wrec = {
|
|
180
|
+
supervisorId: opts.supervisorId,
|
|
181
|
+
spawnedAt: now,
|
|
182
|
+
state: "idle",
|
|
183
|
+
turnOpen: false,
|
|
184
|
+
lastStateAt: now,
|
|
185
|
+
};
|
|
186
|
+
if (opts.spawnedFrom !== undefined)
|
|
187
|
+
wrec.spawnedFrom = opts.spawnedFrom;
|
|
188
|
+
s.workers[opts.workerId] = wrec;
|
|
189
|
+
await writeStoreFile(s);
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
export async function unregisterWorker(workerId) {
|
|
193
|
+
await withStoreLock(async () => {
|
|
194
|
+
const s = await readStoreFile();
|
|
195
|
+
const wrec = s.workers[workerId];
|
|
196
|
+
if (wrec === undefined)
|
|
197
|
+
return;
|
|
198
|
+
const sup = s.supervisors[wrec.supervisorId];
|
|
199
|
+
if (sup !== undefined) {
|
|
200
|
+
sup.workerIds = sup.workerIds.filter((id) => id !== workerId);
|
|
201
|
+
}
|
|
202
|
+
delete s.workers[workerId];
|
|
203
|
+
await writeStoreFile(s);
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
export async function getSupervisorIdForWorker(workerId) {
|
|
207
|
+
const s = await readStoreFile();
|
|
208
|
+
return s.workers[workerId]?.supervisorId;
|
|
209
|
+
}
|
|
210
|
+
export async function isSupervisor(sessionId) {
|
|
211
|
+
const s = await readStoreFile();
|
|
212
|
+
return s.supervisors[sessionId] !== undefined;
|
|
213
|
+
}
|
|
214
|
+
export async function isWorker(sessionId) {
|
|
215
|
+
const s = await readStoreFile();
|
|
216
|
+
return s.workers[sessionId] !== undefined;
|
|
217
|
+
}
|
|
218
|
+
export async function getWorkerIds(supervisorId) {
|
|
219
|
+
const s = await readStoreFile();
|
|
220
|
+
return [...(s.supervisors[supervisorId]?.workerIds ?? [])];
|
|
221
|
+
}
|
|
222
|
+
export async function getWorkerRecord(workerId) {
|
|
223
|
+
const s = await readStoreFile();
|
|
224
|
+
return s.workers[workerId];
|
|
225
|
+
}
|
|
226
|
+
export async function updateWorkerLifecycle(workerId, patch) {
|
|
227
|
+
return withStoreLock(async () => {
|
|
228
|
+
const s = await readStoreFile();
|
|
229
|
+
const rec = s.workers[workerId];
|
|
230
|
+
if (rec === undefined)
|
|
231
|
+
return undefined;
|
|
232
|
+
Object.assign(rec, patch);
|
|
233
|
+
await writeStoreFile(s);
|
|
234
|
+
return { ...rec };
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
// ---- orchestrator-inbox.json (queue) ----
|
|
238
|
+
let inboxLock = Promise.resolve();
|
|
239
|
+
function withInboxLock(fn) {
|
|
240
|
+
const next = inboxLock.then(fn, fn);
|
|
241
|
+
inboxLock = next.catch(() => undefined);
|
|
242
|
+
return next;
|
|
243
|
+
}
|
|
244
|
+
function isInboxItem(v) {
|
|
245
|
+
if (typeof v !== "object" || v === null)
|
|
246
|
+
return false;
|
|
247
|
+
const r = v;
|
|
248
|
+
return (typeof r.id === "string" &&
|
|
249
|
+
isInboxEventType(r.type) &&
|
|
250
|
+
typeof r.workerId === "string" &&
|
|
251
|
+
typeof r.occurredAt === "string" &&
|
|
252
|
+
typeof r.data === "object" &&
|
|
253
|
+
r.data !== null &&
|
|
254
|
+
typeof r.delivered === "boolean");
|
|
255
|
+
}
|
|
256
|
+
async function readInboxFile() {
|
|
257
|
+
await ensureDir();
|
|
258
|
+
try {
|
|
259
|
+
const raw = await readFile(INBOX_FILE(), "utf8");
|
|
260
|
+
const parsed = JSON.parse(raw);
|
|
261
|
+
if (typeof parsed !== "object" || parsed === null)
|
|
262
|
+
return emptyInboxStore();
|
|
263
|
+
const r = parsed;
|
|
264
|
+
const inboxes = {};
|
|
265
|
+
if (typeof r.inboxes === "object" && r.inboxes !== null) {
|
|
266
|
+
for (const [supId, items] of Object.entries(r.inboxes)) {
|
|
267
|
+
if (Array.isArray(items)) {
|
|
268
|
+
inboxes[supId] = items.filter(isInboxItem);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
return { version: ORCHESTRATION_VERSION, inboxes };
|
|
273
|
+
}
|
|
274
|
+
catch (err) {
|
|
275
|
+
if (err.code === "ENOENT")
|
|
276
|
+
return emptyInboxStore();
|
|
277
|
+
throw err;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
async function writeInboxFile(s) {
|
|
281
|
+
await atomicWriteJson(INBOX_FILE(), s, 0o600);
|
|
282
|
+
}
|
|
283
|
+
export async function enqueueInboxItem(supervisorId, item) {
|
|
284
|
+
return withInboxLock(async () => {
|
|
285
|
+
const s = await readInboxFile();
|
|
286
|
+
const existing = s.inboxes[supervisorId] ?? [];
|
|
287
|
+
const { delivered = false, ...rest } = item;
|
|
288
|
+
const full = { id: randomUUID(), delivered, ...rest };
|
|
289
|
+
existing.push(full);
|
|
290
|
+
const trimmed = existing.length > MAX_INBOX_ITEMS
|
|
291
|
+
? existing.slice(existing.length - MAX_INBOX_ITEMS)
|
|
292
|
+
: existing;
|
|
293
|
+
s.inboxes[supervisorId] = trimmed;
|
|
294
|
+
await writeInboxFile(s);
|
|
295
|
+
return full;
|
|
296
|
+
});
|
|
297
|
+
}
|
|
298
|
+
export async function readPendingInbox(supervisorId, opts = {}) {
|
|
299
|
+
return withInboxLock(async () => {
|
|
300
|
+
const s = await readInboxFile();
|
|
301
|
+
const items = s.inboxes[supervisorId] ?? [];
|
|
302
|
+
const pending = items.filter((it) => !it.delivered);
|
|
303
|
+
if (opts.markDelivered === true && pending.length > 0) {
|
|
304
|
+
for (const it of pending)
|
|
305
|
+
it.delivered = true;
|
|
306
|
+
s.inboxes[supervisorId] = items;
|
|
307
|
+
await writeInboxFile(s);
|
|
308
|
+
}
|
|
309
|
+
return pending.map((it) => ({ ...it }));
|
|
310
|
+
});
|
|
311
|
+
}
|
|
312
|
+
export async function readAllInbox(supervisorId) {
|
|
313
|
+
const s = await readInboxFile();
|
|
314
|
+
const items = s.inboxes[supervisorId] ?? [];
|
|
315
|
+
return items.slice().reverse();
|
|
316
|
+
}
|
|
317
|
+
export async function pendingInboxCount(supervisorId) {
|
|
318
|
+
const s = await readInboxFile();
|
|
319
|
+
const items = s.inboxes[supervisorId] ?? [];
|
|
320
|
+
return items.filter((it) => !it.delivered).length;
|
|
321
|
+
}
|
|
322
|
+
export async function clearInbox(supervisorId) {
|
|
323
|
+
await withInboxLock(async () => {
|
|
324
|
+
const s = await readInboxFile();
|
|
325
|
+
if (s.inboxes[supervisorId] === undefined)
|
|
326
|
+
return;
|
|
327
|
+
delete s.inboxes[supervisorId];
|
|
328
|
+
await writeInboxFile(s);
|
|
329
|
+
});
|
|
330
|
+
}
|
|
331
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/orchestration/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent-facing tool surface for supervisor sessions.
|
|
3
|
+
*
|
|
4
|
+
* Seven `orchestrate_*` tools, registered onto a session ONLY when
|
|
5
|
+
* that session has supervisor mode enabled. Wired through
|
|
6
|
+
* `createAgentSession({ customTools })` in session-registry.
|
|
7
|
+
*
|
|
8
|
+
* Topology is hub-and-spoke by tool surface: workers don't get
|
|
9
|
+
* these tools. Same-project enforcement: spawn_worker creates in
|
|
10
|
+
* the supervisor's project.
|
|
11
|
+
*/
|
|
12
|
+
import type { ToolDefinition } from "@earendil-works/pi-coding-agent";
|
|
13
|
+
export declare function createOrchestrationTools(supervisorId: string): ToolDefinition[];
|
|
14
|
+
export declare const ORCHESTRATION_TOOL_NAMES: readonly ["orchestrate_spawn_worker", "orchestrate_list_workers", "orchestrate_read_worker", "orchestrate_send_to_worker", "orchestrate_interrupt_worker", "orchestrate_kill_worker", "orchestrate_detach_worker", "orchestrate_read_inbox"];
|
|
15
|
+
//# sourceMappingURL=tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/orchestration/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AA4tBtE,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,MAAM,GAAG,cAAc,EAAE,CAW/E;AAED,eAAO,MAAM,wBAAwB,8OAS3B,CAAC"}
|