@monoes/monomindcli 2.10.30 → 2.10.31

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 (114) hide show
  1. package/.claude/helpers/graphify-freshen.cjs +11 -12
  2. package/.claude/helpers/handlers/capture-handler.cjs +1 -1
  3. package/dist/src/commands/analyze-diff.d.ts.map +1 -1
  4. package/dist/src/commands/analyze-diff.js +6 -0
  5. package/dist/src/commands/analyze-diff.js.map +1 -1
  6. package/dist/src/commands/doctor-project-checks.d.ts.map +1 -1
  7. package/dist/src/commands/doctor-project-checks.js +2 -2
  8. package/dist/src/commands/doctor-project-checks.js.map +1 -1
  9. package/dist/src/commands/init.d.ts.map +1 -1
  10. package/dist/src/commands/init.js.map +1 -1
  11. package/dist/src/commands/mcp.d.ts.map +1 -1
  12. package/dist/src/commands/mcp.js.map +1 -1
  13. package/dist/src/commands/org-observe.d.ts +15 -7
  14. package/dist/src/commands/org-observe.d.ts.map +1 -1
  15. package/dist/src/commands/org-observe.js +208 -63
  16. package/dist/src/commands/org-observe.js.map +1 -1
  17. package/dist/src/commands/org.d.ts.map +1 -1
  18. package/dist/src/commands/org.js +57 -4
  19. package/dist/src/commands/org.js.map +1 -1
  20. package/dist/src/commands/status.d.ts.map +1 -1
  21. package/dist/src/commands/status.js +11 -2
  22. package/dist/src/commands/status.js.map +1 -1
  23. package/dist/src/mcp-tools/system-tools.d.ts.map +1 -1
  24. package/dist/src/mcp-tools/system-tools.js.map +1 -1
  25. package/dist/src/memory/memory-kg.d.ts.map +1 -1
  26. package/dist/src/memory/memory-kg.js +10 -2
  27. package/dist/src/memory/memory-kg.js.map +1 -1
  28. package/dist/src/orgrt/agent-exec.d.ts.map +1 -1
  29. package/dist/src/orgrt/agent-exec.js +7 -3
  30. package/dist/src/orgrt/agent-exec.js.map +1 -1
  31. package/dist/src/orgrt/antigravity-runner.d.ts.map +1 -1
  32. package/dist/src/orgrt/antigravity-runner.js +6 -2
  33. package/dist/src/orgrt/antigravity-runner.js.map +1 -1
  34. package/dist/src/orgrt/approvals.d.ts +15 -1
  35. package/dist/src/orgrt/approvals.d.ts.map +1 -1
  36. package/dist/src/orgrt/approvals.js +76 -11
  37. package/dist/src/orgrt/approvals.js.map +1 -1
  38. package/dist/src/orgrt/broker.d.ts +10 -2
  39. package/dist/src/orgrt/broker.d.ts.map +1 -1
  40. package/dist/src/orgrt/broker.js +20 -5
  41. package/dist/src/orgrt/broker.js.map +1 -1
  42. package/dist/src/orgrt/checkpoint.d.ts.map +1 -1
  43. package/dist/src/orgrt/checkpoint.js.map +1 -1
  44. package/dist/src/orgrt/cross-org.d.ts +15 -2
  45. package/dist/src/orgrt/cross-org.d.ts.map +1 -1
  46. package/dist/src/orgrt/cross-org.js +169 -16
  47. package/dist/src/orgrt/cross-org.js.map +1 -1
  48. package/dist/src/orgrt/daemon.d.ts +31 -3
  49. package/dist/src/orgrt/daemon.d.ts.map +1 -1
  50. package/dist/src/orgrt/daemon.js +132 -21
  51. package/dist/src/orgrt/daemon.js.map +1 -1
  52. package/dist/src/orgrt/decisions.d.ts.map +1 -1
  53. package/dist/src/orgrt/decisions.js +13 -1
  54. package/dist/src/orgrt/decisions.js.map +1 -1
  55. package/dist/src/orgrt/endpoint-roles.d.ts +86 -0
  56. package/dist/src/orgrt/endpoint-roles.d.ts.map +1 -0
  57. package/dist/src/orgrt/endpoint-roles.js +364 -0
  58. package/dist/src/orgrt/endpoint-roles.js.map +1 -0
  59. package/dist/src/orgrt/inbox.d.ts +18 -0
  60. package/dist/src/orgrt/inbox.d.ts.map +1 -1
  61. package/dist/src/orgrt/inbox.js +73 -0
  62. package/dist/src/orgrt/inbox.js.map +1 -1
  63. package/dist/src/orgrt/migrate.d.ts.map +1 -1
  64. package/dist/src/orgrt/migrate.js +3 -0
  65. package/dist/src/orgrt/migrate.js.map +1 -1
  66. package/dist/src/orgrt/opencode-runner.d.ts.map +1 -1
  67. package/dist/src/orgrt/opencode-runner.js +2 -1
  68. package/dist/src/orgrt/opencode-runner.js.map +1 -1
  69. package/dist/src/orgrt/pi-rpc-runner.d.ts.map +1 -1
  70. package/dist/src/orgrt/pi-rpc-runner.js +6 -2
  71. package/dist/src/orgrt/pi-rpc-runner.js.map +1 -1
  72. package/dist/src/orgrt/policy.d.ts +22 -1
  73. package/dist/src/orgrt/policy.d.ts.map +1 -1
  74. package/dist/src/orgrt/policy.js +36 -4
  75. package/dist/src/orgrt/policy.js.map +1 -1
  76. package/dist/src/orgrt/questions.d.ts +3 -1
  77. package/dist/src/orgrt/questions.d.ts.map +1 -1
  78. package/dist/src/orgrt/questions.js +19 -3
  79. package/dist/src/orgrt/questions.js.map +1 -1
  80. package/dist/src/orgrt/qwen-rpc-runner.d.ts.map +1 -1
  81. package/dist/src/orgrt/qwen-rpc-runner.js +3 -1
  82. package/dist/src/orgrt/qwen-rpc-runner.js.map +1 -1
  83. package/dist/src/orgrt/role-slot.d.ts +1 -2
  84. package/dist/src/orgrt/role-slot.d.ts.map +1 -1
  85. package/dist/src/orgrt/role-slot.js +2 -1
  86. package/dist/src/orgrt/role-slot.js.map +1 -1
  87. package/dist/src/orgrt/scheduler-integration.d.ts.map +1 -1
  88. package/dist/src/orgrt/scheduler-integration.js +8 -1
  89. package/dist/src/orgrt/scheduler-integration.js.map +1 -1
  90. package/dist/src/orgrt/server.d.ts.map +1 -1
  91. package/dist/src/orgrt/server.js +43 -8
  92. package/dist/src/orgrt/server.js.map +1 -1
  93. package/dist/src/orgrt/session.d.ts +12 -1
  94. package/dist/src/orgrt/session.d.ts.map +1 -1
  95. package/dist/src/orgrt/session.js +20 -3
  96. package/dist/src/orgrt/session.js.map +1 -1
  97. package/dist/src/orgrt/tool-providers.d.ts +110 -0
  98. package/dist/src/orgrt/tool-providers.d.ts.map +1 -0
  99. package/dist/src/orgrt/tool-providers.js +617 -0
  100. package/dist/src/orgrt/tool-providers.js.map +1 -0
  101. package/dist/src/orgrt/types.d.ts +72 -0
  102. package/dist/src/orgrt/types.d.ts.map +1 -1
  103. package/dist/src/orgrt/types.js +56 -0
  104. package/dist/src/orgrt/types.js.map +1 -1
  105. package/dist/src/protocol-capabilities.d.ts +7 -1
  106. package/dist/src/protocol-capabilities.d.ts.map +1 -1
  107. package/dist/src/protocol-capabilities.js +15 -1
  108. package/dist/src/protocol-capabilities.js.map +1 -1
  109. package/dist/src/ui/routes-org.mjs +9 -7
  110. package/dist/src/utils/native-error.d.ts.map +1 -1
  111. package/dist/src/utils/native-error.js +9 -5
  112. package/dist/src/utils/native-error.js.map +1 -1
  113. package/dist/tsconfig.tsbuildinfo +1 -1
  114. package/package.json +2 -2
