agent-nuvira 3.3.13 → 3.3.14

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 (387) hide show
  1. package/README.md +67 -1
  2. package/dist/agents/agents/planner.d.ts.map +1 -1
  3. package/dist/agents/agents/planner.js +9 -0
  4. package/dist/agents/agents/planner.js.map +1 -1
  5. package/dist/agents/orchestrator.d.ts +31 -0
  6. package/dist/agents/orchestrator.d.ts.map +1 -1
  7. package/dist/agents/orchestrator.js +74 -126
  8. package/dist/agents/orchestrator.js.map +1 -1
  9. package/dist/cli/chat.d.ts +89 -0
  10. package/dist/cli/chat.d.ts.map +1 -1
  11. package/dist/cli/chat.js +765 -33
  12. package/dist/cli/chat.js.map +1 -1
  13. package/dist/cli/cli-program.d.ts.map +1 -1
  14. package/dist/cli/cli-program.js +12 -0
  15. package/dist/cli/cli-program.js.map +1 -1
  16. package/dist/cli/config.d.ts +12 -0
  17. package/dist/cli/config.d.ts.map +1 -1
  18. package/dist/cli/config.js +86 -0
  19. package/dist/cli/config.js.map +1 -1
  20. package/dist/cli/decisions.d.ts +28 -0
  21. package/dist/cli/decisions.d.ts.map +1 -0
  22. package/dist/cli/decisions.js +140 -0
  23. package/dist/cli/decisions.js.map +1 -0
  24. package/dist/cli/doctor.d.ts +6 -0
  25. package/dist/cli/doctor.d.ts.map +1 -1
  26. package/dist/cli/doctor.js +46 -0
  27. package/dist/cli/doctor.js.map +1 -1
  28. package/dist/cli/failover-runner.d.ts.map +1 -1
  29. package/dist/cli/failover-runner.js +19 -1
  30. package/dist/cli/failover-runner.js.map +1 -1
  31. package/dist/cli/feedback.d.ts.map +1 -1
  32. package/dist/cli/feedback.js +5 -1
  33. package/dist/cli/feedback.js.map +1 -1
  34. package/dist/cli/hooks.d.ts +30 -0
  35. package/dist/cli/hooks.d.ts.map +1 -0
  36. package/dist/cli/hooks.js +224 -0
  37. package/dist/cli/hooks.js.map +1 -0
  38. package/dist/cli/knowledge.d.ts +9 -1
  39. package/dist/cli/knowledge.d.ts.map +1 -1
  40. package/dist/cli/knowledge.js +93 -2
  41. package/dist/cli/knowledge.js.map +1 -1
  42. package/dist/cli/loop-executor.d.ts.map +1 -1
  43. package/dist/cli/loop-executor.js +47 -12
  44. package/dist/cli/loop-executor.js.map +1 -1
  45. package/dist/cli/model.d.ts +20 -0
  46. package/dist/cli/model.d.ts.map +1 -1
  47. package/dist/cli/model.js +294 -14
  48. package/dist/cli/model.js.map +1 -1
  49. package/dist/cli/rate.d.ts +78 -0
  50. package/dist/cli/rate.d.ts.map +1 -0
  51. package/dist/cli/rate.js +294 -0
  52. package/dist/cli/rate.js.map +1 -0
  53. package/dist/config/process-env.d.ts.map +1 -1
  54. package/dist/config/process-env.js +10 -0
  55. package/dist/config/process-env.js.map +1 -1
  56. package/dist/enterprise/vault.d.ts.map +1 -1
  57. package/dist/enterprise/vault.js +5 -21
  58. package/dist/enterprise/vault.js.map +1 -1
  59. package/dist/gateway/hook-contract.d.ts +33 -0
  60. package/dist/gateway/hook-contract.d.ts.map +1 -1
  61. package/dist/gateway/hook-contract.js +97 -0
  62. package/dist/gateway/hook-contract.js.map +1 -1
  63. package/dist/inference/gemini-adapter.d.ts.map +1 -1
  64. package/dist/inference/gemini-adapter.js +4 -0
  65. package/dist/inference/gemini-adapter.js.map +1 -1
  66. package/dist/inference/interface.d.ts +37 -0
  67. package/dist/inference/interface.d.ts.map +1 -1
  68. package/dist/inference/native-tools.d.ts +16 -1
  69. package/dist/inference/native-tools.d.ts.map +1 -1
  70. package/dist/inference/native-tools.js +34 -10
  71. package/dist/inference/native-tools.js.map +1 -1
  72. package/dist/inference/route-resolver.d.ts +30 -0
  73. package/dist/inference/route-resolver.d.ts.map +1 -1
  74. package/dist/inference/route-resolver.js +158 -1
  75. package/dist/inference/route-resolver.js.map +1 -1
  76. package/dist/inference/tools.d.ts +16 -1
  77. package/dist/inference/tools.d.ts.map +1 -1
  78. package/dist/inference/tools.js +51 -18
  79. package/dist/inference/tools.js.map +1 -1
  80. package/dist/learning/acceptance-model.d.ts +247 -0
  81. package/dist/learning/acceptance-model.d.ts.map +1 -0
  82. package/dist/learning/acceptance-model.js +708 -0
  83. package/dist/learning/acceptance-model.js.map +1 -0
  84. package/dist/learning/auto-router.d.ts +68 -24
  85. package/dist/learning/auto-router.d.ts.map +1 -1
  86. package/dist/learning/auto-router.js +301 -96
  87. package/dist/learning/auto-router.js.map +1 -1
  88. package/dist/learning/autonomy-policy.d.ts +12 -16
  89. package/dist/learning/autonomy-policy.d.ts.map +1 -1
  90. package/dist/learning/autonomy-policy.js +50 -48
  91. package/dist/learning/autonomy-policy.js.map +1 -1
  92. package/dist/learning/behavioural-labels.d.ts +86 -0
  93. package/dist/learning/behavioural-labels.d.ts.map +1 -0
  94. package/dist/learning/behavioural-labels.js +166 -0
  95. package/dist/learning/behavioural-labels.js.map +1 -0
  96. package/dist/learning/capability-evidence.d.ts +167 -0
  97. package/dist/learning/capability-evidence.d.ts.map +1 -0
  98. package/dist/learning/capability-evidence.js +210 -0
  99. package/dist/learning/capability-evidence.js.map +1 -0
  100. package/dist/learning/capability-readiness.d.ts +64 -0
  101. package/dist/learning/capability-readiness.d.ts.map +1 -0
  102. package/dist/learning/capability-readiness.js +74 -0
  103. package/dist/learning/capability-readiness.js.map +1 -0
  104. package/dist/learning/capability-types.d.ts +169 -0
  105. package/dist/learning/capability-types.d.ts.map +1 -0
  106. package/dist/learning/capability-types.js +20 -0
  107. package/dist/learning/capability-types.js.map +1 -0
  108. package/dist/learning/catalog-feed.d.ts +89 -0
  109. package/dist/learning/catalog-feed.d.ts.map +1 -0
  110. package/dist/learning/catalog-feed.js +211 -0
  111. package/dist/learning/catalog-feed.js.map +1 -0
  112. package/dist/learning/cli-intent-effects.d.ts +60 -0
  113. package/dist/learning/cli-intent-effects.d.ts.map +1 -0
  114. package/dist/learning/cli-intent-effects.js +153 -0
  115. package/dist/learning/cli-intent-effects.js.map +1 -0
  116. package/dist/learning/command-adaptation.d.ts +41 -0
  117. package/dist/learning/command-adaptation.d.ts.map +1 -0
  118. package/dist/learning/command-adaptation.js +122 -0
  119. package/dist/learning/command-adaptation.js.map +1 -0
  120. package/dist/learning/consent-picture.d.ts +42 -0
  121. package/dist/learning/consent-picture.d.ts.map +1 -0
  122. package/dist/learning/consent-picture.js +53 -0
  123. package/dist/learning/consent-picture.js.map +1 -0
  124. package/dist/learning/context-budget.d.ts +37 -6
  125. package/dist/learning/context-budget.d.ts.map +1 -1
  126. package/dist/learning/context-budget.js +38 -9
  127. package/dist/learning/context-budget.js.map +1 -1
  128. package/dist/learning/decision-log.d.ts +114 -0
  129. package/dist/learning/decision-log.d.ts.map +1 -0
  130. package/dist/learning/decision-log.js +296 -0
  131. package/dist/learning/decision-log.js.map +1 -0
  132. package/dist/learning/deliverable-class.d.ts.map +1 -1
  133. package/dist/learning/deliverable-class.js +19 -0
  134. package/dist/learning/deliverable-class.js.map +1 -1
  135. package/dist/learning/deliverable-corpus.d.ts +117 -0
  136. package/dist/learning/deliverable-corpus.d.ts.map +1 -0
  137. package/dist/learning/deliverable-corpus.js +176 -0
  138. package/dist/learning/deliverable-corpus.js.map +1 -0
  139. package/dist/learning/error-repair.d.ts +22 -1
  140. package/dist/learning/error-repair.d.ts.map +1 -1
  141. package/dist/learning/error-repair.js +37 -0
  142. package/dist/learning/error-repair.js.map +1 -1
  143. package/dist/learning/exhaustion-report.d.ts +136 -0
  144. package/dist/learning/exhaustion-report.d.ts.map +1 -0
  145. package/dist/learning/exhaustion-report.js +239 -0
  146. package/dist/learning/exhaustion-report.js.map +1 -0
  147. package/dist/learning/failure-bookkeeping.d.ts +16 -0
  148. package/dist/learning/failure-bookkeeping.d.ts.map +1 -1
  149. package/dist/learning/failure-bookkeeping.js +51 -5
  150. package/dist/learning/failure-bookkeeping.js.map +1 -1
  151. package/dist/learning/gate-friction.d.ts +39 -0
  152. package/dist/learning/gate-friction.d.ts.map +1 -0
  153. package/dist/learning/gate-friction.js +91 -0
  154. package/dist/learning/gate-friction.js.map +1 -0
  155. package/dist/learning/harness-narration.d.ts +34 -0
  156. package/dist/learning/harness-narration.d.ts.map +1 -0
  157. package/dist/learning/harness-narration.js +58 -0
  158. package/dist/learning/harness-narration.js.map +1 -0
  159. package/dist/learning/hub-skill-catalog.d.ts.map +1 -1
  160. package/dist/learning/hub-skill-catalog.js +1 -2
  161. package/dist/learning/hub-skill-catalog.js.map +1 -1
  162. package/dist/learning/hybrid-router.d.ts +65 -0
  163. package/dist/learning/hybrid-router.d.ts.map +1 -1
  164. package/dist/learning/hybrid-router.js +186 -0
  165. package/dist/learning/hybrid-router.js.map +1 -1
  166. package/dist/learning/knowledge-base.d.ts +229 -3
  167. package/dist/learning/knowledge-base.d.ts.map +1 -1
  168. package/dist/learning/knowledge-base.js +593 -24
  169. package/dist/learning/knowledge-base.js.map +1 -1
  170. package/dist/learning/knowledge-eval.d.ts +171 -0
  171. package/dist/learning/knowledge-eval.d.ts.map +1 -0
  172. package/dist/learning/knowledge-eval.js +196 -0
  173. package/dist/learning/knowledge-eval.js.map +1 -0
  174. package/dist/learning/knowledge-turn.d.ts +92 -0
  175. package/dist/learning/knowledge-turn.d.ts.map +1 -0
  176. package/dist/learning/knowledge-turn.js +190 -0
  177. package/dist/learning/knowledge-turn.js.map +1 -0
  178. package/dist/learning/learned-commands.d.ts +64 -0
  179. package/dist/learning/learned-commands.d.ts.map +1 -0
  180. package/dist/learning/learned-commands.js +108 -0
  181. package/dist/learning/learned-commands.js.map +1 -0
  182. package/dist/learning/lexical-search.d.ts +50 -0
  183. package/dist/learning/lexical-search.d.ts.map +1 -0
  184. package/dist/learning/lexical-search.js +111 -0
  185. package/dist/learning/lexical-search.js.map +1 -0
  186. package/dist/learning/machine-facts.d.ts +71 -0
  187. package/dist/learning/machine-facts.d.ts.map +1 -0
  188. package/dist/learning/machine-facts.js +164 -0
  189. package/dist/learning/machine-facts.js.map +1 -0
  190. package/dist/learning/markdown-outline.d.ts +73 -0
  191. package/dist/learning/markdown-outline.d.ts.map +1 -0
  192. package/dist/learning/markdown-outline.js +136 -0
  193. package/dist/learning/markdown-outline.js.map +1 -0
  194. package/dist/learning/model-first-router.d.ts +33 -1
  195. package/dist/learning/model-first-router.d.ts.map +1 -1
  196. package/dist/learning/model-first-router.js +123 -9
  197. package/dist/learning/model-first-router.js.map +1 -1
  198. package/dist/learning/model-identity.d.ts +80 -0
  199. package/dist/learning/model-identity.d.ts.map +1 -0
  200. package/dist/learning/model-identity.js +115 -0
  201. package/dist/learning/model-identity.js.map +1 -0
  202. package/dist/learning/model-registry.d.ts +141 -2
  203. package/dist/learning/model-registry.d.ts.map +1 -1
  204. package/dist/learning/model-registry.js +324 -38
  205. package/dist/learning/model-registry.js.map +1 -1
  206. package/dist/learning/model-scoring.d.ts.map +1 -1
  207. package/dist/learning/model-scoring.js +8 -1
  208. package/dist/learning/model-scoring.js.map +1 -1
  209. package/dist/learning/model-selection.d.ts.map +1 -1
  210. package/dist/learning/model-selection.js +41 -0
  211. package/dist/learning/model-selection.js.map +1 -1
  212. package/dist/learning/outcome-observation.d.ts +49 -0
  213. package/dist/learning/outcome-observation.d.ts.map +1 -0
  214. package/dist/learning/outcome-observation.js +95 -0
  215. package/dist/learning/outcome-observation.js.map +1 -0
  216. package/dist/learning/pair-entitlement.d.ts +184 -0
  217. package/dist/learning/pair-entitlement.d.ts.map +1 -0
  218. package/dist/learning/pair-entitlement.js +214 -0
  219. package/dist/learning/pair-entitlement.js.map +1 -0
  220. package/dist/learning/provider-fallback.d.ts +23 -1
  221. package/dist/learning/provider-fallback.d.ts.map +1 -1
  222. package/dist/learning/provider-fallback.js +24 -0
  223. package/dist/learning/provider-fallback.js.map +1 -1
  224. package/dist/learning/reasoning-trace.d.ts +65 -1
  225. package/dist/learning/reasoning-trace.d.ts.map +1 -1
  226. package/dist/learning/reasoning-trace.js +123 -1
  227. package/dist/learning/reasoning-trace.js.map +1 -1
  228. package/dist/learning/requirement-probe.d.ts +55 -0
  229. package/dist/learning/requirement-probe.d.ts.map +1 -0
  230. package/dist/learning/requirement-probe.js +77 -0
  231. package/dist/learning/requirement-probe.js.map +1 -0
  232. package/dist/learning/resilient-call.d.ts +20 -1
  233. package/dist/learning/resilient-call.d.ts.map +1 -1
  234. package/dist/learning/resilient-call.js +42 -4
  235. package/dist/learning/resilient-call.js.map +1 -1
  236. package/dist/learning/response-usability.d.ts +85 -0
  237. package/dist/learning/response-usability.d.ts.map +1 -0
  238. package/dist/learning/response-usability.js +135 -0
  239. package/dist/learning/response-usability.js.map +1 -0
  240. package/dist/learning/router-bandit.d.ts +132 -0
  241. package/dist/learning/router-bandit.d.ts.map +1 -1
  242. package/dist/learning/router-bandit.js +253 -0
  243. package/dist/learning/router-bandit.js.map +1 -1
  244. package/dist/learning/routing-history.d.ts +41 -2
  245. package/dist/learning/routing-history.d.ts.map +1 -1
  246. package/dist/learning/routing-history.js.map +1 -1
  247. package/dist/learning/run-trace.d.ts +21 -0
  248. package/dist/learning/run-trace.d.ts.map +1 -1
  249. package/dist/learning/run-trace.js +38 -0
  250. package/dist/learning/run-trace.js.map +1 -1
  251. package/dist/learning/session-grant.d.ts +75 -0
  252. package/dist/learning/session-grant.d.ts.map +1 -0
  253. package/dist/learning/session-grant.js +112 -0
  254. package/dist/learning/session-grant.js.map +1 -0
  255. package/dist/learning/task-model-continuity.d.ts +73 -0
  256. package/dist/learning/task-model-continuity.d.ts.map +1 -0
  257. package/dist/learning/task-model-continuity.js +87 -0
  258. package/dist/learning/task-model-continuity.js.map +1 -0
  259. package/dist/learning/turn-feedback.d.ts +93 -0
  260. package/dist/learning/turn-feedback.d.ts.map +1 -0
  261. package/dist/learning/turn-feedback.js +127 -0
  262. package/dist/learning/turn-feedback.js.map +1 -0
  263. package/dist/learning/turn-report.d.ts +104 -2
  264. package/dist/learning/turn-report.d.ts.map +1 -1
  265. package/dist/learning/turn-report.js +161 -6
  266. package/dist/learning/turn-report.js.map +1 -1
  267. package/dist/learning/verdict-routing.d.ts +51 -0
  268. package/dist/learning/verdict-routing.d.ts.map +1 -0
  269. package/dist/learning/verdict-routing.js +122 -0
  270. package/dist/learning/verdict-routing.js.map +1 -0
  271. package/dist/mcp/client.d.ts.map +1 -1
  272. package/dist/mcp/client.js +5 -0
  273. package/dist/mcp/client.js.map +1 -1
  274. package/dist/mcp/manager.d.ts +10 -0
  275. package/dist/mcp/manager.d.ts.map +1 -1
  276. package/dist/mcp/manager.js +20 -0
  277. package/dist/mcp/manager.js.map +1 -1
  278. package/dist/mcp/mcp-discovery.d.ts +34 -0
  279. package/dist/mcp/mcp-discovery.d.ts.map +1 -0
  280. package/dist/mcp/mcp-discovery.js +71 -0
  281. package/dist/mcp/mcp-discovery.js.map +1 -0
  282. package/dist/mcp/mcp-schema-cache.d.ts +17 -0
  283. package/dist/mcp/mcp-schema-cache.d.ts.map +1 -1
  284. package/dist/mcp/mcp-schema-cache.js +47 -3
  285. package/dist/mcp/mcp-schema-cache.js.map +1 -1
  286. package/dist/mcp/types.d.ts +28 -0
  287. package/dist/mcp/types.d.ts.map +1 -1
  288. package/dist/mcp/types.js.map +1 -1
  289. package/dist/tools/ask-user.d.ts.map +1 -1
  290. package/dist/tools/ask-user.js +4 -0
  291. package/dist/tools/ask-user.js.map +1 -1
  292. package/dist/tools/capability-registry.d.ts +150 -0
  293. package/dist/tools/capability-registry.d.ts.map +1 -0
  294. package/dist/tools/capability-registry.js +400 -0
  295. package/dist/tools/capability-registry.js.map +1 -0
  296. package/dist/tools/child-agent-runtime.d.ts.map +1 -1
  297. package/dist/tools/child-agent-runtime.js +19 -5
  298. package/dist/tools/child-agent-runtime.js.map +1 -1
  299. package/dist/tools/coding-tools.d.ts +17 -5
  300. package/dist/tools/coding-tools.d.ts.map +1 -1
  301. package/dist/tools/coding-tools.js +80 -11
  302. package/dist/tools/coding-tools.js.map +1 -1
  303. package/dist/tools/command-memo.d.ts +116 -0
  304. package/dist/tools/command-memo.d.ts.map +1 -0
  305. package/dist/tools/command-memo.js +202 -0
  306. package/dist/tools/command-memo.js.map +1 -0
  307. package/dist/tools/git-tool.d.ts.map +1 -1
  308. package/dist/tools/git-tool.js +13 -3
  309. package/dist/tools/git-tool.js.map +1 -1
  310. package/dist/tools/harness-directive.d.ts +42 -0
  311. package/dist/tools/harness-directive.d.ts.map +1 -0
  312. package/dist/tools/harness-directive.js +45 -0
  313. package/dist/tools/harness-directive.js.map +1 -0
  314. package/dist/tools/loop-skill-hint.d.ts +74 -174
  315. package/dist/tools/loop-skill-hint.d.ts.map +1 -1
  316. package/dist/tools/loop-skill-hint.js +110 -536
  317. package/dist/tools/loop-skill-hint.js.map +1 -1
  318. package/dist/tools/mcp-client-tool.d.ts +2 -0
  319. package/dist/tools/mcp-client-tool.d.ts.map +1 -1
  320. package/dist/tools/mcp-client-tool.js +3 -0
  321. package/dist/tools/mcp-client-tool.js.map +1 -1
  322. package/dist/tools/modality/shared.d.ts +1 -4
  323. package/dist/tools/modality/shared.d.ts.map +1 -1
  324. package/dist/tools/modality/shared.js +7 -22
  325. package/dist/tools/modality/shared.js.map +1 -1
  326. package/dist/tools/plan-store.d.ts +20 -2
  327. package/dist/tools/plan-store.d.ts.map +1 -1
  328. package/dist/tools/plan-store.js +51 -7
  329. package/dist/tools/plan-store.js.map +1 -1
  330. package/dist/tools/registry.d.ts +76 -3
  331. package/dist/tools/registry.d.ts.map +1 -1
  332. package/dist/tools/registry.js +486 -26
  333. package/dist/tools/registry.js.map +1 -1
  334. package/dist/tools/remediation-ladder.d.ts.map +1 -1
  335. package/dist/tools/remediation-ladder.js +8 -0
  336. package/dist/tools/remediation-ladder.js.map +1 -1
  337. package/dist/tools/run-cli.d.ts.map +1 -1
  338. package/dist/tools/run-cli.js +29 -4
  339. package/dist/tools/run-cli.js.map +1 -1
  340. package/dist/tools/run-terminal.d.ts +11 -0
  341. package/dist/tools/run-terminal.d.ts.map +1 -1
  342. package/dist/tools/run-terminal.js +265 -10
  343. package/dist/tools/run-terminal.js.map +1 -1
  344. package/dist/tools/tool-loop.d.ts +321 -13
  345. package/dist/tools/tool-loop.d.ts.map +1 -1
  346. package/dist/tools/tool-loop.js +867 -66
  347. package/dist/tools/tool-loop.js.map +1 -1
  348. package/dist/utils/atomic-store.d.ts +53 -0
  349. package/dist/utils/atomic-store.d.ts.map +1 -0
  350. package/dist/utils/atomic-store.js +178 -0
  351. package/dist/utils/atomic-store.js.map +1 -0
  352. package/dist/utils/binary-probe.d.ts +25 -0
  353. package/dist/utils/binary-probe.d.ts.map +1 -0
  354. package/dist/utils/binary-probe.js +48 -0
  355. package/dist/utils/binary-probe.js.map +1 -0
  356. package/dist/utils/workspace-path.d.ts +50 -0
  357. package/dist/utils/workspace-path.d.ts.map +1 -0
  358. package/dist/utils/workspace-path.js +86 -0
  359. package/dist/utils/workspace-path.js.map +1 -0
  360. package/dist/web-dashboard/chat-console.d.ts +24 -0
  361. package/dist/web-dashboard/chat-console.d.ts.map +1 -1
  362. package/dist/web-dashboard/chat-console.js +38 -0
  363. package/dist/web-dashboard/chat-console.js.map +1 -1
  364. package/dist/web-dashboard/project-context.d.ts +27 -2
  365. package/dist/web-dashboard/project-context.d.ts.map +1 -1
  366. package/dist/web-dashboard/project-context.js +32 -2
  367. package/dist/web-dashboard/project-context.js.map +1 -1
  368. package/dist/web-dashboard/server.d.ts +11 -0
  369. package/dist/web-dashboard/server.d.ts.map +1 -1
  370. package/dist/web-dashboard/server.js +362 -11
  371. package/dist/web-dashboard/server.js.map +1 -1
  372. package/dist/web-dashboard/src/types.d.ts +170 -1
  373. package/dist/web-dashboard/src/types.d.ts.map +1 -1
  374. package/dist/web-dashboard/workspace-guard.d.ts +11 -2
  375. package/dist/web-dashboard/workspace-guard.d.ts.map +1 -1
  376. package/dist/web-dashboard/workspace-guard.js +24 -12
  377. package/dist/web-dashboard/workspace-guard.js.map +1 -1
  378. package/dist/web-dashboard/workspace-resolution.d.ts +87 -0
  379. package/dist/web-dashboard/workspace-resolution.d.ts.map +1 -0
  380. package/dist/web-dashboard/workspace-resolution.js +105 -0
  381. package/dist/web-dashboard/workspace-resolution.js.map +1 -0
  382. package/package.json +1 -1
  383. package/src/web-dashboard/public/assets/index-zjbdJnO-.js +210 -0
  384. package/src/web-dashboard/public/assets/index-zjbdJnO-.js.map +1 -0
  385. package/src/web-dashboard/public/index.html +1 -1
  386. package/src/web-dashboard/public/assets/index-DhiuR4S2.js +0 -210
  387. package/src/web-dashboard/public/assets/index-DhiuR4S2.js.map +0 -1
