@agent-deck/backend 1.2.10 → 1.3.1

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 (58) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/cli-runtime.d.ts +62 -0
  3. package/dist/cli-runtime.d.ts.map +1 -1
  4. package/dist/cli-runtime.js +120 -0
  5. package/dist/cli-runtime.js.map +1 -1
  6. package/dist/export-import/export-bundle.d.ts +9 -0
  7. package/dist/export-import/export-bundle.d.ts.map +1 -0
  8. package/dist/export-import/export-bundle.js +78 -0
  9. package/dist/export-import/export-bundle.js.map +1 -0
  10. package/dist/export-import/import-bundle.d.ts +8 -0
  11. package/dist/export-import/import-bundle.d.ts.map +1 -0
  12. package/dist/export-import/import-bundle.js +267 -0
  13. package/dist/export-import/import-bundle.js.map +1 -0
  14. package/dist/export-import/index.d.ts +4 -0
  15. package/dist/export-import/index.d.ts.map +1 -0
  16. package/dist/export-import/index.js +15 -0
  17. package/dist/export-import/index.js.map +1 -0
  18. package/dist/export-import/sanitize-for-export.d.ts +8 -0
  19. package/dist/export-import/sanitize-for-export.d.ts.map +1 -0
  20. package/dist/export-import/sanitize-for-export.js +75 -0
  21. package/dist/export-import/sanitize-for-export.js.map +1 -0
  22. package/dist/mcp-server.d.ts +3 -1
  23. package/dist/mcp-server.d.ts.map +1 -1
  24. package/dist/mcp-server.js +22 -644
  25. package/dist/mcp-server.js.map +1 -1
  26. package/dist/mcp-tools/deck-card-ops.d.ts +21 -0
  27. package/dist/mcp-tools/deck-card-ops.d.ts.map +1 -0
  28. package/dist/mcp-tools/deck-card-ops.js +94 -0
  29. package/dist/mcp-tools/deck-card-ops.js.map +1 -0
  30. package/dist/mcp-tools/profile.d.ts +17 -0
  31. package/dist/mcp-tools/profile.d.ts.map +1 -0
  32. package/dist/mcp-tools/profile.js +25 -0
  33. package/dist/mcp-tools/profile.js.map +1 -0
  34. package/dist/mcp-tools/register.d.ts +49 -0
  35. package/dist/mcp-tools/register.d.ts.map +1 -0
  36. package/dist/mcp-tools/register.js +635 -0
  37. package/dist/mcp-tools/register.js.map +1 -0
  38. package/dist/mcp-tools/test-harness.d.ts +31 -0
  39. package/dist/mcp-tools/test-harness.d.ts.map +1 -0
  40. package/dist/mcp-tools/test-harness.js +108 -0
  41. package/dist/mcp-tools/test-harness.js.map +1 -0
  42. package/dist/models/database.d.ts +8 -0
  43. package/dist/models/database.d.ts.map +1 -1
  44. package/dist/models/database.js +151 -67
  45. package/dist/models/database.js.map +1 -1
  46. package/dist/routes/export-import.d.ts +3 -0
  47. package/dist/routes/export-import.d.ts.map +1 -0
  48. package/dist/routes/export-import.js +52 -0
  49. package/dist/routes/export-import.js.map +1 -0
  50. package/dist/server/index.d.ts.map +1 -1
  51. package/dist/server/index.js +2 -0
  52. package/dist/server/index.js.map +1 -1
  53. package/package.json +2 -2
  54. package/static-ui/assets/index-BkYGH65z.js +420 -0
  55. package/static-ui/assets/index-DMYIwycS.css +1 -0
  56. package/static-ui/index.html +2 -2
  57. package/static-ui/assets/index-CQoBRW1p.js +0 -409
  58. package/static-ui/assets/index-wleyGzod.css +0 -1
