@oni.bot/core 1.0.2 → 1.1.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 (293) hide show
  1. package/CHANGELOG.md +146 -146
  2. package/dist/agents/define-agent.d.ts.map +1 -1
  3. package/dist/agents/define-agent.js +7 -2
  4. package/dist/agents/define-agent.js.map +1 -1
  5. package/dist/checkpoint.d.ts.map +1 -1
  6. package/dist/checkpoint.js +7 -2
  7. package/dist/checkpoint.js.map +1 -1
  8. package/dist/checkpointers/postgres.d.ts.map +1 -1
  9. package/dist/checkpointers/postgres.js +45 -28
  10. package/dist/checkpointers/postgres.js.map +1 -1
  11. package/dist/circuit-breaker.d.ts +1 -0
  12. package/dist/circuit-breaker.d.ts.map +1 -1
  13. package/dist/circuit-breaker.js +13 -0
  14. package/dist/circuit-breaker.js.map +1 -1
  15. package/dist/cli/dev.d.ts.map +1 -1
  16. package/dist/cli/dev.js +0 -1
  17. package/dist/cli/dev.js.map +1 -1
  18. package/dist/cli/inspect.d.ts.map +1 -1
  19. package/dist/cli/inspect.js +4 -2
  20. package/dist/cli/inspect.js.map +1 -1
  21. package/dist/cli/run.d.ts.map +1 -1
  22. package/dist/cli/run.js +0 -1
  23. package/dist/cli/run.js.map +1 -1
  24. package/dist/config/loader.d.ts +1 -1
  25. package/dist/config/loader.js +12 -4
  26. package/dist/config/loader.js.map +1 -1
  27. package/dist/coordination/pubsub.d.ts +1 -0
  28. package/dist/coordination/pubsub.d.ts.map +1 -1
  29. package/dist/coordination/pubsub.js +31 -16
  30. package/dist/coordination/pubsub.js.map +1 -1
  31. package/dist/coordination/request-reply.d.ts +17 -2
  32. package/dist/coordination/request-reply.d.ts.map +1 -1
  33. package/dist/coordination/request-reply.js +56 -14
  34. package/dist/coordination/request-reply.js.map +1 -1
  35. package/dist/events/bus.d.ts +1 -0
  36. package/dist/events/bus.d.ts.map +1 -1
  37. package/dist/events/bus.js +17 -10
  38. package/dist/events/bus.js.map +1 -1
  39. package/dist/functional.d.ts.map +1 -1
  40. package/dist/functional.js +3 -0
  41. package/dist/functional.js.map +1 -1
  42. package/dist/graph.d.ts +11 -1
  43. package/dist/graph.d.ts.map +1 -1
  44. package/dist/graph.js +9 -4
  45. package/dist/graph.js.map +1 -1
  46. package/dist/guardrails/audit.d.ts +4 -1
  47. package/dist/guardrails/audit.d.ts.map +1 -1
  48. package/dist/guardrails/audit.js +18 -1
  49. package/dist/guardrails/audit.js.map +1 -1
  50. package/dist/harness/agent-loop.d.ts +1 -7
  51. package/dist/harness/agent-loop.d.ts.map +1 -1
  52. package/dist/harness/agent-loop.js +2 -523
  53. package/dist/harness/agent-loop.js.map +1 -1
  54. package/dist/harness/context-compactor.d.ts +1 -0
  55. package/dist/harness/context-compactor.d.ts.map +1 -1
  56. package/dist/harness/context-compactor.js +43 -1
  57. package/dist/harness/context-compactor.js.map +1 -1
  58. package/dist/harness/harness.d.ts +6 -0
  59. package/dist/harness/harness.d.ts.map +1 -1
  60. package/dist/harness/harness.js +32 -5
  61. package/dist/harness/harness.js.map +1 -1
  62. package/dist/harness/hooks-engine.d.ts.map +1 -1
  63. package/dist/harness/hooks-engine.js +12 -10
  64. package/dist/harness/hooks-engine.js.map +1 -1
  65. package/dist/harness/index.d.ts +3 -1
  66. package/dist/harness/index.d.ts.map +1 -1
  67. package/dist/harness/index.js +2 -0
  68. package/dist/harness/index.js.map +1 -1
  69. package/dist/harness/loop/hooks.d.ts +7 -0
  70. package/dist/harness/loop/hooks.d.ts.map +1 -0
  71. package/dist/harness/loop/hooks.js +46 -0
  72. package/dist/harness/loop/hooks.js.map +1 -0
  73. package/dist/harness/loop/index.d.ts +8 -0
  74. package/dist/harness/loop/index.d.ts.map +1 -0
  75. package/dist/harness/loop/index.js +257 -0
  76. package/dist/harness/loop/index.js.map +1 -0
  77. package/dist/harness/loop/inference.d.ts +19 -0
  78. package/dist/harness/loop/inference.d.ts.map +1 -0
  79. package/dist/harness/loop/inference.js +121 -0
  80. package/dist/harness/loop/inference.js.map +1 -0
  81. package/dist/harness/loop/memory.d.ts +22 -0
  82. package/dist/harness/loop/memory.d.ts.map +1 -0
  83. package/dist/harness/loop/memory.js +73 -0
  84. package/dist/harness/loop/memory.js.map +1 -0
  85. package/dist/harness/loop/safety.d.ts +8 -0
  86. package/dist/harness/loop/safety.d.ts.map +1 -0
  87. package/dist/harness/loop/safety.js +21 -0
  88. package/dist/harness/loop/safety.js.map +1 -0
  89. package/dist/harness/loop/tools.d.ts +24 -0
  90. package/dist/harness/loop/tools.d.ts.map +1 -0
  91. package/dist/harness/loop/tools.js +184 -0
  92. package/dist/harness/loop/tools.js.map +1 -0
  93. package/dist/harness/loop/types.d.ts +7 -0
  94. package/dist/harness/loop/types.d.ts.map +1 -0
  95. package/dist/harness/loop/types.js +9 -0
  96. package/dist/harness/loop/types.js.map +1 -0
  97. package/dist/harness/memory/fs-compat.d.ts +3 -0
  98. package/dist/harness/memory/fs-compat.d.ts.map +1 -0
  99. package/dist/harness/memory/fs-compat.js +26 -0
  100. package/dist/harness/memory/fs-compat.js.map +1 -0
  101. package/dist/harness/memory/index.d.ts +105 -0
  102. package/dist/harness/memory/index.d.ts.map +1 -0
  103. package/dist/harness/memory/index.js +491 -0
  104. package/dist/harness/memory/index.js.map +1 -0
  105. package/dist/harness/memory/prompter.d.ts +7 -0
  106. package/dist/harness/memory/prompter.d.ts.map +1 -0
  107. package/dist/harness/memory/prompter.js +24 -0
  108. package/dist/harness/memory/prompter.js.map +1 -0
  109. package/dist/harness/memory/ranker.d.ts +15 -0
  110. package/dist/harness/memory/ranker.d.ts.map +1 -0
  111. package/dist/harness/memory/ranker.js +72 -0
  112. package/dist/harness/memory/ranker.js.map +1 -0
  113. package/dist/harness/memory/scanner.d.ts +26 -0
  114. package/dist/harness/memory/scanner.d.ts.map +1 -0
  115. package/dist/harness/memory/scanner.js +187 -0
  116. package/dist/harness/memory/scanner.js.map +1 -0
  117. package/dist/harness/memory/types.d.ts +50 -0
  118. package/dist/harness/memory/types.d.ts.map +1 -0
  119. package/dist/harness/memory/types.js +7 -0
  120. package/dist/harness/memory/types.js.map +1 -0
  121. package/dist/harness/memory-loader.d.ts +3 -0
  122. package/dist/harness/memory-loader.d.ts.map +1 -0
  123. package/dist/harness/memory-loader.js +2 -0
  124. package/dist/harness/memory-loader.js.map +1 -0
  125. package/dist/harness/safety-gate.d.ts.map +1 -1
  126. package/dist/harness/safety-gate.js +47 -26
  127. package/dist/harness/safety-gate.js.map +1 -1
  128. package/dist/harness/skill-loader.d.ts +7 -0
  129. package/dist/harness/skill-loader.d.ts.map +1 -1
  130. package/dist/harness/skill-loader.js +24 -8
  131. package/dist/harness/skill-loader.js.map +1 -1
  132. package/dist/harness/todo-module.d.ts.map +1 -1
  133. package/dist/harness/todo-module.js +13 -6
  134. package/dist/harness/todo-module.js.map +1 -1
  135. package/dist/harness/types.d.ts +7 -0
  136. package/dist/harness/types.d.ts.map +1 -1
  137. package/dist/harness/types.js.map +1 -1
  138. package/dist/harness/validate-args.js +18 -3
  139. package/dist/harness/validate-args.js.map +1 -1
  140. package/dist/hitl/interrupt.d.ts +2 -2
  141. package/dist/hitl/interrupt.d.ts.map +1 -1
  142. package/dist/hitl/interrupt.js +8 -5
  143. package/dist/hitl/interrupt.js.map +1 -1
  144. package/dist/hitl/resume.d.ts +10 -0
  145. package/dist/hitl/resume.d.ts.map +1 -1
  146. package/dist/hitl/resume.js +31 -0
  147. package/dist/hitl/resume.js.map +1 -1
  148. package/dist/injected.d.ts.map +1 -1
  149. package/dist/injected.js.map +1 -1
  150. package/dist/inspect.d.ts.map +1 -1
  151. package/dist/inspect.js +28 -8
  152. package/dist/inspect.js.map +1 -1
  153. package/dist/lsp/client.d.ts +2 -0
  154. package/dist/lsp/client.d.ts.map +1 -1
  155. package/dist/lsp/client.js +62 -17
  156. package/dist/lsp/client.js.map +1 -1
  157. package/dist/lsp/index.d.ts.map +1 -1
  158. package/dist/lsp/index.js.map +1 -1
  159. package/dist/mcp/client.d.ts +2 -0
  160. package/dist/mcp/client.d.ts.map +1 -1
  161. package/dist/mcp/client.js +44 -13
  162. package/dist/mcp/client.js.map +1 -1
  163. package/dist/mcp/convert.js +1 -1
  164. package/dist/mcp/convert.js.map +1 -1
  165. package/dist/mcp/transport.d.ts +2 -0
  166. package/dist/mcp/transport.d.ts.map +1 -1
  167. package/dist/mcp/transport.js +33 -8
  168. package/dist/mcp/transport.js.map +1 -1
  169. package/dist/messages/index.d.ts.map +1 -1
  170. package/dist/messages/index.js +7 -1
  171. package/dist/messages/index.js.map +1 -1
  172. package/dist/models/anthropic.d.ts.map +1 -1
  173. package/dist/models/anthropic.js +25 -15
  174. package/dist/models/anthropic.js.map +1 -1
  175. package/dist/models/google.d.ts.map +1 -1
  176. package/dist/models/google.js +23 -7
  177. package/dist/models/google.js.map +1 -1
  178. package/dist/models/ollama.d.ts.map +1 -1
  179. package/dist/models/ollama.js +11 -1
  180. package/dist/models/ollama.js.map +1 -1
  181. package/dist/models/openai.d.ts.map +1 -1
  182. package/dist/models/openai.js +15 -3
  183. package/dist/models/openai.js.map +1 -1
  184. package/dist/models/openrouter.d.ts.map +1 -1
  185. package/dist/models/openrouter.js +14 -3
  186. package/dist/models/openrouter.js.map +1 -1
  187. package/dist/prebuilt/react-agent.d.ts.map +1 -1
  188. package/dist/prebuilt/react-agent.js +7 -2
  189. package/dist/prebuilt/react-agent.js.map +1 -1
  190. package/dist/pregel/checkpointing.d.ts +12 -0
  191. package/dist/pregel/checkpointing.d.ts.map +1 -0
  192. package/dist/pregel/checkpointing.js +60 -0
  193. package/dist/pregel/checkpointing.js.map +1 -0
  194. package/dist/pregel/execution.d.ts +7 -0
  195. package/dist/pregel/execution.d.ts.map +1 -0
  196. package/dist/pregel/execution.js +178 -0
  197. package/dist/pregel/execution.js.map +1 -0
  198. package/dist/pregel/index.d.ts +61 -0
  199. package/dist/pregel/index.d.ts.map +1 -0
  200. package/dist/pregel/index.js +154 -0
  201. package/dist/pregel/index.js.map +1 -0
  202. package/dist/pregel/interrupts.d.ts +3 -0
  203. package/dist/pregel/interrupts.d.ts.map +1 -0
  204. package/dist/pregel/interrupts.js +7 -0
  205. package/dist/pregel/interrupts.js.map +1 -0
  206. package/dist/pregel/state-helpers.d.ts +12 -0
  207. package/dist/pregel/state-helpers.d.ts.map +1 -0
  208. package/dist/pregel/state-helpers.js +71 -0
  209. package/dist/pregel/state-helpers.js.map +1 -0
  210. package/dist/pregel/streaming.d.ts +5 -0
  211. package/dist/pregel/streaming.d.ts.map +1 -0
  212. package/dist/pregel/streaming.js +462 -0
  213. package/dist/pregel/streaming.js.map +1 -0
  214. package/dist/pregel/types.d.ts +48 -0
  215. package/dist/pregel/types.d.ts.map +1 -0
  216. package/dist/pregel/types.js +5 -0
  217. package/dist/pregel/types.js.map +1 -0
  218. package/dist/pregel.d.ts +1 -63
  219. package/dist/pregel.d.ts.map +1 -1
  220. package/dist/pregel.js +2 -804
  221. package/dist/pregel.js.map +1 -1
  222. package/dist/retry.d.ts.map +1 -1
  223. package/dist/retry.js +7 -6
  224. package/dist/retry.js.map +1 -1
  225. package/dist/store/index.d.ts.map +1 -1
  226. package/dist/store/index.js +36 -9
  227. package/dist/store/index.js.map +1 -1
  228. package/dist/stream-events.d.ts.map +1 -1
  229. package/dist/stream-events.js +3 -9
  230. package/dist/stream-events.js.map +1 -1
  231. package/dist/swarm/agent-node.d.ts +11 -0
  232. package/dist/swarm/agent-node.d.ts.map +1 -0
  233. package/dist/swarm/agent-node.js +156 -0
  234. package/dist/swarm/agent-node.js.map +1 -0
  235. package/dist/swarm/compile-ext.d.ts +5 -0
  236. package/dist/swarm/compile-ext.d.ts.map +1 -0
  237. package/dist/swarm/compile-ext.js +126 -0
  238. package/dist/swarm/compile-ext.js.map +1 -0
  239. package/dist/swarm/config.d.ts +147 -0
  240. package/dist/swarm/config.d.ts.map +1 -0
  241. package/dist/swarm/config.js +17 -0
  242. package/dist/swarm/config.js.map +1 -0
  243. package/dist/swarm/factories.d.ts +37 -0
  244. package/dist/swarm/factories.d.ts.map +1 -0
  245. package/dist/swarm/factories.js +703 -0
  246. package/dist/swarm/factories.js.map +1 -0
  247. package/dist/swarm/graph.d.ts +16 -136
  248. package/dist/swarm/graph.d.ts.map +1 -1
  249. package/dist/swarm/graph.js +39 -897
  250. package/dist/swarm/graph.js.map +1 -1
  251. package/dist/swarm/index.d.ts +2 -1
  252. package/dist/swarm/index.d.ts.map +1 -1
  253. package/dist/swarm/index.js.map +1 -1
  254. package/dist/swarm/mailbox.d.ts.map +1 -1
  255. package/dist/swarm/mailbox.js +3 -1
  256. package/dist/swarm/mailbox.js.map +1 -1
  257. package/dist/swarm/mermaid.d.ts +2 -1
  258. package/dist/swarm/mermaid.d.ts.map +1 -1
  259. package/dist/swarm/mermaid.js +6 -3
  260. package/dist/swarm/mermaid.js.map +1 -1
  261. package/dist/swarm/pool.d.ts.map +1 -1
  262. package/dist/swarm/pool.js +18 -1
  263. package/dist/swarm/pool.js.map +1 -1
  264. package/dist/swarm/registry.d.ts.map +1 -1
  265. package/dist/swarm/registry.js +7 -0
  266. package/dist/swarm/registry.js.map +1 -1
  267. package/dist/swarm/scaling.d.ts +10 -1
  268. package/dist/swarm/scaling.d.ts.map +1 -1
  269. package/dist/swarm/scaling.js +85 -14
  270. package/dist/swarm/scaling.js.map +1 -1
  271. package/dist/swarm/snapshot.d.ts.map +1 -1
  272. package/dist/swarm/snapshot.js +10 -1
  273. package/dist/swarm/snapshot.js.map +1 -1
  274. package/dist/swarm/supervisor.js +20 -12
  275. package/dist/swarm/supervisor.js.map +1 -1
  276. package/dist/swarm/tracer.d.ts +3 -1
  277. package/dist/swarm/tracer.d.ts.map +1 -1
  278. package/dist/swarm/tracer.js +66 -15
  279. package/dist/swarm/tracer.js.map +1 -1
  280. package/dist/swarm/types.d.ts +1 -6
  281. package/dist/swarm/types.d.ts.map +1 -1
  282. package/dist/testing/index.d.ts +4 -4
  283. package/dist/testing/index.d.ts.map +1 -1
  284. package/dist/testing/index.js +3 -2
  285. package/dist/testing/index.js.map +1 -1
  286. package/dist/tools/define.d.ts +2 -1
  287. package/dist/tools/define.d.ts.map +1 -1
  288. package/dist/tools/define.js +3 -1
  289. package/dist/tools/define.js.map +1 -1
  290. package/dist/tools/types.d.ts.map +1 -1
  291. package/dist/types.d.ts +3 -1
  292. package/dist/types.d.ts.map +1 -1
  293. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ranker.js","sourceRoot":"","sources":["../../../src/harness/memory/ranker.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,wCAAwC;AACxC,EAAE;AACF,2DAA2D;AAC3D,+DAA+D;AAI/D,iFAAiF;AAEjF,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC;IACxB,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC7E,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC7E,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM;IAC/E,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,OAAO,EAAC,OAAO;IAC9E,MAAM,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO;CAC/E,CAAC,CAAC;AAEH,iFAAiF;AAEjF,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,OAAO,CACL,IAAI;SACD,WAAW,EAAE;SACb,KAAK,CAAC,gBAAgB,CAAC;QACxB,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SACjC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,CACtB,CAAC;AACJ,CAAC;AAED,iFAAiF;AAEjF,MAAM,UAAU,cAAc,CAAC,IAAgB,EAAE,QAAkB;IACjE,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7D,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACjE,MAAM,QAAQ,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAExD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;IAC/D,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACzC,MAAM,OAAO,GAAG,KAAK,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAElF,OAAO,QAAQ,GAAG,GAAG,GAAG,YAAY,GAAG,GAAG,CAAC;AAC7C,CAAC;AAED,iFAAiF;AAEjF;;;;GAIG;AACH,MAAM,UAAU,WAAW,CACzB,KAAmB,EACnB,MAAc,EACd,WAA6C,EAC7C,UAAiC,EACjC,KAA4B;IAE5B,MAAM,QAAQ,GAAiB,EAAE,CAAC;IAClC,MAAM,OAAO,GAAiB,EAAE,CAAC;IACjC,IAAI,IAAI,GAAG,CAAC,CAAC;IAEb,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,IAAI,MAAM,EAAE,CAAC;YACpC,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACrB,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU,QAAQ,CAAC,MAAM,WAAW,IAAI,IAAI,MAAM,gBAAgB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1F,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AACjE,CAAC;AAED,iFAAiF;AAEjF;;;GAGG;AACH,MAAM,UAAU,WAAW,CACzB,IAAY,EACZ,IAAgB,EAChB,cAAsB,EACtB,UAAwB,EACxB,MAAc,EACd,WAA6C,EAC7C,UAAiC,EACjC,KAA4B;IAE5B,MAAM,QAAQ,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAC5D,CAAC;IAED,MAAM,MAAM,GAAG,UAAU;SACtB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;SAChE,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,cAAc,CAAC;SAC3D,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAErC,OAAO,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;AACxF,CAAC"}