@@ -1,225 +1,125 @@
1
1
  /**
2
- * Loop skill hint (`src/tools/loop-skill-hint.ts`) — AGENTIC_CAPABILITY_ASSESSMENT
3
- * Addendum v4 Phase 3.2: "The loop never hears about the orchestrator's skill
4
- * layer: the pipeline consults SkillStore.findMatch + the hub catalog before
5
- * planning and injects the matched methodology, but a chat/execute-loop goal
6
- * starts with zero knowledge that a first-party playbook exists."
7
- *
8
- * This module closes that parity gap DETERMINISTICALLY (no LLM call): given
9
- * the user's goal, it finds the best available skill the SAME way the
10
- * orchestrator does —
11
- *
12
- * 1. compiled SkillStore.findMatch (the first-party capability batch),
13
- * 2. the hub catalog (findHubSkillMatch — installed SKILL.md skills),
14
- *
15
- * then returns a system-prompt block that hands the model the skill's
16
- * methodology with an EXPLICIT escape hatch ("this is a recommendation —
17
- * ignore it when it does not fit") and the exact load syntax
18
- * (`skill` tool, {"skill":"<name>"}).
19
- *
20
- * Why an evidence filter on top of findMatch: the compiled store's threshold
21
- * is intentionally low (score >= 1, "manual discovery") and its scoring adds
22
- * a quality/usage bonus to EVERY skill — so a goal merely containing a generic
23
- * pattern word ("goal", "task") can false-positive. The chat loop runs on
24
- * EVERY message (not just pipeline goals), so the loop hint requires REAL
25
- * goal evidence: a name-word or tag hit, or two pattern-word hits. The
26
- * orchestrator does not need this (its planner only sees pipeline goals); the
27
- * hub catalog's own scoring is keyword-based and needs no filter.
28
- *
29
- * Safety rails (mirroring the orchestrator's injection contract):
30
- * - skills.disabled[] gate — a dashboard/CLI-disabled skill is NEVER
31
- * injected (the same "the toggle is never cosmetic" rule the match gates
32
- * enforce elsewhere).
33
- * - Website-deploy activation gate — the orchestrator requires
34
- * hosting-specific intent before injecting website methodology; the loop
35
- * hint applies the identical regex so "deploy the API" does not drag in
36
- * static-site deployment steps.
37
- * - Side-effect-free matching: the match itself marks nothing; usage is
38
- * marked ONCE via markLoopSkillUsed by the caller (skillView()'s internal
39
- * markUsed is deliberately avoided so the hint builder is idempotent).
40
- * - Bounded injection: at most ONE methodology block per prompt, and the
41
- * methodology text itself is capped (compiled: 8 steps; hub: 2000 chars)
42
- * so a crowded catalog cannot balloon the system prompt.
43
- * - Best-effort by construction: any store/catalog failure returns '' /
44
- * null and the turn proceeds exactly as before (a hint must never break
45
- * a turn).
46
- *
47
- * Consumers: chat's runChatAnswer (system prompt) and the execute loop's
48
- * runLoopExecutor — the two runToolLoop callers that had no skill knowledge.
2
+ * Skill hint (`src/tools/loop-skill-hint.ts`) — model-driven skill selection.
3
+ *
4
+ * HISTORY (why the keyword scorer is gone). This module used to decide, in code,
5
+ * WHICH skill a goal wanted: `findLoopSkillMatch` scored the compiled store and
6
+ * the hub catalog, then a hand-written evidence filter (`hasRealGoalEvidence`)
7
+ * pulled back the false positives with stopword lists, generic-name-word lists,
8
+ * generic-tag lists and platform-host lists. Every one of those lists was a bug
9
+ * report: "blood test report" matched the software `test-strategy` skill,
10
+ * "Windows and Linux" matched `wsl-setup`, "packaging" matched `electron-app`.
11
+ * A word list cannot decide what a goal MEANS, and each word added to force one
12
+ * case right made some real match wrong.
13
+ *
14
+ * THE REPLACEMENT. Selection is the MODEL's job now. The harness no longer
15
+ * guesses; it hands the model the discovery path and gets out of the way:
16
+ *
17
+ * - default (`pointer`) — a few lines saying skills exist and HOW to find one:
18
+ * the `skill` tool (list / load) and the capability search (`tool_search`,
19
+ * whose hits include `kind:"skill"` capabilities). Near-zero prompt cost,
20
+ * no false positives, no maintenance.
21
+ * - `catalog` / `names` (OPT-IN) — the full name+description catalog, or the
22
+ * names-only list, for a user who wants everything in-context.
23
+ * - `off` — inject nothing.
24
+ *
25
+ * The old default was the ~24.5K-char catalog, which buried the task on every
26
+ * turn (3.3.11 regression, see tests/release/agent-contracts.test.ts); the
27
+ * pointer keeps the small-prompt property while still being model-driven.
28
+ *
29
+ * The pipeline arm consumes the SAME catalog builder (see the orchestrator's
30
+ * `skillCatalog` injection): the planner is a model too, so it is handed the
31
+ * list instead of a keyword-selected skill.
32
+ *
33
+ * Best-effort by construction: any store/catalog failure returns '' and the turn
34
+ * proceeds byte-identically (a hint must never break a turn).
49
35
  */