@@ -0,0 +1,635 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerMcpTools = registerMcpTools;
4
+ exports.listToolNamesForProfile = listToolNamesForProfile;
5
+ const zod_1 = require("zod");
6
+ const shared_1 = require("@agent-deck/shared");
7
+ const mcp_session_binding_1 = require("../mcp-session-binding");
8
+ const deck_card_ops_1 = require("./deck-card-ops");
9
+ const profile_1 = require("./profile");
10
+ const cardTypeSchema = zod_1.z.enum(['service', 'credential', 'playbook']);
11
+ function registerMcpTools(host) {
12
+ registerRuntimeTools(host);
13
+ if ((0, profile_1.profileIncludes)(host.profile, 'editing')) {
14
+ registerEditingTools(host);
15
+ }
16
+ if ((0, profile_1.profileIncludes)(host.profile, 'legacy')) {
17
+ registerLegacyTools(host);
18
+ }
19
+ }
20
+ function registerRuntimeTools(host) {
21
+ const { registerTool: r } = host;
22
+ r('bind_workspace', {
23
+ title: 'Bind Workspace',
24
+ description: 'Bind this MCP session to a workspace root and deck. Use get_decks to list deck ids.',
25
+ inputSchema: {
26
+ workspaceRoot: zod_1.z.string(),
27
+ deckId: zod_1.z.string().uuid(),
28
+ },
29
+ }, async ({ workspaceRoot, deckId }) => {
30
+ try {
31
+ const sessionId = host.getSessionId();
32
+ host.sessionBinding.setWorkspace(sessionId, workspaceRoot);
33
+ const deck = await host.fetchDeck(deckId);
34
+ host.sessionBinding.setDeckId(sessionId, deckId);
35
+ await host.registerLiveDisplay(sessionId);
36
+ const payload = await host.buildBindingPayload(sessionId);
37
+ return {
38
+ content: [{
39
+ type: 'text',
40
+ text: JSON.stringify({
41
+ ...payload,
42
+ deck_name: deck.name,
43
+ message: 'Session bound to deck.',
44
+ }, null, 2),
45
+ }],
46
+ };
47
+ }
48
+ catch (error) {
49
+ return host.toolError(error);
50
+ }
51
+ });
52
+ r('switch_bound_deck', {
53
+ title: 'Switch Bound Deck',
54
+ description: 'Switch the deck for this MCP session only. Use when multiple agent sessions share the same workspace path.',
55
+ inputSchema: { deckId: zod_1.z.string().uuid() },
56
+ }, async ({ deckId }) => {
57
+ try {
58
+ const sessionId = host.getSessionId();
59
+ const deck = await host.fetchDeck(deckId);
60
+ host.sessionBinding.setDeckId(sessionId, deckId);
61
+ await host.registerLiveDisplay(sessionId);
62
+ const payload = await host.buildBindingPayload(sessionId);
63
+ return {
64
+ content: [{
65
+ type: 'text',
66
+ text: JSON.stringify({
67
+ ...payload,
68
+ deck_name: deck.name,
69
+ message: 'Session deck switched. Other sessions are unchanged.',
70
+ }, null, 2),
71
+ }],
72
+ };
73
+ }
74
+ catch (error) {
75
+ return host.toolError(error);
76
+ }
77
+ });
78
+ r('get_session_binding', {
79
+ title: 'Get Session Binding',
80
+ description: 'Show workspace and effective deck for this MCP session (session override or env default).',
81
+ inputSchema: {},
82
+ }, async () => {
83
+ try {
84
+ const sessionId = host.getSessionId();
85
+ const snapshot = host.sessionBinding.getBinding(sessionId);
86
+ const deck = await host.callBackendAPI('/api/scope/deck');
87
+ const badge = host.badgeBySession.get(sessionId);
88
+ const cardCounts = deck ? (0, shared_1.countDeckCards)(deck) : { mcp: 0, credentials: 0, playbooks: 0 };
89
+ const displaySummary = (0, shared_1.formatDisplayLine)(deck?.name ?? null, cardCounts, { badge });
90
+ return {
91
+ content: [{
92
+ type: 'text',
93
+ text: JSON.stringify({
94
+ workspaceRoot: snapshot.workspaceRoot,
95
+ session_deck_id: snapshot.deckId,
96
+ session_deck_source: snapshot.deckSource,
97
+ effective_deck_id: deck?.id,
98
+ effective_deck_name: deck?.name,
99
+ effective_deck_source: (0, mcp_session_binding_1.resolveDeckBindingSource)(snapshot),
100
+ badge,
101
+ display_summary: displaySummary,
102
+ }, null, 2),
103
+ }],
104
+ };
105
+ }
106
+ catch (error) {
107
+ return host.toolError(error);
108
+ }
109
+ });
110
+ r('get_decks', {
111
+ title: 'Get Decks',
112
+ description: 'List all decks (metadata only). Use deck id with bind_workspace.',
113
+ inputSchema: {},
114
+ }, async () => {
115
+ try {
116
+ const decks = await host.callBackendAPI('/api/decks');
117
+ return host.toolResult(decks);
118
+ }
119
+ catch (error) {
120
+ return host.toolError(error);
121
+ }
122
+ });
123
+ r('get_bound_deck', {
124
+ title: 'Get Bound Deck',
125
+ description: 'Snapshot of the bound deck: services, API key metadata, playbook summaries, and display_summary. Prefer this over separate list_bound_deck_* tools.',
126
+ inputSchema: {},
127
+ }, async () => {
128
+ try {
129
+ const sessionId = host.getSessionId();
130
+ const deck = await host.callBackendAPI('/api/scope/deck');
131
+ const badge = host.badgeBySession.get(sessionId);
132
+ const cardCounts = deck ? (0, shared_1.countDeckCards)(deck) : { mcp: 0, credentials: 0, playbooks: 0 };
133
+ const displaySummary = (0, shared_1.formatDisplayLine)(deck?.name ?? null, cardCounts, { badge });
134
+ return host.toolResult({
135
+ ...deck,
136
+ display_summary: displaySummary,
137
+ });
138
+ }
139
+ catch (error) {
140
+ return host.toolError(error);
141
+ }
142
+ });
143
+ r('get_playbook', {
144
+ title: 'Get Playbook',
145
+ description: 'Full markdown body, metadata, and dependencies for a playbook on the bound deck',
146
+ inputSchema: { playbook_id: zod_1.z.string() },
147
+ }, async ({ playbook_id }) => {
148
+ try {
149
+ const playbook = await host.callBackendAPI(`/api/playbooks/${encodeURIComponent(playbook_id)}`);
150
+ return host.toolResult(playbook);
151
+ }
152
+ catch (error) {
153
+ return host.toolError(error);
154
+ }
155
+ });
156
+ r('update_playbook', {
157
+ title: 'Update Playbook',
158
+ description: 'Update a playbook on the bound deck. Dependencies are re-detected from updated content by default.',
159
+ inputSchema: {
160
+ playbook_id: zod_1.z.string(),
161
+ title: zod_1.z.string().optional(),
162
+ body: zod_1.z.string().optional(),
163
+ triggers: zod_1.z.array(zod_1.z.string()).optional(),
164
+ exec: zod_1.z.string().optional(),
165
+ skill: zod_1.z.string().optional(),
166
+ depends_on_credential_ids: zod_1.z.array(zod_1.z.string()).optional(),
167
+ depends_on_service_ids: zod_1.z.array(zod_1.z.string()).optional(),
168
+ auto_detect_dependencies: zod_1.z.boolean().optional(),
169
+ },
170
+ }, async ({ playbook_id, ...args }) => {
171
+ try {
172
+ const playbook = await host.callBackendAPI(`/api/playbooks/${encodeURIComponent(playbook_id)}`, {
173
+ method: 'PUT',
174
+ headers: { 'Content-Type': 'application/json' },
175
+ body: JSON.stringify({
176
+ title: args.title,
177
+ body: args.body,
178
+ triggers: args.triggers,
179
+ exec: args.exec,
180
+ skill: args.skill,
181
+ dependsOnCredentialIds: args.depends_on_credential_ids,
182
+ dependsOnServiceIds: args.depends_on_service_ids,
183
+ autoDetectDependencies: args.auto_detect_dependencies,
184
+ }),
185
+ });
186
+ return host.toolResult(playbook);
187
+ }
188
+ catch (error) {
189
+ return host.toolError(error);
190
+ }
191
+ });
192
+ r('list_service_tools', {
193
+ title: 'List Service Tools',
194
+ description: 'List proxied tools for an MCP service on the bound deck',
195
+ inputSchema: { serviceId: zod_1.z.string() },
196
+ }, async ({ serviceId }) => {
197
+ try {
198
+ const tools = await host.callBackendAPI(`/api/services/${serviceId}/tools`);
199
+ return host.toolResult(tools);
200
+ }
201
+ catch (error) {
202
+ return host.toolError(error);
203
+ }
204
+ });
205
+ r('call_service_tool', {
206
+ title: 'Call Service Tool',
207
+ description: 'Call a tool on an MCP service from the bound deck',
208
+ inputSchema: {
209
+ serviceId: zod_1.z.string(),
210
+ toolName: zod_1.z.string(),
211
+ arguments: zod_1.z.union([zod_1.z.record(zod_1.z.any()), zod_1.z.string()]).optional(),
212
+ },
213
+ }, async ({ serviceId, toolName, arguments: args = {} }) => {
214
+ try {
215
+ let normalizedArgs = args;
216
+ if (typeof normalizedArgs === 'string' && normalizedArgs.length > 0) {
217
+ try {
218
+ normalizedArgs = JSON.parse(normalizedArgs);
219
+ }
220
+ catch (e) {
221
+ return host.toolError(`Invalid JSON in arguments: ${String(e)}`);
222
+ }
223
+ }
224
+ const res = await fetch(`${host.backendUrl}/api/services/${serviceId}/call`, {
225
+ method: 'POST',
226
+ headers: {
227
+ ...host.getAgentHeaders(),
228
+ 'Content-Type': 'application/json',
229
+ },
230
+ body: JSON.stringify({ toolName, arguments: normalizedArgs ?? {} }),
231
+ });
232
+ if (!res.ok) {
233
+ const text = await res.text();
234
+ throw new Error(`Backend API error ${res.status}: ${text}`);
235
+ }
236
+ const body = (await res.json());
237
+ const data = body?.success ? (body.data ?? body.result ?? body) : body;
238
+ return host.toolResult(data);
239
+ }
240
+ catch (error) {
241
+ return host.toolError(error);
242
+ }
243
+ });
244
+ }
245
+ function registerEditingTools(host) {
246
+ const { registerTool: r } = host;
247
+ r('manage_deck_card', {
248
+ title: 'Manage Deck Card',
249
+ description: 'Link, unlink, or reorder a collection card on the bound deck. Card must exist in list_collection. Does not create cards or store API key secrets.',
250
+ inputSchema: {
251
+ action: zod_1.z.enum(['link', 'unlink', 'reorder']),
252
+ card_type: cardTypeSchema,
253
+ card_id: zod_1.z.string().optional(),
254
+ position: zod_1.z.number().optional(),
255
+ ordered_card_ids: zod_1.z.array(zod_1.z.string()).optional(),
256
+ },
257
+ }, async (input) => {
258
+ try {
259
+ const result = await (0, deck_card_ops_1.executeManageDeckCard)(host, input);
260
+ return host.toolResult(result);
261
+ }
262
+ catch (error) {
263
+ return host.toolError(error);
264
+ }
265
+ });
266
+ r('list_collection', {
267
+ title: 'List Collection',
268
+ description: 'List cards in My Collection (metadata only). Optional card_type filter: service, credential, or playbook.',
269
+ inputSchema: {
270
+ card_type: cardTypeSchema.optional(),
271
+ },
272
+ }, async (input) => {
273
+ try {
274
+ const result = await (0, deck_card_ops_1.executeListCollection)(host, input);
275
+ return host.toolResult(result);
276
+ }
277
+ catch (error) {
278
+ return host.toolError(error);
279
+ }
280
+ });
281
+ r('register_playbook', {
282
+ title: 'Register Playbook',
283
+ description: 'Create a playbook card, auto-detect dependencies, and link to the bound deck by default',
284
+ inputSchema: {
285
+ title: zod_1.z.string(),
286
+ body: zod_1.z.string(),
287
+ triggers: zod_1.z.array(zod_1.z.string()).optional(),
288
+ playbook_id: zod_1.z.string().optional(),
289
+ exec: zod_1.z.string().optional(),
290
+ skill: zod_1.z.string().optional(),
291
+ depends_on_credential_ids: zod_1.z.array(zod_1.z.string()).optional(),
292
+ depends_on_service_ids: zod_1.z.array(zod_1.z.string()).optional(),
293
+ add_to_bound_deck: zod_1.z.boolean().optional(),
294
+ auto_detect_dependencies: zod_1.z.boolean().optional(),
295
+ },
296
+ }, async (args) => {
297
+ try {
298
+ const playbook = await host.callBackendAPI('/api/playbooks', {
299
+ method: 'POST',
300
+ headers: { 'Content-Type': 'application/json' },
301
+ body: JSON.stringify({
302
+ title: args.title,
303
+ body: args.body,
304
+ triggers: args.triggers,
305
+ id: args.playbook_id,
306
+ exec: args.exec,
307
+ skill: args.skill,
308
+ dependsOnCredentialIds: args.depends_on_credential_ids,
309
+ dependsOnServiceIds: args.depends_on_service_ids,
310
+ addToBoundDeck: args.add_to_bound_deck,
311
+ autoDetectDependencies: args.auto_detect_dependencies,
312
+ }),
313
+ });
314
+ return host.toolResult(playbook);
315
+ }
316
+ catch (error) {
317
+ return host.toolError(error);
318
+ }
319
+ });
320
+ r('register_service', {
321
+ title: 'Register Service',
322
+ description: 'Register an MCP service in the collection. Links to bound deck by default. OAuth requires dashboard browser flow.',
323
+ inputSchema: {
324
+ name: zod_1.z.string(),
325
+ type: zod_1.z.enum(['mcp', 'a2a', 'local-mcp']),
326
+ url: zod_1.z.string(),
327
+ description: zod_1.z.string().optional(),
328
+ cardColor: zod_1.z.string().optional(),
329
+ credentialId: zod_1.z.string().optional(),
330
+ headers: zod_1.z.record(zod_1.z.string()).optional(),
331
+ localCommand: zod_1.z.string().optional(),
332
+ localArgs: zod_1.z.array(zod_1.z.string()).optional(),
333
+ localWorkingDir: zod_1.z.string().optional(),
334
+ localEnv: zod_1.z.record(zod_1.z.string()).optional(),
335
+ add_to_bound_deck: zod_1.z.boolean().optional(),
336
+ position: zod_1.z.number().optional(),
337
+ },
338
+ }, async (args) => {
339
+ try {
340
+ const { add_to_bound_deck, position, ...serviceInput } = args;
341
+ const service = await host.callBackendAPI('/api/services', {
342
+ method: 'POST',
343
+ headers: { 'Content-Type': 'application/json' },
344
+ body: JSON.stringify(serviceInput),
345
+ });
346
+ if (add_to_bound_deck !== false) {
347
+ await (0, deck_card_ops_1.executeManageDeckCard)(host, {
348
+ action: 'link',
349
+ card_type: 'service',
350
+ card_id: service.id,
351
+ position,
352
+ });
353
+ }
354
+ return host.toolResult(service);
355
+ }
356
+ catch (error) {
357
+ return host.toolError(error);
358
+ }
359
+ });
360
+ r('update_service', {
361
+ title: 'Update Service',
362
+ description: 'Update MCP service metadata (not OAuth tokens — use dashboard for OAuth)',
363
+ inputSchema: {
364
+ service_id: zod_1.z.string(),
365
+ name: zod_1.z.string().optional(),
366
+ type: zod_1.z.enum(['mcp', 'a2a', 'local-mcp']).optional(),
367
+ url: zod_1.z.string().optional(),
368
+ description: zod_1.z.string().optional(),
369
+ cardColor: zod_1.z.string().optional(),
370
+ credentialId: zod_1.z.string().optional(),
371
+ headers: zod_1.z.record(zod_1.z.string()).optional(),
372
+ localCommand: zod_1.z.string().optional(),
373
+ localArgs: zod_1.z.array(zod_1.z.string()).optional(),
374
+ localWorkingDir: zod_1.z.string().optional(),
375
+ localEnv: zod_1.z.record(zod_1.z.string()).optional(),
376
+ },
377
+ }, async ({ service_id, ...updates }) => {
378
+ try {
379
+ const service = await host.callBackendAPI(`/api/services/${service_id}`, {
380
+ method: 'PUT',
381
+ headers: { 'Content-Type': 'application/json' },
382
+ body: JSON.stringify(updates),
383
+ });
384
+ return host.toolResult(service);
385
+ }
386
+ catch (error) {
387
+ return host.toolError(error);
388
+ }
389
+ });
390
+ r('update_service_tool_settings', {
391
+ title: 'Update Service Tool Settings',
392
+ description: 'Enable or disable individual proxied tools for a service on the bound deck',
393
+ inputSchema: {
394
+ service_id: zod_1.z.string(),
395
+ disabled_tools: zod_1.z.array(zod_1.z.string()),
396
+ },
397
+ }, async ({ service_id, disabled_tools }) => {
398
+ try {
399
+ const service = await host.callBackendAPI(`/api/services/${service_id}/tool-settings`, {
400
+ method: 'PUT',
401
+ headers: { 'Content-Type': 'application/json' },
402
+ body: JSON.stringify({ disabledTools: disabled_tools }),
403
+ });
404
+ return host.toolResult(service);
405
+ }
406
+ catch (error) {
407
+ return host.toolError(error);
408
+ }
409
+ });
410
+ r('create_deck', {
411
+ title: 'Create Deck',
412
+ description: 'Create a new deck, then bind_workspace to use it',
413
+ inputSchema: {
414
+ name: zod_1.z.string(),
415
+ description: zod_1.z.string().optional(),
416
+ },
417
+ }, async ({ name, description }) => {
418
+ try {
419
+ const deck = await host.callBackendAPI('/api/decks', {
420
+ method: 'POST',
421
+ headers: { 'Content-Type': 'application/json' },
422
+ body: JSON.stringify({ name, description }),
423
+ });
424
+ return host.toolResult(deck);
425
+ }
426
+ catch (error) {
427
+ return host.toolError(error);
428
+ }
429
+ });
430
+ }
431
+ function registerLegacyTools(host) {
432
+ const { registerTool: r } = host;
433
+ const boundDeckListHandler = async (segment) => {
434
+ const deck = await host.callBackendAPI('/api/scope/deck');
435
+ if (segment === 'services') {
436
+ return host.toolResult(deck?.services ?? []);
437
+ }
438
+ if (segment === 'credentials') {
439
+ const credentials = await host.callBackendAPI('/api/credentials');
440
+ return host.toolResult(credentials);
441
+ }
442
+ const playbooks = await host.callBackendAPI('/api/playbooks/summaries');
443
+ return host.toolResult(playbooks);
444
+ };
445
+ r('get_active_deck', {
446
+ title: 'Get Active Deck (deprecated)',
447
+ description: 'Deprecated — use get_bound_deck',
448
+ inputSchema: {},
449
+ }, async () => {
450
+ try {
451
+ const deck = await host.callBackendAPI('/api/scope/deck');
452
+ return host.toolResult(deck);
453
+ }
454
+ catch (error) {
455
+ return host.toolError(error);
456
+ }
457
+ });
458
+ r('list_bound_deck_services', {
459
+ title: 'List Bound Deck Services (deprecated)',
460
+ description: 'Deprecated — use get_bound_deck',
461
+ inputSchema: {},
462
+ }, async () => {
463
+ try {
464
+ return boundDeckListHandler('services');
465
+ }
466
+ catch (error) {
467
+ return host.toolError(error);
468
+ }
469
+ });
470
+ r('list_active_deck_services', {
471
+ title: 'List Active Deck Services (deprecated)',
472
+ description: 'Deprecated — use get_bound_deck',
473
+ inputSchema: {},
474
+ }, async () => {
475
+ try {
476
+ return boundDeckListHandler('services');
477
+ }
478
+ catch (error) {
479
+ return host.toolError(error);
480
+ }
481
+ });
482
+ r('list_bound_deck_credentials', {
483
+ title: 'List Bound Deck Credentials (deprecated)',
484
+ description: 'Deprecated — use get_bound_deck',
485
+ inputSchema: {},
486
+ }, async () => {
487
+ try {
488
+ return boundDeckListHandler('credentials');
489
+ }
490
+ catch (error) {
491
+ return host.toolError(error);
492
+ }
493
+ });
494
+ r('list_active_deck_credentials', {
495
+ title: 'List Active Deck Credentials (deprecated)',
496
+ description: 'Deprecated — use get_bound_deck',
497
+ inputSchema: {},
498
+ }, async () => {
499
+ try {
500
+ return boundDeckListHandler('credentials');
501
+ }
502
+ catch (error) {
503
+ return host.toolError(error);
504
+ }
505
+ });
506
+ r('list_playbooks', {
507
+ title: 'List Playbooks (deprecated)',
508
+ description: 'Deprecated — use get_bound_deck for summaries or get_playbook for full body',
509
+ inputSchema: {},
510
+ }, async () => {
511
+ try {
512
+ return boundDeckListHandler('playbooks');
513
+ }
514
+ catch (error) {
515
+ return host.toolError(error);
516
+ }
517
+ });
518
+ r('list_collection_services', {
519
+ title: 'List Collection Services (deprecated)',
520
+ description: 'Deprecated — use list_collection',
521
+ inputSchema: {},
522
+ }, async () => {
523
+ try {
524
+ const services = await host.callBackendAPI('/api/services');
525
+ return host.toolResult(services);
526
+ }
527
+ catch (error) {
528
+ return host.toolError(error);
529
+ }
530
+ });
531
+ r('list_collection_credentials', {
532
+ title: 'List Collection Credentials (deprecated)',
533
+ description: 'Deprecated — use list_collection',
534
+ inputSchema: {},
535
+ }, async () => {
536
+ try {
537
+ const credentials = await host.callBackendAPI('/api/credentials/collection');
538
+ return host.toolResult(credentials);
539
+ }
540
+ catch (error) {
541
+ return host.toolError(error);
542
+ }
543
+ });
544
+ r('list_collection_playbooks', {
545
+ title: 'List Collection Playbooks (deprecated)',
546
+ description: 'Deprecated — use list_collection',
547
+ inputSchema: {},
548
+ }, async () => {
549
+ try {
550
+ const playbooks = await host.callBackendAPI('/api/playbooks/collection');
551
+ return host.toolResult(playbooks);
552
+ }
553
+ catch (error) {
554
+ return host.toolError(error);
555
+ }
556
+ });
557
+ const legacyLink = (name, title, cardType, idField) => {
558
+ r(name, {
559
+ title,
560
+ description: 'Deprecated — use manage_deck_card',
561
+ inputSchema: {
562
+ [idField]: zod_1.z.string(),
563
+ position: zod_1.z.number().optional(),
564
+ },
565
+ }, async (args) => {
566
+ try {
567
+ const result = await (0, deck_card_ops_1.executeManageDeckCard)(host, {
568
+ action: 'link',
569
+ card_type: cardType,
570
+ card_id: String(args[idField]),
571
+ position: args.position,
572
+ });
573
+ return host.toolResult({ ...result, [idField]: args[idField] });
574
+ }
575
+ catch (error) {
576
+ return host.toolError(error);
577
+ }
578
+ });
579
+ };
580
+ const legacyUnlink = (name, title, cardType, idField) => {
581
+ r(name, {
582
+ title,
583
+ description: 'Deprecated — use manage_deck_card',
584
+ inputSchema: { [idField]: zod_1.z.string() },
585
+ }, async (args) => {
586
+ try {
587
+ const result = await (0, deck_card_ops_1.executeManageDeckCard)(host, {
588
+ action: 'unlink',
589
+ card_type: cardType,
590
+ card_id: String(args[idField]),
591
+ });
592
+ return host.toolResult({ ...result, [idField]: args[idField] });
593
+ }
594
+ catch (error) {
595
+ return host.toolError(error);
596
+ }
597
+ });
598
+ };
599
+ legacyLink('add_service_to_bound_deck', 'Add Service To Bound Deck (deprecated)', 'service', 'service_id');
600
+ legacyUnlink('remove_service_from_bound_deck', 'Remove Service From Bound Deck (deprecated)', 'service', 'service_id');
601
+ legacyLink('add_credential_to_bound_deck', 'Add Credential To Bound Deck (deprecated)', 'credential', 'credential_id');
602
+ legacyUnlink('remove_credential_from_bound_deck', 'Remove Credential From Bound Deck (deprecated)', 'credential', 'credential_id');
603
+ legacyLink('add_playbook_to_bound_deck', 'Add Playbook To Bound Deck (deprecated)', 'playbook', 'playbook_id');
604
+ legacyUnlink('remove_playbook_from_bound_deck', 'Remove Playbook From Bound Deck (deprecated)', 'playbook', 'playbook_id');
605
+ }
606
+ function listToolNamesForProfile(profile) {
607
+ const names = [];
608
+ const collector = (name) => {
609
+ names.push(name);
610
+ };
611
+ const stubHost = {
612
+ registerTool: collector,
613
+ profile,
614
+ getSessionId: () => 'stub',
615
+ getAgentHeaders: () => ({}),
616
+ getBoundDeckId: async () => 'deck',
617
+ callBackendAPI: async () => ({}),
618
+ fetchDeck: async () => ({ id: 'deck', name: 'stub' }),
619
+ buildBindingPayload: async () => ({}),
620
+ registerLiveDisplay: async () => { },
621
+ sessionBinding: {
622
+ getBinding: () => ({}),
623
+ setWorkspace: () => { },
624
+ setDeckId: () => { },
625
+ hasSessionDeckOverride: () => false,
626
+ },
627
+ badgeBySession: new Map(),
628
+ backendUrl: 'http://127.0.0.1:1',
629
+ toolResult: (data) => ({ content: [{ type: 'text', text: String(data) }] }),
630
+ toolError: (error) => ({ content: [{ type: 'text', text: String(error) }] }),
631
+ };
632
+ registerMcpTools(stubHost);
633
+ return names;
634
+ }
635
+ //# sourceMappingURL=register.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/mcp-tools/register.ts"],"names":[],"mappings":"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"}