@geminilight/mindos 1.1.51 → 1.1.53

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 (136) hide show
  1. package/dist/agent/bridges/runtime-permission-bridge.d.ts +9 -6
  2. package/dist/agent/bridges/runtime-permission-bridge.d.ts.map +1 -1
  3. package/dist/agent/bridges/runtime-permission-bridge.js +48 -37
  4. package/dist/agent/bridges/runtime-permission-bridge.js.map +1 -1
  5. package/dist/agent/global-state.d.ts +13 -0
  6. package/dist/agent/global-state.d.ts.map +1 -1
  7. package/dist/agent/global-state.js +13 -0
  8. package/dist/agent/global-state.js.map +1 -1
  9. package/dist/agent/ledger/artifact-ledger.d.ts +84 -0
  10. package/dist/agent/ledger/artifact-ledger.d.ts.map +1 -0
  11. package/dist/agent/ledger/artifact-ledger.js +421 -0
  12. package/dist/agent/ledger/artifact-ledger.js.map +1 -0
  13. package/dist/agent/ledger/index.d.ts +1 -0
  14. package/dist/agent/ledger/index.d.ts.map +1 -1
  15. package/dist/agent/ledger/index.js +1 -0
  16. package/dist/agent/ledger/index.js.map +1 -1
  17. package/dist/agent/mindos-pi/permission/policy.d.ts +2 -1
  18. package/dist/agent/mindos-pi/permission/policy.d.ts.map +1 -1
  19. package/dist/agent/mindos-pi/permission/policy.js +3 -3
  20. package/dist/agent/mindos-pi/permission/policy.js.map +1 -1
  21. package/dist/agent/runtime/adapter-contracts.d.ts.map +1 -1
  22. package/dist/agent/runtime/adapter-contracts.js +38 -0
  23. package/dist/agent/runtime/adapter-contracts.js.map +1 -1
  24. package/dist/agent/runtime/adapter-output.d.ts +6 -0
  25. package/dist/agent/runtime/adapter-output.d.ts.map +1 -0
  26. package/dist/agent/runtime/adapter-output.js +48 -0
  27. package/dist/agent/runtime/adapter-output.js.map +1 -0
  28. package/dist/agent/runtime/capabilities.d.ts +2 -1
  29. package/dist/agent/runtime/capabilities.d.ts.map +1 -1
  30. package/dist/agent/runtime/capabilities.js +7 -0
  31. package/dist/agent/runtime/capabilities.js.map +1 -1
  32. package/dist/agent/runtime/catalog.d.ts +97 -0
  33. package/dist/agent/runtime/catalog.d.ts.map +1 -0
  34. package/dist/agent/runtime/catalog.js +261 -0
  35. package/dist/agent/runtime/catalog.js.map +1 -0
  36. package/dist/agent/runtime/compatibility.d.ts.map +1 -1
  37. package/dist/agent/runtime/compatibility.js +13 -11
  38. package/dist/agent/runtime/compatibility.js.map +1 -1
  39. package/dist/agent/runtime/descriptors.d.ts.map +1 -1
  40. package/dist/agent/runtime/descriptors.js +4 -3
  41. package/dist/agent/runtime/descriptors.js.map +1 -1
  42. package/dist/agent/runtime/detection.d.ts.map +1 -1
  43. package/dist/agent/runtime/detection.js +57 -0
  44. package/dist/agent/runtime/detection.js.map +1 -1
  45. package/dist/agent/runtime/extension-manifest.d.ts +115 -0
  46. package/dist/agent/runtime/extension-manifest.d.ts.map +1 -0
  47. package/dist/agent/runtime/extension-manifest.js +383 -0
  48. package/dist/agent/runtime/extension-manifest.js.map +1 -0
  49. package/dist/agent/runtime/index.d.ts +2 -0
  50. package/dist/agent/runtime/index.d.ts.map +1 -1
  51. package/dist/agent/runtime/index.js +2 -0
  52. package/dist/agent/runtime/index.js.map +1 -1
  53. package/dist/agent/runtime/registry.d.ts +21 -3
  54. package/dist/agent/runtime/registry.d.ts.map +1 -1
  55. package/dist/agent/runtime/registry.js +16 -5
  56. package/dist/agent/runtime/registry.js.map +1 -1
  57. package/dist/agent/runtime/run.d.ts +1 -1
  58. package/dist/agent/runtime/run.d.ts.map +1 -1
  59. package/dist/agent/turn/index.d.ts +22 -7
  60. package/dist/agent/turn/index.d.ts.map +1 -1
  61. package/dist/agent/turn/index.js +51 -2
  62. package/dist/agent/turn/index.js.map +1 -1
  63. package/dist/protocols/acp/agent-descriptors.d.ts +2 -1
  64. package/dist/protocols/acp/agent-descriptors.d.ts.map +1 -1
  65. package/dist/protocols/acp/agent-descriptors.js +89 -11
  66. package/dist/protocols/acp/agent-descriptors.js.map +1 -1
  67. package/dist/protocols/acp/detect-local.d.ts.map +1 -1
  68. package/dist/protocols/acp/detect-local.js +6 -4
  69. package/dist/protocols/acp/detect-local.js.map +1 -1
  70. package/dist/protocols/acp/handshake-health.d.ts +63 -0
  71. package/dist/protocols/acp/handshake-health.d.ts.map +1 -0
  72. package/dist/protocols/acp/handshake-health.js +113 -0
  73. package/dist/protocols/acp/handshake-health.js.map +1 -0
  74. package/dist/protocols/acp/index.d.ts +5 -1
  75. package/dist/protocols/acp/index.d.ts.map +1 -1
  76. package/dist/protocols/acp/index.js +28 -26
  77. package/dist/protocols/acp/index.js.map +1 -1
  78. package/dist/protocols/acp/mcp-session-inheritance.d.ts +50 -0
  79. package/dist/protocols/acp/mcp-session-inheritance.d.ts.map +1 -0
  80. package/dist/protocols/acp/mcp-session-inheritance.js +173 -0
  81. package/dist/protocols/acp/mcp-session-inheritance.js.map +1 -0
  82. package/dist/protocols/acp/session.d.ts +8 -1
  83. package/dist/protocols/acp/session.d.ts.map +1 -1
  84. package/dist/protocols/acp/session.js +271 -13
  85. package/dist/protocols/acp/session.js.map +1 -1
  86. package/dist/protocols/acp/subprocess.d.ts +9 -2
  87. package/dist/protocols/acp/subprocess.d.ts.map +1 -1
  88. package/dist/protocols/acp/subprocess.js +149 -31
  89. package/dist/protocols/acp/subprocess.js.map +1 -1
  90. package/dist/protocols/acp/types.d.ts +21 -0
  91. package/dist/protocols/acp/types.d.ts.map +1 -1
  92. package/dist/protocols/acp/types.js +3 -0
  93. package/dist/protocols/acp/types.js.map +1 -1
  94. package/dist/server/contract.d.ts.map +1 -1
  95. package/dist/server/contract.js +5 -0
  96. package/dist/server/contract.js.map +1 -1
  97. package/dist/server/handlers/agent-runtimes.d.ts.map +1 -1
  98. package/dist/server/handlers/agent-runtimes.js +7 -2
  99. package/dist/server/handlers/agent-runtimes.js.map +1 -1
  100. package/dist/server/handlers/agent-turn.js +18 -3
  101. package/dist/server/handlers/agent-turn.js.map +1 -1
  102. package/dist/server/handlers/runtime-adapter-projections.d.ts +33 -2
  103. package/dist/server/handlers/runtime-adapter-projections.d.ts.map +1 -1
  104. package/dist/server/handlers/runtime-adapter-projections.js +117 -15
  105. package/dist/server/handlers/runtime-adapter-projections.js.map +1 -1
  106. package/dist/server/handlers/runtime-artifact-projections.d.ts +21 -0
  107. package/dist/server/handlers/runtime-artifact-projections.d.ts.map +1 -1
  108. package/dist/server/handlers/runtime-artifact-projections.js +37 -7
  109. package/dist/server/handlers/runtime-artifact-projections.js.map +1 -1
  110. package/dist/server/handlers/runtime-control-plane.d.ts +168 -0
  111. package/dist/server/handlers/runtime-control-plane.d.ts.map +1 -0
  112. package/dist/server/handlers/runtime-control-plane.js +520 -0
  113. package/dist/server/handlers/runtime-control-plane.js.map +1 -0
  114. package/dist/server/handlers/runtime-extensions.d.ts +92 -0
  115. package/dist/server/handlers/runtime-extensions.d.ts.map +1 -0
  116. package/dist/server/handlers/runtime-extensions.js +405 -0
  117. package/dist/server/handlers/runtime-extensions.js.map +1 -0
  118. package/dist/server/handlers/runtime-readiness.d.ts +13 -3
  119. package/dist/server/handlers/runtime-readiness.d.ts.map +1 -1
  120. package/dist/server/handlers/runtime-readiness.js +74 -3
  121. package/dist/server/handlers/runtime-readiness.js.map +1 -1
  122. package/dist/server/handlers/runtime-session-projections.d.ts +7 -1
  123. package/dist/server/handlers/runtime-session-projections.d.ts.map +1 -1
  124. package/dist/server/handlers/runtime-session-projections.js +23 -0
  125. package/dist/server/handlers/runtime-session-projections.js.map +1 -1
  126. package/dist/server/http.d.ts.map +1 -1
  127. package/dist/server/http.js +29 -1
  128. package/dist/server/http.js.map +1 -1
  129. package/dist/server/index.d.ts +2 -0
  130. package/dist/server/index.d.ts.map +1 -1
  131. package/dist/server/index.js +2 -0
  132. package/dist/server/index.js.map +1 -1
  133. package/dist/server/route-ownership.d.ts.map +1 -1
  134. package/dist/server/route-ownership.js +5 -0
  135. package/dist/server/route-ownership.js.map +1 -1
  136. package/package.json +10 -10