@@ -0,0 +1,26 @@
1
+ import type { MemoryTier, MemoryType, MemoryUnit, Frontmatter } from "./types.js";
2
+ export declare function parseFrontmatter(content: string): {
3
+ meta: Frontmatter;
4
+ body: string;
5
+ };
6
+ export declare function estimateTokens(content: string): number;
7
+ export declare function inferTypeFromPath(relPath: string): MemoryType;
8
+ export declare function inferTierFromPath(relPath: string, type: MemoryType): MemoryTier;
9
+ export declare function extractTagsFromContent(body: string): string[];
10
+ export declare function extractSummary(body: string): string;
11
+ /**
12
+ * Read a single markdown file from disk and build a MemoryUnit.
13
+ * Returns null if the file cannot be read.
14
+ */
15
+ export declare function registerFile(absPath: string, relPath: string): MemoryUnit | null;
16
+ /**
17
+ * Recursively scan a directory for .md files (skipping INDEX.md).
18
+ * Returns a map of relPath → MemoryUnit for all successfully registered files.
19
+ */
20
+ export declare function scanDirectory(absDir: string, relDir: string, fs: typeof import("fs"), path: typeof import("path")): Map<string, MemoryUnit>;
21
+ /**
22
+ * Scan the memory root directory and return all discovered MemoryUnits.
23
+ * Returns an empty map if fs/path are unavailable or root doesn't exist.
24
+ */
25
+ export declare function scanRoot(root: string): Map<string, MemoryUnit>;
26
+ //# sourceMappingURL=scanner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../../src/harness/memory/scanner.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAIlF,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CA8BrF;AAID,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEtD;AAID,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAW7D;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU,CAuB/E;AAID,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAO7D;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAInD;AAID;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAwBhF;AAID;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,cAAc,IAAI,CAAC,EACvB,IAAI,EAAE,cAAc,MAAM,CAAC,GAC1B,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CA2BzB;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAK9D"}
@@ -0,0 +1,187 @@
1
+ // ============================================================
2
+ // @oni.bot/core/harness/memory — scanner
3
+ //
4
+ // Filesystem scan, frontmatter parsing, tag/summary inference,
5
+ // and token cost estimation.
6
+ // Uses getFs()/getPath() from fs-compat.ts — never top-level fs imports.
7
+ // ============================================================
8
+ import { getFs, getPath } from "./fs-compat.js";
9
+ // ─── Frontmatter ─────────────────────────────────────────────────────────────
10
+ export function parseFrontmatter(content) {
11
+ const normalized = content.replace(/\r\n/g, "\n");
12
+ const match = normalized.match(/^---\n([\s\S]*?)\n---\n?([\s\S]*)$/);
13
+ if (!match)
14
+ return { meta: {}, body: content };
15
+ const raw = match[1];
16
+ const body = match[2];
17
+ const meta = {};
18
+ for (const line of raw.split("\n")) {
19
+ const colonIdx = line.indexOf(":");
20
+ if (colonIdx === -1)
21
+ continue;
22
+ const key = line.slice(0, colonIdx).trim();
23
+ const val = line.slice(colonIdx + 1).trim();
24
+ if (!key || !val)
25
+ continue;
26
+ switch (key) {
27
+ case "type":
28
+ meta.type = val;
29
+ break;
30
+ case "tier": {
31
+ const parsed = parseInt(val, 10);
32
+ if (parsed >= 0 && parsed <= 3)
33
+ meta.tier = parsed;
34
+ break;
35
+ }
36
+ case "tags":
37
+ meta.tags = val.split(",").map((t) => t.trim()).filter(Boolean);
38
+ break;
39
+ case "summary":
40
+ meta.summary = val;
41
+ break;
42
+ case "triggers":
43
+ meta.triggers = val.split(",").map((t) => t.trim()).filter(Boolean);
44
+ break;
45
+ }
46
+ }
47
+ return { meta, body };
48
+ }
49
+ // ─── Token estimation ─────────────────────────────────────────────────────────
50
+ export function estimateTokens(content) {
51
+ return Math.ceil(content.length / 4);
52
+ }
53
+ // ─── Path-based type/tier inference ──────────────────────────────────────────
54
+ export function inferTypeFromPath(relPath) {
55
+ const top = relPath.split(/[\\/]/)[0] ?? "";
56
+ const map = {
57
+ identity: "identity",
58
+ working: "working",
59
+ procedural: "procedural",
60
+ episodic: "episodic",
61
+ semantic: "semantic",
62
+ user: "user",
63
+ };
64
+ return map[top] ?? "semantic";
65
+ }
66
+ export function inferTierFromPath(relPath, type) {
67
+ if (type === "identity")
68
+ return 0;
69
+ if (type === "working")
70
+ return 1;
71
+ if (type === "user")
72
+ return relPath.includes("RELATIONSHIPS") ? 2 : 1;
73
+ if (type === "procedural") {
74
+ if (relPath.endsWith("INDEX.md"))
75
+ return 1;
76
+ if (relPath.includes("examples"))
77
+ return 3;
78
+ return 2;
79
+ }
80
+ if (type === "episodic") {
81
+ if (relPath.endsWith("INDEX.md"))
82
+ return 1;
83
+ if (relPath.includes("archive"))
84
+ return 3;
85
+ return 2;
86
+ }
87
+ if (type === "semantic") {
88
+ const parts = relPath.split(/[\\/]/);
89
+ // root INDEX.md: semantic/INDEX.md → 2 parts
90
+ if (parts.length === 2 && parts[1] === "INDEX.md")
91
+ return 1;
92
+ // domain INDEX.md: semantic/<domain>/INDEX.md → 3 parts
93
+ if (parts.length === 3 && parts[2] === "INDEX.md")
94
+ return 2;
95
+ return 3;
96
+ }
97
+ return 2;
98
+ }
99
+ // ─── Tag + summary extraction ─────────────────────────────────────────────────
100
+ export function extractTagsFromContent(body) {
101
+ const headings = [...body.matchAll(/^##\s+(.+)$/gm)].map((m) => m[1].toLowerCase().replace(/\s+/g, "-"));
102
+ const firstLine = body.split("\n").find((l) => l.trim() && !l.startsWith("#")) ?? "";
103
+ const words = firstLine.toLowerCase().match(/\b[a-z]{4,}\b/g) ?? [];
104
+ return [...new Set([...headings, ...words.slice(0, 5)])];
105
+ }
106
+ export function extractSummary(body) {
107
+ const firstParagraph = body.split("\n\n").find((p) => p.trim() && !p.startsWith("#"));
108
+ if (!firstParagraph)
109
+ return "";
110
+ return firstParagraph.replace(/\n/g, " ").trim().slice(0, 120);
111
+ }
112
+ // ─── File registration ────────────────────────────────────────────────────────
113
+ /**
114
+ * Read a single markdown file from disk and build a MemoryUnit.
115
+ * Returns null if the file cannot be read.
116
+ */
117
+ export function registerFile(absPath, relPath) {
118
+ const fs = getFs();
119
+ if (!fs)
120
+ return null;
121
+ try {
122
+ const raw = fs.readFileSync(absPath, "utf-8");
123
+ const { meta, body } = parseFrontmatter(raw);
124
+ const type = meta.type ?? inferTypeFromPath(relPath);
125
+ const tier = meta.tier ?? inferTierFromPath(relPath, type);
126
+ const stat = fs.statSync(absPath);
127
+ return {
128
+ key: relPath,
129
+ path: absPath,
130
+ type,
131
+ tier,
132
+ tags: meta.tags ?? extractTagsFromContent(body),
133
+ summary: meta.summary ?? extractSummary(body),
134
+ tokenCost: estimateTokens(raw),
135
+ triggers: meta.triggers ?? [],
136
+ updatedAt: stat.mtime.toISOString(),
137
+ };
138
+ }
139
+ catch {
140
+ return null;
141
+ }
142
+ }
143
+ // ─── Directory scan ───────────────────────────────────────────────────────────
144
+ /**
145
+ * Recursively scan a directory for .md files (skipping INDEX.md).
146
+ * Returns a map of relPath → MemoryUnit for all successfully registered files.
147
+ */
148
+ export function scanDirectory(absDir, relDir, fs, path) {
149
+ const result = new Map();
150
+ let entries;
151
+ try {
152
+ entries = fs.readdirSync(absDir, { withFileTypes: true });
153
+ }
154
+ catch {
155
+ return result;
156
+ }
157
+ for (const entry of entries) {
158
+ // Skip INDEX.md — it is metadata, not a memory unit
159
+ if (entry.name === "INDEX.md")
160
+ continue;
161
+ const relPath = relDir ? path.join(relDir, entry.name) : entry.name;
162
+ const absPath = path.join(absDir, entry.name);
163
+ if (entry.isDirectory()) {
164
+ const sub = scanDirectory(absPath, relPath, fs, path);
165
+ for (const [k, v] of sub)
166
+ result.set(k, v);
167
+ }
168
+ else if (entry.name.endsWith(".md")) {
169
+ const unit = registerFile(absPath, relPath);
170
+ if (unit)
171
+ result.set(relPath, unit);
172
+ }
173
+ }
174
+ return result;
175
+ }
176
+ /**
177
+ * Scan the memory root directory and return all discovered MemoryUnits.
178
+ * Returns an empty map if fs/path are unavailable or root doesn't exist.
179
+ */
180
+ export function scanRoot(root) {
181
+ const fs = getFs();
182
+ const path = getPath();
183
+ if (!fs || !path || !fs.existsSync(root))
184
+ return new Map();
185
+ return scanDirectory(root, "", fs, path);
186
+ }
187
+ //# sourceMappingURL=scanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../../src/harness/memory/scanner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ export type MemoryTier = 0 | 1 | 2 | 3;
2
+ export type MemoryType = "identity" | "working" | "procedural" | "episodic" | "semantic" | "user";
3
+ export interface MemoryUnit {
4
+ /** Relative path from memory root, e.g. "procedural/pptx/notes.md" */
5
+ key: string;
6
+ /** Absolute path on disk */
7
+ path: string;
8
+ type: MemoryType;
9
+ tier: MemoryTier;
10
+ /** From frontmatter; fallback: h2 headings + first-line keywords (≤5) */
11
+ tags: string[];
12
+ /** From frontmatter; fallback: first non-heading paragraph (≤120 chars) */
13
+ summary: string;
14
+ /** Math.ceil(content.length / 4) */
15
+ tokenCost: number;
16
+ /** Natural language patterns that trigger this unit */
17
+ triggers: string[];
18
+ /** ISO mtime */
19
+ updatedAt: string;
20
+ /** Absent after scan(); populated after hydrate() or persist() */
21
+ content?: string;
22
+ }
23
+ export interface LoadResult {
24
+ units: MemoryUnit[];
25
+ totalTokens: number;
26
+ budget: number;
27
+ /** Candidates that exceeded the budget (content NOT hydrated) */
28
+ dropped: MemoryUnit[];
29
+ }
30
+ export interface MemoryLoaderConfig {
31
+ root: string;
32
+ /** Default: { 0: 800, 1: 2000, 2: 4000, 3: 8000 } */
33
+ budgets?: Partial<Record<MemoryTier, number>>;
34
+ /** Days to keep episodic sessions in recent/ before archiving. Default: 7 */
35
+ episodicRecentDays?: number;
36
+ /** Auto-rebuild INDEX.md after every persist(). Default: true */
37
+ autoIndex?: boolean;
38
+ /** Minimum relevance score (0–1) for match()/query(). Default: 0.2 */
39
+ matchThreshold?: number;
40
+ debug?: boolean;
41
+ }
42
+ /** Internal frontmatter type — NOT exported as MemoryFrontmatter */
43
+ export interface Frontmatter {
44
+ type?: MemoryType;
45
+ tier?: MemoryTier;
46
+ tags?: string[];
47
+ summary?: string;
48
+ triggers?: string[];
49
+ }
50
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/harness/memory/types.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEvC,MAAM,MAAM,UAAU,GAClB,UAAU,GACV,SAAS,GACT,YAAY,GACZ,UAAU,GACV,UAAU,GACV,MAAM,CAAC;AAEX,MAAM,WAAW,UAAU;IACzB,sEAAsE;IACtE,GAAG,EAAE,MAAM,CAAC;IACZ,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,UAAU,CAAC;IACjB,yEAAyE;IACzE,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,2EAA2E;IAC3E,OAAO,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,gBAAgB;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9C,6EAA6E;IAC7E,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iEAAiE;IACjE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,sEAAsE;IACtE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,oEAAoE;AACpE,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB"}
@@ -0,0 +1,7 @@
1
+ // ============================================================
2
+ // @oni.bot/core/harness/memory — types
3
+ //
4
+ // All public and internal types for the MemoryLoader system.
5
+ // ============================================================
6
+ export {};
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/harness/memory/types.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,uCAAuC;AACvC,EAAE;AACF,6DAA6D;AAC7D,+DAA+D"}
@@ -0,0 +1,3 @@
1
+ export { MemoryLoader } from './memory/index.js';
2
+ export type { MemoryUnit, MemoryTier, MemoryType, MemoryLoaderConfig, LoadResult } from './memory/types.js';
3
+ //# sourceMappingURL=memory-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-loader.d.ts","sourceRoot":"","sources":["../../src/harness/memory-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { MemoryLoader } from './memory/index.js';
2
+ //# sourceMappingURL=memory-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-loader.js","sourceRoot":"","sources":["../../src/harness/memory-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"safety-gate.d.ts","sourceRoot":"","sources":["../../src/harness/safety-gate.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAInD,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,QAAQ,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAkCD,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAW;IACjC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAc;IAC7C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,MAAM,EAAE,gBAAgB;IAOpC,yEAAyE;IACzE,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIxC,6EAA6E;IACvE,KAAK,CAAC,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;CA2B3G"}
1
+ {"version":3,"file":"safety-gate.d.ts","sourceRoot":"","sources":["../../src/harness/safety-gate.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAInD,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,QAAQ,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAkCD,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAW;IACjC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAc;IAC7C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,MAAM,EAAE,gBAAgB;IAOpC,yEAAyE;IACzE,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIxC,6EAA6E;IACvE,KAAK,CAAC,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAgD3G"}
@@ -5,27 +5,27 @@
5
5
  // ─── Constants ──────────────────────────────────────────────────────────────
6
6
  const DEFAULT_PROTECTED_TOOLS = ["Bash", "Write", "MultiEdit"];
7
7
  const DEFAULT_TIMEOUT = 5000;
8
- const DEFAULT_SAFETY_PROMPT = `You are a safety evaluator for an AI agent's tool calls. Analyze the tool call and respond with a JSON object:
9
- {"approved": boolean, "reason": string, "riskScore": number (0-1), "suggestion"?: string}
10
-
11
- Be strict about:
12
- - Irreversible deletions (rm -rf, DROP TABLE, etc.)
13
- - Broad file writes that could overwrite important files
14
- - Pipe-to-shell patterns (curl | sh, wget | bash)
15
- - Credential access (.env, secrets, tokens, API keys)
16
-
17
- Be permissive about:
18
- - Read operations (cat, ls, grep, find)
19
- - Targeted writes to specific files
20
- - Build and test commands (npm test, make, vitest)
21
- - Version control operations (git status, git diff)
22
-
8
+ const DEFAULT_SAFETY_PROMPT = `You are a safety evaluator for an AI agent's tool calls. Analyze the tool call and respond with a JSON object:
9
+ {"approved": boolean, "reason": string, "riskScore": number (0-1), "suggestion"?: string}
10
+
11
+ Be strict about:
12
+ - Irreversible deletions (rm -rf, DROP TABLE, etc.)
13
+ - Broad file writes that could overwrite important files
14
+ - Pipe-to-shell patterns (curl | sh, wget | bash)
15
+ - Credential access (.env, secrets, tokens, API keys)
16
+
17
+ Be permissive about:
18
+ - Read operations (cat, ls, grep, find)
19
+ - Targeted writes to specific files
20
+ - Build and test commands (npm test, make, vitest)
21
+ - Version control operations (git status, git diff)
22
+
23
23
  Respond ONLY with the JSON object, no other text.`;
24
24
  // ─── Fallback result ────────────────────────────────────────────────────────
25
25
  const FALLBACK_RESULT = {
26
- approved: true,
27
- reason: "Safety check skipped (timeout/error)",
28
- riskScore: 0.1,
26
+ approved: false,
27
+ reason: "Safety check unavailable (timeout/error) — failing closed",
28
+ riskScore: 1.0,
29
29
  };
30
30
  // ─── SafetyGate ─────────────────────────────────────────────────────────────
31
31
  export class SafetyGate {
@@ -45,6 +45,7 @@ export class SafetyGate {
45
45
  }
46
46
  /** Sends tool call info to the safety model and returns the check result. */
47
47
  async check(call) {
48
+ let response;
48
49
  try {
49
50
  const userMessage = `Tool: ${call.name}\nArguments: ${JSON.stringify(call.args, null, 2)}`;
50
51
  const responsePromise = this.model.chat({
@@ -52,20 +53,40 @@ export class SafetyGate {
52
53
  systemPrompt: this.systemPrompt,
53
54
  maxTokens: 256,
54
55
  });
56
+ let timeoutHandle;
55
57
  const timeoutPromise = new Promise((_, reject) => {
56
- setTimeout(() => reject(new Error("Safety check timeout")), this.timeout);
58
+ timeoutHandle = setTimeout(() => reject(new Error("Safety check timeout")), this.timeout);
57
59
  });
58
- const response = await Promise.race([responsePromise, timeoutPromise]);
59
- const parsed = JSON.parse(response.content);
60
+ response = await Promise.race([responsePromise, timeoutPromise]);
61
+ clearTimeout(timeoutHandle);
62
+ }
63
+ catch {
64
+ // Fail-closed for network errors and timeouts — block destructive tools
65
+ // when the safety service is unavailable.
66
+ return { ...FALLBACK_RESULT };
67
+ }
68
+ // Safely extract text — content is typed as string but guard defensively
69
+ // against adapters that return a content-block array at runtime.
70
+ const text = typeof response.content === "string"
71
+ ? response.content
72
+ : response.content.map((p) => p.text ?? "").join("");
73
+ try {
74
+ const parsed = JSON.parse(text);
60
75
  return {
61
- approved: Boolean(parsed.approved),
62
- reason: parsed.reason,
63
- riskScore: parsed.riskScore,
64
- suggestion: parsed.suggestion,
76
+ approved: Boolean(parsed["approved"]),
77
+ reason: parsed["reason"],
78
+ riskScore: parsed["riskScore"],
79
+ suggestion: parsed["suggestion"],
65
80
  };
66
81
  }
67
82
  catch {
68
- return { ...FALLBACK_RESULT };
83
+ // Model returned non-JSON content — fail-closed. A safety model that
84
+ // cannot produce a parseable response must not silently approve.
85
+ return {
86
+ approved: false,
87
+ reason: "Safety check failed: model returned non-JSON response",
88
+ riskScore: 1.0,
89
+ };
69
90
  }
70
91
  }
71
92
  }
@@ -1 +1 @@
1
- {"version":3,"file":"safety-gate.js","sourceRoot":"","sources":["../../src/harness/safety-gate.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,qCAAqC;AACrC,6DAA6D;AAC7D,+DAA+D;AAoB/D,+EAA+E;AAE/E,MAAM,uBAAuB,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;AAC/D,MAAM,eAAe,GAAG,IAAI,CAAC;AAE7B,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;kDAeoB,CAAC;AAEnD,+EAA+E;AAE/E,MAAM,eAAe,GAAsB;IACzC,QAAQ,EAAE,IAAI;IACd,MAAM,EAAE,sCAAsC;IAC9C,SAAS,EAAE,GAAG;CACf,CAAC;AAEF,+EAA+E;AAE/E,MAAM,OAAO,UAAU;IACJ,KAAK,CAAW;IAChB,cAAc,CAAc;IAC5B,YAAY,CAAS;IACrB,OAAO,CAAS;IAEjC,YAAY,MAAwB;QAClC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC;QAChC,IAAI,CAAC,cAAc,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,cAAc,IAAI,uBAAuB,CAAC,CAAC;QAChF,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,kBAAkB,IAAI,qBAAqB,CAAC;QACvE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,eAAe,CAAC;IACnD,CAAC;IAED,yEAAyE;IACzE,aAAa,CAAC,QAAgB;QAC5B,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAED,6EAA6E;IAC7E,KAAK,CAAC,KAAK,CAAC,IAAiE;QAC3E,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,SAAS,IAAI,CAAC,IAAI,gBAAgB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;YAE3F,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;gBACtC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;gBAClD,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,SAAS,EAAE,GAAG;aACf,CAAC,CAAC;YAEH,MAAM,cAAc,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;gBACtD,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5E,CAAC,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC,CAAC;YACvE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAiB,CAAC,CAAC;YAEtD,OAAO;gBACL,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;gBAClC,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,UAAU,EAAE,MAAM,CAAC,UAAU;aAC9B,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,GAAG,eAAe,EAAE,CAAC;QAChC,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"safety-gate.js","sourceRoot":"","sources":["../../src/harness/safety-gate.ts"],"names":[],"mappings":"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"}
@@ -30,6 +30,13 @@ export declare class SkillLoader {
30
30
  private loadDirectory;
31
31
  private scanDirectory;
32
32
  private loadSkillFile;
33
+ /**
34
+ * Create a fork that shares the skill catalog but has its own isolated
35
+ * pendingInjection state. Use when multiple concurrent agents share the
36
+ * same SkillLoader to prevent one agent's skill invocation from being
37
+ * consumed by another agent.
38
+ */
39
+ fork(): SkillLoader;
33
40
  /**
34
41
  * Register a skill definition programmatically (works in all runtimes).
35
42
  */
@@ -1 +1 @@
1
- {"version":3,"file":"skill-loader.d.ts","sourceRoot":"","sources":["../../src/harness/skill-loader.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAIxD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,+CAA+C;IAC/C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAuCD,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAA2C;IACzD,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,kFAAkF;IAClF,OAAO,SAAK;IAIZ;;;OAGG;IACH,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW;IAM9C;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,WAAW;IAUnD,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,aAAa;IA2BrB,OAAO,CAAC,aAAa;IAyCrB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IAKtC;;;OAGG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAa5C;;OAEG;IACH,MAAM,IAAI,eAAe,EAAE;IAI3B;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAM9C;;;OAGG;IACH,yBAAyB,IAAI,MAAM;IAanC;;;OAGG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO;IAS5C;;OAEG;IACH,mBAAmB,IAAI,MAAM,GAAG,IAAI;IAIpC;;OAEG;IACH,qBAAqB,IAAI,IAAI;IAM7B;;;OAGG;IACH,YAAY,IAAI,cAAc,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,MAAM,CAAC;CA6BzD"}
1
+ {"version":3,"file":"skill-loader.d.ts","sourceRoot":"","sources":["../../src/harness/skill-loader.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAIxD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,+CAA+C;IAC/C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAuCD,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAA2C;IACzD,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,kFAAkF;IAClF,OAAO,SAAK;IAIZ;;;OAGG;IACH,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW;IAM9C;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,WAAW;IAUnD,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,aAAa;IA2BrB,OAAO,CAAC,aAAa;IAyCrB;;;;;OAKG;IACH,IAAI,IAAI,WAAW;IASnB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IAKtC;;;OAGG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAa5C;;OAEG;IACH,MAAM,IAAI,eAAe,EAAE;IAI3B;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAM9C;;;OAGG;IACH,yBAAyB,IAAI,MAAM;IAgBnC;;;OAGG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO;IAS5C;;OAEG;IACH,mBAAmB,IAAI,MAAM,GAAG,IAAI;IAIpC;;OAEG;IACH,qBAAqB,IAAI,IAAI;IAM7B;;;OAGG;IACH,YAAY,IAAI,cAAc,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,MAAM,CAAC;CA4BzD"}
@@ -63,7 +63,9 @@ export class SkillLoader {
63
63
  loadDirectory(dir) {
64
64
  try {
65
65
  // Dynamic require to avoid bundler issues in non-Node envs
66
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
66
67
  const fs = require("fs");
68
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
67
69
  const path = require("path");
68
70
  this.scanDirectory(dir, fs, path);
69
71
  }
@@ -101,7 +103,7 @@ export class SkillLoader {
101
103
  const { meta, body } = parseFrontmatter(raw);
102
104
  const name = meta.name || "";
103
105
  if (!name)
104
- return;
106
+ return false;
105
107
  const skill = {
106
108
  name,
107
109
  description: meta.description || "",
@@ -126,11 +128,25 @@ export class SkillLoader {
126
128
  }
127
129
  this.skills.set(name, skill);
128
130
  this.version++;
131
+ return true;
129
132
  }
130
133
  catch {
131
134
  // Skip unreadable files
135
+ return false;
132
136
  }
133
137
  }
138
+ /**
139
+ * Create a fork that shares the skill catalog but has its own isolated
140
+ * pendingInjection state. Use when multiple concurrent agents share the
141
+ * same SkillLoader to prevent one agent's skill invocation from being
142
+ * consumed by another agent.
143
+ */
144
+ fork() {
145
+ const forked = new SkillLoader();
146
+ forked.skills = this.skills; // shared read-only catalog — no filesystem re-scan
147
+ forked.version = this.version;
148
+ return forked;
149
+ }
134
150
  // ── Programmatic Registration ────────────────────────────────────────
135
151
  /**
136
152
  * Register a skill definition programmatically (works in all runtimes).
@@ -145,10 +161,10 @@ export class SkillLoader {
145
161
  */
146
162
  loadSkillFromFile(filePath) {
147
163
  try {
164
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
148
165
  const fs = require("fs");
149
- this.loadSkillFile(filePath, fs);
150
- this.version++;
151
- return true;
166
+ // Note: loadSkillFile already increments this.version on success.
167
+ return this.loadSkillFile(filePath, fs);
152
168
  }
153
169
  catch {
154
170
  return false;
@@ -175,9 +191,10 @@ export class SkillLoader {
175
191
  getDescriptionsForContext() {
176
192
  if (this.skills.size === 0)
177
193
  return "";
194
+ const escXml = (s) => s.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
178
195
  const lines = ["<available-skills>"];
179
196
  for (const skill of this.skills.values()) {
180
- lines.push(` <skill name="${skill.name}">${skill.description}</skill>`);
197
+ lines.push(` <skill name="${escXml(skill.name)}">${escXml(skill.description)}</skill>`);
181
198
  }
182
199
  lines.push("</available-skills>");
183
200
  return lines.join("\n");
@@ -213,7 +230,6 @@ export class SkillLoader {
213
230
  * This tool allows the agent to invoke skills by name.
214
231
  */
215
232
  getSkillTool() {
216
- const self = this;
217
233
  return {
218
234
  name: "Skill",
219
235
  description: "Invoke a skill by name. Skills provide specialized capabilities and domain knowledge. " +
@@ -229,8 +245,8 @@ export class SkillLoader {
229
245
  required: ["name"],
230
246
  additionalProperties: false,
231
247
  },
232
- execute(input) {
233
- const found = self.invoke(input.name);
248
+ execute: (input) => {
249
+ const found = this.invoke(input.name);
234
250
  if (found) {
235
251
  return JSON.stringify({ success: true, skill: input.name });
236
252
  }
@@ -1 +1 @@
1
- {"version":3,"file":"skill-loader.js","sourceRoot":"","sources":["../../src/harness/skill-loader.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,sCAAsC;AACtC,6DAA6D;AAC7D,+DAA+D;AAqB/D,gFAAgF;AAEhF,SAAS,gBAAgB,CAAC,GAAW;IACnC,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC;IAChC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IACjC,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACtC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;QACf,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IACjC,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAChD,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAE3C,MAAM,IAAI,GAAsC,EAAE,CAAC;IACnD,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,QAAQ,KAAK,CAAC,CAAC;YAAE,SAAS;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9C,IAAI,CAAC,GAAG;YAAE,SAAS;QAEnB,iDAAiD;QACjD,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,eAAe,EAAE,CAAC;YAC/C,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACpE,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,gFAAgF;AAEhF,MAAM,OAAO,WAAW;IACd,MAAM,GAAiC,IAAI,GAAG,EAAE,CAAC;IACjD,gBAAgB,GAAkB,IAAI,CAAC;IAC/C,kFAAkF;IAClF,OAAO,GAAG,CAAC,CAAC;IAEZ,wEAAwE;IAExE;;;OAGG;IACH,MAAM,CAAC,aAAa,CAAC,GAAW;QAC9B,MAAM,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QACjC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC1B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,IAAc;QACnC,MAAM,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QACjC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,wEAAwE;IAEhE,aAAa,CAAC,GAAW;QAC/B,IAAI,CAAC;YACH,2DAA2D;YAC3D,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAwB,CAAC;YAChD,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAA0B,CAAC;YACtD,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QACpC,CAAC;QAAC,MAAM,CAAC;YACP,mDAAmD;QACrD,CAAC;IACH,CAAC;IAEO,aAAa,CACnB,GAAW,EACX,EAAuB,EACvB,IAA2B;QAE3B,IAAI,OAAiB,CAAC;QACtB,IAAI,CAAC;YACH,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC/B,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;oBACvB,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;gBACrC,CAAC;qBAAM,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;oBAChC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC/B,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,4BAA4B;YAC9B,CAAC;QACH,CAAC;IACH,CAAC;IAEO,aAAa,CAAC,QAAgB,EAAE,EAAuB;QAC7D,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC/C,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;YAE7C,MAAM,IAAI,GAAI,IAAI,CAAC,IAAe,IAAI,EAAE,CAAC;YACzC,IAAI,CAAC,IAAI;gBAAE,OAAO;YAElB,MAAM,KAAK,GAAoB;gBAC7B,IAAI;gBACJ,WAAW,EAAG,IAAI,CAAC,WAAsB,IAAI,EAAE;gBAC/C,OAAO,EAAE,IAAI;gBACb,UAAU,EAAE,QAAQ;aACrB,CAAC;YAEF,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtE,CAAC;YACD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAe,CAAC;YACrC,CAAC;YACD,IAAI,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;gBAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;gBAClC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACxD,CAAC;YACD,IAAI,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;gBAC1B,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,CAAW,CAAC;YACvD,CAAC;YACD,IAAI,IAAI,CAAC,0BAA0B,CAAC,KAAK,MAAM,EAAE,CAAC;gBAChD,KAAK,CAAC,sBAAsB,GAAG,IAAI,CAAC;YACtC,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC;QAAC,MAAM,CAAC;YACP,wBAAwB;QAC1B,CAAC;IACH,CAAC;IAED,wEAAwE;IAExE;;OAEG;IACH,QAAQ,CAAC,KAAsB;QAC7B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAED;;;OAGG;IACH,iBAAiB,CAAC,QAAgB;QAChC,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAwB,CAAC;YAChD,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YACjC,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,wEAAwE;IAExE;;OAEG;IACH,MAAM;QACJ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,wEAAwE;IAExE;;;OAGG;IACH,yBAAyB;QACvB,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAEtC,MAAM,KAAK,GAAa,CAAC,oBAAoB,CAAC,CAAC;QAC/C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YACzC,KAAK,CAAC,IAAI,CAAC,kBAAkB,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,WAAW,UAAU,CAAC,CAAC;QAC3E,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAClC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,wEAAwE;IAExE;;;OAGG;IACH,MAAM,CAAC,IAAY,EAAE,IAAa;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QAEzB,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,IAAI,CAAC,gBAAgB,GAAG,6BAA6B,IAAI,OAAO,KAAK,CAAC,OAAO,GAAG,SAAS,yBAAyB,CAAC;QACnH,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,mBAAmB;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,qBAAqB;QACnB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAC/B,CAAC;IAED,wEAAwE;IAExE;;;OAGG;IACH,YAAY;QACV,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,OAAO;YACL,IAAI,EAAE,OAAO;YACb,WAAW,EACT,wFAAwF;gBACxF,iEAAiE;YACnE,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,IAAI,EAAE;wBACJ,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,0BAA0B;qBACxC;iBACF;gBACD,QAAQ,EAAE,CAAC,MAAM,CAAC;gBAClB,oBAAoB,EAAE,KAAK;aAC5B;YACD,OAAO,CAAC,KAAuB;gBAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACtC,IAAI,KAAK,EAAE,CAAC;oBACV,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC9D,CAAC;gBACD,OAAO,IAAI,CAAC,SAAS,CAAC;oBACpB,KAAK,EAAE,UAAU,KAAK,CAAC,IAAI,oDAAoD;iBAChF,CAAC,CAAC;YACL,CAAC;SACF,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"skill-loader.js","sourceRoot":"","sources":["../../src/harness/skill-loader.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"todo-module.d.ts","sourceRoot":"","sources":["../../src/harness/todo-module.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAe,MAAM,mBAAmB,CAAC;AAIrE,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,aAAa,GAAG,WAAW,GAAG,SAAS,CAAC;AAC7E,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAElE,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAaD,qBAAa,UAAU;IACrB,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,SAAS,CAAkC;gBAEvC,SAAS,CAAC,EAAE,MAAM;IAW9B,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI;IAY1B,IAAI,IAAI,SAAS;IAIjB,QAAQ,IAAI,SAAS;IAMrB,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO;IAarD,SAAS,IAAI,IAAI,EAAE;IAInB,eAAe,IAAI,IAAI,GAAG,SAAS;IAInC,UAAU,IAAI,OAAO;IASrB,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,GAAG,MAAM,IAAI;IAO1D,OAAO,CAAC,MAAM;IAQd,QAAQ,IAAI,cAAc,EAAE;IAI5B,OAAO,CAAC,eAAe;IAoEvB,OAAO,CAAC,cAAc;IAgBtB,MAAM,IAAI,SAAS;IAInB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,UAAU;IAY5C,eAAe,IAAI,MAAM;CAgB1B"}
1
+ {"version":3,"file":"todo-module.d.ts","sourceRoot":"","sources":["../../src/harness/todo-module.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAe,MAAM,mBAAmB,CAAC;AAIrE,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,aAAa,GAAG,WAAW,GAAG,SAAS,CAAC;AAC7E,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAElE,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAaD,qBAAa,UAAU;IACrB,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,SAAS,CAAkC;gBAEvC,SAAS,CAAC,EAAE,MAAM;IAW9B,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI;IAY1B,IAAI,IAAI,SAAS;IAIjB,QAAQ,IAAI,SAAS;IAMrB,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO;IAerD,SAAS,IAAI,IAAI,EAAE;IAInB,eAAe,IAAI,IAAI,GAAG,SAAS;IAInC,UAAU,IAAI,OAAO;IASrB,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,GAAG,MAAM,IAAI;IAO1D,OAAO,CAAC,MAAM;IAYd,QAAQ,IAAI,cAAc,EAAE;IAI5B,OAAO,CAAC,eAAe;IAoEvB,OAAO,CAAC,cAAc;IAgBtB,MAAM,IAAI,SAAS;IAInB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,UAAU;IAY5C,eAAe,IAAI,MAAM;CAgB1B"}