@agent-deck/backend 1.6.2 → 1.7.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.
Files changed (162) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/export-import/sanitize-for-export.d.ts +9 -0
  3. package/dist/export-import/sanitize-for-export.d.ts.map +1 -1
  4. package/dist/export-import/sanitize-for-export.js +21 -0
  5. package/dist/export-import/sanitize-for-export.js.map +1 -1
  6. package/dist/lib/agent-deck-context.d.ts +4 -2
  7. package/dist/lib/agent-deck-context.d.ts.map +1 -1
  8. package/dist/lib/agent-deck-context.js +35 -8
  9. package/dist/lib/agent-deck-context.js.map +1 -1
  10. package/dist/lib/backend-api-error.d.ts +8 -0
  11. package/dist/lib/backend-api-error.d.ts.map +1 -0
  12. package/dist/lib/backend-api-error.js +35 -0
  13. package/dist/lib/backend-api-error.js.map +1 -0
  14. package/dist/lib/bound-deck-scope.d.ts +6 -1
  15. package/dist/lib/bound-deck-scope.d.ts.map +1 -1
  16. package/dist/lib/bound-deck-scope.js +21 -2
  17. package/dist/lib/bound-deck-scope.js.map +1 -1
  18. package/dist/lib/client-scope.d.ts.map +1 -1
  19. package/dist/lib/client-scope.js +6 -23
  20. package/dist/lib/client-scope.js.map +1 -1
  21. package/dist/lib/dashboard-auth.d.ts +7 -0
  22. package/dist/lib/dashboard-auth.d.ts.map +1 -0
  23. package/dist/lib/dashboard-auth.js +38 -0
  24. package/dist/lib/dashboard-auth.js.map +1 -0
  25. package/dist/lib/http-auth.d.ts +5 -0
  26. package/dist/lib/http-auth.d.ts.map +1 -0
  27. package/dist/lib/http-auth.js +11 -0
  28. package/dist/lib/http-auth.js.map +1 -0
  29. package/dist/lib/route-policy.d.ts +13 -0
  30. package/dist/lib/route-policy.d.ts.map +1 -0
  31. package/dist/lib/route-policy.js +50 -0
  32. package/dist/lib/route-policy.js.map +1 -0
  33. package/dist/mcp-server.d.ts +7 -0
  34. package/dist/mcp-server.d.ts.map +1 -1
  35. package/dist/mcp-server.js +101 -23
  36. package/dist/mcp-server.js.map +1 -1
  37. package/dist/mcp-session-binding.d.ts +16 -3
  38. package/dist/mcp-session-binding.d.ts.map +1 -1
  39. package/dist/mcp-session-binding.js +40 -5
  40. package/dist/mcp-session-binding.js.map +1 -1
  41. package/dist/mcp-tools/policy.d.ts +20 -0
  42. package/dist/mcp-tools/policy.d.ts.map +1 -0
  43. package/dist/mcp-tools/policy.js +61 -0
  44. package/dist/mcp-tools/policy.js.map +1 -0
  45. package/dist/mcp-tools/profile.d.ts +2 -2
  46. package/dist/mcp-tools/register.d.ts +13 -0
  47. package/dist/mcp-tools/register.d.ts.map +1 -1
  48. package/dist/mcp-tools/register.js +154 -89
  49. package/dist/mcp-tools/register.js.map +1 -1
  50. package/dist/mcp-tools/test-harness.d.ts +7 -2
  51. package/dist/mcp-tools/test-harness.d.ts.map +1 -1
  52. package/dist/mcp-tools/test-harness.js +37 -9
  53. package/dist/mcp-tools/test-harness.js.map +1 -1
  54. package/dist/models/database.d.ts +2 -0
  55. package/dist/models/database.d.ts.map +1 -1
  56. package/dist/models/database.js +3 -0
  57. package/dist/models/database.js.map +1 -1
  58. package/dist/routes/credentials.d.ts.map +1 -1
  59. package/dist/routes/credentials.js +25 -23
  60. package/dist/routes/credentials.js.map +1 -1
  61. package/dist/routes/decks.d.ts.map +1 -1
  62. package/dist/routes/decks.js +75 -33
  63. package/dist/routes/decks.js.map +1 -1
  64. package/dist/routes/oauth.d.ts.map +1 -1
  65. package/dist/routes/oauth.js +16 -5
  66. package/dist/routes/oauth.js.map +1 -1
  67. package/dist/routes/playbooks.d.ts +0 -2
  68. package/dist/routes/playbooks.d.ts.map +1 -1
  69. package/dist/routes/playbooks.js +58 -117
  70. package/dist/routes/playbooks.js.map +1 -1
  71. package/dist/routes/scope.d.ts.map +1 -1
  72. package/dist/routes/scope.js +6 -2
  73. package/dist/routes/scope.js.map +1 -1
  74. package/dist/routes/services.d.ts.map +1 -1
  75. package/dist/routes/services.js +65 -16
  76. package/dist/routes/services.js.map +1 -1
  77. package/dist/routes/trusted-session.d.ts +10 -0
  78. package/dist/routes/trusted-session.d.ts.map +1 -0
  79. package/dist/routes/trusted-session.js +383 -0
  80. package/dist/routes/trusted-session.js.map +1 -0
  81. package/dist/scope/live-display-registry.d.ts +2 -1
  82. package/dist/scope/live-display-registry.d.ts.map +1 -1
  83. package/dist/scope/live-display-registry.js +3 -1
  84. package/dist/scope/live-display-registry.js.map +1 -1
  85. package/dist/server/index.d.ts +4 -1
  86. package/dist/server/index.d.ts.map +1 -1
  87. package/dist/server/index.js +28 -3
  88. package/dist/server/index.js.map +1 -1
  89. package/dist/services/collection-warning-service.d.ts +3 -0
  90. package/dist/services/collection-warning-service.d.ts.map +1 -1
  91. package/dist/services/collection-warning-service.js +24 -1
  92. package/dist/services/collection-warning-service.js.map +1 -1
  93. package/dist/services/oauth-manager.d.ts +2 -0
  94. package/dist/services/oauth-manager.d.ts.map +1 -1
  95. package/dist/services/oauth-manager.js +12 -0
  96. package/dist/services/oauth-manager.js.map +1 -1
  97. package/dist/services/service-manager.d.ts +21 -1
  98. package/dist/services/service-manager.d.ts.map +1 -1
  99. package/dist/services/service-manager.js +95 -10
  100. package/dist/services/service-manager.js.map +1 -1
  101. package/dist/test/auth-fixtures.d.ts +4 -0
  102. package/dist/test/auth-fixtures.d.ts.map +1 -0
  103. package/dist/test/auth-fixtures.js +28 -0
  104. package/dist/test/auth-fixtures.js.map +1 -0
  105. package/dist/trusted-session/admin-secret.d.ts +6 -0
  106. package/dist/trusted-session/admin-secret.d.ts.map +1 -0
  107. package/dist/trusted-session/admin-secret.js +63 -0
  108. package/dist/trusted-session/admin-secret.js.map +1 -0
  109. package/dist/trusted-session/auth.d.ts +29 -0
  110. package/dist/trusted-session/auth.d.ts.map +1 -0
  111. package/dist/trusted-session/auth.js +176 -0
  112. package/dist/trusted-session/auth.js.map +1 -0
  113. package/dist/trusted-session/policy-hook.d.ts +12 -0
  114. package/dist/trusted-session/policy-hook.d.ts.map +1 -0
  115. package/dist/trusted-session/policy-hook.js +71 -0
  116. package/dist/trusted-session/policy-hook.js.map +1 -0
  117. package/dist/trusted-session/route-policy-registry.d.ts +20 -0
  118. package/dist/trusted-session/route-policy-registry.d.ts.map +1 -0
  119. package/dist/trusted-session/route-policy-registry.js +165 -0
  120. package/dist/trusted-session/route-policy-registry.js.map +1 -0
  121. package/dist/trusted-session/store.d.ts +93 -0
  122. package/dist/trusted-session/store.d.ts.map +1 -0
  123. package/dist/trusted-session/store.js +451 -0
  124. package/dist/trusted-session/store.js.map +1 -0
  125. package/dist/vault/index.d.ts +1 -0
  126. package/dist/vault/index.d.ts.map +1 -1
  127. package/dist/vault/index.js +1 -0
  128. package/dist/vault/index.js.map +1 -1
  129. package/dist/vault/service-header-vault.d.ts +16 -0
  130. package/dist/vault/service-header-vault.d.ts.map +1 -0
  131. package/dist/vault/service-header-vault.js +54 -0
  132. package/dist/vault/service-header-vault.js.map +1 -0
  133. package/package.json +5 -5
  134. package/static-ui/assets/index-DUyowkPn.js +499 -0
  135. package/static-ui/assets/index-cJDgESGn.css +1 -0
  136. package/static-ui/index.html +2 -2
  137. package/dist/mcp-stdio.d.ts +0 -2
  138. package/dist/mcp-stdio.d.ts.map +0 -1
  139. package/dist/mcp-stdio.js.map +0 -1
  140. package/dist/playbooks/playbook-parser.d.ts +0 -8
  141. package/dist/playbooks/playbook-parser.d.ts.map +0 -1
  142. package/dist/playbooks/playbook-parser.js +0 -76
  143. package/dist/playbooks/playbook-parser.js.map +0 -1
  144. package/dist/playbooks/playbook-service.d.ts +0 -9
  145. package/dist/playbooks/playbook-service.d.ts.map +0 -1
  146. package/dist/playbooks/playbook-service.js +0 -107
  147. package/dist/playbooks/playbook-service.js.map +0 -1
  148. package/dist/scope/bindings-sidecar.d.ts +0 -9
  149. package/dist/scope/bindings-sidecar.d.ts.map +0 -1
  150. package/dist/scope/bindings-sidecar.js +0 -57
  151. package/dist/scope/bindings-sidecar.js.map +0 -1
  152. package/dist/scope/repo-deck.d.ts +0 -10
  153. package/dist/scope/repo-deck.d.ts.map +0 -1
  154. package/dist/scope/repo-deck.js +0 -63
  155. package/dist/scope/repo-deck.js.map +0 -1
  156. package/dist/test-local-mcp-e2e.d.ts +0 -3
  157. package/dist/test-local-mcp-e2e.d.ts.map +0 -1
  158. package/dist/test-local-mcp-e2e.js +0 -104
  159. package/dist/test-local-mcp-e2e.js.map +0 -1
  160. package/static-ui/assets/index-C5IxoxXU.js +0 -485
  161. package/static-ui/assets/index-D2xN_rHi.css +0 -1
  162. package/static-ui/favicon.png +0 -0
