@decibelsystems/tools 2.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 (478) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +342 -0
  3. package/dist/agentic/compiler.d.ts +21 -0
  4. package/dist/agentic/compiler.d.ts.map +1 -0
  5. package/dist/agentic/compiler.js +267 -0
  6. package/dist/agentic/compiler.js.map +1 -0
  7. package/dist/agentic/golden.d.ts +25 -0
  8. package/dist/agentic/golden.d.ts.map +1 -0
  9. package/dist/agentic/golden.js +255 -0
  10. package/dist/agentic/golden.js.map +1 -0
  11. package/dist/agentic/index.d.ts +17 -0
  12. package/dist/agentic/index.d.ts.map +1 -0
  13. package/dist/agentic/index.js +153 -0
  14. package/dist/agentic/index.js.map +1 -0
  15. package/dist/agentic/linter.d.ts +20 -0
  16. package/dist/agentic/linter.d.ts.map +1 -0
  17. package/dist/agentic/linter.js +340 -0
  18. package/dist/agentic/linter.js.map +1 -0
  19. package/dist/agentic/renderer.d.ts +17 -0
  20. package/dist/agentic/renderer.d.ts.map +1 -0
  21. package/dist/agentic/renderer.js +277 -0
  22. package/dist/agentic/renderer.js.map +1 -0
  23. package/dist/agentic/types.d.ts +199 -0
  24. package/dist/agentic/types.d.ts.map +1 -0
  25. package/dist/agentic/types.js +8 -0
  26. package/dist/agentic/types.js.map +1 -0
  27. package/dist/architectAdrs.d.ts +32 -0
  28. package/dist/architectAdrs.d.ts.map +1 -0
  29. package/dist/architectAdrs.js +162 -0
  30. package/dist/architectAdrs.js.map +1 -0
  31. package/dist/client/facade-client.d.ts +41 -0
  32. package/dist/client/facade-client.d.ts.map +1 -0
  33. package/dist/client/facade-client.js +243 -0
  34. package/dist/client/facade-client.js.map +1 -0
  35. package/dist/client/index.d.ts +4 -0
  36. package/dist/client/index.d.ts.map +1 -0
  37. package/dist/client/index.js +18 -0
  38. package/dist/client/index.js.map +1 -0
  39. package/dist/client/transports.d.ts +78 -0
  40. package/dist/client/transports.d.ts.map +1 -0
  41. package/dist/client/transports.js +258 -0
  42. package/dist/client/transports.js.map +1 -0
  43. package/dist/client/types.d.ts +49 -0
  44. package/dist/client/types.d.ts.map +1 -0
  45. package/dist/client/types.js +8 -0
  46. package/dist/client/types.js.map +1 -0
  47. package/dist/config.d.ts +8 -0
  48. package/dist/config.d.ts.map +1 -0
  49. package/dist/config.js +19 -0
  50. package/dist/config.js.map +1 -0
  51. package/dist/daemon.d.ts +77 -0
  52. package/dist/daemon.d.ts.map +1 -0
  53. package/dist/daemon.js +374 -0
  54. package/dist/daemon.js.map +1 -0
  55. package/dist/daemonConfig.d.ts +43 -0
  56. package/dist/daemonConfig.d.ts.map +1 -0
  57. package/dist/daemonConfig.js +113 -0
  58. package/dist/daemonConfig.js.map +1 -0
  59. package/dist/dataRoot.d.ts +5 -0
  60. package/dist/dataRoot.d.ts.map +1 -0
  61. package/dist/dataRoot.js +23 -0
  62. package/dist/dataRoot.js.map +1 -0
  63. package/dist/decibelPaths.d.ts +42 -0
  64. package/dist/decibelPaths.d.ts.map +1 -0
  65. package/dist/decibelPaths.js +150 -0
  66. package/dist/decibelPaths.js.map +1 -0
  67. package/dist/facades/definitions.d.ts +6 -0
  68. package/dist/facades/definitions.d.ts.map +1 -0
  69. package/dist/facades/definitions.js +450 -0
  70. package/dist/facades/definitions.js.map +1 -0
  71. package/dist/facades/index.d.ts +27 -0
  72. package/dist/facades/index.d.ts.map +1 -0
  73. package/dist/facades/index.js +124 -0
  74. package/dist/facades/index.js.map +1 -0
  75. package/dist/facades/types.d.ts +38 -0
  76. package/dist/facades/types.d.ts.map +1 -0
  77. package/dist/facades/types.js +8 -0
  78. package/dist/facades/types.js.map +1 -0
  79. package/dist/httpServer.d.ts +66 -0
  80. package/dist/httpServer.d.ts.map +1 -0
  81. package/dist/httpServer.js +1723 -0
  82. package/dist/httpServer.js.map +1 -0
  83. package/dist/kernel.d.ts +87 -0
  84. package/dist/kernel.d.ts.map +1 -0
  85. package/dist/kernel.js +256 -0
  86. package/dist/kernel.js.map +1 -0
  87. package/dist/lib/agent-services/assumptions.d.ts +16 -0
  88. package/dist/lib/agent-services/assumptions.d.ts.map +1 -0
  89. package/dist/lib/agent-services/assumptions.js +284 -0
  90. package/dist/lib/agent-services/assumptions.js.map +1 -0
  91. package/dist/lib/agent-services/context-pack.d.ts +6 -0
  92. package/dist/lib/agent-services/context-pack.d.ts.map +1 -0
  93. package/dist/lib/agent-services/context-pack.js +354 -0
  94. package/dist/lib/agent-services/context-pack.js.map +1 -0
  95. package/dist/lib/agent-services/drift-guard.d.ts +14 -0
  96. package/dist/lib/agent-services/drift-guard.d.ts.map +1 -0
  97. package/dist/lib/agent-services/drift-guard.js +355 -0
  98. package/dist/lib/agent-services/drift-guard.js.map +1 -0
  99. package/dist/lib/agent-services/index.d.ts +5 -0
  100. package/dist/lib/agent-services/index.d.ts.map +1 -0
  101. package/dist/lib/agent-services/index.js +10 -0
  102. package/dist/lib/agent-services/index.js.map +1 -0
  103. package/dist/lib/benchmark.d.ts +110 -0
  104. package/dist/lib/benchmark.d.ts.map +1 -0
  105. package/dist/lib/benchmark.js +338 -0
  106. package/dist/lib/benchmark.js.map +1 -0
  107. package/dist/lib/supabase.d.ts +123 -0
  108. package/dist/lib/supabase.d.ts.map +1 -0
  109. package/dist/lib/supabase.js +91 -0
  110. package/dist/lib/supabase.js.map +1 -0
  111. package/dist/license.d.ts +30 -0
  112. package/dist/license.d.ts.map +1 -0
  113. package/dist/license.js +131 -0
  114. package/dist/license.js.map +1 -0
  115. package/dist/projectPaths.d.ts +27 -0
  116. package/dist/projectPaths.d.ts.map +1 -0
  117. package/dist/projectPaths.js +86 -0
  118. package/dist/projectPaths.js.map +1 -0
  119. package/dist/projectRegistry.d.ts +97 -0
  120. package/dist/projectRegistry.d.ts.map +1 -0
  121. package/dist/projectRegistry.js +374 -0
  122. package/dist/projectRegistry.js.map +1 -0
  123. package/dist/sentinelIssues.d.ts +65 -0
  124. package/dist/sentinelIssues.d.ts.map +1 -0
  125. package/dist/sentinelIssues.js +297 -0
  126. package/dist/sentinelIssues.js.map +1 -0
  127. package/dist/server.d.ts +3 -0
  128. package/dist/server.d.ts.map +1 -0
  129. package/dist/server.js +195 -0
  130. package/dist/server.js.map +1 -0
  131. package/dist/test.d.ts +7 -0
  132. package/dist/test.d.ts.map +1 -0
  133. package/dist/test.js +77 -0
  134. package/dist/test.js.map +1 -0
  135. package/dist/tools/agentic/index.d.ts +7 -0
  136. package/dist/tools/agentic/index.d.ts.map +1 -0
  137. package/dist/tools/agentic/index.js +203 -0
  138. package/dist/tools/agentic/index.js.map +1 -0
  139. package/dist/tools/architect/index.d.ts +11 -0
  140. package/dist/tools/architect/index.d.ts.map +1 -0
  141. package/dist/tools/architect/index.js +506 -0
  142. package/dist/tools/architect/index.js.map +1 -0
  143. package/dist/tools/architect.d.ts +19 -0
  144. package/dist/tools/architect.d.ts.map +1 -0
  145. package/dist/tools/architect.js +88 -0
  146. package/dist/tools/architect.js.map +1 -0
  147. package/dist/tools/auditor/index.d.ts +10 -0
  148. package/dist/tools/auditor/index.d.ts.map +1 -0
  149. package/dist/tools/auditor/index.js +310 -0
  150. package/dist/tools/auditor/index.js.map +1 -0
  151. package/dist/tools/auditor.d.ts +149 -0
  152. package/dist/tools/auditor.d.ts.map +1 -0
  153. package/dist/tools/auditor.js +775 -0
  154. package/dist/tools/auditor.js.map +1 -0
  155. package/dist/tools/bench/index.d.ts +3 -0
  156. package/dist/tools/bench/index.d.ts.map +1 -0
  157. package/dist/tools/bench/index.js +220 -0
  158. package/dist/tools/bench/index.js.map +1 -0
  159. package/dist/tools/bench.d.ts +89 -0
  160. package/dist/tools/bench.d.ts.map +1 -0
  161. package/dist/tools/bench.js +826 -0
  162. package/dist/tools/bench.js.map +1 -0
  163. package/dist/tools/context/index.d.ts +11 -0
  164. package/dist/tools/context/index.d.ts.map +1 -0
  165. package/dist/tools/context/index.js +482 -0
  166. package/dist/tools/context/index.js.map +1 -0
  167. package/dist/tools/context.d.ts +146 -0
  168. package/dist/tools/context.d.ts.map +1 -0
  169. package/dist/tools/context.js +481 -0
  170. package/dist/tools/context.js.map +1 -0
  171. package/dist/tools/coordinator/coordinator.d.ts +168 -0
  172. package/dist/tools/coordinator/coordinator.d.ts.map +1 -0
  173. package/dist/tools/coordinator/coordinator.js +535 -0
  174. package/dist/tools/coordinator/coordinator.js.map +1 -0
  175. package/dist/tools/coordinator/index.d.ts +12 -0
  176. package/dist/tools/coordinator/index.d.ts.map +1 -0
  177. package/dist/tools/coordinator/index.js +381 -0
  178. package/dist/tools/coordinator/index.js.map +1 -0
  179. package/dist/tools/corpus/index.d.ts +5 -0
  180. package/dist/tools/corpus/index.d.ts.map +1 -0
  181. package/dist/tools/corpus/index.js +105 -0
  182. package/dist/tools/corpus/index.js.map +1 -0
  183. package/dist/tools/corpus.d.ts +33 -0
  184. package/dist/tools/corpus.d.ts.map +1 -0
  185. package/dist/tools/corpus.js +180 -0
  186. package/dist/tools/corpus.js.map +1 -0
  187. package/dist/tools/crit.d.ts +63 -0
  188. package/dist/tools/crit.d.ts.map +1 -0
  189. package/dist/tools/crit.js +159 -0
  190. package/dist/tools/crit.js.map +1 -0
  191. package/dist/tools/data-inspector.d.ts +189 -0
  192. package/dist/tools/data-inspector.d.ts.map +1 -0
  193. package/dist/tools/data-inspector.js +669 -0
  194. package/dist/tools/data-inspector.js.map +1 -0
  195. package/dist/tools/deck.d.ts +11 -0
  196. package/dist/tools/deck.d.ts.map +1 -0
  197. package/dist/tools/deck.js +188 -0
  198. package/dist/tools/deck.js.map +1 -0
  199. package/dist/tools/designer/index.d.ts +11 -0
  200. package/dist/tools/designer/index.d.ts.map +1 -0
  201. package/dist/tools/designer/index.js +442 -0
  202. package/dist/tools/designer/index.js.map +1 -0
  203. package/dist/tools/designer/lateral-tools.d.ts +6 -0
  204. package/dist/tools/designer/lateral-tools.d.ts.map +1 -0
  205. package/dist/tools/designer/lateral-tools.js +190 -0
  206. package/dist/tools/designer/lateral-tools.js.map +1 -0
  207. package/dist/tools/designer.d.ts +122 -0
  208. package/dist/tools/designer.d.ts.map +1 -0
  209. package/dist/tools/designer.js +495 -0
  210. package/dist/tools/designer.js.map +1 -0
  211. package/dist/tools/dojo/index.d.ts +13 -0
  212. package/dist/tools/dojo/index.d.ts.map +1 -0
  213. package/dist/tools/dojo/index.js +613 -0
  214. package/dist/tools/dojo/index.js.map +1 -0
  215. package/dist/tools/dojo.d.ts +254 -0
  216. package/dist/tools/dojo.d.ts.map +1 -0
  217. package/dist/tools/dojo.js +933 -0
  218. package/dist/tools/dojo.js.map +1 -0
  219. package/dist/tools/dojoBench.d.ts +49 -0
  220. package/dist/tools/dojoBench.d.ts.map +1 -0
  221. package/dist/tools/dojoBench.js +205 -0
  222. package/dist/tools/dojoBench.js.map +1 -0
  223. package/dist/tools/dojoGraduated.d.ts +50 -0
  224. package/dist/tools/dojoGraduated.d.ts.map +1 -0
  225. package/dist/tools/dojoGraduated.js +174 -0
  226. package/dist/tools/dojoGraduated.js.map +1 -0
  227. package/dist/tools/dojoPolicy.d.ts +65 -0
  228. package/dist/tools/dojoPolicy.d.ts.map +1 -0
  229. package/dist/tools/dojoPolicy.js +263 -0
  230. package/dist/tools/dojoPolicy.js.map +1 -0
  231. package/dist/tools/feedback/index.d.ts +5 -0
  232. package/dist/tools/feedback/index.d.ts.map +1 -0
  233. package/dist/tools/feedback/index.js +153 -0
  234. package/dist/tools/feedback/index.js.map +1 -0
  235. package/dist/tools/feedback.d.ts +61 -0
  236. package/dist/tools/feedback.d.ts.map +1 -0
  237. package/dist/tools/feedback.js +209 -0
  238. package/dist/tools/feedback.js.map +1 -0
  239. package/dist/tools/forecast/index.d.ts +8 -0
  240. package/dist/tools/forecast/index.d.ts.map +1 -0
  241. package/dist/tools/forecast/index.js +283 -0
  242. package/dist/tools/forecast/index.js.map +1 -0
  243. package/dist/tools/forecast.d.ts +147 -0
  244. package/dist/tools/forecast.d.ts.map +1 -0
  245. package/dist/tools/forecast.js +417 -0
  246. package/dist/tools/forecast.js.map +1 -0
  247. package/dist/tools/friction/index.d.ts +7 -0
  248. package/dist/tools/friction/index.d.ts.map +1 -0
  249. package/dist/tools/friction/index.js +265 -0
  250. package/dist/tools/friction/index.js.map +1 -0
  251. package/dist/tools/friction.d.ts +82 -0
  252. package/dist/tools/friction.d.ts.map +1 -0
  253. package/dist/tools/friction.js +331 -0
  254. package/dist/tools/friction.js.map +1 -0
  255. package/dist/tools/git/index.d.ts +9 -0
  256. package/dist/tools/git/index.d.ts.map +1 -0
  257. package/dist/tools/git/index.js +237 -0
  258. package/dist/tools/git/index.js.map +1 -0
  259. package/dist/tools/git-sentinel/index.d.ts +7 -0
  260. package/dist/tools/git-sentinel/index.d.ts.map +1 -0
  261. package/dist/tools/git-sentinel/index.js +178 -0
  262. package/dist/tools/git-sentinel/index.js.map +1 -0
  263. package/dist/tools/git-sentinel.d.ts +78 -0
  264. package/dist/tools/git-sentinel.d.ts.map +1 -0
  265. package/dist/tools/git-sentinel.js +391 -0
  266. package/dist/tools/git-sentinel.js.map +1 -0
  267. package/dist/tools/git.d.ts +134 -0
  268. package/dist/tools/git.d.ts.map +1 -0
  269. package/dist/tools/git.js +374 -0
  270. package/dist/tools/git.js.map +1 -0
  271. package/dist/tools/guardian/index.d.ts +8 -0
  272. package/dist/tools/guardian/index.d.ts.map +1 -0
  273. package/dist/tools/guardian/index.js +171 -0
  274. package/dist/tools/guardian/index.js.map +1 -0
  275. package/dist/tools/guardian.d.ts +62 -0
  276. package/dist/tools/guardian.d.ts.map +1 -0
  277. package/dist/tools/guardian.js +332 -0
  278. package/dist/tools/guardian.js.map +1 -0
  279. package/dist/tools/hygiene/codebase-scanner.d.ts +38 -0
  280. package/dist/tools/hygiene/codebase-scanner.d.ts.map +1 -0
  281. package/dist/tools/hygiene/codebase-scanner.js +411 -0
  282. package/dist/tools/hygiene/codebase-scanner.js.map +1 -0
  283. package/dist/tools/hygiene/config-scanner.d.ts +33 -0
  284. package/dist/tools/hygiene/config-scanner.d.ts.map +1 -0
  285. package/dist/tools/hygiene/config-scanner.js +482 -0
  286. package/dist/tools/hygiene/config-scanner.js.map +1 -0
  287. package/dist/tools/hygiene/coverage-scanner.d.ts +41 -0
  288. package/dist/tools/hygiene/coverage-scanner.d.ts.map +1 -0
  289. package/dist/tools/hygiene/coverage-scanner.js +331 -0
  290. package/dist/tools/hygiene/coverage-scanner.js.map +1 -0
  291. package/dist/tools/hygiene/index.d.ts +7 -0
  292. package/dist/tools/hygiene/index.d.ts.map +1 -0
  293. package/dist/tools/hygiene/index.js +291 -0
  294. package/dist/tools/hygiene/index.js.map +1 -0
  295. package/dist/tools/hygiene/oracle-hygiene.d.ts +68 -0
  296. package/dist/tools/hygiene/oracle-hygiene.d.ts.map +1 -0
  297. package/dist/tools/hygiene/oracle-hygiene.js +324 -0
  298. package/dist/tools/hygiene/oracle-hygiene.js.map +1 -0
  299. package/dist/tools/index.d.ts +6 -0
  300. package/dist/tools/index.d.ts.map +1 -0
  301. package/dist/tools/index.js +130 -0
  302. package/dist/tools/index.js.map +1 -0
  303. package/dist/tools/lateral.d.ts +114 -0
  304. package/dist/tools/lateral.d.ts.map +1 -0
  305. package/dist/tools/lateral.js +536 -0
  306. package/dist/tools/lateral.js.map +1 -0
  307. package/dist/tools/learnings/index.d.ts +5 -0
  308. package/dist/tools/learnings/index.d.ts.map +1 -0
  309. package/dist/tools/learnings/index.js +138 -0
  310. package/dist/tools/learnings/index.js.map +1 -0
  311. package/dist/tools/learnings.d.ts +41 -0
  312. package/dist/tools/learnings.d.ts.map +1 -0
  313. package/dist/tools/learnings.js +149 -0
  314. package/dist/tools/learnings.js.map +1 -0
  315. package/dist/tools/oracle/index.d.ts +6 -0
  316. package/dist/tools/oracle/index.d.ts.map +1 -0
  317. package/dist/tools/oracle/index.js +217 -0
  318. package/dist/tools/oracle/index.js.map +1 -0
  319. package/dist/tools/oracle.d.ts +90 -0
  320. package/dist/tools/oracle.d.ts.map +1 -0
  321. package/dist/tools/oracle.js +529 -0
  322. package/dist/tools/oracle.js.map +1 -0
  323. package/dist/tools/policy.d.ts +119 -0
  324. package/dist/tools/policy.d.ts.map +1 -0
  325. package/dist/tools/policy.js +406 -0
  326. package/dist/tools/policy.js.map +1 -0
  327. package/dist/tools/provenance/index.d.ts +4 -0
  328. package/dist/tools/provenance/index.d.ts.map +1 -0
  329. package/dist/tools/provenance/index.js +63 -0
  330. package/dist/tools/provenance/index.js.map +1 -0
  331. package/dist/tools/provenance.d.ts +75 -0
  332. package/dist/tools/provenance.d.ts.map +1 -0
  333. package/dist/tools/provenance.js +224 -0
  334. package/dist/tools/provenance.js.map +1 -0
  335. package/dist/tools/rateLimiter.d.ts +45 -0
  336. package/dist/tools/rateLimiter.d.ts.map +1 -0
  337. package/dist/tools/rateLimiter.js +91 -0
  338. package/dist/tools/rateLimiter.js.map +1 -0
  339. package/dist/tools/registry/index.d.ts +10 -0
  340. package/dist/tools/registry/index.d.ts.map +1 -0
  341. package/dist/tools/registry/index.js +506 -0
  342. package/dist/tools/registry/index.js.map +1 -0
  343. package/dist/tools/registry.d.ts +3 -0
  344. package/dist/tools/registry.d.ts.map +1 -0
  345. package/dist/tools/registry.js +189 -0
  346. package/dist/tools/registry.js.map +1 -0
  347. package/dist/tools/roadmap/index.d.ts +11 -0
  348. package/dist/tools/roadmap/index.d.ts.map +1 -0
  349. package/dist/tools/roadmap/index.js +364 -0
  350. package/dist/tools/roadmap/index.js.map +1 -0
  351. package/dist/tools/roadmap.d.ts +103 -0
  352. package/dist/tools/roadmap.d.ts.map +1 -0
  353. package/dist/tools/roadmap.js +407 -0
  354. package/dist/tools/roadmap.js.map +1 -0
  355. package/dist/tools/senken.d.ts +11 -0
  356. package/dist/tools/senken.d.ts.map +1 -0
  357. package/dist/tools/senken.js +482 -0
  358. package/dist/tools/senken.js.map +1 -0
  359. package/dist/tools/sentinel/index.d.ts +21 -0
  360. package/dist/tools/sentinel/index.d.ts.map +1 -0
  361. package/dist/tools/sentinel/index.js +1067 -0
  362. package/dist/tools/sentinel/index.js.map +1 -0
  363. package/dist/tools/sentinel-scan-data.d.ts +90 -0
  364. package/dist/tools/sentinel-scan-data.d.ts.map +1 -0
  365. package/dist/tools/sentinel-scan-data.js +122 -0
  366. package/dist/tools/sentinel-scan-data.js.map +1 -0
  367. package/dist/tools/sentinel.d.ts +156 -0
  368. package/dist/tools/sentinel.d.ts.map +1 -0
  369. package/dist/tools/sentinel.js +603 -0
  370. package/dist/tools/sentinel.js.map +1 -0
  371. package/dist/tools/shared/index.d.ts +5 -0
  372. package/dist/tools/shared/index.d.ts.map +1 -0
  373. package/dist/tools/shared/index.js +8 -0
  374. package/dist/tools/shared/index.js.map +1 -0
  375. package/dist/tools/shared/project.d.ts +17 -0
  376. package/dist/tools/shared/project.d.ts.map +1 -0
  377. package/dist/tools/shared/project.js +36 -0
  378. package/dist/tools/shared/project.js.map +1 -0
  379. package/dist/tools/shared/response.d.ts +15 -0
  380. package/dist/tools/shared/response.d.ts.map +1 -0
  381. package/dist/tools/shared/response.js +77 -0
  382. package/dist/tools/shared/response.js.map +1 -0
  383. package/dist/tools/shared/runTracker.d.ts +87 -0
  384. package/dist/tools/shared/runTracker.d.ts.map +1 -0
  385. package/dist/tools/shared/runTracker.js +225 -0
  386. package/dist/tools/shared/runTracker.js.map +1 -0
  387. package/dist/tools/shared/validation.d.ts +10 -0
  388. package/dist/tools/shared/validation.d.ts.map +1 -0
  389. package/dist/tools/shared/validation.js +26 -0
  390. package/dist/tools/shared/validation.js.map +1 -0
  391. package/dist/tools/studio/cloud-spine.d.ts +27 -0
  392. package/dist/tools/studio/cloud-spine.d.ts.map +1 -0
  393. package/dist/tools/studio/cloud-spine.js +845 -0
  394. package/dist/tools/studio/cloud-spine.js.map +1 -0
  395. package/dist/tools/studio/index.d.ts +154 -0
  396. package/dist/tools/studio/index.d.ts.map +1 -0
  397. package/dist/tools/studio/index.js +541 -0
  398. package/dist/tools/studio/index.js.map +1 -0
  399. package/dist/tools/testSpec.d.ts +122 -0
  400. package/dist/tools/testSpec.d.ts.map +1 -0
  401. package/dist/tools/testSpec.js +525 -0
  402. package/dist/tools/testSpec.js.map +1 -0
  403. package/dist/tools/toolsIndex.d.ts +5 -0
  404. package/dist/tools/toolsIndex.d.ts.map +1 -0
  405. package/dist/tools/toolsIndex.js +37 -0
  406. package/dist/tools/toolsIndex.js.map +1 -0
  407. package/dist/tools/types.d.ts +47 -0
  408. package/dist/tools/types.d.ts.map +1 -0
  409. package/dist/tools/types.js +7 -0
  410. package/dist/tools/types.js.map +1 -0
  411. package/dist/tools/vector/index.d.ts +13 -0
  412. package/dist/tools/vector/index.d.ts.map +1 -0
  413. package/dist/tools/vector/index.js +592 -0
  414. package/dist/tools/vector/index.js.map +1 -0
  415. package/dist/tools/vector.d.ts +189 -0
  416. package/dist/tools/vector.d.ts.map +1 -0
  417. package/dist/tools/vector.js +570 -0
  418. package/dist/tools/vector.js.map +1 -0
  419. package/dist/tools/velocity/index.d.ts +9 -0
  420. package/dist/tools/velocity/index.d.ts.map +1 -0
  421. package/dist/tools/velocity/index.js +306 -0
  422. package/dist/tools/velocity/index.js.map +1 -0
  423. package/dist/tools/velocity.d.ts +143 -0
  424. package/dist/tools/velocity.d.ts.map +1 -0
  425. package/dist/tools/velocity.js +628 -0
  426. package/dist/tools/velocity.js.map +1 -0
  427. package/dist/tools/voice/index.d.ts +8 -0
  428. package/dist/tools/voice/index.d.ts.map +1 -0
  429. package/dist/tools/voice/index.js +203 -0
  430. package/dist/tools/voice/index.js.map +1 -0
  431. package/dist/tools/voice.d.ts +291 -0
  432. package/dist/tools/voice.d.ts.map +1 -0
  433. package/dist/tools/voice.js +734 -0
  434. package/dist/tools/voice.js.map +1 -0
  435. package/dist/tools/workflow/index.d.ts +8 -0
  436. package/dist/tools/workflow/index.d.ts.map +1 -0
  437. package/dist/tools/workflow/index.js +199 -0
  438. package/dist/tools/workflow/index.js.map +1 -0
  439. package/dist/tools/workflow.d.ts +123 -0
  440. package/dist/tools/workflow.d.ts.map +1 -0
  441. package/dist/tools/workflow.js +647 -0
  442. package/dist/tools/workflow.js.map +1 -0
  443. package/dist/transports/bridge.d.ts +22 -0
  444. package/dist/transports/bridge.d.ts.map +1 -0
  445. package/dist/transports/bridge.js +177 -0
  446. package/dist/transports/bridge.js.map +1 -0
  447. package/dist/transports/http.d.ts +9 -0
  448. package/dist/transports/http.d.ts.map +1 -0
  449. package/dist/transports/http.js +35 -0
  450. package/dist/transports/http.js.map +1 -0
  451. package/dist/transports/index.d.ts +6 -0
  452. package/dist/transports/index.d.ts.map +1 -0
  453. package/dist/transports/index.js +8 -0
  454. package/dist/transports/index.js.map +1 -0
  455. package/dist/transports/mcp.d.ts +9 -0
  456. package/dist/transports/mcp.d.ts.map +1 -0
  457. package/dist/transports/mcp.js +51 -0
  458. package/dist/transports/mcp.js.map +1 -0
  459. package/dist/transports/stdio.d.ts +9 -0
  460. package/dist/transports/stdio.d.ts.map +1 -0
  461. package/dist/transports/stdio.js +26 -0
  462. package/dist/transports/stdio.js.map +1 -0
  463. package/dist/transports/types.d.ts +27 -0
  464. package/dist/transports/types.d.ts.map +1 -0
  465. package/dist/transports/types.js +8 -0
  466. package/dist/transports/types.js.map +1 -0
  467. package/dist/types/agent-services.d.ts +193 -0
  468. package/dist/types/agent-services.d.ts.map +1 -0
  469. package/dist/types/agent-services.js +8 -0
  470. package/dist/types/agent-services.js.map +1 -0
  471. package/dist/types/index.d.ts +2 -0
  472. package/dist/types/index.d.ts.map +1 -0
  473. package/dist/types/index.js +7 -0
  474. package/dist/types/index.js.map +1 -0
  475. package/package.json +72 -0
  476. package/templates/AGENT.md +87 -0
  477. package/templates/com.decibel.daemon.plist +47 -0
  478. package/templates/sentinel/ISSUE_TEMPLATE.md +20 -0
