@decibelsystems/tools 2.2.0-beta.0 → 3.0.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 (273) hide show
  1. package/CHANGELOG.md +160 -0
  2. package/dist/agentPresence.d.ts +80 -0
  3. package/dist/agentPresence.d.ts.map +1 -1
  4. package/dist/agentPresence.js +177 -0
  5. package/dist/agentPresence.js.map +1 -1
  6. package/dist/agentic/index.d.ts +18 -8
  7. package/dist/agentic/index.d.ts.map +1 -1
  8. package/dist/agentic/index.js +18 -144
  9. package/dist/agentic/index.js.map +1 -1
  10. package/dist/agentic/types.d.ts +106 -0
  11. package/dist/agentic/types.d.ts.map +1 -1
  12. package/dist/agentic/types.js +77 -1
  13. package/dist/agentic/types.js.map +1 -1
  14. package/dist/architectAdrs.d.ts +14 -2
  15. package/dist/architectAdrs.d.ts.map +1 -1
  16. package/dist/architectAdrs.js +9 -3
  17. package/dist/architectAdrs.js.map +1 -1
  18. package/dist/client/transports.d.ts.map +1 -1
  19. package/dist/client/transports.js +13 -3
  20. package/dist/client/transports.js.map +1 -1
  21. package/dist/daemon.d.ts +19 -0
  22. package/dist/daemon.d.ts.map +1 -1
  23. package/dist/daemon.js +181 -38
  24. package/dist/daemon.js.map +1 -1
  25. package/dist/daemonConfig.d.ts +24 -0
  26. package/dist/daemonConfig.d.ts.map +1 -1
  27. package/dist/daemonConfig.js +46 -12
  28. package/dist/daemonConfig.js.map +1 -1
  29. package/dist/decibelPaths.d.ts.map +1 -1
  30. package/dist/decibelPaths.js +39 -6
  31. package/dist/decibelPaths.js.map +1 -1
  32. package/dist/domain/issue.d.ts +77 -0
  33. package/dist/domain/issue.d.ts.map +1 -0
  34. package/dist/domain/issue.js +134 -0
  35. package/dist/domain/issue.js.map +1 -0
  36. package/dist/domain/issueCodec.d.ts +39 -0
  37. package/dist/domain/issueCodec.d.ts.map +1 -0
  38. package/dist/domain/issueCodec.js +298 -0
  39. package/dist/domain/issueCodec.js.map +1 -0
  40. package/dist/domain/issueRepository.d.ts +91 -0
  41. package/dist/domain/issueRepository.d.ts.map +1 -0
  42. package/dist/domain/issueRepository.js +257 -0
  43. package/dist/domain/issueRepository.js.map +1 -0
  44. package/dist/facades/definitions.d.ts +0 -1
  45. package/dist/facades/definitions.d.ts.map +1 -1
  46. package/dist/facades/definitions.js +94 -113
  47. package/dist/facades/definitions.js.map +1 -1
  48. package/dist/facades/index.d.ts +2 -1
  49. package/dist/facades/index.d.ts.map +1 -1
  50. package/dist/facades/index.js +1 -1
  51. package/dist/facades/index.js.map +1 -1
  52. package/dist/facades/types.d.ts +17 -0
  53. package/dist/facades/types.d.ts.map +1 -1
  54. package/dist/httpArgs.d.ts +11 -0
  55. package/dist/httpArgs.d.ts.map +1 -0
  56. package/dist/httpArgs.js +39 -0
  57. package/dist/httpArgs.js.map +1 -0
  58. package/dist/httpServer.d.ts +1 -12
  59. package/dist/httpServer.d.ts.map +1 -1
  60. package/dist/httpServer.js +97 -96
  61. package/dist/httpServer.js.map +1 -1
  62. package/dist/kernel.d.ts +46 -1
  63. package/dist/kernel.d.ts.map +1 -1
  64. package/dist/kernel.js +311 -26
  65. package/dist/kernel.js.map +1 -1
  66. package/dist/lib/agent-services/assumptions.d.ts.map +1 -1
  67. package/dist/lib/agent-services/assumptions.js +8 -2
  68. package/dist/lib/agent-services/assumptions.js.map +1 -1
  69. package/dist/lib/atomicWrite.d.ts +26 -0
  70. package/dist/lib/atomicWrite.d.ts.map +1 -0
  71. package/dist/lib/atomicWrite.js +73 -0
  72. package/dist/lib/atomicWrite.js.map +1 -0
  73. package/dist/lib/envelope.d.ts +31 -0
  74. package/dist/lib/envelope.d.ts.map +1 -0
  75. package/dist/lib/envelope.js +80 -0
  76. package/dist/lib/envelope.js.map +1 -0
  77. package/dist/lib/fileLock.d.ts +38 -0
  78. package/dist/lib/fileLock.d.ts.map +1 -0
  79. package/dist/lib/fileLock.js +124 -0
  80. package/dist/lib/fileLock.js.map +1 -0
  81. package/dist/lib/recordIdAllocator.d.ts +86 -0
  82. package/dist/lib/recordIdAllocator.d.ts.map +1 -0
  83. package/dist/lib/recordIdAllocator.js +161 -0
  84. package/dist/lib/recordIdAllocator.js.map +1 -0
  85. package/dist/projectRegistry.d.ts.map +1 -1
  86. package/dist/projectRegistry.js +11 -0
  87. package/dist/projectRegistry.js.map +1 -1
  88. package/dist/runtime/circuitBreaker.d.ts +95 -0
  89. package/dist/runtime/circuitBreaker.d.ts.map +1 -0
  90. package/dist/runtime/circuitBreaker.js +178 -0
  91. package/dist/runtime/circuitBreaker.js.map +1 -0
  92. package/dist/runtime/ensureRuntime.d.ts +103 -0
  93. package/dist/runtime/ensureRuntime.d.ts.map +1 -0
  94. package/dist/runtime/ensureRuntime.js +281 -0
  95. package/dist/runtime/ensureRuntime.js.map +1 -0
  96. package/dist/runtime/extensions.d.ts +57 -0
  97. package/dist/runtime/extensions.d.ts.map +1 -0
  98. package/dist/runtime/extensions.js +216 -0
  99. package/dist/runtime/extensions.js.map +1 -0
  100. package/dist/runtime/localHttp.d.ts +24 -0
  101. package/dist/runtime/localHttp.d.ts.map +1 -0
  102. package/dist/runtime/localHttp.js +84 -0
  103. package/dist/runtime/localHttp.js.map +1 -0
  104. package/dist/runtime/projectResolution.d.ts +29 -0
  105. package/dist/runtime/projectResolution.d.ts.map +1 -0
  106. package/dist/runtime/projectResolution.js +67 -0
  107. package/dist/runtime/projectResolution.js.map +1 -0
  108. package/dist/runtime/protocol.d.ts +62 -0
  109. package/dist/runtime/protocol.d.ts.map +1 -0
  110. package/dist/runtime/protocol.js +74 -0
  111. package/dist/runtime/protocol.js.map +1 -0
  112. package/dist/sentinelIssues.d.ts +26 -2
  113. package/dist/sentinelIssues.d.ts.map +1 -1
  114. package/dist/sentinelIssues.js +125 -64
  115. package/dist/sentinelIssues.js.map +1 -1
  116. package/dist/server.js +59 -12
  117. package/dist/server.js.map +1 -1
  118. package/dist/tools/agentic/index.d.ts.map +1 -1
  119. package/dist/tools/agentic/index.js +28 -2
  120. package/dist/tools/agentic/index.js.map +1 -1
  121. package/dist/tools/architect/index.d.ts.map +1 -1
  122. package/dist/tools/architect/index.js +7 -2
  123. package/dist/tools/architect/index.js.map +1 -1
  124. package/dist/tools/context.d.ts +10 -5
  125. package/dist/tools/context.d.ts.map +1 -1
  126. package/dist/tools/context.js +45 -18
  127. package/dist/tools/context.js.map +1 -1
  128. package/dist/tools/coordinator/coordinator.d.ts.map +1 -1
  129. package/dist/tools/coordinator/coordinator.js +48 -19
  130. package/dist/tools/coordinator/coordinator.js.map +1 -1
  131. package/dist/tools/crit.d.ts +2 -1
  132. package/dist/tools/crit.d.ts.map +1 -1
  133. package/dist/tools/crit.js +19 -4
  134. package/dist/tools/crit.js.map +1 -1
  135. package/dist/tools/designer/index.d.ts.map +1 -1
  136. package/dist/tools/designer/index.js +4 -3
  137. package/dist/tools/designer/index.js.map +1 -1
  138. package/dist/tools/designer/lateral-tools.d.ts.map +1 -1
  139. package/dist/tools/designer/lateral-tools.js +4 -2
  140. package/dist/tools/designer/lateral-tools.js.map +1 -1
  141. package/dist/tools/designer.d.ts +2 -1
  142. package/dist/tools/designer.d.ts.map +1 -1
  143. package/dist/tools/designer.js +24 -12
  144. package/dist/tools/designer.js.map +1 -1
  145. package/dist/tools/dojo.d.ts +3 -2
  146. package/dist/tools/dojo.d.ts.map +1 -1
  147. package/dist/tools/dojo.js +64 -22
  148. package/dist/tools/dojo.js.map +1 -1
  149. package/dist/tools/friction.d.ts.map +1 -1
  150. package/dist/tools/friction.js +16 -6
  151. package/dist/tools/friction.js.map +1 -1
  152. package/dist/tools/guardian.d.ts.map +1 -1
  153. package/dist/tools/guardian.js +6 -2
  154. package/dist/tools/guardian.js.map +1 -1
  155. package/dist/tools/hygiene/oracle-hygiene.d.ts.map +1 -1
  156. package/dist/tools/hygiene/oracle-hygiene.js +8 -2
  157. package/dist/tools/hygiene/oracle-hygiene.js.map +1 -1
  158. package/dist/tools/index.d.ts.map +1 -1
  159. package/dist/tools/index.js +27 -18
  160. package/dist/tools/index.js.map +1 -1
  161. package/dist/tools/learnings.d.ts +2 -1
  162. package/dist/tools/learnings.d.ts.map +1 -1
  163. package/dist/tools/learnings.js +31 -15
  164. package/dist/tools/learnings.js.map +1 -1
  165. package/dist/tools/oracle.d.ts.map +1 -1
  166. package/dist/tools/oracle.js +19 -6
  167. package/dist/tools/oracle.js.map +1 -1
  168. package/dist/tools/policy.d.ts +2 -1
  169. package/dist/tools/policy.d.ts.map +1 -1
  170. package/dist/tools/policy.js +28 -9
  171. package/dist/tools/policy.js.map +1 -1
  172. package/dist/tools/postoffice/index.d.ts +10 -0
  173. package/dist/tools/postoffice/index.d.ts.map +1 -0
  174. package/dist/tools/postoffice/index.js +218 -0
  175. package/dist/tools/postoffice/index.js.map +1 -0
  176. package/dist/tools/postoffice.d.ts +78 -0
  177. package/dist/tools/postoffice.d.ts.map +1 -0
  178. package/dist/tools/postoffice.js +199 -0
  179. package/dist/tools/postoffice.js.map +1 -0
  180. package/dist/tools/provenance.d.ts +7 -0
  181. package/dist/tools/provenance.d.ts.map +1 -1
  182. package/dist/tools/provenance.js +42 -16
  183. package/dist/tools/provenance.js.map +1 -1
  184. package/dist/tools/sentinel/index.d.ts +1 -0
  185. package/dist/tools/sentinel/index.d.ts.map +1 -1
  186. package/dist/tools/sentinel/index.js +88 -4
  187. package/dist/tools/sentinel/index.js.map +1 -1
  188. package/dist/tools/sentinel.d.ts +102 -1
  189. package/dist/tools/sentinel.d.ts.map +1 -1
  190. package/dist/tools/sentinel.js +544 -328
  191. package/dist/tools/sentinel.js.map +1 -1
  192. package/dist/tools/shared/index.d.ts +2 -1
  193. package/dist/tools/shared/index.d.ts.map +1 -1
  194. package/dist/tools/shared/index.js +2 -1
  195. package/dist/tools/shared/index.js.map +1 -1
  196. package/dist/tools/shared/response.d.ts +24 -0
  197. package/dist/tools/shared/response.d.ts.map +1 -1
  198. package/dist/tools/shared/response.js +61 -7
  199. package/dist/tools/shared/response.js.map +1 -1
  200. package/dist/tools/shared/storeRead.d.ts +153 -0
  201. package/dist/tools/shared/storeRead.d.ts.map +1 -0
  202. package/dist/tools/shared/storeRead.js +242 -0
  203. package/dist/tools/shared/storeRead.js.map +1 -0
  204. package/dist/tools/testSpec.d.ts +3 -2
  205. package/dist/tools/testSpec.d.ts.map +1 -1
  206. package/dist/tools/testSpec.js +51 -14
  207. package/dist/tools/testSpec.js.map +1 -1
  208. package/dist/tools/vector.d.ts +33 -1
  209. package/dist/tools/vector.d.ts.map +1 -1
  210. package/dist/tools/vector.js +31 -5
  211. package/dist/tools/vector.js.map +1 -1
  212. package/dist/tools/zoom/index.d.ts +15 -0
  213. package/dist/tools/zoom/index.d.ts.map +1 -0
  214. package/dist/tools/zoom/index.js +174 -0
  215. package/dist/tools/zoom/index.js.map +1 -0
  216. package/dist/tools/zoom.d.ts +234 -0
  217. package/dist/tools/zoom.d.ts.map +1 -0
  218. package/dist/tools/zoom.js +627 -0
  219. package/dist/tools/zoom.js.map +1 -0
  220. package/dist/transports/bridge.d.ts +1 -1
  221. package/dist/transports/bridge.d.ts.map +1 -1
  222. package/dist/transports/bridge.js +2 -0
  223. package/dist/transports/bridge.js.map +1 -1
  224. package/dist/transports/http.d.ts +1 -1
  225. package/dist/transports/http.d.ts.map +1 -1
  226. package/dist/transports/http.js +3 -1
  227. package/dist/transports/http.js.map +1 -1
  228. package/dist/transports/index.d.ts +1 -0
  229. package/dist/transports/index.d.ts.map +1 -1
  230. package/dist/transports/index.js +1 -0
  231. package/dist/transports/index.js.map +1 -1
  232. package/dist/transports/mcp.d.ts +1 -1
  233. package/dist/transports/mcp.d.ts.map +1 -1
  234. package/dist/transports/mcp.js +7 -3
  235. package/dist/transports/mcp.js.map +1 -1
  236. package/dist/transports/stdio.d.ts +1 -1
  237. package/dist/transports/stdio.d.ts.map +1 -1
  238. package/dist/transports/stdio.js +2 -0
  239. package/dist/transports/stdio.js.map +1 -1
  240. package/dist/transports/thinStdio.d.ts +22 -0
  241. package/dist/transports/thinStdio.d.ts.map +1 -0
  242. package/dist/transports/thinStdio.js +218 -0
  243. package/dist/transports/thinStdio.js.map +1 -0
  244. package/dist/transports/types.d.ts +8 -1
  245. package/dist/transports/types.d.ts.map +1 -1
  246. package/dist/types/agent-services.d.ts +7 -0
  247. package/dist/types/agent-services.d.ts.map +1 -1
  248. package/package.json +9 -4
  249. package/templates/com.decibel.daemon.plist +6 -1
  250. package/dist/tools/deck.d.ts +0 -11
  251. package/dist/tools/deck.d.ts.map +0 -1
  252. package/dist/tools/deck.js +0 -1656
  253. package/dist/tools/deck.js.map +0 -1
  254. package/dist/tools/mother.d.ts +0 -11
  255. package/dist/tools/mother.d.ts.map +0 -1
  256. package/dist/tools/mother.js +0 -503
  257. package/dist/tools/mother.js.map +0 -1
  258. package/dist/tools/registry.d.ts +0 -3
  259. package/dist/tools/registry.d.ts.map +0 -1
  260. package/dist/tools/registry.js +0 -189
  261. package/dist/tools/registry.js.map +0 -1
  262. package/dist/tools/senken.d.ts +0 -11
  263. package/dist/tools/senken.d.ts.map +0 -1
  264. package/dist/tools/senken.js +0 -482
  265. package/dist/tools/senken.js.map +0 -1
  266. package/dist/tools/terminal.d.ts +0 -17
  267. package/dist/tools/terminal.d.ts.map +0 -1
  268. package/dist/tools/terminal.js +0 -968
  269. package/dist/tools/terminal.js.map +0 -1
  270. package/dist/tools/toolsIndex.d.ts +0 -5
  271. package/dist/tools/toolsIndex.d.ts.map +0 -1
  272. package/dist/tools/toolsIndex.js +0 -37
  273. package/dist/tools/toolsIndex.js.map +0 -1