@@ -0,0 +1,364 @@
1
+ // packages/@monomind/cli/src/orgrt/endpoint-roles.ts
2
+ /**
3
+ * Endpoint roles (M2, capability `org-endpoint-roles`).
4
+ *
5
+ * A role with `kind: "endpoint"` is not an agent: it has no session, mailbox,
6
+ * policy engine, slot or budget. A message addressed to it is POSTed to
7
+ * `endpoint.url` (an automation — e.g. a mono-agent workflow), which replies
8
+ * later through `/api/xdeliver` as `<org>:<role>`.
9
+ *
10
+ * POST <endpoint.url>
11
+ * content-type: application/json
12
+ * authorization: Bearer <credential_file contents> (only if credential_file)
13
+ * {"orgName","run","from","to","subject","body","messageId"}
14
+ *
15
+ * 2xx = delivered. Anything else queues the message (`inbox.jsonl`,
16
+ * `endpoint: true`) and retries after 1 s, 5 s and 15 s; after the third
17
+ * failure an `endpoint-unreachable` audit event is emitted and the message
18
+ * stays queued. While the org runs, queued endpoint entries are re-attempted
19
+ * every 60 s, and `startOrg`'s drain delivers them too.
20
+ */
21
+ import { readFileSync, statSync } from 'node:fs';
22
+ import { isAbsolute } from 'node:path';
23
+ import { newMessageId, peekInbox, queueMessage, takeQueued } from './inbox.js';
24
+ export const ENDPOINT_POST_TIMEOUT_MS = 15_000;
25
+ export const DEFAULT_ENDPOINT_WAIT_MS = 600_000;
26
+ export const ENDPOINT_RETRY_MS = [1_000, 5_000, 15_000];
27
+ export const ENDPOINT_PERIODIC_RETRY_MS = 60_000;
28
+ /** Keys an endpoint role may not carry (it is not an agent). */
29
+ export const ENDPOINT_FORBIDDEN_KEYS = [
30
+ 'policy',
31
+ 'runtime',
32
+ 'adapter_config',
33
+ 'budget_tokens',
34
+ 'budget_usd',
35
+ 'tool_providers',
36
+ ];
37
+ export function isEndpointRole(role) {
38
+ return role?.kind === 'endpoint';
39
+ }
40
+ /** Roles that get sessions — everything except endpoint roles. */
41
+ export function agentRoles(roles) {
42
+ return roles.filter((r) => !isEndpointRole(r));
43
+ }
44
+ export function findEndpointRole(def, roleId) {
45
+ const role = def?.roles.find((r) => r.id === roleId);
46
+ return role && isEndpointRole(role) ? role : undefined;
47
+ }
48
+ /** `org validate` rules for endpoint roles. */
49
+ export function endpointStructureErrors(def) {
50
+ const errors = [];
51
+ for (const r of def.roles) {
52
+ if (!isEndpointRole(r))
53
+ continue;
54
+ const rec = r;
55
+ if (r.reports_to === null)
56
+ errors.push(`endpoint role "${r.id}" may not be the root role`);
57
+ if (!r.endpoint?.url)
58
+ errors.push(`endpoint role "${r.id}" needs endpoint.url`);
59
+ for (const k of ENDPOINT_FORBIDDEN_KEYS)
60
+ if (rec[k] !== undefined)
61
+ errors.push(`endpoint role "${r.id}" may not have "${k}"`);
62
+ const cred = r.endpoint?.credential_file;
63
+ if (cred !== undefined && !isAbsolute(cred))
64
+ errors.push(`endpoint role "${r.id}": endpoint.credential_file must be an absolute path`);
65
+ }
66
+ return errors;
67
+ }
68
+ /** Boss briefing: one line per endpoint role. */
69
+ export function endpointBriefingLines(def) {
70
+ if (!def)
71
+ return [];
72
+ return def.roles.filter(isEndpointRole).map((r) => {
73
+ const hint = r.endpoint?.input_hint?.trim();
74
+ return `- ${r.id} (${r.title || r.type}) is an automation, not an agent. Message it with org_send; it replies with its result.${hint ? ` ${hint}` : ''}`;
75
+ });
76
+ }
77
+ /** Read `credential_file` at delivery time (rotation needs no restart). It
78
+ * must be absolute, mode 0600 and owned by the daemon's user. */
79
+ export function readEndpointCredential(file) {
80
+ if (!file)
81
+ return { ok: true };
82
+ if (!isAbsolute(file))
83
+ return { ok: false, insecure: true, error: `credential_file ${file} is not an absolute path` };
84
+ let st;
85
+ try {
86
+ st = statSync(file);
87
+ }
88
+ catch (err) {
89
+ return {
90
+ ok: false,
91
+ insecure: false,
92
+ error: `credential_file unreadable: ${err instanceof Error ? err.message : String(err)}`,
93
+ };
94
+ }
95
+ if (process.platform !== 'win32') {
96
+ const mode = Number(st.mode) & 0o777;
97
+ if (mode !== 0o600)
98
+ return {
99
+ ok: false,
100
+ insecure: true,
101
+ error: `credential_file ${file} has mode ${mode.toString(8).padStart(4, '0')} (must be 0600)`,
102
+ };
103
+ const uid = typeof process.getuid === 'function' ? process.getuid() : undefined;
104
+ if (uid !== undefined && Number(st.uid) !== uid)
105
+ return {
106
+ ok: false,
107
+ insecure: true,
108
+ error: `credential_file ${file} is owned by uid ${st.uid}, not the daemon user (${uid})`,
109
+ };
110
+ }
111
+ try {
112
+ const value = readFileSync(file, 'utf8').trim();
113
+ return { ok: true, token: value };
114
+ }
115
+ catch (err) {
116
+ return {
117
+ ok: false,
118
+ insecure: false,
119
+ error: `credential_file unreadable: ${err instanceof Error ? err.message : String(err)}`,
120
+ };
121
+ }
122
+ }
123
+ export async function postToEndpoint(role, payload, timeoutMs = ENDPOINT_POST_TIMEOUT_MS) {
124
+ const url = role.endpoint?.url;
125
+ if (!url)
126
+ return { ok: false, error: `role "${role.id}" has no endpoint.url` };
127
+ const cred = readEndpointCredential(role.endpoint?.credential_file);
128
+ if (!cred.ok)
129
+ return cred;
130
+ try {
131
+ const res = await fetch(url, {
132
+ method: 'POST',
133
+ headers: {
134
+ 'content-type': 'application/json',
135
+ ...(cred.token ? { authorization: `Bearer ${cred.token}` } : {}),
136
+ },
137
+ body: JSON.stringify(payload),
138
+ signal: AbortSignal.timeout(timeoutMs),
139
+ });
140
+ // Drain the body so the connection is released.
141
+ await res.text().catch(() => '');
142
+ if (res.status >= 200 && res.status < 300)
143
+ return { ok: true, status: res.status };
144
+ return { ok: false, error: `HTTP ${res.status}` };
145
+ }
146
+ catch (err) {
147
+ return { ok: false, error: err instanceof Error ? err.message : String(err) };
148
+ }
149
+ }
150
+ export function recordEndpointWait(org, role, messageId) {
151
+ if (!org.endpointWaits)
152
+ org.endpointWaits = [];
153
+ org.endpointWaits.push({
154
+ role: role.id,
155
+ messageId,
156
+ until: Date.now() + (role.endpoint?.timeout_ms ?? DEFAULT_ENDPOINT_WAIT_MS),
157
+ });
158
+ }
159
+ /** A message from `<org>:<endpointRole>` (or `<endpointRole>`) clears that
160
+ * role's oldest wait. */
161
+ export function clearEndpointWait(org, orgName, from) {
162
+ const waits = org.endpointWaits;
163
+ if (!waits?.length)
164
+ return;
165
+ const role = from.startsWith(`${orgName}:`) ? from.slice(orgName.length + 1) : from;
166
+ const idx = waits.findIndex((w) => w.role === role);
167
+ if (idx !== -1)
168
+ waits.splice(idx, 1);
169
+ }
170
+ /** True while any endpoint wait is unexpired (expired ones are pruned). */
171
+ export function hasActiveEndpointWait(org, now = Date.now()) {
172
+ if (!org.endpointWaits?.length)
173
+ return false;
174
+ org.endpointWaits = org.endpointWaits.filter((w) => w.until > now);
175
+ return org.endpointWaits.length > 0;
176
+ }
177
+ const retryStates = new WeakMap();
178
+ function stateFor(daemon, org) {
179
+ let byOrg = retryStates.get(daemon);
180
+ if (!byOrg) {
181
+ byOrg = new Map();
182
+ retryStates.set(daemon, byOrg);
183
+ }
184
+ let st = byOrg.get(org);
185
+ if (!st) {
186
+ st = { timers: new Set(), scheduled: new Set(), insecureReported: new Set() };
187
+ byOrg.set(org, st);
188
+ }
189
+ return st;
190
+ }
191
+ function toQualified(orgName, roleId) {
192
+ return `${orgName}:${roleId}`;
193
+ }
194
+ /** One POST attempt; on success emits the delivery event(s) and records the
195
+ * watchdog wait; on an insecure credential emits the audit event. */
196
+ async function attempt(daemon, orgName, org, role, msg, emitTo, eventTo) {
197
+ const result = await postToEndpoint(role, {
198
+ orgName,
199
+ run: org.run,
200
+ from: msg.from,
201
+ to: toQualified(orgName, role.id),
202
+ subject: msg.subject,
203
+ body: msg.body,
204
+ messageId: msg.messageId,
205
+ }, daemon.opts.endpointPostTimeoutMs);
206
+ if (result.ok) {
207
+ const cross = msg.from.includes(':') && !msg.from.startsWith(`${orgName}:`);
208
+ for (const target of emitTo) {
209
+ target.bus.emit({
210
+ type: cross ? 'xorg' : 'message',
211
+ from: msg.from,
212
+ to: eventTo,
213
+ subject: msg.subject,
214
+ msg: msg.body,
215
+ data: { messageId: msg.messageId, endpoint: true },
216
+ });
217
+ }
218
+ recordEndpointWait(org, role, msg.messageId);
219
+ return result;
220
+ }
221
+ if (result.insecure) {
222
+ const st = stateFor(daemon, orgName);
223
+ if (!st.insecureReported.has(msg.messageId)) {
224
+ st.insecureReported.add(msg.messageId);
225
+ org.bus.emit({
226
+ type: 'audit',
227
+ from: role.id,
228
+ reason: 'endpoint-credential-insecure',
229
+ msg: `endpoint role "${role.id}": ${result.error} — not delivering, message queued`,
230
+ data: { role: role.id, messageId: msg.messageId, error: result.error },
231
+ });
232
+ }
233
+ }
234
+ return result;
235
+ }
236
+ /** deliver()/receiveRemote() leg for a target that is an endpoint role. */
237
+ export async function deliverToEndpoint(daemon, args) {
238
+ const { orgName, org, role, messageId } = args;
239
+ const to = toQualified(orgName, role.id);
240
+ const emitTo = args.src && args.src !== org ? [args.src, org] : [org];
241
+ const result = await attempt(daemon, orgName, org, role, { from: args.from, subject: args.subject, body: args.body, messageId }, emitTo, args.eventTo ?? to);
242
+ if (result.ok)
243
+ return `delivered to ${to} (endpoint)`;
244
+ const queued = queueMessage(daemon.root, orgName, {
245
+ fromQualified: args.from,
246
+ toRole: role.id,
247
+ subject: args.subject,
248
+ body: args.body,
249
+ ts: Date.now(),
250
+ messageId,
251
+ endpoint: true,
252
+ });
253
+ if (!queued)
254
+ return `ERROR: could not queue message for ${to} (disk full or permissions)`;
255
+ if (result.insecure)
256
+ return `queued for ${to} (endpoint credential insecure: ${result.error} — not delivered)`;
257
+ scheduleEndpointRetries(daemon, orgName, messageId, role.id);
258
+ return `queued for ${to} (endpoint unreachable: ${result.error} — retrying)`;
259
+ }
260
+ /** Take matching queued endpoint entries and POST them; failures are
261
+ * re-queued. Returns the last error per messageId that stayed queued. */
262
+ export async function retryQueuedEndpoints(daemon, orgName, predicate = () => true) {
263
+ const delivered = [];
264
+ const failed = new Map();
265
+ const org = daemon.orgs.get(orgName);
266
+ if (!org)
267
+ return { delivered, failed };
268
+ const isTarget = (m) => !!findEndpointRole(org.def, m.toRole) && predicate(m);
269
+ if (!peekInbox(daemon.root, orgName).some(isTarget))
270
+ return { delivered, failed };
271
+ const taken = takeQueued(daemon.root, orgName, isTarget);
272
+ for (const m of taken) {
273
+ const role = findEndpointRole(org.def, m.toRole);
274
+ const messageId = m.messageId ?? newMessageId();
275
+ const result = role
276
+ ? await attempt(daemon, orgName, org, role, { from: m.fromQualified, subject: m.subject, body: m.body, messageId }, [org], toQualified(orgName, m.toRole))
277
+ : { ok: false, error: 'role is no longer an endpoint role' };
278
+ if (result.ok) {
279
+ delivered.push(messageId);
280
+ }
281
+ else {
282
+ failed.set(messageId, result.error);
283
+ queueMessage(daemon.root, orgName, { ...m, messageId, endpoint: true });
284
+ }
285
+ }
286
+ return { delivered, failed };
287
+ }
288
+ /** 1 s / 5 s / 15 s retries for one queued message; after the last failure
289
+ * emit `endpoint-unreachable` and leave it queued for the periodic sweep. */
290
+ export function scheduleEndpointRetries(daemon, orgName, messageId, roleId) {
291
+ const st = stateFor(daemon, orgName);
292
+ if (st.scheduled.has(messageId))
293
+ return;
294
+ st.scheduled.add(messageId);
295
+ const delays = daemon.opts.endpointRetryMs ?? ENDPOINT_RETRY_MS;
296
+ const step = (i) => {
297
+ if (i >= delays.length)
298
+ return;
299
+ const t = setTimeout(async () => {
300
+ st.timers.delete(t);
301
+ if (!daemon.orgs.has(orgName)) {
302
+ st.scheduled.delete(messageId);
303
+ return;
304
+ }
305
+ const { delivered, failed } = await retryQueuedEndpoints(daemon, orgName, (m) => m.messageId === messageId);
306
+ if (delivered.includes(messageId) || !failed.has(messageId)) {
307
+ // Delivered, or no longer queued (another path took it).
308
+ st.scheduled.delete(messageId);
309
+ return;
310
+ }
311
+ if (i === delays.length - 1) {
312
+ st.scheduled.delete(messageId);
313
+ const error = failed.get(messageId);
314
+ daemon.orgs.get(orgName)?.bus.emit({
315
+ type: 'audit',
316
+ from: roleId,
317
+ reason: 'endpoint-unreachable',
318
+ msg: `endpoint role "${roleId}" unreachable after ${delays.length} retries (${error}) — message stays queued`,
319
+ data: { role: roleId, messageId, error },
320
+ });
321
+ return;
322
+ }
323
+ step(i + 1);
324
+ }, delays[i]);
325
+ t.unref?.();
326
+ st.timers.add(t);
327
+ };
328
+ step(0);
329
+ }
330
+ /** Periodic (60 s) re-attempt of queued endpoint entries while `org` runs.
331
+ * Entries still on their 1/5/15 s schedule are skipped. */
332
+ export function startEndpointRetryLoop(daemon, orgName) {
333
+ const st = stateFor(daemon, orgName);
334
+ if (st.periodic)
335
+ clearInterval(st.periodic);
336
+ st.periodic = setInterval(async () => {
337
+ if (st.sweeping || !daemon.orgs.has(orgName))
338
+ return;
339
+ st.sweeping = true;
340
+ try {
341
+ await retryQueuedEndpoints(daemon, orgName, (m) => !m.messageId || !st.scheduled.has(m.messageId));
342
+ }
343
+ catch {
344
+ /* best-effort — next sweep retries */
345
+ }
346
+ finally {
347
+ st.sweeping = false;
348
+ }
349
+ }, daemon.opts.endpointPeriodicRetryMs ?? ENDPOINT_PERIODIC_RETRY_MS);
350
+ st.periodic.unref?.();
351
+ }
352
+ /** Stop every retry timer for `org` (stopOrg). Queued entries stay queued. */
353
+ export function stopEndpointRetries(daemon, orgName) {
354
+ const byOrg = retryStates.get(daemon);
355
+ const st = byOrg?.get(orgName);
356
+ if (!st)
357
+ return;
358
+ if (st.periodic)
359
+ clearInterval(st.periodic);
360
+ for (const t of st.timers)
361
+ clearTimeout(t);
362
+ byOrg?.delete(orgName);
363
+ }
364
+ //# sourceMappingURL=endpoint-roles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint-roles.js","sourceRoot":"","sources":["../../../src/orgrt/endpoint-roles.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,16 @@
1
+ /** M3: id of one logical message — `msg-<ms>-<8 hex>` — generated once at the
2
+ * message's origin and carried on every bus copy and queue entry. */
3
+ export declare function newMessageId(): string;
1
4
  export interface QueuedMessage {
2
5
  fromQualified: string;
3
6
  toRole: string;
4
7
  subject: string;
5
8
  body: string;
6
9
  ts: number;
10
+ /** M3: origin message id, re-used when the queue is drained. */
11
+ messageId?: string;
12
+ /** M2: queued for an endpoint role (retried by POST, never drained into a mailbox). */
13
+ endpoint?: boolean;
7
14
  /** Structured handoff context (rich metadata for role transitions) */
8
15
  context?: {
9
16
  summary?: string;
@@ -15,5 +22,16 @@ export interface QueuedMessage {
15
22
  }
16
23
  export declare function queueMessage(root: string, orgName: string, msg: QueuedMessage): boolean;
17
24
  export declare function drainInbox(root: string, orgName: string): QueuedMessage[];
25
+ /** Non-destructive read of the queue (pending file plus an interrupted drain). */
26
+ export declare function peekInbox(root: string, orgName: string): QueuedMessage[];
27
+ /** Remove and return the queued messages matching `predicate`; every other
28
+ * message is put back. M2 uses it to retry endpoint entries while leaving
29
+ * other queued messages in place.
30
+ *
31
+ * The snapshot is renamed to `.draining` (which drainInbox recovers after a
32
+ * crash) and only unlinked AFTER the untouched messages were appended back,
33
+ * so a crash can at worst duplicate a message, never lose one — and a
34
+ * concurrent peekInbox never sees the untouched messages disappear. */
35
+ export declare function takeQueued(root: string, orgName: string, predicate: (m: QueuedMessage) => boolean): QueuedMessage[];
18
36
  export declare function inboxCount(root: string, orgName: string): number;
19
37
  //# sourceMappingURL=inbox.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"inbox.d.ts","sourceRoot":"","sources":["../../../src/orgrt/inbox.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,sEAAsE;IACtE,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;QACzB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACpC,CAAC;CACH;AAMD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,GAAG,OAAO,CAevF;AAeD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa,EAAE,CAmDzE;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAMhE"}
1
+ {"version":3,"file":"inbox.d.ts","sourceRoot":"","sources":["../../../src/orgrt/inbox.ts"],"names":[],"mappings":"AAgBA;sEACsE;AACtE,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uFAAuF;IACvF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sEAAsE;IACtE,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;QACzB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACpC,CAAC;CACH;AAMD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,GAAG,OAAO,CAevF;AAeD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa,EAAE,CAmDzE;AAED,kFAAkF;AAClF,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa,EAAE,CAWxE;AAED;;;;;;;wEAOwE;AACxE,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,CAAC,CAAC,EAAE,aAAa,KAAK,OAAO,GACvC,aAAa,EAAE,CAoCjB;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAMhE"}
@@ -1,9 +1,15 @@
1
1
  // packages/@monomind/cli/src/orgrt/inbox.ts
2
2
  // Persistent message queue for offline orgs. Messages that can't be delivered
3
3
  // (target org not running) are spooled here and drained when the org starts.
4
+ import { randomBytes } from 'node:crypto';
4
5
  import { appendFileSync, existsSync, mkdirSync, readFileSync, renameSync, unlinkSync, } from 'node:fs';
5
6
  import { join } from 'node:path';
6
7
  import { ORG_DIR } from './types.js';
8
+ /** M3: id of one logical message — `msg-<ms>-<8 hex>` — generated once at the
9
+ * message's origin and carried on every bus copy and queue entry. */
10
+ export function newMessageId() {
11
+ return `msg-${Date.now()}-${randomBytes(4).toString('hex')}`;
12
+ }
7
13
  function inboxPath(root, orgName) {
8
14
  return join(root, ORG_DIR, orgName, 'inbox.jsonl');
9
15
  }
@@ -90,6 +96,73 @@ export function drainInbox(root, orgName) {
90
96
  }
91
97
  return msgs;
92
98
  }
99
+ /** Non-destructive read of the queue (pending file plus an interrupted drain). */
100
+ export function peekInbox(root, orgName) {
101
+ const path = inboxPath(root, orgName);
102
+ const msgs = [];
103
+ for (const f of [`${path}.draining`, path]) {
104
+ try {
105
+ if (existsSync(f))
106
+ msgs.push(...parseLines(readFileSync(f, 'utf8')));
107
+ }
108
+ catch {
109
+ /* unreadable — treat as empty */
110
+ }
111
+ }
112
+ return msgs;
113
+ }
114
+ /** Remove and return the queued messages matching `predicate`; every other
115
+ * message is put back. M2 uses it to retry endpoint entries while leaving
116
+ * other queued messages in place.
117
+ *
118
+ * The snapshot is renamed to `.draining` (which drainInbox recovers after a
119
+ * crash) and only unlinked AFTER the untouched messages were appended back,
120
+ * so a crash can at worst duplicate a message, never lose one — and a
121
+ * concurrent peekInbox never sees the untouched messages disappear. */
122
+ export function takeQueued(root, orgName, predicate) {
123
+ const path = inboxPath(root, orgName);
124
+ const draining = `${path}.draining`;
125
+ if (existsSync(draining) || !existsSync(path)) {
126
+ // An interrupted drain is pending recovery (or nothing is queued) — use
127
+ // the recovering drain instead of renaming over it.
128
+ const all = drainInbox(root, orgName);
129
+ const taken = [];
130
+ for (const m of all) {
131
+ if (predicate(m))
132
+ taken.push(m);
133
+ else
134
+ queueMessage(root, orgName, m);
135
+ }
136
+ return taken;
137
+ }
138
+ try {
139
+ renameSync(path, draining);
140
+ }
141
+ catch {
142
+ return [];
143
+ }
144
+ let msgs;
145
+ try {
146
+ msgs = parseLines(readFileSync(draining, 'utf8'));
147
+ }
148
+ catch {
149
+ return []; // leave .draining for the next drain to recover
150
+ }
151
+ const taken = [];
152
+ for (const m of msgs) {
153
+ if (predicate(m))
154
+ taken.push(m);
155
+ else if (!queueMessage(root, orgName, m))
156
+ return []; // keep .draining; nothing lost
157
+ }
158
+ try {
159
+ unlinkSync(draining);
160
+ }
161
+ catch {
162
+ /* recovered (possibly duplicated) by the next drain */
163
+ }
164
+ return taken;
165
+ }
93
166
  export function inboxCount(root, orgName) {
94
167
  const path = inboxPath(root, orgName);
95
168
  if (!existsSync(path))
@@ -1 +1 @@
1
- {"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../../src/orgrt/inbox.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../../src/orgrt/inbox.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../../src/orgrt/migrate.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,YAAY,CAAC;AAsBvD;;;;;yBAKyB;AACzB,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,GAAG,UAAU,CAAC,GAAG,MAAM,EAAE,CAmBnF;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAC9D,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAuDA;AAED;;;;;;+CAM+C;AAC/C,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GACjB;IACD,MAAM,EAAE,UAAU,GAAG,YAAY,CAAC;IAClC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAoBA"}
1
+ {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../../src/orgrt/migrate.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,YAAY,CAAC;AAsBvD;;;;;yBAKyB;AACzB,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,GAAG,UAAU,CAAC,GAAG,MAAM,EAAE,CAqBnF;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAC9D,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAuDA;AAED;;;;;;+CAM+C;AAC/C,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GACjB;IACD,MAAM,EAAE,UAAU,GAAG,YAAY,CAAC;IAClC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAoBA"}
@@ -5,6 +5,7 @@
5
5
  * that only does the name-validation / isOrgRunning guard and delegates here. */
6
6
  import { existsSync, readFileSync } from 'node:fs';
7
7
  import { writeJsonFileAtomic } from '../utils/json-file.js';
8
+ import { endpointStructureErrors } from './endpoint-roles.js';
8
9
  import { parseSchedule } from './scheduler.js';
9
10
  import { OrgDefSchema } from './types.js';
10
11
  const V1_TOP_LEVEL_KEYS = [
@@ -51,6 +52,8 @@ export function checkOrgStructure(def) {
51
52
  }
52
53
  if (def.schedule != null && parseSchedule(def.schedule) === null)
53
54
  errors.push(`schedule "${def.schedule}" is not parseable — use "<N>s", "<N>m", or "<N>h"`);
55
+ // M2: endpoint roles are automations, not agents.
56
+ errors.push(...endpointStructureErrors(def));
54
57
  return errors;
55
58
  }
56
59
  export function migrateOrgConfig(raw) {
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../../src/orgrt/migrate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../../src/orgrt/migrate.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"opencode-runner.d.ts","sourceRoot":"","sources":["../../../src/orgrt/opencode-runner.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmEG;AAEH,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,WAAW,EAEjB,MAAM,mBAAmB,CAAC;AAoB3B,qBAAa,mBAAoB,YAAW,WAAW;IACzC,OAAO,CAAC,WAAW,CAAC;IAAhC,YAAoB,WAAW,CAAC,EAAE,MAAM,YAAA,EAAI;IAErC,GAAG,CAAC,IAAI,EAAE,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC,CAkU1D;CACF"}
1
+ {"version":3,"file":"opencode-runner.d.ts","sourceRoot":"","sources":["../../../src/orgrt/opencode-runner.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmEG;AAEH,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,WAAW,EAEjB,MAAM,mBAAmB,CAAC;AAoB3B,qBAAa,mBAAoB,YAAW,WAAW;IACzC,OAAO,CAAC,WAAW,CAAC;IAAhC,YAAoB,WAAW,CAAC,EAAE,MAAM,YAAA,EAAI;IAErC,GAAG,CAAC,IAAI,EAAE,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC,CAqU1D;CACF"}
@@ -311,7 +311,8 @@ export class OpencodeAgentRunner {
311
311
  // "only text parts matter" scope.
312
312
  }
313
313
  const tokens = finalTokens ?? {};
314
- turnInputTokens += (tokens.input ?? 0) + (tokens.cache?.read ?? 0) + (tokens.cache?.write ?? 0);
314
+ turnInputTokens +=
315
+ (tokens.input ?? 0) + (tokens.cache?.read ?? 0) + (tokens.cache?.write ?? 0);
315
316
  turnOutputTokens += tokens.output ?? 0;
316
317
  turnCost += finalCost ?? 0;
317
318
  // Final reconciliation, one texts[] entry per text part — matching