50
36
  import type { ConfigManager } from '../config/manager.js';
51
- /**
52
- * The match the hint was built from (echoed to callers for telemetry/tests).
53
- * `null` = no match (no skill scored, or it was gated out).
54
- */
55
- export interface LoopSkillHintMatch {
37
+ /** One catalog entry the model can read and pick from. */
38
+ interface SkillEntry {
56
39
  name: string;
57
- id: string;
58
- source: 'compiled' | 'hub';
40
+ description: string;
59
41
  }
60
- /** Is this token a host/platform name (never goal evidence)? */
61
- export declare function isPlatformName(word: string): boolean;
62
- /**
63
- * Did the goal show REAL evidence for this skill — a name-word hit, a tag hit,
64
- * or two DISTINCT pattern/description words (meta-words and platform names
65
- * excluded)? Guards the compiled store's intentionally loose threshold:
66
- * findMatch adds a quality/usage bonus to every skill, so a generic word like
67
- * "goal" alone must never inject methodology into a chat turn.
68
- *
69
- * Also the HUB path's only filter: `findHubSkillMatch` scores name words and
70
- * DESCRIPTION keywords and returns the top scorer with no evidence gate at all,
71
- * so an installed skill whose description merely names the target platform
72
- * scored on that alone. A hub match carries no tags/goalPattern, so its
73
- * description words are the pattern-level evidence (the caller passes it here).
74
- *
75
- * MATCHING IS BY WHOLE WORD, never substring. `q.includes(word)` matched
76
- * "kill" inside "s**kill**" — measured: `feature-flags` (goalPattern “…kill
77
- * switch…”) matched "no **skill** covers alpaca husbandry whatsoever", and the
78
- * same class makes `mac` match "machine" and `arch` match "search". The goal is
79
- * tokenized once into a word set and skills are matched against tokens.
80
- *
81
- * Deterministic, no LLM.
82
- */
83
- export declare function hasRealGoalEvidence(goal: string, skill: {
84
- name: string;
85
- tags?: string[];
86
- goalPattern?: string;
87
- description?: string;
88
- }): boolean;
89
42
  /**
90
- * THE skill-activation gate — the single decision every injection path makes.
91
- *
92
- * Composes (1) the website-deploy activation rule: website methodology needs
93
- * HOSTING intent, so a generic "deploy the API" goal never gets it; and (2) the
94
- * evidence rule above.
95
- *
96
- * Before this existed the gate was implemented three times with different
97
- * strength: the chat/execute loop applied the evidence filter to COMPILED
98
- * matches but trusted hub matches raw, and the ORCHESTRATOR applied neither
99
- * (only the website-deploy rule) — so the pipeline was the most exposed
100
- * surface. One predicate, consumed by all of them.
43
+ * Every skill the model may pick from — compiled first-party + installed hub
44
+ * (SKILL.md) skills, deduped by name, with the disabled gate applied. Best-effort:
45
+ * a store/catalog failure contributes nothing rather than throwing.
101
46
  */
102
- export declare function isSkillActivated(goal: string, skill: {
103
- id?: string;
104
- name: string;
105
- tags?: string[];
106
- goalPattern?: string;
107
- description?: string;
108
- }): boolean;
47
+ export declare function collectSkillEntries(cm?: ConfigManager): Promise<SkillEntry[]>;
48
+ /** Where the "load one" tail should point: the loop's skill tool, or the pipeline's skill_view. */
49
+ export type SkillLoadHint = 'skill-tool' | 'skill-view';
109
50
  /**
110
- * Find the best skill for the goal across BOTH sources the orchestrator
111
- * consults, honoring the disabled + website-deploy activation gates (+ the
112
- * compiled evidence filter). Compiled wins ties (its id is the deterministic
113
- * seed id). Returns null when nothing matches (never a forced match).
114
- */
115
- export declare function findLoopSkillMatch(goal: string, cm?: ConfigManager): Promise<LoopSkillHintMatch | null>;
116
- /**
117
- * Build the system-prompt block for a matched skill, or '' when there is no
118
- * match. The block follows the orchestrator's injection contract:
119
- *
120
- * - the skill is a RECOMMENDATION, the model still owns the plan (the
121
- * orchestrator's "model-selected activation" phrasing),
122
- * - the methodology rides in as Level-2 content (progressive disclosure —
123
- * the model sees the steps without paying a tool call for them),
124
- * - the exact load syntax is included so the model can refresh/parameterize
125
- * via the `skill` tool mid-turn,
126
- * - ONE block max (bounded system-prompt growth).
51
+ * The DEFAULT hint — a bounded discovery pointer, not a recommendation.
127
52
  *
128
- * Marks nothing: usage tracking belongs to markLoopSkillUsed (the caller
129
- * decides when a match actually got USED — i.e. was injected).
130
- *
131
- * @param goal the user's goal text (matched against skill triggers)
132
- * @param cm ConfigManager for the disabled-skills gate (optional)
133
- * @param injected out-param: when provided, receives the match that was
134
- * injected (null when none).
53
+ * It names the two model-driven paths to a skill (the `skill` tool and the
54
+ * capability search) and leaves the decision with the model. Returns '' when
55
+ * there are no skills to discover (nothing to say — never a forced hint).
135
56
  */
136
- export declare function buildLoopSkillHint(goal: string, cm?: ConfigManager, injected?: {
137
- value: LoopSkillHintMatch | null;
138
- }): Promise<string>;
57
+ export declare function buildSkillPointerHint(cm?: ConfigManager, loadHint?: SkillLoadHint): Promise<string>;
139
58
  /**
140
- * A bounded CATALOG of available skills for the system prompt — the model-facing
141
- * replacement for keyword auto-injection.
142
- *
143
- * WHY THIS REPLACES THE MATCHER: a word list cannot decide whether "blood test
144
- * report" is software testing, and every stopword added to force it right made
145
- * some real match wrong. The model can read the same catalog and judge instantly,
146
- * so the fix is to STOP deciding in code and hand the model the list: name + a
147
- * one-line description each, plus the exact `skill` tool syntax to load one. This
148
- * scales to infinite permutations with no maintenance and no false positives —
149
- * the model loads a skill only when it actually applies.
59
+ * The bounded CATALOG of available skills for the system prompt — the model-facing
60
+ * discovery surface, read straight through.
150
61
  *
151
62
  * Bounded deliberately: descriptions are capped and the list is capped, so a
152
- * crowded catalog cannot balloon the system prompt. Returns '' when there are no
153
- * skills (nothing to say) — never a forced recommendation.
63
+ * crowded catalog cannot balloon the prompt. Returns '' when there are no skills.
154
64
  *
155
65
  * @param cm ConfigManager (honors skills.disabled — a disabled skill is
156
66
  * never listed, the same gate the tool enforces)
157
67
  * @param opts caps: maxSkills (default 200 — the full bundled+hub catalog,
158
68
  * so NO skill is dropped from the model's view; missing a skill
159
69
  * is the failure this design exists to avoid), descriptionChars
160
- * (default 140)
70
+ * (default 140), namesOnly (default false), loadHint
161
71
  */
162
72
  export declare function buildSkillCatalogHint(cm?: ConfigManager, opts?: {
163
73
  maxSkills?: number;
164
74
  descriptionChars?: number;
165
75
  namesOnly?: boolean;
76
+ loadHint?: SkillLoadHint;
166
77
  }): Promise<string>;
167
78
  /**
168
79
  * Which skill hint the system prompt carries. See {@link resolveSkillHintMode}.
169
- * - `match` — the small keyword-matched hint (ONE skill, only on a real
170
- * match). The default and the 3.3.10 behaviour.
80
+ * - `pointer` — the small discovery pointer (names the skill tool + capability
81
+ * search). The DEFAULT.
171
82
  * - `catalog` — the FULL name+description catalog (opt-in).
172
83
  * - `names` — the catalog WITHOUT descriptions (names only; far smaller).
173
84
  * - `off` — never inject a skill hint.
174
85
  */
175
- export type SkillHintMode = 'match' | 'catalog' | 'names' | 'off';
86
+ export type SkillHintMode = 'pointer' | 'catalog' | 'names' | 'off';
176
87
  /** The default. The catalog is ~24K chars — it must never be the default. */
177
88
  export declare const DEFAULT_SKILL_HINT_MODE: SkillHintMode;
178
89
  /**
179
90
  * Parse a raw value into a mode. Synonyms accepted so a typo cannot silently
180
91
  * change behaviour; null (unrecognized) falls through to the next source.
181
- * - match / keyword / auto / small / default → 'match'
182
- * - catalog / full / all / on / true / 1 → 'catalog'
183
- * - names / names-only / list / bare / titles → 'names'
184
- * - off / none / never / false / 0 → 'off'
92
+ * - pointer / match / keyword / auto / small / default → 'pointer'
93
+ * - catalog / full / all / on / true / 1 → 'catalog'
94
+ * - names / names-only / list / bare / titles → 'names'
95
+ * - off / none / never / false / 0 → 'off'
96
+ *
97
+ * `match`/`keyword` are kept as ACCEPTED SYNONYMS for back-compat (an existing
98
+ * `NUVIRA_SKILL_CATALOG=match` or `skills.catalogHint: "match"` still works) —
99
+ * they now mean the pointer, since there is no keyword matcher any more.
185
100
  */
186
101
  export declare function parseSkillHintMode(raw: string | undefined | null): SkillHintMode | null;
187
102
  /**
188
103
  * The effective skill-hint mode. Env first (`NUVIRA_SKILL_CATALOG`, then the
189
104
  * legacy `BUFF_*`), then `skills.catalogHint` in the config file, then the
190
- * default (`match`). Pure and never throws.
191
- *
192
- * WHY THIS EXISTS (2026-10-04). 3.3.11 replaced the keyword hint with the full
193
- * catalog unconditionally — measured live, `buildSkillCatalogHint()` returned
194
- * 24,543 chars on the goal "create mac od gui app", taking the chat system
195
- * prompt from 7,653 chars (3.3.10) to 32,809. That ~6.1K-token tax on EVERY
196
- * turn buried the task for weak/free-tier models and made 16K-token tiers
197
- * impossible (the prompt alone is ~8.2K). The catalog is a genuinely useful
198
- * discovery mechanism, but it must be CHOSEN, not imposed.
105
+ * default (`pointer`). Pure and never throws.
199
106
  */
200
107
  export declare function resolveSkillHintMode(cm?: ConfigManager): SkillHintMode;
201
108
  /**
202
- * The skill hint for a goal, resolved through the configured mode. The ONE
203
- * entry point both chat and execute call, so the surface can never drift from
204
- * the policy:
109
+ * The skill hint, resolved through the configured mode — the ONE entry point
110
+ * both the chat/execute loop and the pipeline call, so a surface can never drift
111
+ * from the policy:
205
112
  * - `off` → ''
206
113
  * - `catalog` → the full name+description catalog ({@link buildSkillCatalogHint})
207
114
  * - `names` → the names-only catalog (no descriptions)
208
- * - `match` → the small keyword-matched hint ({@link buildLoopSkillHint})
115
+ * - `pointer` → the discovery pointer ({@link buildSkillPointerHint})
209
116
  *
210
- * `injected` is the same out-param `buildLoopSkillHint` takes (the match that
211
- * was injected, for usage marking) — left untouched in the catalog/names/off
212
- * modes, where no single skill was selected.
117
+ * `loadHint` lets the pipeline point its tail at skill_view (the writer's load
118
+ * path) instead of the loop's skill tool; it is ignored in the catalog modes'
119
+ * default wording and only affects the tail line.
213
120
  */
214
- export declare function buildConfiguredSkillHint(goal: string, cm?: ConfigManager, injected?: {
215
- value: LoopSkillHintMatch | null;
121
+ export declare function buildConfiguredSkillHint(cm?: ConfigManager, opts?: {
122
+ loadHint?: SkillLoadHint;
216
123
  }): Promise<string>;
217
- /**
218
- * Mark an injected skill as used (usage tracking parity with the orchestrator
219
- * — compiled skills only; hub skills have no compiled usage counter). The
220
- * SINGLE usage marker for the loop hint path (the hint builder never marks).
221
- * Best-effort, fire-and-forget: never throws, never awaited by callers on the
222
- * hot path.
223
- */
224
- export declare function markLoopSkillUsed(match: LoopSkillHintMatch | null): Promise<void>;
124
+ export {};
225
125
  //# sourceMappingURL=loop-skill-hint.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"loop-skill-hint.d.ts","sourceRoot":"","sources":["../../src/tools/loop-skill-hint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG1D;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,UAAU,GAAG,KAAK,CAAC;CAC5B;AA8MD,gEAAgE;AAChE,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GACnF,OAAO,CAiDT;AAYD;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE;IAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAChG,OAAO,CAIT;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,EAAE,CAAC,EAAE,aAAa,GACjB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAuCpC;AAmCD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,EAAE,CAAC,EAAE,aAAa,EAClB,QAAQ,CAAC,EAAE;IAAE,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAAA;CAAE,GAC9C,OAAO,CAAC,MAAM,CAAC,CAsCjB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,qBAAqB,CACzC,EAAE,CAAC,EAAE,aAAa,EAClB,IAAI,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAO,GAChF,OAAO,CAAC,MAAM,CAAC,CAiDjB;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,KAAK,CAAC;AAElE,6EAA6E;AAC7E,eAAO,MAAM,uBAAuB,EAAE,aAAuB,CAAC;AAK9D;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,aAAa,GAAG,IAAI,CAQvF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,CAAC,EAAE,aAAa,GAAG,aAAa,CAatE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,MAAM,EACZ,EAAE,CAAC,EAAE,aAAa,EAClB,QAAQ,CAAC,EAAE;IAAE,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAAA;CAAE,GAC9C,OAAO,CAAC,MAAM,CAAC,CAMjB;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAQvF"}
1
+ {"version":3,"file":"loop-skill-hint.d.ts","sourceRoot":"","sources":["../../src/tools/loop-skill-hint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAqB1D,0DAA0D;AAC1D,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,EAAE,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAsBnF;AAED,mGAAmG;AACnG,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,YAAY,CAAC;AAQxD;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CAAC,EAAE,CAAC,EAAE,aAAa,EAAE,QAAQ,GAAE,aAA4B,GAAG,OAAO,CAAC,MAAM,CAAC,CAYvH;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,qBAAqB,CACzC,EAAE,CAAC,EAAE,aAAa,EAClB,IAAI,GAAE;IACJ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,aAAa,CAAC;CACrB,GACL,OAAO,CAAC,MAAM,CAAC,CA2BjB;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,KAAK,CAAC;AAEpE,6EAA6E;AAC7E,eAAO,MAAM,uBAAuB,EAAE,aAAyB,CAAC;AAKhE;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,aAAa,GAAG,IAAI,CAQvF;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,CAAC,EAAE,aAAa,GAAG,aAAa,CAatE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,wBAAwB,CAC5C,EAAE,CAAC,EAAE,aAAa,EAClB,IAAI,GAAE;IAAE,QAAQ,CAAC,EAAE,aAAa,CAAA;CAAO,GACtC,OAAO,CAAC,MAAM,CAAC,CAOjB"}