@@ -0,0 +1,520 @@
1
+ import { existsSync, mkdirSync, readFileSync, renameSync, unlinkSync, writeFileSync, } from 'node:fs';
2
+ import { dirname, join } from 'node:path';
3
+ import { resolveExistingSafe, resolveSafe } from '../../foundation/security/index.js';
4
+ import { redactSensitiveText } from '../../agent/redaction.js';
5
+ import { errorResponse, json } from '../response.js';
6
+ export const MINDOS_RUNTIME_CONTROL_PLANE_FILE = '.mindos/runtime-control-plane.json';
7
+ const MAX_SCHEDULES = 200;
8
+ const MAX_APPROVALS = 500;
9
+ const MAX_WAKE_EVENTS = 500;
10
+ const MAX_FAILURES = 500;
11
+ const MAX_MESSAGES = 500;
12
+ const MAX_TASKS = 500;
13
+ const SAFE_ID_RE = /^[A-Za-z0-9][A-Za-z0-9._:-]{0,119}$/;
14
+ const CRON_MACRO_RE = /^@(yearly|annually|monthly|weekly|daily|hourly)$/;
15
+ const CRON_FIELD_RE = /^[A-Za-z0-9*,/\-?#LW]+$/;
16
+ export async function handleRuntimeControlPlaneGet(searchParams, services) {
17
+ try {
18
+ const snapshot = filterSnapshot(readRuntimeControlPlane(services.mindRoot), {
19
+ runtimeId: searchParams.get('runtime')?.trim(),
20
+ limit: parseLimit(searchParams.get('limit')),
21
+ });
22
+ return json(snapshot, { headers: { 'Cache-Control': 'no-store' } });
23
+ }
24
+ catch (error) {
25
+ return errorResponse(error);
26
+ }
27
+ }
28
+ export function handleRuntimeControlPlanePost(body, services) {
29
+ const result = applyRuntimeControlPlaneMutation(services.mindRoot, body, services.now?.() ?? new Date());
30
+ if ('error' in result)
31
+ return json({ error: result.error }, { status: 400 });
32
+ return json(result.value, { status: 201, headers: { 'Cache-Control': 'no-store' } });
33
+ }
34
+ export function readRuntimeControlPlane(mindRoot) {
35
+ const state = readRuntimeControlPlaneState(mindRoot);
36
+ return withSummary(state);
37
+ }
38
+ export function applyRuntimeControlPlaneMutation(mindRoot, body, now = new Date()) {
39
+ if (!isRecord(body))
40
+ return { error: 'Expected an object payload.' };
41
+ const action = typeof body.action === 'string' ? body.action : '';
42
+ const state = readRuntimeControlPlaneState(mindRoot);
43
+ const nowIso = now.toISOString();
44
+ switch (action) {
45
+ case 'create-schedule': {
46
+ const parsed = parseSchedule(body.schedule ?? body, state, nowIso);
47
+ if ('error' in parsed)
48
+ return parsed;
49
+ state.schedules = [parsed.value, ...state.schedules.filter((item) => item.id !== parsed.value.id)].slice(0, MAX_SCHEDULES);
50
+ state.updatedAt = nowIso;
51
+ writeRuntimeControlPlaneState(mindRoot, state);
52
+ return mutationResult(action, parsed.value, state);
53
+ }
54
+ case 'update-schedule': {
55
+ const scheduleId = sanitizeId(body.scheduleId);
56
+ if (!scheduleId)
57
+ return { error: 'update-schedule requires scheduleId.' };
58
+ const index = state.schedules.findIndex((item) => item.id === scheduleId);
59
+ if (index < 0)
60
+ return { error: `Schedule not found: ${scheduleId}` };
61
+ const parsed = parseSchedulePatch(state.schedules[index], body.patch, nowIso);
62
+ if ('error' in parsed)
63
+ return parsed;
64
+ state.schedules[index] = parsed.value;
65
+ state.updatedAt = nowIso;
66
+ writeRuntimeControlPlaneState(mindRoot, state);
67
+ return mutationResult(action, parsed.value, state);
68
+ }
69
+ case 'enqueue-approval': {
70
+ const parsed = parseApproval(body.approval ?? body, state, nowIso);
71
+ if ('error' in parsed)
72
+ return parsed;
73
+ state.approvalQueue = [parsed.value, ...state.approvalQueue.filter((item) => item.id !== parsed.value.id)].slice(0, MAX_APPROVALS);
74
+ state.updatedAt = nowIso;
75
+ writeRuntimeControlPlaneState(mindRoot, state);
76
+ return mutationResult(action, parsed.value, state);
77
+ }
78
+ case 'resolve-approval': {
79
+ const approvalId = sanitizeId(body.approvalId);
80
+ const decision = sanitizeEnum(body.decision, ['approve', 'reject', 'cancel']);
81
+ if (!approvalId || !decision)
82
+ return { error: 'resolve-approval requires approvalId and decision.' };
83
+ const index = state.approvalQueue.findIndex((item) => item.id === approvalId);
84
+ if (index < 0)
85
+ return { error: `Approval request not found: ${approvalId}` };
86
+ const current = state.approvalQueue[index];
87
+ const resolved = {
88
+ ...current,
89
+ status: decision === 'approve' ? 'approved' : decision === 'reject' ? 'rejected' : 'cancelled',
90
+ decision,
91
+ resolvedAt: nowIso,
92
+ };
93
+ state.approvalQueue[index] = resolved;
94
+ state.updatedAt = nowIso;
95
+ writeRuntimeControlPlaneState(mindRoot, state);
96
+ return mutationResult(action, resolved, state);
97
+ }
98
+ case 'record-wake': {
99
+ const parsed = parseWake(body.wake ?? body, state, nowIso);
100
+ if ('error' in parsed)
101
+ return parsed;
102
+ state.wakeEvents = [parsed.value, ...state.wakeEvents.filter((item) => item.id !== parsed.value.id)].slice(0, MAX_WAKE_EVENTS);
103
+ state.updatedAt = nowIso;
104
+ writeRuntimeControlPlaneState(mindRoot, state);
105
+ return mutationResult(action, parsed.value, state);
106
+ }
107
+ case 'record-failure': {
108
+ const parsed = parseFailure(body.failure ?? body, state, nowIso);
109
+ if ('error' in parsed)
110
+ return parsed;
111
+ state.failureAudits = [parsed.value, ...state.failureAudits.filter((item) => item.id !== parsed.value.id)].slice(0, MAX_FAILURES);
112
+ state.updatedAt = nowIso;
113
+ writeRuntimeControlPlaneState(mindRoot, state);
114
+ return mutationResult(action, parsed.value, state);
115
+ }
116
+ case 'send-message': {
117
+ const parsed = parseMessage(body.message ?? body, state, nowIso);
118
+ if ('error' in parsed)
119
+ return parsed;
120
+ state.mailbox = [parsed.value, ...state.mailbox.filter((item) => item.id !== parsed.value.id)].slice(0, MAX_MESSAGES);
121
+ state.updatedAt = nowIso;
122
+ writeRuntimeControlPlaneState(mindRoot, state);
123
+ return mutationResult(action, parsed.value, state);
124
+ }
125
+ case 'upsert-task': {
126
+ const parsed = parseTask(body.task ?? body, state, nowIso);
127
+ if ('error' in parsed)
128
+ return parsed;
129
+ state.tasks = [parsed.value, ...state.tasks.filter((item) => item.id !== parsed.value.id)].slice(0, MAX_TASKS);
130
+ state.updatedAt = nowIso;
131
+ writeRuntimeControlPlaneState(mindRoot, state);
132
+ return mutationResult(action, parsed.value, state);
133
+ }
134
+ default:
135
+ return { error: `Unsupported runtime control-plane action: ${action || '(missing)'}` };
136
+ }
137
+ }
138
+ function readRuntimeControlPlaneState(mindRoot) {
139
+ const empty = emptyState();
140
+ try {
141
+ const file = runtimeControlPlanePath(mindRoot);
142
+ if (!existsSync(file))
143
+ return empty;
144
+ const parsed = JSON.parse(readFileSync(file, 'utf-8'));
145
+ return normalizeState(parsed);
146
+ }
147
+ catch {
148
+ return empty;
149
+ }
150
+ }
151
+ function writeRuntimeControlPlaneState(mindRoot, state) {
152
+ const file = runtimeControlPlanePath(mindRoot);
153
+ mkdirSync(dirname(file), { recursive: true });
154
+ const tmp = `${file}.${process.pid}.${Date.now()}.tmp`;
155
+ try {
156
+ writeFileSync(tmp, `${JSON.stringify(state, null, 2)}\n`, 'utf-8');
157
+ renameSync(tmp, file);
158
+ }
159
+ catch (error) {
160
+ try {
161
+ unlinkSync(tmp);
162
+ }
163
+ catch { /* ignore cleanup */ }
164
+ throw error;
165
+ }
166
+ }
167
+ function runtimeControlPlanePath(mindRoot) {
168
+ if (!existsSync(mindRoot))
169
+ return join(mindRoot, MINDOS_RUNTIME_CONTROL_PLANE_FILE);
170
+ return existsSync(resolveSafe(mindRoot, '.mindos'))
171
+ ? resolveExistingSafe(mindRoot, MINDOS_RUNTIME_CONTROL_PLANE_FILE)
172
+ : resolveSafe(mindRoot, MINDOS_RUNTIME_CONTROL_PLANE_FILE);
173
+ }
174
+ function emptyState() {
175
+ return {
176
+ schemaVersion: 1,
177
+ updatedAt: new Date(0).toISOString(),
178
+ schedules: [],
179
+ approvalQueue: [],
180
+ wakeEvents: [],
181
+ failureAudits: [],
182
+ mailbox: [],
183
+ tasks: [],
184
+ };
185
+ }
186
+ function normalizeState(value) {
187
+ return {
188
+ schemaVersion: 1,
189
+ updatedAt: sanitizeIso(value.updatedAt) ?? new Date(0).toISOString(),
190
+ schedules: Array.isArray(value.schedules) ? value.schedules.filter(isSchedule).slice(0, MAX_SCHEDULES) : [],
191
+ approvalQueue: Array.isArray(value.approvalQueue) ? value.approvalQueue.filter(isApproval).slice(0, MAX_APPROVALS) : [],
192
+ wakeEvents: Array.isArray(value.wakeEvents) ? value.wakeEvents.filter(isWake).slice(0, MAX_WAKE_EVENTS) : [],
193
+ failureAudits: Array.isArray(value.failureAudits) ? value.failureAudits.filter(isFailure).slice(0, MAX_FAILURES) : [],
194
+ mailbox: Array.isArray(value.mailbox) ? value.mailbox.filter(isMessage).slice(0, MAX_MESSAGES) : [],
195
+ tasks: Array.isArray(value.tasks) ? value.tasks.filter(isTask).slice(0, MAX_TASKS) : [],
196
+ };
197
+ }
198
+ function withSummary(state) {
199
+ return {
200
+ ...state,
201
+ summary: {
202
+ scheduleCount: state.schedules.length,
203
+ enabledScheduleCount: state.schedules.filter((item) => item.status === 'enabled').length,
204
+ pendingApprovalCount: state.approvalQueue.filter((item) => item.status === 'pending').length,
205
+ pendingWakeCount: state.wakeEvents.filter((item) => item.status === 'pending').length,
206
+ openTaskCount: state.tasks.filter((item) => item.status === 'todo' || item.status === 'doing' || item.status === 'blocked').length,
207
+ queuedMessageCount: state.mailbox.filter((item) => item.status === 'queued').length,
208
+ },
209
+ };
210
+ }
211
+ function filterSnapshot(snapshot, options) {
212
+ const runtimeId = options.runtimeId && SAFE_ID_RE.test(options.runtimeId) ? options.runtimeId : undefined;
213
+ const state = {
214
+ schemaVersion: 1,
215
+ updatedAt: snapshot.updatedAt,
216
+ schedules: snapshot.schedules.filter((item) => !runtimeId || item.runtimeId === runtimeId).slice(0, options.limit),
217
+ approvalQueue: snapshot.approvalQueue.filter((item) => !runtimeId || item.runtimeId === runtimeId).slice(0, options.limit),
218
+ wakeEvents: snapshot.wakeEvents.filter((item) => !runtimeId || item.runtimeId === runtimeId).slice(0, options.limit),
219
+ failureAudits: snapshot.failureAudits.filter((item) => !runtimeId || item.runtimeId === runtimeId).slice(0, options.limit),
220
+ mailbox: snapshot.mailbox.filter((item) => !runtimeId || item.fromRuntimeId === runtimeId || item.toRuntimeId === runtimeId).slice(0, options.limit),
221
+ tasks: snapshot.tasks.filter((item) => !runtimeId || item.assigneeRuntimeId === runtimeId).slice(0, options.limit),
222
+ };
223
+ return withSummary(state);
224
+ }
225
+ function parseSchedule(raw, state, nowIso) {
226
+ if (!isRecord(raw))
227
+ return { error: 'Schedule must be an object.' };
228
+ const runtimeId = sanitizeId(raw.runtimeId);
229
+ if (!runtimeId)
230
+ return { error: 'Schedule requires runtimeId.' };
231
+ const title = sanitizeRequiredString(raw.title ?? raw.name, 160, 'Schedule requires title.');
232
+ if ('error' in title)
233
+ return title;
234
+ const trigger = parseTrigger(raw.trigger);
235
+ if ('error' in trigger)
236
+ return trigger;
237
+ return {
238
+ value: {
239
+ id: sanitizeId(raw.id) ?? nextId('schedule', state.schedules.map((item) => item.id), nowIso),
240
+ title: title.value,
241
+ runtimeId,
242
+ status: sanitizeEnum(raw.status, ['disabled', 'enabled', 'paused', 'archived']) ?? 'disabled',
243
+ trigger: trigger.value,
244
+ target: {
245
+ ...(sanitizeId(raw.assistantId ?? (isRecord(raw.target) ? raw.target.assistantId : undefined)) ? { assistantId: sanitizeId(raw.assistantId ?? (isRecord(raw.target) ? raw.target.assistantId : undefined)) } : {}),
246
+ ...(sanitizeString(raw.command ?? (isRecord(raw.target) ? raw.target.command : undefined), 160) ? { command: sanitizeString(raw.command ?? (isRecord(raw.target) ? raw.target.command : undefined), 160) } : {}),
247
+ ...(sanitizeId(raw.skillId ?? (isRecord(raw.target) ? raw.target.skillId : undefined)) ? { skillId: sanitizeId(raw.skillId ?? (isRecord(raw.target) ? raw.target.skillId : undefined)) } : {}),
248
+ ...(sanitizeString(raw.cwdHint ?? (isRecord(raw.target) ? raw.target.cwdHint : undefined), 500) ? { cwdHint: sanitizeString(raw.cwdHint ?? (isRecord(raw.target) ? raw.target.cwdHint : undefined), 500) } : {}),
249
+ },
250
+ policy: parsePolicy(raw.policy),
251
+ ...(sanitizeString(raw.inputSummary, 1000) ? { inputSummary: sanitizeString(raw.inputSummary, 1000) } : {}),
252
+ ...(sanitizeIso(raw.nextRunAt) ? { nextRunAt: sanitizeIso(raw.nextRunAt) } : {}),
253
+ ...(sanitizeId(raw.lastRunId) ? { lastRunId: sanitizeId(raw.lastRunId) } : {}),
254
+ createdAt: sanitizeIso(raw.createdAt) ?? nowIso,
255
+ updatedAt: nowIso,
256
+ },
257
+ };
258
+ }
259
+ function parseSchedulePatch(current, raw, nowIso) {
260
+ if (!isRecord(raw))
261
+ return { error: 'Schedule patch must be an object.' };
262
+ const trigger = raw.trigger === undefined ? { value: current.trigger } : parseTrigger(raw.trigger);
263
+ if ('error' in trigger)
264
+ return trigger;
265
+ return {
266
+ value: {
267
+ ...current,
268
+ ...(sanitizeString(raw.title ?? raw.name, 160) ? { title: sanitizeString(raw.title ?? raw.name, 160) } : {}),
269
+ ...(sanitizeEnum(raw.status, ['disabled', 'enabled', 'paused', 'archived']) ? { status: sanitizeEnum(raw.status, ['disabled', 'enabled', 'paused', 'archived']) } : {}),
270
+ trigger: trigger.value,
271
+ target: {
272
+ ...current.target,
273
+ ...(sanitizeId(raw.assistantId) ? { assistantId: sanitizeId(raw.assistantId) } : {}),
274
+ ...(sanitizeString(raw.command, 160) ? { command: sanitizeString(raw.command, 160) } : {}),
275
+ ...(sanitizeId(raw.skillId) ? { skillId: sanitizeId(raw.skillId) } : {}),
276
+ ...(sanitizeString(raw.cwdHint, 500) ? { cwdHint: sanitizeString(raw.cwdHint, 500) } : {}),
277
+ },
278
+ policy: raw.policy === undefined ? current.policy : parsePolicy(raw.policy),
279
+ ...(sanitizeString(raw.inputSummary, 1000) ? { inputSummary: sanitizeString(raw.inputSummary, 1000) } : {}),
280
+ ...(sanitizeIso(raw.nextRunAt) ? { nextRunAt: sanitizeIso(raw.nextRunAt) } : {}),
281
+ ...(sanitizeId(raw.lastRunId) ? { lastRunId: sanitizeId(raw.lastRunId) } : {}),
282
+ updatedAt: nowIso,
283
+ },
284
+ };
285
+ }
286
+ function parseTrigger(raw) {
287
+ if (!isRecord(raw))
288
+ return { error: 'Schedule requires trigger.' };
289
+ const type = sanitizeEnum(raw.type, ['manual', 'cron', 'interval', 'event']);
290
+ if (!type)
291
+ return { error: 'Trigger type must be manual, cron, interval, or event.' };
292
+ const trigger = { type };
293
+ if (type === 'cron') {
294
+ const cron = sanitizeCron(raw.cron ?? raw.expression);
295
+ if (!cron)
296
+ return { error: 'Cron trigger requires a safe 5/6-field expression or @daily-style macro.' };
297
+ trigger.cron = cron;
298
+ }
299
+ if (type === 'interval') {
300
+ const intervalMs = sanitizeInteger(raw.intervalMs, 60_000, 1000 * 60 * 60 * 24 * 30);
301
+ if (!intervalMs)
302
+ return { error: 'Interval trigger requires intervalMs between 60000 and 2592000000.' };
303
+ trigger.intervalMs = intervalMs;
304
+ }
305
+ if (type === 'event') {
306
+ const event = sanitizeString(raw.event, 160);
307
+ if (!event)
308
+ return { error: 'Event trigger requires event.' };
309
+ trigger.event = event;
310
+ }
311
+ const timezone = sanitizeString(raw.timezone, 120);
312
+ if (timezone)
313
+ trigger.timezone = timezone;
314
+ return { value: trigger };
315
+ }
316
+ function parsePolicy(raw) {
317
+ const policy = isRecord(raw) ? raw : {};
318
+ return {
319
+ permissionMode: sanitizeEnum(policy.permissionMode, ['read', 'ask', 'auto']) ?? 'ask',
320
+ overlap: sanitizeEnum(policy.overlap, ['skip', 'enqueue', 'cancel-previous']) ?? 'skip',
321
+ retry: sanitizeEnum(policy.retry, ['never', 'once']) ?? 'never',
322
+ timeoutMs: sanitizeInteger(policy.timeoutMs, 1_000, 1000 * 60 * 60) ?? 1000 * 60 * 10,
323
+ };
324
+ }
325
+ function parseApproval(raw, state, nowIso) {
326
+ if (!isRecord(raw))
327
+ return { error: 'Approval request must be an object.' };
328
+ const runtimeId = sanitizeId(raw.runtimeId);
329
+ if (!runtimeId)
330
+ return { error: 'Approval request requires runtimeId.' };
331
+ const summary = sanitizeRequiredString(raw.summary, 1000, 'Approval request requires summary.');
332
+ if ('error' in summary)
333
+ return summary;
334
+ return {
335
+ value: {
336
+ id: sanitizeId(raw.id) ?? nextId('approval', state.approvalQueue.map((item) => item.id), nowIso),
337
+ runtimeId,
338
+ ...(sanitizeId(raw.runId) ? { runId: sanitizeId(raw.runId) } : {}),
339
+ ...(sanitizeId(raw.scheduleId) ? { scheduleId: sanitizeId(raw.scheduleId) } : {}),
340
+ status: 'pending',
341
+ scope: sanitizeEnum(raw.scope, ['read', 'write', 'shell', 'network', 'mcp', 'schedule', 'user-extension', 'unknown']) ?? 'unknown',
342
+ summary: summary.value,
343
+ requestedAt: sanitizeIso(raw.requestedAt) ?? nowIso,
344
+ },
345
+ };
346
+ }
347
+ function parseWake(raw, state, nowIso) {
348
+ if (!isRecord(raw))
349
+ return { error: 'Wake event must be an object.' };
350
+ const triggerAt = sanitizeIso(raw.triggerAt) ?? nowIso;
351
+ const status = sanitizeEnum(raw.status, ['pending', 'claimed', 'completed', 'missed']) ?? 'pending';
352
+ return {
353
+ value: {
354
+ id: sanitizeId(raw.id) ?? nextId('wake', state.wakeEvents.map((item) => item.id), nowIso),
355
+ ...(sanitizeId(raw.runtimeId) ? { runtimeId: sanitizeId(raw.runtimeId) } : {}),
356
+ ...(sanitizeId(raw.scheduleId) ? { scheduleId: sanitizeId(raw.scheduleId) } : {}),
357
+ ...(sanitizeId(raw.runId) ? { runId: sanitizeId(raw.runId) } : {}),
358
+ status,
359
+ triggerAt,
360
+ ...(sanitizeIso(raw.claimedAt) ? { claimedAt: sanitizeIso(raw.claimedAt) } : {}),
361
+ ...(sanitizeIso(raw.completedAt) ? { completedAt: sanitizeIso(raw.completedAt) } : {}),
362
+ ...(sanitizeString(raw.summary, 1000) ? { summary: sanitizeString(raw.summary, 1000) } : {}),
363
+ },
364
+ };
365
+ }
366
+ function parseFailure(raw, state, nowIso) {
367
+ if (!isRecord(raw))
368
+ return { error: 'Failure audit must be an object.' };
369
+ const summary = sanitizeRequiredString(raw.summary, 1000, 'Failure audit requires summary.');
370
+ if ('error' in summary)
371
+ return summary;
372
+ return {
373
+ value: {
374
+ id: sanitizeId(raw.id) ?? nextId('failure', state.failureAudits.map((item) => item.id), nowIso),
375
+ ...(sanitizeId(raw.runtimeId) ? { runtimeId: sanitizeId(raw.runtimeId) } : {}),
376
+ ...(sanitizeId(raw.scheduleId) ? { scheduleId: sanitizeId(raw.scheduleId) } : {}),
377
+ ...(sanitizeId(raw.runId) ? { runId: sanitizeId(raw.runId) } : {}),
378
+ kind: sanitizeEnum(raw.kind, ['runtime', 'permission', 'tool', 'timeout', 'conflict', 'unknown']) ?? 'unknown',
379
+ summary: summary.value,
380
+ recoverable: typeof raw.recoverable === 'boolean' ? raw.recoverable : false,
381
+ createdAt: sanitizeIso(raw.createdAt) ?? nowIso,
382
+ },
383
+ };
384
+ }
385
+ function parseMessage(raw, state, nowIso) {
386
+ if (!isRecord(raw))
387
+ return { error: 'Mailbox message must be an object.' };
388
+ const subject = sanitizeRequiredString(raw.subject, 200, 'Mailbox message requires subject.');
389
+ if ('error' in subject)
390
+ return subject;
391
+ const summary = sanitizeRequiredString(raw.summary, 1000, 'Mailbox message requires summary.');
392
+ if ('error' in summary)
393
+ return summary;
394
+ return {
395
+ value: {
396
+ id: sanitizeId(raw.id) ?? nextId('message', state.mailbox.map((item) => item.id), nowIso),
397
+ ...(sanitizeId(raw.fromRuntimeId) ? { fromRuntimeId: sanitizeId(raw.fromRuntimeId) } : {}),
398
+ ...(sanitizeId(raw.toRuntimeId) ? { toRuntimeId: sanitizeId(raw.toRuntimeId) } : {}),
399
+ ...(sanitizeId(raw.threadId) ? { threadId: sanitizeId(raw.threadId) } : {}),
400
+ status: sanitizeEnum(raw.status, ['queued', 'delivered', 'archived']) ?? 'queued',
401
+ subject: subject.value,
402
+ summary: summary.value,
403
+ createdAt: sanitizeIso(raw.createdAt) ?? nowIso,
404
+ ...(sanitizeIso(raw.deliveredAt) ? { deliveredAt: sanitizeIso(raw.deliveredAt) } : {}),
405
+ },
406
+ };
407
+ }
408
+ function parseTask(raw, state, nowIso) {
409
+ if (!isRecord(raw))
410
+ return { error: 'Task must be an object.' };
411
+ const title = sanitizeRequiredString(raw.title, 200, 'Task requires title.');
412
+ if ('error' in title)
413
+ return title;
414
+ const existing = state.tasks.find((item) => item.id === sanitizeId(raw.id));
415
+ return {
416
+ value: {
417
+ id: sanitizeId(raw.id) ?? nextId('task', state.tasks.map((item) => item.id), nowIso),
418
+ title: title.value,
419
+ status: sanitizeEnum(raw.status, ['todo', 'doing', 'blocked', 'done', 'cancelled']) ?? existing?.status ?? 'todo',
420
+ priority: sanitizeEnum(raw.priority, ['low', 'normal', 'high']) ?? existing?.priority ?? 'normal',
421
+ ...(sanitizeId(raw.assigneeRuntimeId) ? { assigneeRuntimeId: sanitizeId(raw.assigneeRuntimeId) } : {}),
422
+ ...(sanitizeId(raw.sourceMessageId) ? { sourceMessageId: sanitizeId(raw.sourceMessageId) } : {}),
423
+ createdAt: existing?.createdAt ?? sanitizeIso(raw.createdAt) ?? nowIso,
424
+ updatedAt: nowIso,
425
+ },
426
+ };
427
+ }
428
+ function mutationResult(action, item, state) {
429
+ return {
430
+ value: {
431
+ ok: true,
432
+ action,
433
+ item,
434
+ snapshot: withSummary(state),
435
+ },
436
+ };
437
+ }
438
+ function sanitizeRequiredString(value, max, error) {
439
+ const sanitized = sanitizeString(value, max);
440
+ return sanitized ? { value: sanitized } : { error };
441
+ }
442
+ function sanitizeString(value, max) {
443
+ if (typeof value !== 'string')
444
+ return undefined;
445
+ const redacted = redactSensitiveText(value.trim());
446
+ return redacted ? redacted.slice(0, max) : undefined;
447
+ }
448
+ function sanitizeId(value) {
449
+ const text = sanitizeString(value, 120);
450
+ return text && SAFE_ID_RE.test(text) ? text : undefined;
451
+ }
452
+ function sanitizeIso(value) {
453
+ if (typeof value !== 'string')
454
+ return undefined;
455
+ const ms = new Date(value).getTime();
456
+ return Number.isFinite(ms) ? new Date(ms).toISOString() : undefined;
457
+ }
458
+ function sanitizeInteger(value, min, max) {
459
+ if (typeof value !== 'number' || !Number.isFinite(value))
460
+ return undefined;
461
+ const next = Math.floor(value);
462
+ if (next < min || next > max)
463
+ return undefined;
464
+ return next;
465
+ }
466
+ function sanitizeCron(value) {
467
+ const text = sanitizeString(value, 120);
468
+ if (!text)
469
+ return undefined;
470
+ if (CRON_MACRO_RE.test(text))
471
+ return text;
472
+ const fields = text.split(/\s+/);
473
+ if (fields.length !== 5 && fields.length !== 6)
474
+ return undefined;
475
+ return fields.every((field) => CRON_FIELD_RE.test(field)) ? text : undefined;
476
+ }
477
+ function sanitizeEnum(value, allowed) {
478
+ return typeof value === 'string' && allowed.includes(value) ? value : undefined;
479
+ }
480
+ function nextId(prefix, existing, nowIso) {
481
+ const base = `${prefix}-${new Date(nowIso).getTime().toString(36)}`;
482
+ const existingSet = new Set(existing);
483
+ if (!existingSet.has(base))
484
+ return base;
485
+ for (let index = 1; index < 1000; index += 1) {
486
+ const candidate = `${base}-${index}`;
487
+ if (!existingSet.has(candidate))
488
+ return candidate;
489
+ }
490
+ return `${base}-${existing.length + 1}`;
491
+ }
492
+ function parseLimit(value) {
493
+ const parsed = value ? Number.parseInt(value, 10) : 50;
494
+ return Number.isFinite(parsed) ? Math.max(1, Math.min(parsed, 200)) : 50;
495
+ }
496
+ function isRecord(value) {
497
+ return !!value && typeof value === 'object' && !Array.isArray(value);
498
+ }
499
+ function hasKeys(value, keys) {
500
+ return keys.every((key) => key in value);
501
+ }
502
+ function isSchedule(value) {
503
+ return isRecord(value) && hasKeys(value, ['id', 'title', 'runtimeId', 'status', 'trigger', 'target', 'policy', 'createdAt', 'updatedAt']);
504
+ }
505
+ function isApproval(value) {
506
+ return isRecord(value) && hasKeys(value, ['id', 'runtimeId', 'status', 'scope', 'summary', 'requestedAt']);
507
+ }
508
+ function isWake(value) {
509
+ return isRecord(value) && hasKeys(value, ['id', 'status', 'triggerAt']);
510
+ }
511
+ function isFailure(value) {
512
+ return isRecord(value) && hasKeys(value, ['id', 'kind', 'summary', 'recoverable', 'createdAt']);
513
+ }
514
+ function isMessage(value) {
515
+ return isRecord(value) && hasKeys(value, ['id', 'status', 'subject', 'summary', 'createdAt']);
516
+ }
517
+ function isTask(value) {
518
+ return isRecord(value) && hasKeys(value, ['id', 'title', 'status', 'priority', 'createdAt', 'updatedAt']);
519
+ }
520
+ //# sourceMappingURL=runtime-control-plane.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-control-plane.js","sourceRoot":"","sources":["../../../src/server/handlers/runtime-control-plane.ts"],"names":[],"mappings":"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"}