@hualinge/relay-mcp-server 0.1.3

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 (83) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +11 -0
  3. package/dist/collab.d.ts +8 -0
  4. package/dist/collab.d.ts.map +1 -0
  5. package/dist/collab.js +47 -0
  6. package/dist/collab.js.map +1 -0
  7. package/dist/dare.d.ts +4 -0
  8. package/dist/dare.d.ts.map +1 -0
  9. package/dist/dare.js +46 -0
  10. package/dist/dare.js.map +1 -0
  11. package/dist/index.d.ts +4 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +47 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/memory.d.ts +8 -0
  16. package/dist/memory.d.ts.map +1 -0
  17. package/dist/memory.js +47 -0
  18. package/dist/memory.js.map +1 -0
  19. package/dist/server-toolsets.d.ts +13 -0
  20. package/dist/server-toolsets.d.ts.map +1 -0
  21. package/dist/server-toolsets.js +119 -0
  22. package/dist/server-toolsets.js.map +1 -0
  23. package/dist/tools/callback-memory-tools.d.ts +46 -0
  24. package/dist/tools/callback-memory-tools.d.ts.map +1 -0
  25. package/dist/tools/callback-memory-tools.js +59 -0
  26. package/dist/tools/callback-memory-tools.js.map +1 -0
  27. package/dist/tools/callback-outbox.d.ts +15 -0
  28. package/dist/tools/callback-outbox.d.ts.map +1 -0
  29. package/dist/tools/callback-outbox.js +162 -0
  30. package/dist/tools/callback-outbox.js.map +1 -0
  31. package/dist/tools/callback-retry.d.ts +14 -0
  32. package/dist/tools/callback-retry.d.ts.map +1 -0
  33. package/dist/tools/callback-retry.js +58 -0
  34. package/dist/tools/callback-retry.js.map +1 -0
  35. package/dist/tools/callback-tools.d.ts +444 -0
  36. package/dist/tools/callback-tools.d.ts.map +1 -0
  37. package/dist/tools/callback-tools.js +771 -0
  38. package/dist/tools/callback-tools.js.map +1 -0
  39. package/dist/tools/evidence-tools.d.ts +36 -0
  40. package/dist/tools/evidence-tools.d.ts.map +1 -0
  41. package/dist/tools/evidence-tools.js +87 -0
  42. package/dist/tools/evidence-tools.js.map +1 -0
  43. package/dist/tools/file-tools.d.ts +78 -0
  44. package/dist/tools/file-tools.d.ts.map +1 -0
  45. package/dist/tools/file-tools.js +178 -0
  46. package/dist/tools/file-tools.js.map +1 -0
  47. package/dist/tools/index.d.ts +13 -0
  48. package/dist/tools/index.d.ts.map +1 -0
  49. package/dist/tools/index.js +18 -0
  50. package/dist/tools/index.js.map +1 -0
  51. package/dist/tools/limb-tools.d.ts +113 -0
  52. package/dist/tools/limb-tools.d.ts.map +1 -0
  53. package/dist/tools/limb-tools.js +120 -0
  54. package/dist/tools/limb-tools.js.map +1 -0
  55. package/dist/tools/reflect-tools.d.ts +23 -0
  56. package/dist/tools/reflect-tools.d.ts.map +1 -0
  57. package/dist/tools/reflect-tools.js +52 -0
  58. package/dist/tools/reflect-tools.js.map +1 -0
  59. package/dist/tools/rich-block-rules-tool.d.ts +17 -0
  60. package/dist/tools/rich-block-rules-tool.d.ts.map +1 -0
  61. package/dist/tools/rich-block-rules-tool.js +36 -0
  62. package/dist/tools/rich-block-rules-tool.js.map +1 -0
  63. package/dist/tools/schedule-tools.d.ts +134 -0
  64. package/dist/tools/schedule-tools.d.ts.map +1 -0
  65. package/dist/tools/schedule-tools.js +397 -0
  66. package/dist/tools/schedule-tools.js.map +1 -0
  67. package/dist/tools/session-chain-tools.d.ts +99 -0
  68. package/dist/tools/session-chain-tools.d.ts.map +1 -0
  69. package/dist/tools/session-chain-tools.js +288 -0
  70. package/dist/tools/session-chain-tools.js.map +1 -0
  71. package/dist/utils/index.d.ts +6 -0
  72. package/dist/utils/index.d.ts.map +1 -0
  73. package/dist/utils/index.js +11 -0
  74. package/dist/utils/index.js.map +1 -0
  75. package/dist/utils/path-utils.d.ts +6 -0
  76. package/dist/utils/path-utils.d.ts.map +1 -0
  77. package/dist/utils/path-utils.js +63 -0
  78. package/dist/utils/path-utils.js.map +1 -0
  79. package/dist/utils/path-validator.d.ts +45 -0
  80. package/dist/utils/path-validator.d.ts.map +1 -0
  81. package/dist/utils/path-validator.js +126 -0
  82. package/dist/utils/path-validator.js.map +1 -0
  83. package/package.json +44 -0