@@ -0,0 +1,340 @@
1
+ /**
2
+ * Agentic Pack Linter
3
+ *
4
+ * Validates rendered output against dialect constraints.
5
+ * Ensures semiotic clarity and consistency.
6
+ */
7
+ import { log } from '../config.js';
8
+ import { resolveProjectPaths } from '../projectRegistry.js';
9
+ import { getOrCompilePack } from './compiler.js';
10
+ /**
11
+ * Count emojis in text
12
+ */
13
+ function countEmojis(text) {
14
+ const emojiRegex = /[\u{1F300}-\u{1F9FF}]|[\u{2600}-\u{26FF}]|[\u{2700}-\u{27BF}]|[\u{1F600}-\u{1F64F}]|[\u{1F680}-\u{1F6FF}]/gu;
15
+ const matches = text.match(emojiRegex);
16
+ return matches ? matches.length : 0;
17
+ }
18
+ /**
19
+ * Find emoji positions in text
20
+ */
21
+ function findEmojiPositions(text) {
22
+ const positions = [];
23
+ const emojiRegex = /[\u{1F300}-\u{1F9FF}]|[\u{2600}-\u{26FF}]|[\u{2700}-\u{27BF}]|[\u{1F600}-\u{1F64F}]|[\u{1F680}-\u{1F6FF}]/gu;
24
+ let match;
25
+ while ((match = emojiRegex.exec(text)) !== null) {
26
+ const beforeMatch = text.substring(0, match.index);
27
+ const lines = beforeMatch.split('\n');
28
+ positions.push({
29
+ index: match.index,
30
+ line: lines.length,
31
+ column: lines[lines.length - 1].length + 1,
32
+ });
33
+ }
34
+ return positions;
35
+ }
36
+ const LINT_RULES = [
37
+ // Emoji count rule
38
+ {
39
+ id: 'max-emoji-count',
40
+ severity: 'error',
41
+ check: (rendered, renderer) => {
42
+ const max = renderer.constraints.max_emoji_count;
43
+ if (max === undefined)
44
+ return null;
45
+ const count = countEmojis(rendered);
46
+ if (count > max) {
47
+ return {
48
+ rule: 'max-emoji-count',
49
+ severity: 'error',
50
+ message: `Emoji count (${count}) exceeds maximum (${max})`,
51
+ suggestion: `Reduce emoji usage to ${max} or fewer`,
52
+ };
53
+ }
54
+ return null;
55
+ },
56
+ },
57
+ // Emoji position rule
58
+ {
59
+ id: 'emoji-position',
60
+ severity: 'warning',
61
+ check: (rendered, renderer) => {
62
+ const position = renderer.constraints.emoji_position;
63
+ if (!position || position === 'anywhere')
64
+ return null;
65
+ const emojiPositions = findEmojiPositions(rendered);
66
+ if (emojiPositions.length === 0)
67
+ return null;
68
+ if (position === 'none') {
69
+ return {
70
+ rule: 'emoji-position',
71
+ severity: 'warning',
72
+ message: 'Emojis are not allowed in this renderer',
73
+ line: emojiPositions[0].line,
74
+ column: emojiPositions[0].column,
75
+ suggestion: 'Remove all emojis from output',
76
+ };
77
+ }
78
+ if (position === 'header-only') {
79
+ // Emojis should only be on the first line
80
+ const nonHeaderEmojis = emojiPositions.filter((p) => p.line > 1);
81
+ if (nonHeaderEmojis.length > 0) {
82
+ return {
83
+ rule: 'emoji-position',
84
+ severity: 'warning',
85
+ message: 'Emojis found outside header (first line)',
86
+ line: nonHeaderEmojis[0].line,
87
+ column: nonHeaderEmojis[0].column,
88
+ suggestion: 'Move emojis to the header line only',
89
+ };
90
+ }
91
+ }
92
+ return null;
93
+ },
94
+ },
95
+ // Max lines rule
96
+ {
97
+ id: 'max-lines',
98
+ severity: 'warning',
99
+ check: (rendered, renderer) => {
100
+ const max = renderer.constraints.max_lines;
101
+ if (max === undefined)
102
+ return null;
103
+ const lineCount = rendered.split('\n').length;
104
+ if (lineCount > max) {
105
+ return {
106
+ rule: 'max-lines',
107
+ severity: 'warning',
108
+ message: `Line count (${lineCount}) exceeds maximum (${max})`,
109
+ suggestion: `Condense output to ${max} lines or fewer`,
110
+ };
111
+ }
112
+ return null;
113
+ },
114
+ },
115
+ // Banned words rule
116
+ {
117
+ id: 'banned-words',
118
+ severity: 'error',
119
+ check: (rendered, renderer) => {
120
+ const banned = renderer.constraints.banned_words;
121
+ if (!banned || banned.length === 0)
122
+ return null;
123
+ const lowerRendered = rendered.toLowerCase();
124
+ for (const word of banned) {
125
+ const index = lowerRendered.indexOf(word.toLowerCase());
126
+ if (index !== -1) {
127
+ const beforeMatch = rendered.substring(0, index);
128
+ const lines = beforeMatch.split('\n');
129
+ return {
130
+ rule: 'banned-words',
131
+ severity: 'error',
132
+ message: `Banned word "${word}" found in output`,
133
+ line: lines.length,
134
+ column: lines[lines.length - 1].length + 1,
135
+ suggestion: `Remove or replace the word "${word}"`,
136
+ };
137
+ }
138
+ }
139
+ return null;
140
+ },
141
+ },
142
+ // Banned punctuation rule
143
+ {
144
+ id: 'banned-punctuation',
145
+ severity: 'warning',
146
+ check: (rendered, renderer) => {
147
+ const banned = renderer.constraints.banned_punctuation;
148
+ if (!banned || banned.length === 0)
149
+ return null;
150
+ for (const punct of banned) {
151
+ const index = rendered.indexOf(punct);
152
+ if (index !== -1) {
153
+ const beforeMatch = rendered.substring(0, index);
154
+ const lines = beforeMatch.split('\n');
155
+ return {
156
+ rule: 'banned-punctuation',
157
+ severity: 'warning',
158
+ message: `Banned punctuation "${punct}" found in output`,
159
+ line: lines.length,
160
+ column: lines[lines.length - 1].length + 1,
161
+ suggestion: `Remove or replace "${punct}"`,
162
+ };
163
+ }
164
+ }
165
+ return null;
166
+ },
167
+ },
168
+ // Required sections rule
169
+ {
170
+ id: 'required-sections',
171
+ severity: 'error',
172
+ check: (rendered, renderer) => {
173
+ const required = renderer.constraints.required_sections;
174
+ if (!required || required.length === 0)
175
+ return null;
176
+ for (const section of required) {
177
+ // Look for section headers in various formats
178
+ const patterns = [
179
+ new RegExp(`^##?\\s*${section}`, 'im'), // Markdown headers
180
+ new RegExp(`^${section}:`, 'im'), // Key: format
181
+ new RegExp(`\\[${section}\\]`, 'i'), // [Section] format
182
+ ];
183
+ const found = patterns.some((p) => p.test(rendered));
184
+ if (!found) {
185
+ return {
186
+ rule: 'required-sections',
187
+ severity: 'error',
188
+ message: `Required section "${section}" not found`,
189
+ suggestion: `Add a "${section}" section to the output`,
190
+ };
191
+ }
192
+ }
193
+ return null;
194
+ },
195
+ },
196
+ // Max section lines rule
197
+ {
198
+ id: 'max-section-lines',
199
+ severity: 'info',
200
+ check: (rendered, renderer) => {
201
+ const max = renderer.constraints.max_section_lines;
202
+ if (max === undefined)
203
+ return null;
204
+ // Split by section headers and check each
205
+ const sections = rendered.split(/^(?=##?\s|\[)/m);
206
+ for (let i = 0; i < sections.length; i++) {
207
+ const section = sections[i];
208
+ const lineCount = section.split('\n').length;
209
+ if (lineCount > max) {
210
+ return {
211
+ rule: 'max-section-lines',
212
+ severity: 'info',
213
+ message: `Section ${i + 1} has ${lineCount} lines (max: ${max})`,
214
+ suggestion: 'Consider condensing this section',
215
+ };
216
+ }
217
+ }
218
+ return null;
219
+ },
220
+ },
221
+ // Payload consistency checks
222
+ {
223
+ id: 'missing-decision',
224
+ severity: 'warning',
225
+ check: (rendered, _renderer, payload) => {
226
+ if (!payload)
227
+ return null;
228
+ if (payload.role !== 'Overmind')
229
+ return null;
230
+ if (!payload.decision)
231
+ return null;
232
+ // Check if decision is reflected in output
233
+ const hasDecision = rendered.toLowerCase().includes('decision') ||
234
+ rendered.includes(payload.decision.toLowerCase());
235
+ if (!hasDecision) {
236
+ return {
237
+ rule: 'missing-decision',
238
+ severity: 'warning',
239
+ message: 'Overmind payload has decision but output may not reflect it',
240
+ suggestion: 'Ensure the decision is visible in the rendered output',
241
+ };
242
+ }
243
+ return null;
244
+ },
245
+ },
246
+ // Evidence check
247
+ {
248
+ id: 'missing-evidence',
249
+ severity: 'info',
250
+ check: (rendered, _renderer, payload) => {
251
+ if (!payload)
252
+ return null;
253
+ if (payload.evidence.length === 0)
254
+ return null;
255
+ const hasEvidence = rendered.toLowerCase().includes('evidence') ||
256
+ payload.evidence.some((e) => rendered.toLowerCase().includes(e.source.toLowerCase()));
257
+ if (!hasEvidence) {
258
+ return {
259
+ rule: 'missing-evidence',
260
+ severity: 'info',
261
+ message: 'Payload has evidence but output may not include it',
262
+ suggestion: 'Consider including evidence sources in output',
263
+ };
264
+ }
265
+ return null;
266
+ },
267
+ },
268
+ ];
269
+ // ============================================================================
270
+ // Core Lint Function
271
+ // ============================================================================
272
+ /**
273
+ * Lint rendered output against renderer constraints.
274
+ */
275
+ export function lint(rendered, renderer, payload) {
276
+ const violations = [];
277
+ for (const rule of LINT_RULES) {
278
+ const violation = rule.check(rendered, renderer, payload);
279
+ if (violation) {
280
+ violations.push(violation);
281
+ }
282
+ }
283
+ return {
284
+ valid: violations.filter((v) => v.severity === 'error').length === 0,
285
+ violations,
286
+ renderer_id: renderer.id,
287
+ checked_at: new Date().toISOString(),
288
+ };
289
+ }
290
+ /**
291
+ * Lint with just the renderer ID (loads from pack)
292
+ */
293
+ export function lintWithPack(rendered, rendererId, pack, payload) {
294
+ const renderer = pack.renderers[rendererId] || pack.renderers['default'];
295
+ if (!renderer) {
296
+ return {
297
+ valid: false,
298
+ violations: [
299
+ {
300
+ rule: 'renderer-not-found',
301
+ severity: 'error',
302
+ message: `Renderer '${rendererId}' not found`,
303
+ },
304
+ ],
305
+ renderer_id: rendererId,
306
+ checked_at: new Date().toISOString(),
307
+ };
308
+ }
309
+ return lint(rendered, renderer, payload);
310
+ }
311
+ // ============================================================================
312
+ // MCP Tool Handler
313
+ // ============================================================================
314
+ /**
315
+ * MCP tool handler for linting rendered output
316
+ */
317
+ export async function lintOutput(input) {
318
+ try {
319
+ const resolved = resolveProjectPaths(input.projectId);
320
+ const pack = await getOrCompilePack(resolved);
321
+ log(`agentic-linter: Linting output for renderer '${input.renderer_id}'`);
322
+ const result = lintWithPack(input.rendered, input.renderer_id, pack.content, input.payload);
323
+ const errorCount = result.violations.filter((v) => v.severity === 'error').length;
324
+ const warnCount = result.violations.filter((v) => v.severity === 'warning').length;
325
+ log(`agentic-linter: ${result.valid ? 'PASS' : 'FAIL'} - ${errorCount} errors, ${warnCount} warnings`);
326
+ return {
327
+ status: 'linted',
328
+ result,
329
+ };
330
+ }
331
+ catch (error) {
332
+ const message = error instanceof Error ? error.message : String(error);
333
+ log(`agentic-linter: Error: ${message}`);
334
+ return {
335
+ status: 'error',
336
+ error: message,
337
+ };
338
+ }
339
+ }
340
+ //# sourceMappingURL=linter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linter.js","sourceRoot":"","sources":["../../src/agentic/linter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Agentic Pack Renderer
3
+ *
4
+ * Transforms canonical payloads into rendered text using pack templates.
5
+ * Core invariant: Renderers NEVER change meaning. They change compression, typography, and stance.
6
+ */
7
+ import { CanonicalPayload, CompiledPack, RenderOutput, RenderTarget, RenderInput, RenderOutputResult } from './types.js';
8
+ /**
9
+ * Render a canonical payload to text using the specified renderer.
10
+ * Pure function - no side effects.
11
+ */
12
+ export declare function render(payload: CanonicalPayload, rendererId: string, pack: CompiledPack, target?: RenderTarget): RenderOutput;
13
+ /**
14
+ * MCP tool handler for rendering payloads
15
+ */
16
+ export declare function renderPayload(input: RenderInput): Promise<RenderOutputResult>;
17
+ //# sourceMappingURL=renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/agentic/renderer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,YAAY,EAEZ,WAAW,EACX,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAmPpB;;;GAGG;AACH,wBAAgB,MAAM,CACpB,OAAO,EAAE,gBAAgB,EACzB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,YAAY,EAClB,MAAM,GAAE,YAAsB,GAC7B,YAAY,CAiDd;AAMD;;GAEG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA4BnF"}
@@ -0,0 +1,277 @@
1
+ /**
2
+ * Agentic Pack Renderer
3
+ *
4
+ * Transforms canonical payloads into rendered text using pack templates.
5
+ * Core invariant: Renderers NEVER change meaning. They change compression, typography, and stance.
6
+ */
7
+ import { log } from '../config.js';
8
+ import { resolveProjectPaths } from '../projectRegistry.js';
9
+ import { getOrCompilePack } from './compiler.js';
10
+ // ============================================================================
11
+ // Template Engine
12
+ // ============================================================================
13
+ /**
14
+ * Simple Mustache-like template engine
15
+ * Supports: {{variable}}, {{#section}}...{{/section}}, {{^section}}...{{/section}}
16
+ */
17
+ function renderTemplate(template, context) {
18
+ let result = template;
19
+ // Handle sections: {{#section}}...{{/section}} (truthy) and {{^section}}...{{/section}} (falsy)
20
+ const sectionRegex = /\{\{([#^])(\w+)\}\}([\s\S]*?)\{\{\/\2\}\}/g;
21
+ result = result.replace(sectionRegex, (_, type, key, content) => {
22
+ const value = context[key];
23
+ const isTruthy = Array.isArray(value) ? value.length > 0 : Boolean(value);
24
+ if (type === '#') {
25
+ // Truthy section
26
+ if (!isTruthy)
27
+ return '';
28
+ if (Array.isArray(value)) {
29
+ // Iterate over array
30
+ return value
31
+ .map((item) => {
32
+ const itemContext = typeof item === 'object' ? { ...context, ...item } : { ...context, item };
33
+ return renderTemplate(content, itemContext);
34
+ })
35
+ .join('');
36
+ }
37
+ return renderTemplate(content, context);
38
+ }
39
+ else {
40
+ // Falsy section (^)
41
+ return isTruthy ? '' : renderTemplate(content, context);
42
+ }
43
+ });
44
+ // Handle nested items: {{#items}}...{{/items}}
45
+ const itemsRegex = /\{\{#items\}\}([\s\S]*?)\{\{\/items\}\}/g;
46
+ result = result.replace(itemsRegex, (_, content) => {
47
+ const items = context['items'];
48
+ if (!Array.isArray(items))
49
+ return '';
50
+ return items
51
+ .map((item) => {
52
+ const itemContext = typeof item === 'object' ? { ...context, ...item } : { ...context, item };
53
+ return renderTemplate(content, itemContext);
54
+ })
55
+ .join('');
56
+ });
57
+ // Handle simple variables: {{variable}}
58
+ const varRegex = /\{\{(\w+)\}\}/g;
59
+ result = result.replace(varRegex, (_, key) => {
60
+ const value = context[key];
61
+ if (value === undefined || value === null)
62
+ return '';
63
+ return String(value);
64
+ });
65
+ return result;
66
+ }
67
+ // ============================================================================
68
+ // Context Building
69
+ // ============================================================================
70
+ function buildRenderContext(payload, pack) {
71
+ const taxonomy = pack.taxonomy;
72
+ // Get role info
73
+ const roleInfo = taxonomy.roles[payload.role] || { emoji: '?', description: '' };
74
+ const statusInfo = taxonomy.statuses[payload.status] || { emoji: '?', color: 'white' };
75
+ const loadInfo = taxonomy.loads[payload.load] || { emoji: '?', color: 'white' };
76
+ // Build context object
77
+ const context = {
78
+ // Core fields
79
+ role: payload.role,
80
+ status: payload.status,
81
+ load: payload.load,
82
+ summary: payload.summary,
83
+ // Taxonomy lookups
84
+ role_emoji: roleInfo.emoji,
85
+ role_description: roleInfo.description,
86
+ status_emoji: statusInfo.emoji,
87
+ status_color: statusInfo.color,
88
+ load_emoji: loadInfo.emoji,
89
+ load_color: loadInfo.color,
90
+ // Evidence
91
+ evidence: payload.evidence.length > 0,
92
+ evidence_items: payload.evidence,
93
+ // Missing data
94
+ missing_data: payload.missing_data.length > 0,
95
+ missing_data_items: payload.missing_data,
96
+ // Overmind fields
97
+ decision: payload.decision,
98
+ guardrails: payload.guardrails,
99
+ dissent_summary: payload.dissent_summary,
100
+ // Specialist fields
101
+ specialist_id: payload.specialist_id,
102
+ specialist_name: payload.specialist_name,
103
+ // Metadata
104
+ pack_id: payload.metadata.pack_id,
105
+ pack_hash: payload.metadata.pack_hash,
106
+ created_at: payload.metadata.created_at,
107
+ };
108
+ // Flatten nested arrays for template iteration
109
+ if (payload.evidence.length > 0) {
110
+ context['evidence'] = { items: payload.evidence };
111
+ }
112
+ if (payload.missing_data.length > 0) {
113
+ context['missing_data'] = { items: payload.missing_data };
114
+ }
115
+ return context;
116
+ }
117
+ // ============================================================================
118
+ // ANSI Styling
119
+ // ============================================================================
120
+ const ANSI_CODES = {
121
+ reset: '\x1b[0m',
122
+ bold: '\x1b[1m',
123
+ dim: '\x1b[2m',
124
+ italic: '\x1b[3m',
125
+ underline: '\x1b[4m',
126
+ // Colors
127
+ black: '\x1b[30m',
128
+ red: '\x1b[31m',
129
+ green: '\x1b[32m',
130
+ yellow: '\x1b[33m',
131
+ blue: '\x1b[34m',
132
+ magenta: '\x1b[35m',
133
+ cyan: '\x1b[36m',
134
+ white: '\x1b[37m',
135
+ // Bright colors
136
+ brightBlack: '\x1b[90m',
137
+ brightRed: '\x1b[91m',
138
+ brightGreen: '\x1b[92m',
139
+ brightYellow: '\x1b[93m',
140
+ brightBlue: '\x1b[94m',
141
+ brightMagenta: '\x1b[95m',
142
+ brightCyan: '\x1b[96m',
143
+ brightWhite: '\x1b[97m',
144
+ // Background colors
145
+ bgBlack: '\x1b[40m',
146
+ bgRed: '\x1b[41m',
147
+ bgGreen: '\x1b[42m',
148
+ bgYellow: '\x1b[43m',
149
+ bgBlue: '\x1b[44m',
150
+ bgMagenta: '\x1b[45m',
151
+ bgCyan: '\x1b[46m',
152
+ bgWhite: '\x1b[47m',
153
+ };
154
+ function applyAnsiStyles(text, styles) {
155
+ if (!styles)
156
+ return text;
157
+ let result = text;
158
+ // Apply custom style rules
159
+ for (const [pattern, style] of Object.entries(styles)) {
160
+ const codes = style
161
+ .split(' ')
162
+ .map((s) => ANSI_CODES[s] || '')
163
+ .join('');
164
+ if (codes) {
165
+ const regex = new RegExp(`(${pattern})`, 'g');
166
+ result = result.replace(regex, `${codes}$1${ANSI_CODES.reset}`);
167
+ }
168
+ }
169
+ return result;
170
+ }
171
+ // ============================================================================
172
+ // Output Metrics
173
+ // ============================================================================
174
+ function countEmojis(text) {
175
+ // Unicode emoji regex (simplified)
176
+ const emojiRegex = /[\u{1F300}-\u{1F9FF}]|[\u{2600}-\u{26FF}]|[\u{2700}-\u{27BF}]|[\u{1F600}-\u{1F64F}]|[\u{1F680}-\u{1F6FF}]/gu;
177
+ const matches = text.match(emojiRegex);
178
+ return matches ? matches.length : 0;
179
+ }
180
+ function computeMetrics(text) {
181
+ return {
182
+ line_count: text.split('\n').length,
183
+ char_count: text.length,
184
+ emoji_count: countEmojis(text),
185
+ };
186
+ }
187
+ // ============================================================================
188
+ // Renderer Selection
189
+ // ============================================================================
190
+ function selectRenderer(rendererId, payload, pack) {
191
+ // If payload has specialist_id, check for specialist-specific renderer
192
+ if (payload.specialist_id) {
193
+ const specialistRendererId = `${payload.specialist_id}-${rendererId}`;
194
+ if (pack.renderers[specialistRendererId]) {
195
+ return pack.renderers[specialistRendererId];
196
+ }
197
+ }
198
+ // Use specified renderer or default
199
+ const renderer = pack.renderers[rendererId] || pack.renderers['default'];
200
+ if (!renderer) {
201
+ throw new Error(`Renderer '${rendererId}' not found and no default renderer available`);
202
+ }
203
+ return renderer;
204
+ }
205
+ // ============================================================================
206
+ // Core Render Function
207
+ // ============================================================================
208
+ /**
209
+ * Render a canonical payload to text using the specified renderer.
210
+ * Pure function - no side effects.
211
+ */
212
+ export function render(payload, rendererId, pack, target = 'plain') {
213
+ const warnings = [];
214
+ // Select renderer
215
+ const renderer = selectRenderer(rendererId, payload, pack);
216
+ // Build context
217
+ const context = buildRenderContext(payload, pack);
218
+ // Render template
219
+ let rendered = renderTemplate(renderer.template, context);
220
+ // Apply ANSI styles if target is ansi
221
+ if (target === 'ansi') {
222
+ const styles = renderer.ansi_styles || pack.ansi_styles;
223
+ rendered = applyAnsiStyles(rendered, styles);
224
+ }
225
+ // Clean up extra whitespace
226
+ rendered = rendered
227
+ .split('\n')
228
+ .map((line) => line.trimEnd())
229
+ .join('\n')
230
+ .replace(/\n{3,}/g, '\n\n')
231
+ .trim();
232
+ // Compute metrics
233
+ const metrics = computeMetrics(rendered);
234
+ // Check constraints and add warnings
235
+ const constraints = renderer.constraints;
236
+ if (constraints.max_emoji_count && metrics.emoji_count > constraints.max_emoji_count) {
237
+ warnings.push(`Emoji count (${metrics.emoji_count}) exceeds max (${constraints.max_emoji_count})`);
238
+ }
239
+ if (constraints.max_lines && metrics.line_count > constraints.max_lines) {
240
+ warnings.push(`Line count (${metrics.line_count}) exceeds max (${constraints.max_lines})`);
241
+ }
242
+ return {
243
+ rendered,
244
+ renderer_id: renderer.id,
245
+ target,
246
+ warnings,
247
+ metadata: metrics,
248
+ };
249
+ }
250
+ // ============================================================================
251
+ // MCP Tool Handler
252
+ // ============================================================================
253
+ /**
254
+ * MCP tool handler for rendering payloads
255
+ */
256
+ export async function renderPayload(input) {
257
+ try {
258
+ const resolved = resolveProjectPaths(input.projectId);
259
+ const pack = await getOrCompilePack(resolved);
260
+ log(`agentic-renderer: Rendering with renderer '${input.renderer_id}'`);
261
+ const result = render(input.payload, input.renderer_id, pack.content, input.target || 'plain');
262
+ log(`agentic-renderer: Rendered ${result.metadata.line_count} lines`);
263
+ return {
264
+ status: 'rendered',
265
+ result,
266
+ };
267
+ }
268
+ catch (error) {
269
+ const message = error instanceof Error ? error.message : String(error);
270
+ log(`agentic-renderer: Error: ${message}`);
271
+ return {
272
+ status: 'error',
273
+ error: message,
274
+ };
275
+ }
276
+ }
277
+ //# sourceMappingURL=renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../src/agentic/renderer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAUnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E;;;GAGG;AACH,SAAS,cAAc,CAAC,QAAgB,EAAE,OAAgC;IACxE,IAAI,MAAM,GAAG,QAAQ,CAAC;IAEtB,gGAAgG;IAChG,MAAM,YAAY,GAAG,4CAA4C,CAAC;IAClE,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;QAC9D,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC3B,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAE1E,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjB,iBAAiB;YACjB,IAAI,CAAC,QAAQ;gBAAE,OAAO,EAAE,CAAC;YACzB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,qBAAqB;gBACrB,OAAO,KAAK;qBACT,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;oBACZ,MAAM,WAAW,GACf,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC;oBAC5E,OAAO,cAAc,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;gBAC9C,CAAC,CAAC;qBACD,IAAI,CAAC,EAAE,CAAC,CAAC;YACd,CAAC;YACD,OAAO,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,oBAAoB;YACpB,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,+CAA+C;IAC/C,MAAM,UAAU,GAAG,0CAA0C,CAAC;IAC9D,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE;QACjD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAc,CAAC;QAC5C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACrC,OAAO,KAAK;aACT,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACZ,MAAM,WAAW,GACf,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC;YAC5E,OAAO,cAAc,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC9C,CAAC,CAAC;aACD,IAAI,CAAC,EAAE,CAAC,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,wCAAwC;IACxC,MAAM,QAAQ,GAAG,gBAAgB,CAAC;IAClC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;QAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,EAAE,CAAC;QACrD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,SAAS,kBAAkB,CACzB,OAAyB,EACzB,IAAkB;IAElB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAE/B,gBAAgB;IAChB,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;IACjF,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IACvF,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAEhF,uBAAuB;IACvB,MAAM,OAAO,GAA4B;QACvC,cAAc;QACd,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO,EAAE,OAAO,CAAC,OAAO;QAExB,mBAAmB;QACnB,UAAU,EAAE,QAAQ,CAAC,KAAK;QAC1B,gBAAgB,EAAE,QAAQ,CAAC,WAAW;QACtC,YAAY,EAAE,UAAU,CAAC,KAAK;QAC9B,YAAY,EAAE,UAAU,CAAC,KAAK;QAC9B,UAAU,EAAE,QAAQ,CAAC,KAAK;QAC1B,UAAU,EAAE,QAAQ,CAAC,KAAK;QAE1B,WAAW;QACX,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;QACrC,cAAc,EAAE,OAAO,CAAC,QAAQ;QAEhC,eAAe;QACf,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;QAC7C,kBAAkB,EAAE,OAAO,CAAC,YAAY;QAExC,kBAAkB;QAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,eAAe,EAAE,OAAO,CAAC,eAAe;QAExC,oBAAoB;QACpB,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,eAAe,EAAE,OAAO,CAAC,eAAe;QAExC,WAAW;QACX,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,OAAO;QACjC,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,SAAS;QACrC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,UAAU;KACxC,CAAC;IAEF,+CAA+C;IAC/C,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;IACpD,CAAC;IACD,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC;IAC5D,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,+EAA+E;AAC/E,eAAe;AACf,+EAA+E;AAE/E,MAAM,UAAU,GAA2B;IACzC,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,SAAS;IACf,GAAG,EAAE,SAAS;IACd,MAAM,EAAE,SAAS;IACjB,SAAS,EAAE,SAAS;IACpB,SAAS;IACT,KAAK,EAAE,UAAU;IACjB,GAAG,EAAE,UAAU;IACf,KAAK,EAAE,UAAU;IACjB,MAAM,EAAE,UAAU;IAClB,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,UAAU;IACnB,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,UAAU;IACjB,gBAAgB;IAChB,WAAW,EAAE,UAAU;IACvB,SAAS,EAAE,UAAU;IACrB,WAAW,EAAE,UAAU;IACvB,YAAY,EAAE,UAAU;IACxB,UAAU,EAAE,UAAU;IACtB,aAAa,EAAE,UAAU;IACzB,UAAU,EAAE,UAAU;IACtB,WAAW,EAAE,UAAU;IACvB,oBAAoB;IACpB,OAAO,EAAE,UAAU;IACnB,KAAK,EAAE,UAAU;IACjB,OAAO,EAAE,UAAU;IACnB,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,UAAU;IAClB,SAAS,EAAE,UAAU;IACrB,MAAM,EAAE,UAAU;IAClB,OAAO,EAAE,UAAU;CACpB,CAAC;AAEF,SAAS,eAAe,CACtB,IAAY,EACZ,MAA+B;IAE/B,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,IAAI,MAAM,GAAG,IAAI,CAAC;IAElB,2BAA2B;IAC3B,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACtD,MAAM,KAAK,GAAG,KAAK;aAChB,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aAC/B,IAAI,CAAC,EAAE,CAAC,CAAC;QACZ,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC;YAC9C,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,KAAK,KAAK,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E,SAAS,WAAW,CAAC,IAAY;IAC/B,mCAAmC;IACnC,MAAM,UAAU,GACd,6GAA6G,CAAC;IAChH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACvC,OAAO,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO;QACL,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM;QACnC,UAAU,EAAE,IAAI,CAAC,MAAM;QACvB,WAAW,EAAE,WAAW,CAAC,IAAI,CAAC;KAC/B,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E,SAAS,cAAc,CACrB,UAAkB,EAClB,OAAyB,EACzB,IAAkB;IAElB,uEAAuE;IACvE,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;QAC1B,MAAM,oBAAoB,GAAG,GAAG,OAAO,CAAC,aAAa,IAAI,UAAU,EAAE,CAAC;QACtE,IAAI,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE,CAAC;YACzC,OAAO,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,oCAAoC;IACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACzE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,aAAa,UAAU,+CAA+C,CAAC,CAAC;IAC1F,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,UAAU,MAAM,CACpB,OAAyB,EACzB,UAAkB,EAClB,IAAkB,EAClB,SAAuB,OAAO;IAE9B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,kBAAkB;IAClB,MAAM,QAAQ,GAAG,cAAc,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAE3D,gBAAgB;IAChB,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAElD,kBAAkB;IAClB,IAAI,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAE1D,sCAAsC;IACtC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC;QACxD,QAAQ,GAAG,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,4BAA4B;IAC5B,QAAQ,GAAG,QAAQ;SAChB,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;SAC7B,IAAI,CAAC,IAAI,CAAC;SACV,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC;SAC1B,IAAI,EAAE,CAAC;IAEV,kBAAkB;IAClB,MAAM,OAAO,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAEzC,qCAAqC;IACrC,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;IACzC,IAAI,WAAW,CAAC,eAAe,IAAI,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC,eAAe,EAAE,CAAC;QACrF,QAAQ,CAAC,IAAI,CACX,gBAAgB,OAAO,CAAC,WAAW,kBAAkB,WAAW,CAAC,eAAe,GAAG,CACpF,CAAC;IACJ,CAAC;IACD,IAAI,WAAW,CAAC,SAAS,IAAI,OAAO,CAAC,UAAU,GAAG,WAAW,CAAC,SAAS,EAAE,CAAC;QACxE,QAAQ,CAAC,IAAI,CACX,eAAe,OAAO,CAAC,UAAU,kBAAkB,WAAW,CAAC,SAAS,GAAG,CAC5E,CAAC;IACJ,CAAC;IAED,OAAO;QACL,QAAQ;QACR,WAAW,EAAE,QAAQ,CAAC,EAAE;QACxB,MAAM;QACN,QAAQ;QACR,QAAQ,EAAE,OAAO;KAClB,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAkB;IACpD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACtD,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAE9C,GAAG,CAAC,8CAA8C,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC;QAExE,MAAM,MAAM,GAAG,MAAM,CACnB,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,WAAW,EACjB,IAAI,CAAC,OAAO,EACZ,KAAK,CAAC,MAAM,IAAI,OAAO,CACxB,CAAC;QAEF,GAAG,CAAC,8BAA8B,MAAM,CAAC,QAAQ,CAAC,UAAU,QAAQ,CAAC,CAAC;QAEtE,OAAO;YACL,MAAM,EAAE,UAAU;YAClB,MAAM;SACP,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,GAAG,CAAC,4BAA4B,OAAO,EAAE,CAAC,CAAC;QAC3C,OAAO;YACL,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,OAAO;SACf,CAAC;IACJ,CAAC;AACH,CAAC"}