@@ -8,6 +8,7 @@ import fs from 'fs/promises';
8
8
  import path from 'path';
9
9
  import { resolveProjectPaths } from '../projectRegistry.js';
10
10
  import { log } from '../config.js';
11
+ import { listDirEntriesOrThrow, countedStoreMeta } from './shared/storeRead.js';
11
12
  // ============================================================================
12
13
  // Constants
13
14
  // ============================================================================
@@ -291,9 +292,23 @@ ${input.summary || 'No summary provided.'}
291
292
  export async function listRuns(input) {
292
293
  const projectId = input.projectId || input.project_id;
293
294
  const runsDir = getRunsDir(projectId);
294
- // Ensure runs dir exists
295
- await ensureDir(runsDir);
296
- const entries = await fs.readdir(runsDir, { withFileTypes: true });
295
+ // Do NOT create the directory here. This tool is annotated readOnlyHint:true
296
+ // and callers treat it as a read: creating `.decibel/runs/` as a side effect
297
+ // of listing meant a mistyped project_id got a directory made for it and an
298
+ // empty list back, so "wrong project" and "no runs" were indistinguishable
299
+ // and the mistake left a trace on disk. A missing directory is simply no runs.
300
+ let entries;
301
+ try {
302
+ entries = await listDirEntriesOrThrow(runsDir);
303
+ }
304
+ catch (err) {
305
+ // ISS-0153: "I could not look" must not be swallowed into "nothing found".
306
+ if (err instanceof Error && err.message.startsWith('STORE_UNREADABLE'))
307
+ throw err;
308
+ if (err.code === 'ENOENT')
309
+ return { runs: [] };
310
+ throw err;
311
+ }
297
312
  const runDirs = entries
298
313
  .filter(e => e.isDirectory() && e.name.startsWith('RUN-'))
299
314
  .map(e => e.name);
@@ -301,13 +316,19 @@ export async function listRuns(input) {
301
316
  runDirs.sort().reverse();
302
317
  const limit = input.limit || 20;
303
318
  const runs = [];
319
+ // A run directory that exists and cannot be read is not an absent run. The
320
+ // log line below already recorded it — on the server's stdout, where the
321
+ // caller reading `runs: []` will never see it.
322
+ let unreadable = 0;
304
323
  for (const run_id of runDirs.slice(0, limit)) {
305
324
  try {
306
325
  const runDir = path.join(runsDir, run_id);
307
326
  const promptPath = path.join(runDir, 'prompt.json');
308
327
  const eventsPath = path.join(runDir, 'events.jsonl');
309
- if (!await fileExists(promptPath))
328
+ if (!await fileExists(promptPath)) {
329
+ unreadable++;
310
330
  continue;
331
+ }
311
332
  const promptContent = await fs.readFile(promptPath, 'utf-8');
312
333
  const promptSpec = JSON.parse(promptContent);
313
334
  // Filter by agent type if specified
@@ -316,6 +337,7 @@ export async function listRuns(input) {
316
337
  }
317
338
  // Count events and check for completion
318
339
  let eventCount = 0;
340
+ let last_event_at;
319
341
  let completed_at;
320
342
  let success;
321
343
  let summary;
@@ -326,6 +348,7 @@ export async function listRuns(input) {
326
348
  // Check last event for completion
327
349
  if (lines.length > 0) {
328
350
  const lastEvent = JSON.parse(lines[lines.length - 1]);
351
+ last_event_at = lastEvent.ts;
329
352
  if (lastEvent.type === 'run_completed') {
330
353
  completed_at = lastEvent.ts;
331
354
  success = lastEvent.payload?.success;
@@ -337,17 +360,20 @@ export async function listRuns(input) {
337
360
  run_id,
338
361
  agent: promptSpec.agent,
339
362
  created_at: promptSpec.created_at,
363
+ last_event_at,
340
364
  completed_at,
341
365
  event_count: eventCount,
366
+ status: completed_at ? 'completed' : 'incomplete',
342
367
  success,
343
368
  summary,
344
369
  });
345
370
  }
346
371
  catch (err) {
372
+ unreadable++;
347
373
  log(`Vector: Error reading run ${run_id}: ${err}`);
348
374
  }
349
375
  }
350
- return { runs };
376
+ return { runs, ...countedStoreMeta(runs.length, unreadable) };
351
377
  }
352
378
  /**
353
379
  * Get details of a specific run
@@ -1 +1 @@
1
- {"version":3,"file":"vector.js","sourceRoot":"","sources":["../../src/tools/vector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vector.js","sourceRoot":"","sources":["../../src/tools/vector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { ToolSpec } from '../types.js';
2
+ export declare const zoomSyncTool: ToolSpec;
3
+ export declare const zoomListTool: ToolSpec;
4
+ export declare const zoomRoutesTool: ToolSpec;
5
+ export declare const zoomStatusTool: ToolSpec;
6
+ /**
7
+ * Fail closed by absence. Without DECIBEL_ZOOM=1 the tools are never built, so
8
+ * the facade's actions point at nothing and dispatch answers "unknown facade" —
9
+ * the same shape an unallowlisted extension gets. An unregistered facade that
10
+ * returned a zero-shaped result instead would be indistinguishable from a real
11
+ * empty answer, which is exactly how a broken voice inbox once read as
12
+ * "0 messages".
13
+ */
14
+ export declare const zoomTools: ToolSpec[];
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/zoom/index.ts"],"names":[],"mappings":"AA0BA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAyBvC,eAAO,MAAM,YAAY,EAAE,QAyC1B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,QAyB1B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,QAuB5B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,QA8B5B,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS,EAAE,QAAQ,EAE1B,CAAC"}
@@ -0,0 +1,174 @@
1
+ // ============================================================================
2
+ // Zoom Tools — EPIC-0036
3
+ // ============================================================================
4
+ // Four verbs over the ingestion logic in ../zoom.ts.
5
+ //
6
+ // GATING. This facade reaches an account-wide admin Zoom credential:
7
+ // meeting_summary:read:admin reads EVERY meeting in the account, personal and
8
+ // client alike. Three independent gates, because ISS-0123 is explicit that tier
9
+ // alone is not a trustworthy boundary (ISS-0101, the DECIBEL_PRO bypass, is
10
+ // still open):
11
+ //
12
+ // 1. pro tier — the facade's declared tier
13
+ // 2. DECIBEL_ZOOM=1 — fail closed by ABSENCE (see zoomTools below). The
14
+ // senken.pro deployment that serves this repo's
15
+ // /call, /batch and /tools unauthenticated will not
16
+ // have this set, so the facade is not registered
17
+ // there and dispatch answers "unknown facade"
18
+ // rather than running.
19
+ // 3. localOnly — rejected over the HTTP transport by the kernel.
20
+ //
21
+ // Gate 2 is the one that actually holds. The loopback check behind gate 3 is
22
+ // weaker than it looks on senken.pro specifically, where a gunicorn front-end
23
+ // means a remote request can arrive at this process wearing a 127.0.0.1
24
+ // source address.
25
+ // ============================================================================
26
+ import { toolSuccess, toolError } from '../shared/index.js';
27
+ import { syncMeetings, loadRoutes, loadCredentials, unroutedDir, ZoomError, } from '../zoom.js';
28
+ function settle(err) {
29
+ if (err instanceof ZoomError) {
30
+ return toolError(err.message, err.hint);
31
+ }
32
+ return toolError(err instanceof Error ? err.message : String(err));
33
+ }
34
+ const windowProps = {
35
+ days: { type: 'number', description: 'Look back N days from today. Default 30. Ignored when `from` is given.' },
36
+ from: { type: 'string', description: 'Start date YYYY-MM-DD.' },
37
+ to: { type: 'string', description: 'End date YYYY-MM-DD. Defaults to today.' },
38
+ match: { type: 'string', description: 'Only meetings whose topic contains this substring (case-insensitive). A filter on top of routing, not a replacement for it.' },
39
+ };
40
+ export const zoomSyncTool = {
41
+ definition: {
42
+ name: 'zoom_sync',
43
+ description: 'Pull Zoom AI Companion meeting summaries and write them as markdown. Routed by default: each meeting goes to the project whose zoom.match rule its topic matches. Meetings matching no rule have their IDENTITY recorded in the unrouted bucket and their body deliberately left unfetched — add a match rule and re-run to claim them. Dedup is on meeting_uuid + start time, so re-running is safe and cheap.',
44
+ annotations: { title: 'Sync Zoom Summaries', readOnlyHint: false, destructiveHint: false, idempotentHint: true },
45
+ inputSchema: {
46
+ type: 'object',
47
+ properties: {
48
+ ...windowProps,
49
+ route: { type: 'boolean', description: 'Fan out across the project registry. Default true. Set false with `out` to write everything into one directory.' },
50
+ out: { type: 'string', description: 'Single output directory. Only used when route is false.' },
51
+ dry_run: { type: 'boolean', description: 'Print the routing table and what would be written, touching nothing. Costs one list call and no detail calls.' },
52
+ force: { type: 'boolean', description: 'Re-download and overwrite files already on disk. Rarely what you want — dedup already handles re-runs.' },
53
+ status: { type: 'string', description: 'Value for the status: frontmatter field. Default "new".' },
54
+ no_frontmatter: { type: 'boolean', description: 'Write the summary body alone. Breaks dedup for those files — they become invisible to future runs.' },
55
+ },
56
+ },
57
+ },
58
+ handler: async (args) => {
59
+ try {
60
+ const opts = {
61
+ days: args.days,
62
+ from: args.from,
63
+ to: args.to,
64
+ match: args.match,
65
+ // Routed is the default. The original had it opt-in with a single
66
+ // directory as the default, which only made sense when the script lived
67
+ // inside the one repo it wrote to.
68
+ route: args.route === undefined ? true : !!args.route,
69
+ out: args.out,
70
+ dryRun: !!args.dry_run,
71
+ force: !!args.force,
72
+ status: args.status,
73
+ noFrontmatter: !!args.no_frontmatter,
74
+ };
75
+ return toolSuccess(await syncMeetings(opts));
76
+ }
77
+ catch (err) {
78
+ return settle(err);
79
+ }
80
+ },
81
+ };
82
+ export const zoomListTool = {
83
+ definition: {
84
+ name: 'zoom_list',
85
+ description: 'Show what a sync would do without writing anything: the routing table, which meetings land where, and which match no rule. A dry run — one list call, no per-meeting detail fetches.',
86
+ annotations: { title: 'Preview Zoom Sync', readOnlyHint: true, destructiveHint: false, idempotentHint: true },
87
+ inputSchema: {
88
+ type: 'object',
89
+ properties: { ...windowProps },
90
+ },
91
+ },
92
+ handler: async (args) => {
93
+ try {
94
+ return toolSuccess(await syncMeetings({
95
+ days: args.days,
96
+ from: args.from,
97
+ to: args.to,
98
+ match: args.match,
99
+ route: true,
100
+ dryRun: true,
101
+ }));
102
+ }
103
+ catch (err) {
104
+ return settle(err);
105
+ }
106
+ },
107
+ };
108
+ export const zoomRoutesTool = {
109
+ definition: {
110
+ name: 'zoom_routes',
111
+ description: 'List the projects carrying a zoom.match rule, in the order routing resolves them (longest needle first). Reads the registry only — no Zoom API call, so it works without credentials.',
112
+ annotations: { title: 'List Zoom Routes', readOnlyHint: true, destructiveHint: false, idempotentHint: true },
113
+ inputSchema: { type: 'object', properties: {} },
114
+ },
115
+ handler: async () => {
116
+ try {
117
+ const routes = loadRoutes();
118
+ return toolSuccess({
119
+ routes: routes.map(r => ({ project: r.id, match: r.match, out: r.out })),
120
+ unrouted_bucket: unroutedDir(),
121
+ count: routes.length,
122
+ hint: routes.length === 0
123
+ ? 'No project carries a zoom block. Add one: "zoom": { "match": ["plasiv"], "out": "meetings/raw" }'
124
+ : 'Routing is by meeting-topic substring, longest needle first. A client name appearing in an unrelated title will still misroute it.',
125
+ });
126
+ }
127
+ catch (err) {
128
+ return settle(err);
129
+ }
130
+ },
131
+ };
132
+ export const zoomStatusTool = {
133
+ definition: {
134
+ name: 'zoom_status',
135
+ description: 'Report whether Zoom credentials resolve and where they came from, without calling Zoom. Never returns the secret itself.',
136
+ annotations: { title: 'Zoom Status', readOnlyHint: true, destructiveHint: false, idempotentHint: true },
137
+ inputSchema: { type: 'object', properties: {} },
138
+ },
139
+ handler: async () => {
140
+ try {
141
+ const creds = loadCredentials();
142
+ return toolSuccess({
143
+ configured: true,
144
+ account_id: creds.account_id,
145
+ client_id_suffix: creds.client_id.slice(-4),
146
+ scope: 'meeting_summary:read:admin (account-wide — reads every meeting in the account)',
147
+ routes: loadRoutes().length,
148
+ unrouted_bucket: unroutedDir(),
149
+ });
150
+ }
151
+ catch (err) {
152
+ if (err instanceof ZoomError) {
153
+ // `reason`, not `error`. Reporting "not configured" IS a successful
154
+ // status read, but a payload carrying an `error` key with no failure
155
+ // marker is the exact shape S1 flags: every programmatic consumer that
156
+ // branches on `error` reads this as a failed call.
157
+ return toolSuccess({ configured: false, reason: err.message, hint: err.hint });
158
+ }
159
+ return settle(err);
160
+ }
161
+ },
162
+ };
163
+ /**
164
+ * Fail closed by absence. Without DECIBEL_ZOOM=1 the tools are never built, so
165
+ * the facade's actions point at nothing and dispatch answers "unknown facade" —
166
+ * the same shape an unallowlisted extension gets. An unregistered facade that
167
+ * returned a zero-shaped result instead would be indistinguishable from a real
168
+ * empty answer, which is exactly how a broken voice inbox once read as
169
+ * "0 messages".
170
+ */
171
+ export const zoomTools = process.env.DECIBEL_ZOOM === '1'
172
+ ? [zoomSyncTool, zoomListTool, zoomRoutesTool, zoomStatusTool]
173
+ : [];
174
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/zoom/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,234 @@
1
+ export interface ZoomCredentials {
2
+ account_id: string;
3
+ client_id: string;
4
+ client_secret: string;
5
+ }
6
+ /** One entry from GET /meetings/meeting_summaries. Only the fields the port
7
+ * actually reads are typed; Zoom sends more. */
8
+ export interface MeetingSummary {
9
+ meeting_uuid?: string;
10
+ meeting_id?: number | string;
11
+ meeting_topic?: string;
12
+ meeting_start_time?: string;
13
+ summary_start_time?: string;
14
+ [key: string]: unknown;
15
+ }
16
+ /** GET /meetings/{uuid}/meeting_summary. Two shapes: the modern single
17
+ * markdown blob, and a deprecated split. See renderSummary. */
18
+ export interface MeetingDetail {
19
+ summary_content?: string;
20
+ summary_overview?: string;
21
+ summary_details?: Array<{
22
+ label?: string;
23
+ summary?: string;
24
+ }>;
25
+ next_steps?: unknown[];
26
+ [key: string]: unknown;
27
+ }
28
+ export interface ZoomRoute {
29
+ /** Decibel project id */
30
+ id: string;
31
+ /** Lowercased topic needles, longest first (see loadRoutes) */
32
+ match: string[];
33
+ /** Absolute output directory */
34
+ out: string;
35
+ }
36
+ export interface SyncOptions {
37
+ from?: string;
38
+ to?: string;
39
+ days?: number;
40
+ /** Single output directory. Ignored when route is true. */
41
+ out?: string;
42
+ /** Fan out across the project registry instead of one directory. */
43
+ route?: boolean;
44
+ /** Only topics containing this substring (case-insensitive). */
45
+ match?: string;
46
+ force?: boolean;
47
+ dryRun?: boolean;
48
+ status?: string;
49
+ noFrontmatter?: boolean;
50
+ }
51
+ export interface SyncResult {
52
+ from: string;
53
+ to: string;
54
+ returned: number;
55
+ in_range: number;
56
+ written: number;
57
+ skipped: number;
58
+ empty: number;
59
+ unrouted: number;
60
+ reclaimed: number;
61
+ dry_run: boolean;
62
+ routes?: Array<{
63
+ id: string;
64
+ match: string[];
65
+ out: string;
66
+ }>;
67
+ files: Array<{
68
+ name: string;
69
+ dest: string;
70
+ project: string | null;
71
+ action: string;
72
+ }>;
73
+ notes: string[];
74
+ }
75
+ export declare class ZoomError extends Error {
76
+ code: string;
77
+ hint?: string;
78
+ constructor(code: string, message: string, hint?: string);
79
+ }
80
+ /**
81
+ * Resolution order: environment, then the config.yaml `zoom` block, then the
82
+ * standalone JSON file, then the legacy path.
83
+ *
84
+ * The JSON file is where plasiv's credentials actually live today (mode 600),
85
+ * so it stays supported rather than being migrated out from under a working
86
+ * setup. config.yaml is the location EPIC-0036 asks for and is preferred for
87
+ * anything new — it is the same file the daemon already reads secrets from.
88
+ *
89
+ * Environment wins only when ALL THREE values are present. A half-set
90
+ * environment falling through to a complete file beats erroring on a partial
91
+ * override, and mixing the two sources produces an account_id from one Zoom app
92
+ * with a secret from another, which fails at the token call with a message that
93
+ * blames the wrong thing.
94
+ */
95
+ export declare function loadCredentials(): ZoomCredentials;
96
+ /**
97
+ * Server-to-Server OAuth. The original fetched one token per run and never
98
+ * looked at it again; S2S tokens last an hour, so a backfill long enough to
99
+ * matter outlives its own credential and dies partway through with a 401 that
100
+ * looks like a permissions problem. This caches with an expiry and refetches.
101
+ */
102
+ export declare function getToken(creds: ZoomCredentials, now?: number): Promise<string>;
103
+ /** Test seam, and the escape hatch after a credential change mid-process. */
104
+ export declare function clearTokenCache(): void;
105
+ export interface ApiGetDeps {
106
+ fetchImpl?: typeof fetch;
107
+ sleep?: (ms: number) => Promise<void>;
108
+ }
109
+ /**
110
+ * The original had no retry, no backoff, no 429 handling and no concurrency
111
+ * cap — a serial loop issuing one detail call per meeting. Its clean log proves
112
+ * nothing, because it has only ever run at hand-driven volume; an account-wide
113
+ * backfill is the first time this would meet a rate limit.
114
+ *
115
+ * Retries 429 and 5xx with exponential backoff, honouring Retry-After when Zoom
116
+ * sends one. 4xx other than 429 is not retried — a 401 or a 404 does not get
117
+ * better by asking again.
118
+ */
119
+ export declare function apiGet<T>(urlPath: string, token: string, params?: Record<string, string | number>, deps?: ApiGetDeps): Promise<T>;
120
+ /**
121
+ * Zoom requires meeting UUIDs to be DOUBLE URL-encoded when they start with "/"
122
+ * or contain "//", and single-encoded otherwise.
123
+ *
124
+ * UNVERIFIED AGAINST REAL DATA: none of the 26 files on the plasiv disk carry a
125
+ * uuid that triggers the double branch, so that path comes from Zoom's docs
126
+ * rather than from a case anyone here has seen. The single branch is confirmed —
127
+ * it produces the same %3D%3D that appears inside the task permalinks Zoom
128
+ * embeds in its own summary markdown.
129
+ */
130
+ export declare function encodeMeetingUuid(uuid: string): string;
131
+ /**
132
+ * The list envelope is documented as `summaries`. When that key is absent this
133
+ * falls back to whatever list-of-dicts the payload does carry and says so,
134
+ * because the failure mode being defended against is a silent zero-result run:
135
+ * an envelope rename would otherwise read as "no meetings", which is
136
+ * indistinguishable from a quiet week.
137
+ */
138
+ export declare function extractSummaryList(payload: Record<string, unknown>, notes?: string[]): MeetingSummary[];
139
+ export declare function listSummaries(token: string, from: string, to: string, notes?: string[], deps?: ApiGetDeps): Promise<MeetingSummary[]>;
140
+ /**
141
+ * Zoom returns the whole summary as markdown in `summary_content` on modern
142
+ * accounts. The split fields are the deprecated shape.
143
+ *
144
+ * UNVERIFIED AGAINST REAL DATA: the split branch has never been exercised here.
145
+ * Every one of the 26 files on the plasiv disk orders its sections Quick recap,
146
+ * Next steps, per-person groups, Collaboration, Summary — and the split branch
147
+ * structurally cannot put next_steps second, because it appends them last. That
148
+ * ordering is the proof the account is on summary_content. The split branch
149
+ * below is written from Zoom's field names, not from anything observed, and is
150
+ * kept only so an older account degrades into readable output instead of an
151
+ * empty file.
152
+ */
153
+ export declare function renderSummary(detail: MeetingDetail): string;
154
+ export declare function startOf(summary: MeetingSummary): string;
155
+ /**
156
+ * Zoom ignores from/to on the summaries list endpoint, so the window has to be
157
+ * enforced here or it is a lie. An entry with no start time is kept rather than
158
+ * dropped — a missing timestamp is a reason to look at it, not to hide it.
159
+ */
160
+ export declare function inRange(summary: MeetingSummary, from: string, to: string): boolean;
161
+ /** Five keys, same order, same spelling as the Python. The dedup index reads
162
+ * meeting_uuid back out of this block, so the format is load-bearing. */
163
+ export declare function buildFrontmatter(summary: MeetingSummary, status: string): string;
164
+ /**
165
+ * "{topic} {YYYY-MM-DD HH_MM}Z.md", topic stripped of characters that are
166
+ * illegal in a filename on some filesystem or other. Verified against the real
167
+ * file in the unrouted bucket: this produces "Ben - Pete 2026-08-12 17_04Z.md".
168
+ */
169
+ export declare function filenameFor(summary: MeetingSummary): string;
170
+ export declare function unroutedDir(): string;
171
+ /**
172
+ * Projects carrying a `zoom` block in the registry:
173
+ *
174
+ * "zoom": { "match": ["plasiv"], "out": "meetings/raw" }
175
+ *
176
+ * Aliases are deliberately NOT matched. They are tool-call addresses — "dt",
177
+ * "dv" — and a two-letter needle matches almost any meeting title.
178
+ *
179
+ * Needles are sorted longest-first so routing is deterministic by specificity.
180
+ * The original took the first rule that matched in registry order, which means
181
+ * a project whose needle is a substring of another project's needle silently
182
+ * stole its meetings depending on file ordering.
183
+ */
184
+ export declare function loadRoutes(): ZoomRoute[];
185
+ export declare function routeFor(summary: MeetingSummary, routes: ZoomRoute[]): ZoomRoute | null;
186
+ export interface KnownMeeting {
187
+ file: string;
188
+ uuid: string;
189
+ }
190
+ /**
191
+ * Index meeting_uuid out of the first 600 bytes of every .md in the given
192
+ * directories, keyed on uuid AND start time.
193
+ *
194
+ * Two deliberate departures from the original:
195
+ *
196
+ * 1. UUID ALONE IS NOT THE KEY. If Zoom reuses a uuid across occurrences of a
197
+ * recurring meeting, a uuid-keyed index silently skips the second occurrence
198
+ * as already-seen. Nobody has observed that here and the Python does not
199
+ * defend against it; keying on uuid+start costs nothing and closes it.
200
+ *
201
+ * 2. THE UNROUTED BUCKET IS NOT INDEXED HERE. See reclaim handling in
202
+ * syncMeetings — an unrouted entry is UNCLAIMED, not SEEN.
203
+ */
204
+ export declare function indexKnownMeetings(dirs: string[]): Map<string, KnownMeeting>;
205
+ export declare function dedupKey(uuid: string, start: string): string;
206
+ /** The stub left in the unrouted bucket. Carries enough to see what is waiting
207
+ * — and nothing else.
208
+ *
209
+ * ISS-0123: a routed run does not merely READ non-client meetings, it WRITES
210
+ * them. The bucket on the plasiv machine holds a personal two-person meeting
211
+ * with its full body on disk, put there by a single hand-run. Storing a stub
212
+ * keeps the "never silently dropped" guarantee without spilling the content of
213
+ * every meeting in the account onto the filesystem as a side effect of pulling
214
+ * client ones.
215
+ *
216
+ * This is only safe BECAUSE the unrouted bucket is excluded from the dedup
217
+ * index. A stub in a seen-index would satisfy dedup forever and the real body
218
+ * would never arrive. Privacy stub and dedup fix are one change, not two. */
219
+ export declare function buildUnroutedStub(summary: MeetingSummary): string;
220
+ export interface SyncDeps extends ApiGetDeps {
221
+ credentials?: ZoomCredentials;
222
+ token?: string;
223
+ routes?: ZoomRoute[];
224
+ now?: Date;
225
+ }
226
+ /**
227
+ * Pull summaries and write them where they belong.
228
+ *
229
+ * The routed path is the interesting one and the least exercised — one manual
230
+ * run in its life — so it is written here from the spec rather than trusted
231
+ * from the source.
232
+ */
233
+ export declare function syncMeetings(opts?: SyncOptions, deps?: SyncDeps): Promise<SyncResult>;
234
+ //# sourceMappingURL=zoom.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zoom.d.ts","sourceRoot":"","sources":["../../src/tools/zoom.ts"],"names":[],"mappings":"AAyCA,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;iDACiD;AACjD,MAAM,WAAW,cAAc;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;gEACgE;AAChE,MAAM,WAAW,aAAa;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9D,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC;IACvB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,SAAS;IACxB,yBAAyB;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,+DAA+D;IAC/D,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,gCAAgC;IAChC,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7D,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrF,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,qBAAa,SAAU,SAAQ,KAAK;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;gBACF,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;CAMzD;AAcD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,IAAI,eAAe,CAgEjD;AAwBD;;;;;GAKG;AACH,wBAAsB,QAAQ,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,SAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAmCxF;AAED,6EAA6E;AAC7E,wBAAgB,eAAe,IAAI,IAAI,CAEtC;AASD,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAID;;;;;;;;;GASG;AACH,wBAAsB,MAAM,CAAC,CAAC,EAC5B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EACxC,IAAI,GAAE,UAAe,GACpB,OAAO,CAAC,CAAC,CAAC,CAuCZ;AAMD;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMtD;AAMD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,KAAK,GAAE,MAAM,EAAO,GACnB,cAAc,EAAE,CAgBlB;AAED,wBAAsB,aAAa,CACjC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,KAAK,GAAE,MAAM,EAAO,EACpB,IAAI,GAAE,UAAe,GACpB,OAAO,CAAC,cAAc,EAAE,CAAC,CAmB3B;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAyB3D;AAMD,wBAAgB,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAEvD;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAIlF;AAED;0EAC0E;AAC1E,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAWhF;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAiB3D;AAUD,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,IAAI,SAAS,EAAE,CAqBxC;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,SAAS,GAAG,IAAI,CAYvF;AAMD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CA4B5E;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED;;;;;;;;;;;;8EAY8E;AAC9E,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAqBjE;AAUD,MAAM,WAAW,QAAS,SAAQ,UAAU;IAC1C,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,IAAI,GAAE,WAAgB,EAAE,IAAI,GAAE,QAAa,GAAG,OAAO,CAAC,UAAU,CAAC,CAiJnG"}