@@ -0,0 +1,397 @@
1
+ /*
2
+ * *
3
+ * * Copyright (C) Huawei Technologies Co., Ltd. 2026. All rights reserved.
4
+ *
5
+ */
6
+ /**
7
+ * F139 Phase 3A: Schedule MCP Tools (AC-G2)
8
+ *
9
+ * office_claw_list_schedule_templates — list available task templates
10
+ * office_claw_register_scheduled_task — create a dynamic scheduled task from template
11
+ * office_claw_set_scheduled_task_enabled — enable/disable a dynamic scheduled task
12
+ * office_claw_remove_scheduled_task — delete a dynamic scheduled task
13
+ */
14
+ import { normalizeScheduleTaskLabel } from '@openjiuwen/relay-shared/utils';
15
+ import { z } from 'zod';
16
+ import { callbackGet, callbackPost } from './callback-tools.js';
17
+ import { errorResult } from './file-tools.js';
18
+ const MIN_INTERVAL_MS = 10_000;
19
+ const MIN_ONCE_DELAY_MS = 1_000;
20
+ // ─── callbackDelete (schedule-specific) ──────────────────────
21
+ async function callbackDelete(path) {
22
+ const { getCallbackConfig, NO_CONFIG_ERROR } = await import('./callback-tools.js');
23
+ const config = getCallbackConfig();
24
+ if (!config)
25
+ return errorResult(NO_CONFIG_ERROR);
26
+ try {
27
+ const response = await fetch(`${config.apiUrl}${path}`, {
28
+ method: 'DELETE',
29
+ headers: {
30
+ 'Content-Type': 'application/json',
31
+ 'x-invocation-id': config.invocationId,
32
+ 'x-callback-token': config.callbackToken,
33
+ },
34
+ });
35
+ if (!response.ok) {
36
+ const text = await response.text();
37
+ return errorResult(`Delete failed (${response.status}): ${text}`);
38
+ }
39
+ const { successResult: ok } = await import('./file-tools.js');
40
+ return ok(JSON.stringify(await response.json()));
41
+ }
42
+ catch (err) {
43
+ const message = err instanceof Error ? err.message : String(err);
44
+ return errorResult(`Delete request failed: ${message}`);
45
+ }
46
+ }
47
+ async function callbackPatch(path, body) {
48
+ const { getCallbackConfig, NO_CONFIG_ERROR } = await import('./callback-tools.js');
49
+ const config = getCallbackConfig();
50
+ if (!config)
51
+ return errorResult(NO_CONFIG_ERROR);
52
+ try {
53
+ const response = await fetch(`${config.apiUrl}${path}`, {
54
+ method: 'PATCH',
55
+ headers: {
56
+ 'Content-Type': 'application/json',
57
+ 'x-invocation-id': config.invocationId,
58
+ 'x-callback-token': config.callbackToken,
59
+ },
60
+ body: JSON.stringify(body),
61
+ });
62
+ if (!response.ok) {
63
+ const text = await response.text();
64
+ return errorResult(`Patch failed (${response.status}): ${text}`);
65
+ }
66
+ const { successResult: ok } = await import('./file-tools.js');
67
+ return ok(JSON.stringify(await response.json()));
68
+ }
69
+ catch (err) {
70
+ const message = err instanceof Error ? err.message : String(err);
71
+ return errorResult(`Patch request failed: ${message}`);
72
+ }
73
+ }
74
+ // ─── List registered tasks ──────────────────────────────────
75
+ export const listScheduledTasksInputSchema = {};
76
+ export async function handleListScheduledTasks(_input) {
77
+ return callbackGet('/api/schedule/tasks');
78
+ }
79
+ // ─── List templates ──────────────────────────────────────────
80
+ export const listScheduleTemplatesInputSchema = {};
81
+ export async function handleListScheduleTemplates(_input) {
82
+ return callbackGet('/api/schedule/templates');
83
+ }
84
+ function validateTriggerConfig(trigger) {
85
+ if (!trigger || typeof trigger !== 'object' || Array.isArray(trigger)) {
86
+ return 'Invalid trigger JSON — must be a JSON object';
87
+ }
88
+ const record = trigger;
89
+ const type = typeof record.type === 'string' ? record.type : undefined;
90
+ if (!type)
91
+ return 'Invalid trigger JSON — trigger.type is required';
92
+ if (type === 'interval') {
93
+ const ms = typeof record.ms === 'number' ? record.ms : Number.NaN;
94
+ if (!Number.isFinite(ms) || ms < MIN_INTERVAL_MS) {
95
+ return `Invalid trigger JSON — interval trigger ms must be a finite number >= ${MIN_INTERVAL_MS}`;
96
+ }
97
+ return null;
98
+ }
99
+ if (type === 'cron') {
100
+ return typeof record.expression === 'string' && record.expression.trim().length > 0
101
+ ? null
102
+ : 'Invalid trigger JSON — cron trigger expression must be a non-empty string';
103
+ }
104
+ if (type === 'once') {
105
+ const delayMs = typeof record.delayMs === 'number' ? record.delayMs : undefined;
106
+ const fireAt = typeof record.fireAt === 'number' ? record.fireAt : undefined;
107
+ if (delayMs != null) {
108
+ return Number.isFinite(delayMs) && delayMs >= MIN_ONCE_DELAY_MS
109
+ ? null
110
+ : `Invalid trigger JSON — once trigger delayMs must be a finite number >= ${MIN_ONCE_DELAY_MS}`;
111
+ }
112
+ if (fireAt != null) {
113
+ return Number.isFinite(fireAt) && fireAt >= Date.now()
114
+ ? null
115
+ : 'Invalid trigger JSON — once trigger fireAt must be a finite epoch ms in the future';
116
+ }
117
+ return 'Invalid trigger JSON — once trigger requires either delayMs or fireAt';
118
+ }
119
+ return `Invalid trigger JSON — unsupported trigger type: ${type}`;
120
+ }
121
+ function normalizeToolLabel(label) {
122
+ const result = normalizeScheduleTaskLabel(label);
123
+ if ('error' in result)
124
+ return { error: result.error.replace('display.label', 'label') };
125
+ return result.value;
126
+ }
127
+ // ─── Register scheduled task ────────────────────────────────
128
+ export const registerScheduledTaskInputSchema = {
129
+ templateId: z
130
+ .string()
131
+ .min(1)
132
+ .describe('Template ID from list_schedule_templates (e.g. "reminder", "web-digest", "repo-activity")'),
133
+ trigger: z
134
+ .string()
135
+ .describe('Trigger config as JSON string. Choose type by intent: ' +
136
+ 'interval — "every N hours/minutes" repeating from now, e.g. {"type":"interval","ms":7200000}. interval.ms must be >= 10000 (10s); ' +
137
+ 'cron — specific wall-clock times/days, e.g. {"type":"cron","expression":"0 9 * * *","timezone":"Asia/Shanghai"}; ' +
138
+ 'once — fire once after delay or at exact time. PREFER delayMs (relative) over fireAt (absolute) because model clocks may drift, e.g. {"type":"once","delayMs":120000}. delayMs must be >= 1000 (1s); fireAt must be a future epoch ms. ' +
139
+ 'PREFER interval over cron when user says "every N hours/minutes".'),
140
+ params: z
141
+ .string()
142
+ .optional()
143
+ .describe('Template-specific parameters as JSON string (e.g. {"message":"检查 backlog"})'),
144
+ deliveryThreadId: z
145
+ .string()
146
+ .optional()
147
+ .describe('Thread ID to deliver results to. If omitted, results go to the default channel'),
148
+ label: z
149
+ .string()
150
+ .refine((value) => !('error' in normalizeScheduleTaskLabel(value)), 'label must be at most 64 characters')
151
+ .optional()
152
+ .describe('Human-readable task label (defaults to template label)'),
153
+ category: z.string().optional().describe('Display category: pr | repo | thread | system | external'),
154
+ description: z.string().optional().describe('Short description of this task instance'),
155
+ };
156
+ export async function handleRegisterScheduledTask(input) {
157
+ let trigger;
158
+ try {
159
+ trigger = JSON.parse(input.trigger);
160
+ }
161
+ catch {
162
+ return errorResult('Invalid trigger JSON — must be a valid JSON object');
163
+ }
164
+ {
165
+ const validationError = validateTriggerConfig(trigger);
166
+ if (validationError)
167
+ return errorResult(validationError);
168
+ }
169
+ let params = {};
170
+ if (input.params) {
171
+ try {
172
+ const parsed = JSON.parse(input.params);
173
+ if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
174
+ return errorResult('Invalid params JSON — must be a JSON object (not null, array, or primitive)');
175
+ }
176
+ params = parsed;
177
+ }
178
+ catch {
179
+ return errorResult('Invalid params JSON — must be a valid JSON object');
180
+ }
181
+ }
182
+ // Auto-inject current agent's ID so reminder tasks wake the registering agent, not default opus
183
+ const currentAgentId = process.env['OFFICE_CLAW_AGENT_ID'];
184
+ if (!params.targetAgentId && currentAgentId) {
185
+ params.targetAgentId = currentAgentId;
186
+ }
187
+ const body = {
188
+ templateId: input.templateId,
189
+ trigger,
190
+ params,
191
+ };
192
+ if (input.deliveryThreadId)
193
+ body.deliveryThreadId = input.deliveryThreadId;
194
+ if (currentAgentId)
195
+ body.createdBy = currentAgentId;
196
+ let normalizedLabel;
197
+ if (input.label !== undefined) {
198
+ const label = normalizeToolLabel(input.label);
199
+ if (typeof label !== 'string')
200
+ return errorResult(label.error);
201
+ normalizedLabel = label;
202
+ }
203
+ if (input.label || input.category || input.description) {
204
+ body.display = {
205
+ label: normalizedLabel ?? input.templateId,
206
+ category: input.category ?? 'system',
207
+ ...(input.description ? { description: input.description } : {}),
208
+ };
209
+ }
210
+ return callbackPost('/api/schedule/tasks', body);
211
+ }
212
+ // ─── Preview scheduled task (AC-G2: draft step) ────────────
213
+ export const previewScheduledTaskInputSchema = {
214
+ templateId: z.string().min(1).describe('Template ID from list_schedule_templates'),
215
+ trigger: z
216
+ .string()
217
+ .describe('Trigger config as JSON string. Choose type by intent: ' +
218
+ 'interval — "every N hours/minutes" repeating from now, e.g. {"type":"interval","ms":7200000}. interval.ms must be >= 10000 (10s); ' +
219
+ 'cron — specific wall-clock times/days, e.g. {"type":"cron","expression":"0 9 * * *","timezone":"Asia/Shanghai"}; ' +
220
+ 'once — fire once after delay or at exact time. PREFER delayMs (relative) over fireAt (absolute) because model clocks may drift, e.g. {"type":"once","delayMs":120000}. delayMs must be >= 1000 (1s); fireAt must be a future epoch ms. ' +
221
+ 'PREFER interval over cron when user says "every N hours/minutes".'),
222
+ params: z.string().optional().describe('Template-specific parameters as JSON string'),
223
+ deliveryThreadId: z.string().optional().describe('Thread ID to deliver results to'),
224
+ };
225
+ export async function handlePreviewScheduledTask(input) {
226
+ let trigger;
227
+ try {
228
+ trigger = JSON.parse(input.trigger);
229
+ }
230
+ catch {
231
+ return errorResult('Invalid trigger JSON');
232
+ }
233
+ {
234
+ const validationError = validateTriggerConfig(trigger);
235
+ if (validationError)
236
+ return errorResult(validationError);
237
+ }
238
+ let params = {};
239
+ if (input.params) {
240
+ try {
241
+ params = JSON.parse(input.params);
242
+ }
243
+ catch {
244
+ return errorResult('Invalid params JSON');
245
+ }
246
+ }
247
+ const body = {
248
+ templateId: input.templateId,
249
+ trigger,
250
+ params,
251
+ };
252
+ if (input.deliveryThreadId)
253
+ body.deliveryThreadId = input.deliveryThreadId;
254
+ return callbackPost('/api/schedule/tasks/preview', body);
255
+ }
256
+ // ─── Update scheduled task ──────────────────────────────────
257
+ export const updateScheduledTaskInputSchema = {
258
+ taskId: z.string().min(1).describe('The dynamic task ID to update (e.g. "dyn-1711504800000-abc123")'),
259
+ enabled: z.boolean().optional().describe('Whether the task should be enabled'),
260
+ trigger: z.string().optional().describe('Trigger config as JSON string, same format as register_scheduled_task'),
261
+ params: z.string().optional().describe('Template-specific parameters as JSON string; replaces existing params'),
262
+ deliveryThreadId: z.string().optional().describe('Thread ID to deliver results to'),
263
+ label: z
264
+ .string()
265
+ .refine((value) => !('error' in normalizeScheduleTaskLabel(value)), 'label must be at most 64 characters')
266
+ .optional()
267
+ .describe('Human-readable task label'),
268
+ category: z.string().optional().describe('Display category: pr | repo | thread | system | external'),
269
+ description: z.string().optional().describe('Short description of this task instance'),
270
+ };
271
+ export async function handleUpdateScheduledTask(input) {
272
+ const body = {};
273
+ if (input.enabled !== undefined)
274
+ body.enabled = input.enabled;
275
+ if (input.trigger) {
276
+ let trigger;
277
+ try {
278
+ trigger = JSON.parse(input.trigger);
279
+ }
280
+ catch {
281
+ return errorResult('Invalid trigger JSON — must be a valid JSON object');
282
+ }
283
+ const validationError = validateTriggerConfig(trigger);
284
+ if (validationError)
285
+ return errorResult(validationError);
286
+ body.trigger = trigger;
287
+ }
288
+ if (input.params) {
289
+ try {
290
+ const parsed = JSON.parse(input.params);
291
+ if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
292
+ return errorResult('Invalid params JSON — must be a JSON object (not null, array, or primitive)');
293
+ }
294
+ body.params = parsed;
295
+ }
296
+ catch {
297
+ return errorResult('Invalid params JSON — must be a valid JSON object');
298
+ }
299
+ }
300
+ if (input.deliveryThreadId)
301
+ body.deliveryThreadId = input.deliveryThreadId;
302
+ let normalizedLabel;
303
+ if (input.label !== undefined) {
304
+ const label = normalizeToolLabel(input.label);
305
+ if (typeof label !== 'string')
306
+ return errorResult(label.error);
307
+ normalizedLabel = label;
308
+ }
309
+ if (input.label || input.category || input.description) {
310
+ body.display = {
311
+ ...(normalizedLabel ? { label: normalizedLabel } : {}),
312
+ ...(input.category ? { category: input.category } : {}),
313
+ ...(input.description ? { description: input.description } : {}),
314
+ };
315
+ }
316
+ if (Object.keys(body).length === 0) {
317
+ return errorResult('No fields to update — provide enabled, trigger, params, deliveryThreadId, label, category, or description');
318
+ }
319
+ return callbackPatch(`/api/schedule/tasks/${encodeURIComponent(input.taskId)}`, body);
320
+ }
321
+ // ─── Remove scheduled task ──────────────────────────────────
322
+ export const removeScheduledTaskInputSchema = {
323
+ taskId: z.string().min(1).describe('The dynamic task ID to remove (e.g. "dyn-1711504800000-abc123")'),
324
+ };
325
+ export async function handleRemoveScheduledTask(input) {
326
+ return callbackDelete(`/api/schedule/tasks/${encodeURIComponent(input.taskId)}`);
327
+ }
328
+ // ─── Enable/disable scheduled task ─────────────────────────
329
+ export const setScheduledTaskEnabledInputSchema = {
330
+ taskId: z.string().min(1).describe('The dynamic task ID to update (e.g. "dyn-1711504800000-abc123")'),
331
+ enabled: z.boolean().describe('Whether the task should be enabled. false pauses the task without deleting it.'),
332
+ };
333
+ export async function handleSetScheduledTaskEnabled(input) {
334
+ return callbackPatch(`/api/schedule/tasks/${encodeURIComponent(input.taskId)}`, { enabled: input.enabled });
335
+ }
336
+ // ─── Tool definitions ───────────────────────────────────────
337
+ export const scheduleTools = [
338
+ {
339
+ name: 'office_claw_list_scheduled_tasks',
340
+ description: 'List all currently registered scheduled tasks (both builtin and user-created dynamic tasks). ' +
341
+ 'Returns task IDs, labels, triggers, last run info, and enabled state. ' +
342
+ 'Use this to check what tasks are active before registering or removing tasks.',
343
+ inputSchema: listScheduledTasksInputSchema,
344
+ handler: handleListScheduledTasks,
345
+ },
346
+ {
347
+ name: 'office_claw_list_schedule_templates',
348
+ description: 'List available schedule task templates. Each template defines a reusable task type (e.g. reminder, web-digest, repo-activity) ' +
349
+ 'with its parameter schema and default trigger. Use this to discover what kinds of scheduled tasks can be created. ' +
350
+ 'When a task fires, it wakes a agent via invokeTrigger — the woken agent has FULL capabilities (rich blocks, search, image generation, etc.).',
351
+ inputSchema: listScheduleTemplatesInputSchema,
352
+ handler: handleListScheduleTemplates,
353
+ },
354
+ {
355
+ name: 'office_claw_preview_scheduled_task',
356
+ description: 'Preview a scheduled task BEFORE creating it (draft step). Returns a draft with resolved template info, trigger, and params ' +
357
+ 'WITHOUT persisting anything. Show this draft to the user for confirmation before calling register_scheduled_task. ' +
358
+ 'REQUIRED: Always preview first, then register only after user confirms.',
359
+ inputSchema: previewScheduledTaskInputSchema,
360
+ handler: handlePreviewScheduledTask,
361
+ },
362
+ {
363
+ name: 'office_claw_register_scheduled_task',
364
+ description: 'Create a new scheduled task from a template (confirm step). The task will be persisted and run automatically on schedule. ' +
365
+ 'Supports recurring (cron/interval) and one-shot (once) triggers. Once tasks auto-retire after execution. ' +
366
+ 'When the task fires, a agent is woken with full capabilities — it can send rich blocks (images, audio, cards), search the web, generate content, etc. ' +
367
+ 'IMPORTANT: You MUST call preview_scheduled_task first and get user confirmation before calling this. ' +
368
+ 'trigger and params must be JSON strings, not objects.',
369
+ inputSchema: registerScheduledTaskInputSchema,
370
+ handler: handleRegisterScheduledTask,
371
+ },
372
+ {
373
+ name: 'office_claw_update_scheduled_task',
374
+ description: 'Update a dynamic scheduled task by task ID. Supports changing enabled state, trigger, params, delivery thread, label, category, and description. ' +
375
+ 'Use set_scheduled_task_enabled for simple pause/resume, and this tool when editing task configuration. ' +
376
+ 'trigger and params must be JSON strings, not objects.',
377
+ inputSchema: updateScheduledTaskInputSchema,
378
+ handler: handleUpdateScheduledTask,
379
+ },
380
+ {
381
+ name: 'office_claw_set_scheduled_task_enabled',
382
+ description: 'Enable or disable a dynamic scheduled task by task ID without deleting it. ' +
383
+ 'Use enabled=false when the user asks to cancel, stop, pause, or disable a scheduled task; this preserves the task record and prevents future runs. ' +
384
+ 'Use enabled=true to resume it. Call remove_scheduled_task only when the user explicitly asks to delete/remove the task permanently.',
385
+ inputSchema: setScheduledTaskEnabledInputSchema,
386
+ handler: handleSetScheduledTaskEnabled,
387
+ },
388
+ {
389
+ name: 'office_claw_remove_scheduled_task',
390
+ description: 'Permanently delete a user-created dynamic scheduled task by its task ID. ' +
391
+ 'Do NOT use this when the user asks to cancel, stop, pause, or disable a scheduled task; use office_claw_set_scheduled_task_enabled with enabled=false instead. ' +
392
+ 'Only call this when the user explicitly asks to delete/remove the task record permanently. Does not work for builtin system tasks.',
393
+ inputSchema: removeScheduledTaskInputSchema,
394
+ handler: handleRemoveScheduledTask,
395
+ },
396
+ ];
397
+ //# sourceMappingURL=schedule-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedule-tools.js","sourceRoot":"","sources":["../../src/tools/schedule-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Session Chain MCP Tools — F24 Phase D + F98
3
+ * Tools for cats to read sealed session transcripts.
4
+ *
5
+ * Tools:
6
+ * - list_session_chain: List sessions for a thread
7
+ * - read_session_events: Paginated event read (view=raw|chat|handoff)
8
+ * - read_session_digest: Read extractive digest
9
+ * - read_invocation_detail: Read all events for a specific invocation
10
+ * - session_search: Full-text search across transcripts/digests
11
+ */
12
+ import { z } from 'zod';
13
+ import type { ToolResult } from './file-tools.js';
14
+ export declare const listSessionChainInputSchema: {
15
+ threadId: z.ZodString;
16
+ agentId: z.ZodOptional<z.ZodString>;
17
+ limit: z.ZodOptional<z.ZodNumber>;
18
+ };
19
+ export declare function handleListSessionChain(input: {
20
+ threadId: string;
21
+ agentId?: string | undefined;
22
+ limit?: number | undefined;
23
+ }): Promise<ToolResult>;
24
+ export declare const readSessionEventsInputSchema: {
25
+ sessionId: z.ZodString;
26
+ cursor: z.ZodOptional<z.ZodNumber>;
27
+ limit: z.ZodOptional<z.ZodNumber>;
28
+ view: z.ZodOptional<z.ZodEnum<["raw", "chat", "handoff"]>>;
29
+ };
30
+ export declare function handleReadSessionEvents(input: {
31
+ sessionId: string;
32
+ cursor?: number | undefined;
33
+ limit?: number | undefined;
34
+ view?: string | undefined;
35
+ }): Promise<ToolResult>;
36
+ export declare const readSessionDigestInputSchema: {
37
+ sessionId: z.ZodString;
38
+ };
39
+ export declare function handleReadSessionDigest(input: {
40
+ sessionId: string;
41
+ }): Promise<ToolResult>;
42
+ export declare const readInvocationDetailInputSchema: {
43
+ sessionId: z.ZodString;
44
+ invocationId: z.ZodString;
45
+ };
46
+ export declare function handleReadInvocationDetail(input: {
47
+ sessionId: string;
48
+ invocationId: string;
49
+ }): Promise<ToolResult>;
50
+ export declare const sessionSearchInputSchema: {
51
+ threadId: z.ZodString;
52
+ query: z.ZodString;
53
+ agents: z.ZodOptional<z.ZodString>;
54
+ limit: z.ZodOptional<z.ZodNumber>;
55
+ scope: z.ZodOptional<z.ZodEnum<["digests", "transcripts", "both"]>>;
56
+ };
57
+ export declare function handleSessionSearch(input: {
58
+ threadId: string;
59
+ query: string;
60
+ agents?: string | undefined;
61
+ limit?: number | undefined;
62
+ scope?: string | undefined;
63
+ }): Promise<ToolResult>;
64
+ export declare const sessionChainTools: readonly [{
65
+ readonly name: "office_claw_list_session_chain";
66
+ readonly description: string;
67
+ readonly inputSchema: {
68
+ threadId: z.ZodString;
69
+ agentId: z.ZodOptional<z.ZodString>;
70
+ limit: z.ZodOptional<z.ZodNumber>;
71
+ };
72
+ readonly handler: typeof handleListSessionChain;
73
+ }, {
74
+ readonly name: "office_claw_read_session_events";
75
+ readonly description: string;
76
+ readonly inputSchema: {
77
+ sessionId: z.ZodString;
78
+ cursor: z.ZodOptional<z.ZodNumber>;
79
+ limit: z.ZodOptional<z.ZodNumber>;
80
+ view: z.ZodOptional<z.ZodEnum<["raw", "chat", "handoff"]>>;
81
+ };
82
+ readonly handler: typeof handleReadSessionEvents;
83
+ }, {
84
+ readonly name: "office_claw_read_session_digest";
85
+ readonly description: string;
86
+ readonly inputSchema: {
87
+ sessionId: z.ZodString;
88
+ };
89
+ readonly handler: typeof handleReadSessionDigest;
90
+ }, {
91
+ readonly name: "office_claw_read_invocation_detail";
92
+ readonly description: string;
93
+ readonly inputSchema: {
94
+ sessionId: z.ZodString;
95
+ invocationId: z.ZodString;
96
+ };
97
+ readonly handler: typeof handleReadInvocationDetail;
98
+ }];
99
+ //# sourceMappingURL=session-chain-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-chain-tools.d.ts","sourceRoot":"","sources":["../../src/tools/session-chain-tools.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAwBlD,eAAO,MAAM,2BAA2B;;;;CAIvC,CAAC;AAEF,wBAAsB,sBAAsB,CAAC,KAAK,EAAE;IAClD,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B,GAAG,OAAO,CAAC,UAAU,CAAC,CAwBtB;AAID,eAAO,MAAM,4BAA4B;;;;;CAUxC,CAAC;AAEF,wBAAsB,uBAAuB,CAAC,KAAK,EAAE;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B,GAAG,OAAO,CAAC,UAAU,CAAC,CAkFtB;AAID,eAAO,MAAM,4BAA4B;;CAExC,CAAC;AAEF,wBAAsB,uBAAuB,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAkB/F;AAID,eAAO,MAAM,+BAA+B;;;CAG3C,CAAC;AAEF,wBAAsB,0BAA0B,CAAC,KAAK,EAAE;IACtD,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,UAAU,CAAC,CA8BtB;AAID,eAAO,MAAM,wBAAwB;;;;;;CAMpC,CAAC;AAEF,wBAAsB,mBAAmB,CAAC,KAAK,EAAE;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B,GAAG,OAAO,CAAC,UAAU,CAAC,CAiDtB;AAID,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgDpB,CAAC"}