@agent-deck/backend 1.2.10 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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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"}