@@ -1,15 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PlaybookDependencyError = void 0;
4
3
  exports.registerPlaybookRoutes = registerPlaybookRoutes;
5
4
  const shared_1 = require("@agent-deck/shared");
6
5
  const zod_1 = require("zod");
7
6
  const client_scope_1 = require("../lib/client-scope");
8
7
  const agent_deck_context_1 = require("../lib/agent-deck-context");
9
8
  const bound_deck_scope_1 = require("../lib/bound-deck-scope");
10
- const playbook_manager_1 = require("../playbooks/playbook-manager");
11
- Object.defineProperty(exports, "PlaybookDependencyError", { enumerable: true, get: function () { return playbook_manager_1.PlaybookDependencyError; } });
12
- const stub_workspace_sync_1 = require("../playbooks/stub-workspace-sync");
13
9
  const playbook_patches_1 = require("./playbook-patches");
14
10
  function dashboardOnlyResponse(error) {
15
11
  const message = error instanceof client_scope_1.DashboardOnlyError
@@ -22,25 +18,29 @@ function dashboardOnlyResponse(error) {
22
18
  body: { success: false, error: message },
23
19
  };
24
20
  }
25
- function formatPlaybookMutationError(error, forAgent) {
26
- if (error instanceof shared_1.TriggerValidationError) {
27
- return (0, shared_1.triggerErrorMessage)(error, forAgent);
28
- }
21
+ function formatPlaybookMutationError(error) {
29
22
  if (error instanceof zod_1.ZodError) {
30
- let message = error.issues.map((issue) => issue.message).join('; ');
31
- if (forAgent &&
32
- /triggers per playbook|Cannot grow triggers/i.test(message) &&
33
- !message.includes('do not ask the user')) {
34
- message +=
35
- ' Fix the trigger list and retry — do not ask the user to resolve this.';
36
- }
37
- return message;
23
+ return error.issues.map((issue) => issue.message).join('; ');
38
24
  }
39
25
  return error instanceof Error ? error.message : 'Unknown error';
40
26
  }
27
+ async function sendPlaybookWithOpenPatches(fastify, request, reply, playbook) {
28
+ await fastify.db.recordPlaybookEvent({
29
+ id: (0, shared_1.generateId)(),
30
+ playbookId: playbook.id,
31
+ event: 'fetched',
32
+ source: (0, playbook_patches_1.playbookEventSource)(request),
33
+ });
34
+ const openPatches = await fastify.patchManager.listOpenPatchSummaries(playbook.id);
35
+ return reply.send({
36
+ success: true,
37
+ data: { ...playbook, openPatches },
38
+ });
39
+ }
41
40
  async function registerPlaybookRoutes(fastify) {
42
41
  fastify.get('/collection', async (request, reply) => {
43
42
  try {
43
+ (0, client_scope_1.requireDashboardClient)(request);
44
44
  const playbooks = await fastify.playbookManager.list();
45
45
  return reply.send({ success: true, data: playbooks });
46
46
  }
@@ -112,141 +112,81 @@ async function registerPlaybookRoutes(fastify) {
112
112
  });
113
113
  fastify.get('/:id', async (request, reply) => {
114
114
  try {
115
- let playbook;
116
115
  if ((0, client_scope_1.isDashboardClient)(request)) {
117
- playbook = await fastify.playbookManager.getWithDependencies(request.params.id);
118
- }
119
- else {
120
- const deckId = await (0, agent_deck_context_1.resolveAgentDeckId)(request, fastify.db);
121
- const onDeck = await fastify.playbookManager.isPlaybookOnDeck(deckId, request.params.id);
122
- playbook = onDeck
123
- ? await fastify.playbookManager.getWithDependencies(request.params.id)
124
- : null;
116
+ const playbook = await fastify.playbookManager.getWithDependencies(request.params.id);
117
+ if (!playbook) {
118
+ return reply.status(404).send({
119
+ success: false,
120
+ error: 'Playbook not found',
121
+ });
122
+ }
123
+ return sendPlaybookWithOpenPatches(fastify, request, reply, playbook);
125
124
  }
125
+ await (0, bound_deck_scope_1.requirePlaybookOnBoundDeck)(request, fastify.db, request.params.id);
126
+ const playbook = await fastify.playbookManager.getWithDependencies(request.params.id);
126
127
  if (!playbook) {
127
- return reply.status((0, client_scope_1.isDashboardClient)(request) ? 404 : 403).send({
128
+ return reply.status(404).send({
128
129
  success: false,
129
- error: (0, client_scope_1.isDashboardClient)(request)
130
- ? 'Playbook not found'
131
- : 'Playbook not found on bound deck',
130
+ error: 'Playbook not found',
132
131
  });
133
132
  }
134
- await fastify.db.recordPlaybookEvent({
135
- id: (0, shared_1.generateId)(),
136
- playbookId: playbook.id,
137
- event: 'fetched',
138
- source: (0, playbook_patches_1.playbookEventSource)(request),
139
- });
140
- const openPatches = await fastify.patchManager.listOpenPatchSummaries(playbook.id);
141
- return reply.send({
142
- success: true,
143
- data: { ...playbook, openPatches },
144
- });
133
+ return sendPlaybookWithOpenPatches(fastify, request, reply, playbook);
145
134
  }
146
135
  catch (error) {
147
- return reply.status(500).send({
136
+ const scoped = (0, bound_deck_scope_1.boundDeckScopeResponse)(error);
137
+ if (scoped.error_code) {
138
+ return reply.status(scoped.status).send((0, shared_1.trustedSessionError)(scoped.error_code, scoped.message));
139
+ }
140
+ return reply.status(scoped.status).send({
148
141
  success: false,
149
- error: error instanceof Error ? error.message : 'Unknown error',
142
+ error: scoped.message,
150
143
  });
151
144
  }
152
145
  });
153
146
  fastify.post('/', async (request, reply) => {
154
147
  try {
155
- if ((0, client_scope_1.isDashboardClient)(request)) {
156
- (0, client_scope_1.requireDashboardClient)(request);
157
- const input = shared_1.DashboardRegisterPlaybookSchema.parse(request.body);
158
- const { autoDetectDependencies, ...createInput } = input;
159
- const playbook = await fastify.playbookManager.createWithDependencies({
160
- ...createInput,
161
- addToBoundDeck: false,
162
- autoDetectDependencies,
163
- });
164
- return reply
165
- .status(201)
166
- .send({ success: true, data: playbook });
167
- }
168
- const deckId = await (0, agent_deck_context_1.resolveAgentDeckId)(request, fastify.db);
169
- const input = shared_1.AgentRegisterPlaybookSchema.parse(request.body);
170
- const playbook = await fastify.playbookManager.createWithDependencies(input);
171
- if (input.addToBoundDeck) {
172
- const alreadyOnDeck = await fastify.playbookManager.isPlaybookOnDeck(deckId, playbook.id);
173
- if (!alreadyOnDeck) {
174
- await fastify.playbookManager.addToDeck({ deckId, playbookId: playbook.id });
175
- }
176
- }
177
- const trigger_warnings = await (0, stub_workspace_sync_1.triggerWarningsForDeck)(fastify.playbookManager, deckId, { id: playbook.id, title: playbook.title, triggers: playbook.triggers });
148
+ (0, client_scope_1.requireDashboardClient)(request);
149
+ const input = shared_1.DashboardRegisterPlaybookSchema.parse(request.body);
150
+ const { autoDetectDependencies, ...createInput } = input;
151
+ const playbook = await fastify.playbookManager.createWithDependencies({
152
+ ...createInput,
153
+ addToBoundDeck: false,
154
+ autoDetectDependencies,
155
+ });
178
156
  return reply
179
157
  .status(201)
180
- .send({
181
- success: true,
182
- data: { ...playbook, trigger_warnings },
183
- });
158
+ .send({ success: true, data: playbook });
184
159
  }
185
160
  catch (error) {
186
- if (error instanceof agent_deck_context_1.AgentDeckContextError) {
187
- return reply.status(400).send({
188
- success: false,
189
- error: error.message,
190
- });
191
- }
192
161
  if (error instanceof client_scope_1.DashboardOnlyError) {
193
162
  const { status, body } = dashboardOnlyResponse(error);
194
- return reply.status(status === 403 ? 400 : status).send(body);
163
+ return reply.status(status).send(body);
195
164
  }
196
- const forAgent = !(0, client_scope_1.isDashboardClient)(request);
197
165
  return reply.status(400).send({
198
166
  success: false,
199
- error: formatPlaybookMutationError(error, forAgent),
167
+ error: formatPlaybookMutationError(error),
200
168
  });
201
169
  }
202
170
  });
203
171
  fastify.put('/:id', async (request, reply) => {
204
172
  try {
205
- if ((0, client_scope_1.isDashboardClient)(request)) {
206
- (0, client_scope_1.requireDashboardClient)(request);
207
- const input = shared_1.DashboardUpdatePlaybookSchema.parse(request.body);
208
- const playbook = await fastify.playbookManager.updateWithDependencies(request.params.id, input);
209
- if (!playbook) {
210
- return reply.status(404).send({ success: false, error: 'Playbook not found' });
211
- }
212
- await fastify.patchManager.snapshotVersion(playbook, null, 'user');
213
- return reply.send({ success: true, data: playbook });
214
- }
215
- const deckId = await (0, agent_deck_context_1.resolveAgentDeckId)(request, fastify.db);
216
- const onDeck = await fastify.playbookManager.isPlaybookOnDeck(deckId, request.params.id);
217
- if (!onDeck) {
218
- return reply.status(403).send({
219
- success: false,
220
- error: 'Playbook not found on bound deck',
221
- });
222
- }
223
- const input = shared_1.AgentUpdatePlaybookSchema.parse(request.body);
173
+ (0, client_scope_1.requireDashboardClient)(request);
174
+ const input = shared_1.DashboardUpdatePlaybookSchema.parse(request.body);
224
175
  const playbook = await fastify.playbookManager.updateWithDependencies(request.params.id, input);
225
176
  if (!playbook) {
226
177
  return reply.status(404).send({ success: false, error: 'Playbook not found' });
227
178
  }
228
179
  await fastify.patchManager.snapshotVersion(playbook, null, 'user');
229
- const trigger_warnings = await (0, stub_workspace_sync_1.triggerWarningsForDeck)(fastify.playbookManager, deckId, { id: playbook.id, title: playbook.title, triggers: playbook.triggers });
230
- return reply.send({
231
- success: true,
232
- data: { ...playbook, trigger_warnings },
233
- });
180
+ return reply.send({ success: true, data: playbook });
234
181
  }
235
182
  catch (error) {
236
- if (error instanceof agent_deck_context_1.AgentDeckContextError) {
237
- return reply.status(400).send({
238
- success: false,
239
- error: error.message,
240
- });
241
- }
242
183
  if (error instanceof client_scope_1.DashboardOnlyError) {
243
184
  const { status, body } = dashboardOnlyResponse(error);
244
- return reply.status(status === 403 ? 400 : status).send(body);
185
+ return reply.status(status).send(body);
245
186
  }
246
- const forAgent = !(0, client_scope_1.isDashboardClient)(request);
247
187
  return reply.status(400).send({
248
188
  success: false,
249
- error: formatPlaybookMutationError(error, forAgent),
189
+ error: formatPlaybookMutationError(error),
250
190
  });
251
191
  }
252
192
  });
@@ -265,9 +205,7 @@ async function registerPlaybookRoutes(fastify) {
265
205
  });
266
206
  fastify.delete('/:id', async (request, reply) => {
267
207
  try {
268
- if (!(0, client_scope_1.isDashboardClient)(request)) {
269
- await (0, bound_deck_scope_1.requirePlaybookOnBoundDeck)(request, fastify.db, request.params.id);
270
- }
208
+ (0, client_scope_1.requireDashboardClient)(request);
271
209
  const deleted = await fastify.playbookManager.delete(request.params.id);
272
210
  if (!deleted) {
273
211
  return reply.status(404).send({ success: false, error: 'Playbook not found' });
@@ -275,10 +213,13 @@ async function registerPlaybookRoutes(fastify) {
275
213
  return reply.send({ success: true, message: 'Playbook deleted successfully' });
276
214
  }
277
215
  catch (error) {
278
- const scoped = (0, bound_deck_scope_1.boundDeckScopeResponse)(error);
279
- return reply.status(scoped.status).send({
216
+ if (error instanceof client_scope_1.DashboardOnlyError) {
217
+ const { status, body } = dashboardOnlyResponse(error);
218
+ return reply.status(status).send(body);
219
+ }
220
+ return reply.status(500).send({
280
221
  success: false,
281
- error: scoped.message,
222
+ error: error instanceof Error ? error.message : 'Unknown error',
282
223
  });
283
224
  }
284
225
  });
@@ -1 +1 @@
1
- {"version":3,"file":"playbooks.js","sourceRoot":"","sources":["../../src/routes/playbooks.ts"],"names":[],"mappings":";;;AAmEA,wDAkRC;AApVD,+CAa4B;AAC5B,6BAA+B;AAC/B,sDAI6B;AAC7B,kEAAsF;AACtF,8DAGiC;AACjC,oEAAwE;AA6T/D,wGA7TA,0CAAuB,OA6TA;AA5ThC,0EAA0E;AAC1E,yDAAyD;AAMzD,SAAS,qBAAqB,CAAC,KAAc;IAC3C,MAAM,OAAO,GACX,KAAK,YAAY,iCAAkB;QACjC,CAAC,CAAC,KAAK,CAAC,OAAO;QACf,CAAC,CAAC,KAAK,YAAY,KAAK;YACtB,CAAC,CAAC,KAAK,CAAC,OAAO;YACf,CAAC,CAAC,eAAe,CAAC;IAExB,OAAO;QACL,MAAM,EAAE,KAAK,YAAY,iCAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;QACvD,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE;KACzC,CAAC;AACJ,CAAC;AAED,SAAS,2BAA2B,CAAC,KAAc,EAAE,QAAiB;IACpE,IAAI,KAAK,YAAY,+BAAsB,EAAE,CAAC;QAC5C,OAAO,IAAA,4BAAmB,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;IACD,IAAI,KAAK,YAAY,cAAQ,EAAE,CAAC;QAC9B,IAAI,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpE,IACE,QAAQ;YACR,6CAA6C,CAAC,IAAI,CAAC,OAAO,CAAC;YAC3D,CAAC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EACxC,CAAC;YACD,OAAO;gBACL,wEAAwE,CAAC;QAC7E,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;AAClE,CAAC;AAEM,KAAK,UAAU,sBAAsB,CAAC,OAAwB;IACnE,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAClD,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;YACvD,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAoC,CAAC,CAAC;QAC1F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBAC5B,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;aAC1C,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAC7C,IAAI,CAAC;YACH,IAAA,qCAAsB,EAAC,OAAO,CAAC,CAAC;YAChC,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;YACvD,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAoC,CAAC,CAAC;QAC1F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;YACtD,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACjD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAA,uCAAkB,EAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;YAC7D,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;YAC7E,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAA2C,CAAC,CAAC;QACjG,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,KAAK,YAAY,0CAAqB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YAClE,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;gBAC/B,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;aAC1C,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CACT,mBAAmB,EACnB,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACvB,IAAI,CAAC;YACH,IAAA,qCAAsB,EAAC,OAAO,CAAC,CAAC;YAChC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC;YAClD,IAAI,CAAC,YAAY,IAAI,CAAC,SAAS,EAAE,CAAC;gBAChC,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBAC5B,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,uDAAuD;iBACzC,CAAC,CAAC;YAC3B,CAAC;YAED,MAAM,UAAU,GAAG,YAAY;gBAC7B,CAAC,CAAC,MAAM,OAAO,CAAC,eAAe,CAAC,0BAA0B,CAAC,YAAY,CAAC;gBACxE,CAAC,CAAC,MAAM,OAAO,CAAC,eAAe,CAAC,uBAAuB,CAAC,SAAU,CAAC,CAAC;YAEtE,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAwB,CAAC,CAAC;QAC/E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;YACtD,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACxC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAA,uCAAkB,EAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;YAC7D,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACpE,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAoC,CAAC,CAAC;QAC1F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,KAAK,YAAY,0CAAqB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YAClE,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;gBAC/B,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;aAC1C,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAoB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAC9D,IAAI,CAAC;YACH,IAAI,QAAyC,CAAC;YAE9C,IAAI,IAAA,gCAAiB,EAAC,OAAO,CAAC,EAAE,CAAC;gBAC/B,QAAQ,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAClF,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,GAAG,MAAM,IAAA,uCAAkB,EAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;gBAC7D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACzF,QAAQ,GAAG,MAAM;oBACf,CAAC,CAAC,MAAM,OAAO,CAAC,eAAe,CAAC,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;oBACtE,CAAC,CAAC,IAAI,CAAC;YACX,CAAC;YAED,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO,KAAK,CAAC,MAAM,CAAC,IAAA,gCAAiB,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBAC/D,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,IAAA,gCAAiB,EAAC,OAAO,CAAC;wBAC/B,CAAC,CAAC,oBAAoB;wBACtB,CAAC,CAAC,kCAAkC;iBACjB,CAAC,CAAC;YAC3B,CAAC;YAED,MAAM,OAAO,CAAC,EAAE,CAAC,mBAAmB,CAAC;gBACnC,EAAE,EAAE,IAAA,mBAAU,GAAE;gBAChB,UAAU,EAAE,QAAQ,CAAC,EAAE;gBACvB,KAAK,EAAE,SAAS;gBAChB,MAAM,EAAE,IAAA,sCAAmB,EAAC,OAAO,CAAC;aACrC,CAAC,CAAC;YAEH,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,sBAAsB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAEnF,OAAO,KAAK,CAAC,IAAI,CAAC;gBAChB,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,EAAE,GAAG,QAAQ,EAAE,WAAW,EAAE;aAGnC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBAC5B,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;aAC1C,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACzC,IAAI,CAAC;YACH,IAAI,IAAA,gCAAiB,EAAC,OAAO,CAAC,EAAE,CAAC;gBAC/B,IAAA,qCAAsB,EAAC,OAAO,CAAC,CAAC;gBAChC,MAAM,KAAK,GAAG,wCAA+B,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAClE,MAAM,EAAE,sBAAsB,EAAE,GAAG,WAAW,EAAE,GAAG,KAAK,CAAC;gBACzD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,sBAAsB,CAAC;oBACpE,GAAG,WAAW;oBACd,cAAc,EAAE,KAAK;oBACrB,sBAAsB;iBACvB,CAAC,CAAC;gBACH,OAAO,KAAK;qBACT,MAAM,CAAC,GAAG,CAAC;qBACX,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAkD,CAAC,CAAC;YAC7F,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,IAAA,uCAAkB,EAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;YAC7D,MAAM,KAAK,GAAG,oCAA2B,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC9D,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;YAE7E,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;gBACzB,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;gBAC1F,IAAI,CAAC,aAAa,EAAE,CAAC;oBACnB,MAAM,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC/E,CAAC;YACH,CAAC;YAED,MAAM,gBAAgB,GAAG,MAAM,IAAA,4CAAsB,EACnD,OAAO,CAAC,eAAe,EACvB,MAAM,EACN,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,CACxE,CAAC;YAEF,OAAO,KAAK;iBACT,MAAM,CAAC,GAAG,CAAC;iBACX,IAAI,CAAC;gBACJ,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,EAAE,GAAG,QAAQ,EAAE,gBAAgB,EAAE;aACyC,CAAC,CAAC;QACxF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,0CAAqB,EAAE,CAAC;gBAC3C,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBAC5B,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,KAAK,CAAC,OAAO;iBACC,CAAC,CAAC;YAC3B,CAAC;YACD,IAAI,KAAK,YAAY,iCAAkB,EAAE,CAAC;gBACxC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;gBACtD,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChE,CAAC;YACD,MAAM,QAAQ,GAAG,CAAC,IAAA,gCAAiB,EAAC,OAAO,CAAC,CAAC;YAC7C,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBAC5B,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,2BAA2B,CAAC,KAAK,EAAE,QAAQ,CAAC;aAC9B,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAoB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAC9D,IAAI,CAAC;YACH,IAAI,IAAA,gCAAiB,EAAC,OAAO,CAAC,EAAE,CAAC;gBAC/B,IAAA,qCAAsB,EAAC,OAAO,CAAC,CAAC;gBAChC,MAAM,KAAK,GAAG,sCAA6B,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAChE,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,sBAAsB,CACnE,OAAO,CAAC,MAAM,CAAC,EAAE,EACjB,KAAK,CACN,CAAC;gBACF,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAAwB,CAAC,CAAC;gBACvG,CAAC;gBACD,MAAM,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;gBACnE,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAkD,CAAC,CAAC;YACvG,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,IAAA,uCAAkB,EAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;YAC7D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACzF,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBAC5B,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,kCAAkC;iBACpB,CAAC,CAAC;YAC3B,CAAC;YAED,MAAM,KAAK,GAAG,kCAAyB,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC5D,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,sBAAsB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAChG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAAwB,CAAC,CAAC;YACvG,CAAC;YACD,MAAM,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YAEnE,MAAM,gBAAgB,GAAG,MAAM,IAAA,4CAAsB,EACnD,OAAO,CAAC,eAAe,EACvB,MAAM,EACN,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,CACxE,CAAC;YAEF,OAAO,KAAK,CAAC,IAAI,CAAC;gBAChB,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,EAAE,GAAG,QAAQ,EAAE,gBAAgB,EAAE;aACyC,CAAC,CAAC;QACtF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,0CAAqB,EAAE,CAAC;gBAC3C,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBAC5B,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,KAAK,CAAC,OAAO;iBACC,CAAC,CAAC;YAC3B,CAAC;YACD,IAAI,KAAK,YAAY,iCAAkB,EAAE,CAAC;gBACxC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;gBACtD,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChE,CAAC;YACD,MAAM,QAAQ,GAAG,CAAC,IAAA,gCAAiB,EAAC,OAAO,CAAC,CAAC;YAC7C,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBAC5B,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,2BAA2B,CAAC,KAAK,EAAE,QAAQ,CAAC;aAC9B,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAA6B,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACpF,IAAI,CAAC;YACH,IAAA,qCAAsB,EAAC,OAAO,CAAC,CAAC;YAChC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,EAAE,CAAC,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACtE,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAgC,CAAC,CAAC;QAClF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBAC5B,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW;aACtC,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,MAAM,CAAoB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACjE,IAAI,CAAC;YACH,IAAI,CAAC,IAAA,gCAAiB,EAAC,OAAO,CAAC,EAAE,CAAC;gBAChC,MAAM,IAAA,6CAA0B,EAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC3E,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACxE,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAAwB,CAAC,CAAC;YACvG,CAAC;YACD,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,+BAA+B,EAAwB,CAAC,CAAC;QACvG,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,IAAA,yCAAsB,EAAC,KAAK,CAAC,CAAC;YAC7C,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;gBACtC,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,MAAM,CAAC,OAAO;aACA,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"playbooks.js","sourceRoot":"","sources":["../../src/routes/playbooks.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../src/routes/scope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAgC1C,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,eAAe,iBA+KjE"}
1
+ {"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../src/routes/scope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAiC1C,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,eAAe,iBAoLjE"}
@@ -8,7 +8,8 @@ const client_scope_1 = require("../lib/client-scope");
8
8
  const display_1 = require("../scope/display");
9
9
  const LiveDisplayBodySchema = zod_1.z.object({
10
10
  mcpSessionId: zod_1.z.string().min(1),
11
- workspaceRoot: zod_1.z.string().min(1),
11
+ // Absent for header/auto-bound sessions (deck without a known folder).
12
+ workspaceRoot: zod_1.z.string().min(1).optional(),
12
13
  deckId: zod_1.z.string().uuid(),
13
14
  deckName: zod_1.z.string().min(1),
14
15
  source: shared_1.DeckDisplaySourceSchema.exclude(['unbound']),
@@ -167,13 +168,16 @@ async function registerScopeRoutes(fastify) {
167
168
  }
168
169
  });
169
170
  fastify.get('/bindings', async (_request, reply) => {
170
- const data = fastify.liveDisplayRegistry.list().map((entry) => ({
171
+ const entries = fastify.liveDisplayRegistry.list();
172
+ const modes = fastify.trustedSessionStore.getRuntimeSessionModesByMcpSessionIds(entries.map((entry) => entry.mcpSessionId));
173
+ const data = entries.map((entry) => ({
171
174
  badge: entry.badge,
172
175
  deckId: entry.deckId,
173
176
  deckName: entry.deckName,
174
177
  source: entry.source,
175
178
  workspaceRoot: entry.workspaceRoot,
176
179
  clientName: entry.clientName,
180
+ mode: modes.get(entry.mcpSessionId) ?? undefined,
177
181
  cardCounts: entry.cardCounts,
178
182
  updatedAt: entry.updatedAt,
179
183
  lastActivityAt: entry.lastActivityAt,
@@ -1 +1 @@
1
- {"version":3,"file":"scope.js","sourceRoot":"","sources":["../../src/routes/scope.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scope.js","sourceRoot":"","sources":["../../src/routes/scope.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../src/routes/services.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAgC,MAAM,SAAS,CAAC;AAsDxE,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,eAAe,iBA+TnE"}
1
+ {"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../src/routes/services.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAgC,MAAM,SAAS,CAAC;AA+DxE,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,eAAe,iBAiXnE"}
@@ -9,6 +9,8 @@ const icon_resolver_1 = require("../services/icon-resolver");
9
9
  const shared_1 = require("@agent-deck/shared");
10
10
  const client_scope_1 = require("../lib/client-scope");
11
11
  const bound_deck_scope_1 = require("../lib/bound-deck-scope");
12
+ const route_policy_1 = require("../lib/route-policy");
13
+ const agent_deck_context_1 = require("../lib/agent-deck-context");
12
14
  let lastBackgroundHealthProbeAt = 0;
13
15
  const BACKGROUND_HEALTH_PROBE_COOLDOWN_MS = 30_000;
14
16
  function mimeFromIconBuffer(buffer) {
@@ -27,14 +29,19 @@ async function registerServiceRoutes(fastify) {
27
29
  // Create service
28
30
  fastify.post('/', async (request, reply) => {
29
31
  try {
32
+ (0, route_policy_1.requireDashboard)(request);
30
33
  const service = await fastify.serviceManager.createService(request.body);
31
34
  const response = {
32
35
  success: true,
33
- data: service,
36
+ // createService now merges vault secret headers — strip them for agents.
37
+ data: (0, client_scope_1.isDashboardClient)(request) ? service : (0, client_scope_1.sanitizeServiceForAgent)(service),
34
38
  };
35
39
  return reply.status(201).send(response);
36
40
  }
37
41
  catch (error) {
42
+ if (error instanceof route_policy_1.RoutePolicyError) {
43
+ return (0, route_policy_1.sendRoutePolicyError)(reply, error);
44
+ }
38
45
  const response = {
39
46
  success: false,
40
47
  error: error instanceof Error ? error.message : 'Unknown error',
@@ -45,8 +52,18 @@ async function registerServiceRoutes(fastify) {
45
52
  // Get all services
46
53
  fastify.get('/', async (request, reply) => {
47
54
  try {
55
+ const dashboard = (0, client_scope_1.isDashboardClient)(request);
56
+ if (!dashboard) {
57
+ const deckId = await (0, agent_deck_context_1.resolveAgentDeckId)(request, fastify.db);
58
+ const deck = await fastify.db.getDeck(deckId);
59
+ const services = deck?.services ?? [];
60
+ return reply.send({
61
+ success: true,
62
+ data: services.map(client_scope_1.sanitizeServiceForAgent),
63
+ });
64
+ }
48
65
  const services = await fastify.serviceManager.getAllServices();
49
- if ((0, client_scope_1.isDashboardClient)(request)) {
66
+ if (dashboard) {
50
67
  const now = Date.now();
51
68
  if (now - lastBackgroundHealthProbeAt >= BACKGROUND_HEALTH_PROBE_COOLDOWN_MS) {
52
69
  lastBackgroundHealthProbeAt = now;
@@ -57,7 +74,8 @@ async function registerServiceRoutes(fastify) {
57
74
  }
58
75
  const response = {
59
76
  success: true,
60
- data: services,
77
+ // Secret headers (from the vault) are merged on read — strip them for agents.
78
+ data: dashboard ? services : services.map(client_scope_1.sanitizeServiceForAgent),
61
79
  };
62
80
  return reply.send(response);
63
81
  }
@@ -111,7 +129,8 @@ async function registerServiceRoutes(fastify) {
111
129
  }
112
130
  const response = {
113
131
  success: true,
114
- data: service,
132
+ // refreshServiceIcon merges vault secret headers — strip them for agents.
133
+ data: (0, client_scope_1.isDashboardClient)(request) ? service : (0, client_scope_1.sanitizeServiceForAgent)(service),
115
134
  };
116
135
  return reply.send(response);
117
136
  }
@@ -126,6 +145,9 @@ async function registerServiceRoutes(fastify) {
126
145
  // Get service by ID
127
146
  fastify.get('/:id', async (request, reply) => {
128
147
  try {
148
+ if (!(0, client_scope_1.isDashboardClient)(request)) {
149
+ await (0, bound_deck_scope_1.requireServiceOnBoundDeck)(request, fastify.db, request.params.id);
150
+ }
129
151
  const service = await fastify.serviceManager.getService(request.params.id);
130
152
  if (!service) {
131
153
  const response = {
@@ -136,21 +158,31 @@ async function registerServiceRoutes(fastify) {
136
158
  }
137
159
  const response = {
138
160
  success: true,
139
- data: service,
161
+ // Secret headers (from the vault) are merged on read — strip them for agents.
162
+ data: (0, client_scope_1.isDashboardClient)(request) ? service : (0, client_scope_1.sanitizeServiceForAgent)(service),
140
163
  };
141
164
  return reply.send(response);
142
165
  }
143
166
  catch (error) {
167
+ const scoped = (0, bound_deck_scope_1.boundDeckScopeResponse)(error);
168
+ if (scoped.error_code) {
169
+ return reply.status(scoped.status).send({
170
+ success: false,
171
+ error: scoped.message,
172
+ error_code: scoped.error_code,
173
+ });
174
+ }
144
175
  const response = {
145
176
  success: false,
146
177
  error: error instanceof Error ? error.message : 'Unknown error',
147
178
  };
148
- return reply.status(500).send(response);
179
+ return reply.status(scoped.status).send(response);
149
180
  }
150
181
  });
151
182
  // Update service
152
183
  fastify.put('/:id', async (request, reply) => {
153
184
  try {
185
+ (0, route_policy_1.requireDashboard)(request);
154
186
  const service = await fastify.serviceManager.updateService(request.params.id, request.body);
155
187
  if (!service) {
156
188
  const response = {
@@ -161,11 +193,15 @@ async function registerServiceRoutes(fastify) {
161
193
  }
162
194
  const response = {
163
195
  success: true,
164
- data: service,
196
+ // getService/updateService merge vault secret headers — strip for agents.
197
+ data: (0, client_scope_1.isDashboardClient)(request) ? service : (0, client_scope_1.sanitizeServiceForAgent)(service),
165
198
  };
166
199
  return reply.send(response);
167
200
  }
168
201
  catch (error) {
202
+ if (error instanceof route_policy_1.RoutePolicyError) {
203
+ return (0, route_policy_1.sendRoutePolicyError)(reply, error);
204
+ }
169
205
  const response = {
170
206
  success: false,
171
207
  error: error instanceof Error ? error.message : 'Unknown error',
@@ -176,6 +212,7 @@ async function registerServiceRoutes(fastify) {
176
212
  // Delete service
177
213
  fastify.delete('/:id', async (request, reply) => {
178
214
  try {
215
+ (0, route_policy_1.requireDashboard)(request);
179
216
  const deleted = await fastify.serviceManager.deleteService(request.params.id);
180
217
  if (!deleted) {
181
218
  const response = {
@@ -209,6 +246,9 @@ async function registerServiceRoutes(fastify) {
209
246
  // Discover service tools
210
247
  fastify.get('/:id/tools', async (request, reply) => {
211
248
  try {
249
+ if (!(0, client_scope_1.isDashboardClient)(request)) {
250
+ await (0, bound_deck_scope_1.requireServiceOnBoundDeck)(request, fastify.db, request.params.id);
251
+ }
212
252
  const forAgent = !(0, client_scope_1.isDashboardClient)(request);
213
253
  const tools = await fastify.serviceManager.discoverServiceTools(request.params.id, {
214
254
  forAgent,
@@ -226,16 +266,17 @@ async function registerServiceRoutes(fastify) {
226
266
  return reply.send(response);
227
267
  }
228
268
  catch (error) {
229
- const response = {
269
+ const scoped = (0, bound_deck_scope_1.boundDeckScopeResponse)(error);
270
+ return reply.status(scoped.status).send({
230
271
  success: false,
231
- error: error instanceof Error ? error.message : 'Unknown error',
232
- };
233
- return reply.status(500).send(response);
272
+ error: scoped.message,
273
+ error_code: scoped.error_code,
274
+ });
234
275
  }
235
276
  });
236
277
  fastify.put('/:id/tool-settings', async (request, reply) => {
237
278
  try {
238
- await (0, bound_deck_scope_1.requireServiceOnBoundDeck)(request, fastify.db, request.params.id);
279
+ (0, client_scope_1.requireDashboardClient)(request);
239
280
  const input = shared_1.UpdateServiceToolSettingsSchema.parse(request.body);
240
281
  const service = await fastify.serviceManager.updateToolSettings(request.params.id, input);
241
282
  if (!service) {
@@ -250,6 +291,12 @@ async function registerServiceRoutes(fastify) {
250
291
  });
251
292
  }
252
293
  catch (error) {
294
+ if (error instanceof client_scope_1.DashboardOnlyError) {
295
+ return reply.status(403).send({
296
+ success: false,
297
+ error: error.message,
298
+ });
299
+ }
253
300
  const scoped = (0, bound_deck_scope_1.boundDeckScopeResponse)(error);
254
301
  return reply.status(scoped.status).send({
255
302
  success: false,
@@ -260,6 +307,7 @@ async function registerServiceRoutes(fastify) {
260
307
  // Call service tool
261
308
  fastify.post('/:id/call', async (request, reply) => {
262
309
  try {
310
+ await (0, bound_deck_scope_1.requireServiceOnBoundDeck)(request, fastify.db, request.params.id);
263
311
  const result = await fastify.serviceManager.callServiceTool({
264
312
  serviceId: request.params.id,
265
313
  toolName: request.body.toolName,
@@ -275,11 +323,12 @@ async function registerServiceRoutes(fastify) {
275
323
  return reply.send(response);
276
324
  }
277
325
  catch (error) {
278
- const response = {
326
+ const scoped = (0, bound_deck_scope_1.boundDeckScopeResponse)(error);
327
+ return reply.status(scoped.status).send({
279
328
  success: false,
280
- error: error instanceof Error ? error.message : 'Unknown error',
281
- };
282
- return reply.status(500).send(response);
329
+ error: scoped.message,
330
+ error_code: scoped.error_code,
331
+ });
283
332
  }
284
333
  });
285
334
  // Check service health