@cleocode/core 2026.6.12 → 2026.6.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 (730) hide show
  1. package/dist/admin/ops.d.ts +4 -0
  2. package/dist/admin/ops.d.ts.map +1 -1
  3. package/dist/check/index.d.ts +12 -0
  4. package/dist/check/index.d.ts.map +1 -0
  5. package/dist/check/index.js +12 -0
  6. package/dist/check/index.js.map +1 -0
  7. package/dist/check/pr-gate.d.ts +179 -0
  8. package/dist/check/pr-gate.d.ts.map +1 -0
  9. package/dist/check/pr-gate.js +366 -0
  10. package/dist/check/pr-gate.js.map +1 -0
  11. package/dist/conduit/delivery-router.d.ts +134 -0
  12. package/dist/conduit/delivery-router.d.ts.map +1 -0
  13. package/dist/conduit/delivery-router.js +0 -0
  14. package/dist/conduit/delivery-router.js.map +1 -0
  15. package/dist/conduit/index.d.ts +5 -2
  16. package/dist/conduit/index.d.ts.map +1 -1
  17. package/dist/conduit/index.js +5 -2
  18. package/dist/conduit/index.js.map +1 -1
  19. package/dist/conduit/local-transport.d.ts +12 -0
  20. package/dist/conduit/local-transport.d.ts.map +1 -1
  21. package/dist/conduit/local-transport.js +53 -23
  22. package/dist/conduit/local-transport.js.map +1 -1
  23. package/dist/conduit/local-tui-adapter.d.ts +89 -0
  24. package/dist/conduit/local-tui-adapter.d.ts.map +1 -0
  25. package/dist/conduit/local-tui-adapter.js +225 -0
  26. package/dist/conduit/local-tui-adapter.js.map +1 -0
  27. package/dist/config/registry.d.ts +54 -0
  28. package/dist/config/registry.d.ts.map +1 -1
  29. package/dist/config/registry.js +94 -2
  30. package/dist/config/registry.js.map +1 -1
  31. package/dist/crypto/credentials.d.ts +37 -0
  32. package/dist/crypto/credentials.d.ts.map +1 -1
  33. package/dist/crypto/credentials.js +110 -0
  34. package/dist/crypto/credentials.js.map +1 -1
  35. package/dist/deriver/queue-manager.d.ts +30 -2
  36. package/dist/deriver/queue-manager.d.ts.map +1 -1
  37. package/dist/deriver/queue-manager.js +54 -9
  38. package/dist/deriver/queue-manager.js.map +1 -1
  39. package/dist/dispatch/config-domain-handler.d.ts +125 -0
  40. package/dist/dispatch/config-domain-handler.d.ts.map +1 -0
  41. package/dist/dispatch/config-domain-handler.js +160 -0
  42. package/dist/dispatch/config-domain-handler.js.map +1 -0
  43. package/dist/dispatch/contracts/derive-output-contract.d.ts +86 -0
  44. package/dist/dispatch/contracts/derive-output-contract.d.ts.map +1 -0
  45. package/dist/dispatch/contracts/derive-output-contract.js +347 -0
  46. package/dist/dispatch/contracts/derive-output-contract.js.map +1 -0
  47. package/dist/dispatch/contracts/ensures-schema.d.ts +77 -0
  48. package/dist/dispatch/contracts/ensures-schema.d.ts.map +1 -0
  49. package/dist/dispatch/contracts/ensures-schema.js +91 -0
  50. package/dist/dispatch/contracts/ensures-schema.js.map +1 -0
  51. package/dist/dispatch/contracts/input-contracts.d.ts.map +1 -1
  52. package/dist/dispatch/contracts/input-contracts.js +19 -1
  53. package/dist/dispatch/contracts/input-contracts.js.map +1 -1
  54. package/dist/dispatch/contracts/output-contracts.d.ts +27 -5
  55. package/dist/dispatch/contracts/output-contracts.d.ts.map +1 -1
  56. package/dist/dispatch/contracts/output-contracts.js +29 -6
  57. package/dist/dispatch/contracts/output-contracts.js.map +1 -1
  58. package/dist/docs/export-document.js +5413 -1345
  59. package/dist/docs/export-document.js.map +3 -3
  60. package/dist/gateway-client/client.d.ts +123 -0
  61. package/dist/gateway-client/client.d.ts.map +1 -0
  62. package/dist/gateway-client/client.js +93 -0
  63. package/dist/gateway-client/client.js.map +1 -0
  64. package/dist/gateway-client/generated/client/client.gen.d.ts +3 -0
  65. package/dist/gateway-client/generated/client/client.gen.d.ts.map +1 -0
  66. package/dist/gateway-client/generated/client/client.gen.js +217 -0
  67. package/dist/gateway-client/generated/client/client.gen.js.map +1 -0
  68. package/dist/gateway-client/generated/client/index.d.ts +11 -0
  69. package/dist/gateway-client/generated/client/index.d.ts.map +1 -0
  70. package/dist/gateway-client/generated/client/index.js +7 -0
  71. package/dist/gateway-client/generated/client/index.js.map +1 -0
  72. package/dist/gateway-client/generated/client/types.gen.d.ts +121 -0
  73. package/dist/gateway-client/generated/client/types.gen.d.ts.map +1 -0
  74. package/dist/gateway-client/generated/client/types.gen.js +3 -0
  75. package/dist/gateway-client/generated/client/types.gen.js.map +1 -0
  76. package/dist/gateway-client/generated/client/utils.gen.d.ts +38 -0
  77. package/dist/gateway-client/generated/client/utils.gen.d.ts.map +1 -0
  78. package/dist/gateway-client/generated/client/utils.gen.js +229 -0
  79. package/dist/gateway-client/generated/client/utils.gen.js.map +1 -0
  80. package/dist/gateway-client/generated/client.gen.d.ts +13 -0
  81. package/dist/gateway-client/generated/client.gen.d.ts.map +1 -0
  82. package/dist/gateway-client/generated/client.gen.js +4 -0
  83. package/dist/gateway-client/generated/client.gen.js.map +1 -0
  84. package/dist/gateway-client/generated/core/auth.gen.d.ts +26 -0
  85. package/dist/gateway-client/generated/core/auth.gen.d.ts.map +1 -0
  86. package/dist/gateway-client/generated/core/auth.gen.js +15 -0
  87. package/dist/gateway-client/generated/core/auth.gen.js.map +1 -0
  88. package/dist/gateway-client/generated/core/bodySerializer.gen.d.ts +26 -0
  89. package/dist/gateway-client/generated/core/bodySerializer.gen.d.ts.map +1 -0
  90. package/dist/gateway-client/generated/core/bodySerializer.gen.js +58 -0
  91. package/dist/gateway-client/generated/core/bodySerializer.gen.js.map +1 -0
  92. package/dist/gateway-client/generated/core/params.gen.d.ts +44 -0
  93. package/dist/gateway-client/generated/core/params.gen.d.ts.map +1 -0
  94. package/dist/gateway-client/generated/core/params.gen.js +101 -0
  95. package/dist/gateway-client/generated/core/params.gen.js.map +1 -0
  96. package/dist/gateway-client/generated/core/pathSerializer.gen.d.ts +34 -0
  97. package/dist/gateway-client/generated/core/pathSerializer.gen.d.ts.map +1 -0
  98. package/dist/gateway-client/generated/core/pathSerializer.gen.js +107 -0
  99. package/dist/gateway-client/generated/core/pathSerializer.gen.js.map +1 -0
  100. package/dist/gateway-client/generated/core/queryKeySerializer.gen.d.ts +19 -0
  101. package/dist/gateway-client/generated/core/queryKeySerializer.gen.d.ts.map +1 -0
  102. package/dist/gateway-client/generated/core/queryKeySerializer.gen.js +93 -0
  103. package/dist/gateway-client/generated/core/queryKeySerializer.gen.js.map +1 -0
  104. package/dist/gateway-client/generated/core/serverSentEvents.gen.d.ts +72 -0
  105. package/dist/gateway-client/generated/core/serverSentEvents.gen.d.ts.map +1 -0
  106. package/dist/gateway-client/generated/core/serverSentEvents.gen.js +133 -0
  107. package/dist/gateway-client/generated/core/serverSentEvents.gen.js.map +1 -0
  108. package/dist/gateway-client/generated/core/types.gen.d.ts +84 -0
  109. package/dist/gateway-client/generated/core/types.gen.d.ts.map +1 -0
  110. package/dist/gateway-client/generated/core/types.gen.js +3 -0
  111. package/dist/gateway-client/generated/core/types.gen.js.map +1 -0
  112. package/dist/gateway-client/generated/core/utils.gen.d.ts +20 -0
  113. package/dist/gateway-client/generated/core/utils.gen.d.ts.map +1 -0
  114. package/dist/gateway-client/generated/core/utils.gen.js +88 -0
  115. package/dist/gateway-client/generated/core/utils.gen.js.map +1 -0
  116. package/dist/gateway-client/generated/index.d.ts +3 -0
  117. package/dist/gateway-client/generated/index.d.ts.map +1 -0
  118. package/dist/gateway-client/generated/index.js +3 -0
  119. package/dist/gateway-client/generated/index.js.map +1 -0
  120. package/dist/gateway-client/generated/namespaces.gen.d.ts +512 -0
  121. package/dist/gateway-client/generated/namespaces.gen.d.ts.map +1 -0
  122. package/dist/gateway-client/generated/namespaces.gen.js +521 -0
  123. package/dist/gateway-client/generated/namespaces.gen.js.map +1 -0
  124. package/dist/gateway-client/generated/sdk.gen.d.ts +1780 -0
  125. package/dist/gateway-client/generated/sdk.gen.d.ts.map +1 -0
  126. package/dist/gateway-client/generated/sdk.gen.js +3811 -0
  127. package/dist/gateway-client/generated/sdk.gen.js.map +1 -0
  128. package/dist/gateway-client/generated/types.gen.d.ts +14681 -0
  129. package/dist/gateway-client/generated/types.gen.d.ts.map +1 -0
  130. package/dist/gateway-client/generated/types.gen.js +3 -0
  131. package/dist/gateway-client/generated/types.gen.js.map +1 -0
  132. package/dist/gateway-client/index.d.ts +27 -0
  133. package/dist/gateway-client/index.d.ts.map +1 -0
  134. package/dist/gateway-client/index.js +25 -0
  135. package/dist/gateway-client/index.js.map +1 -0
  136. package/dist/go/driver.d.ts +132 -7
  137. package/dist/go/driver.d.ts.map +1 -1
  138. package/dist/go/driver.js +135 -10
  139. package/dist/go/driver.js.map +1 -1
  140. package/dist/go/index.d.ts +1 -1
  141. package/dist/go/index.d.ts.map +1 -1
  142. package/dist/go/index.js +1 -1
  143. package/dist/go/index.js.map +1 -1
  144. package/dist/index.d.ts +11 -0
  145. package/dist/index.d.ts.map +1 -1
  146. package/dist/index.js +25 -0
  147. package/dist/index.js.map +1 -1
  148. package/dist/init.d.ts.map +1 -1
  149. package/dist/init.js +28 -0
  150. package/dist/init.js.map +1 -1
  151. package/dist/internal.d.ts +23 -11
  152. package/dist/internal.d.ts.map +1 -1
  153. package/dist/internal.js +29 -12
  154. package/dist/internal.js.map +1 -1
  155. package/dist/lifecycle/engine-ops.d.ts.map +1 -1
  156. package/dist/lifecycle/engine-ops.js +7 -4
  157. package/dist/lifecycle/engine-ops.js.map +1 -1
  158. package/dist/lifecycle/ivtr-loop.d.ts +108 -183
  159. package/dist/lifecycle/ivtr-loop.d.ts.map +1 -1
  160. package/dist/lifecycle/ivtr-loop.js +207 -522
  161. package/dist/lifecycle/ivtr-loop.js.map +1 -1
  162. package/dist/llm/auxiliary-fallback.js +1 -1
  163. package/dist/llm/auxiliary-fallback.js.map +1 -1
  164. package/dist/llm/catalog-model-resolver.d.ts +19 -0
  165. package/dist/llm/catalog-model-resolver.d.ts.map +1 -1
  166. package/dist/llm/catalog-model-resolver.js +36 -0
  167. package/dist/llm/catalog-model-resolver.js.map +1 -1
  168. package/dist/llm/catalog-resolver.d.ts +112 -0
  169. package/dist/llm/catalog-resolver.d.ts.map +1 -0
  170. package/dist/llm/catalog-resolver.js +207 -0
  171. package/dist/llm/catalog-resolver.js.map +1 -0
  172. package/dist/llm/catalog-seeder.d.ts +96 -0
  173. package/dist/llm/catalog-seeder.d.ts.map +1 -0
  174. package/dist/llm/catalog-seeder.js +189 -0
  175. package/dist/llm/catalog-seeder.js.map +1 -0
  176. package/dist/llm/cli-ops.d.ts +14 -1
  177. package/dist/llm/cli-ops.d.ts.map +1 -1
  178. package/dist/llm/cli-ops.js +46 -17
  179. package/dist/llm/cli-ops.js.map +1 -1
  180. package/dist/llm/complexity-classifier.d.ts +208 -0
  181. package/dist/llm/complexity-classifier.d.ts.map +1 -0
  182. package/dist/llm/complexity-classifier.js +359 -0
  183. package/dist/llm/complexity-classifier.js.map +1 -0
  184. package/dist/llm/concrete-session.d.ts.map +1 -1
  185. package/dist/llm/concrete-session.js +4 -0
  186. package/dist/llm/concrete-session.js.map +1 -1
  187. package/dist/llm/credential-pool.d.ts +2 -0
  188. package/dist/llm/credential-pool.d.ts.map +1 -1
  189. package/dist/llm/credential-pool.js +5 -2
  190. package/dist/llm/credential-pool.js.map +1 -1
  191. package/dist/llm/credentials-store.d.ts +10 -14
  192. package/dist/llm/credentials-store.d.ts.map +1 -1
  193. package/dist/llm/credentials-store.js.map +1 -1
  194. package/dist/llm/credentials.d.ts +35 -0
  195. package/dist/llm/credentials.d.ts.map +1 -1
  196. package/dist/llm/credentials.js +49 -0
  197. package/dist/llm/credentials.js.map +1 -1
  198. package/dist/llm/entity-ops.d.ts +299 -0
  199. package/dist/llm/entity-ops.d.ts.map +1 -0
  200. package/dist/llm/entity-ops.js +441 -0
  201. package/dist/llm/entity-ops.js.map +1 -0
  202. package/dist/llm/index.d.ts +19 -0
  203. package/dist/llm/index.d.ts.map +1 -1
  204. package/dist/llm/index.js +12 -0
  205. package/dist/llm/index.js.map +1 -1
  206. package/dist/llm/llm-queue-admit.d.ts +118 -0
  207. package/dist/llm/llm-queue-admit.d.ts.map +1 -0
  208. package/dist/llm/llm-queue-admit.js +275 -0
  209. package/dist/llm/llm-queue-admit.js.map +1 -0
  210. package/dist/llm/oauth/device-code.d.ts.map +1 -1
  211. package/dist/llm/oauth/device-code.js +2 -8
  212. package/dist/llm/oauth/device-code.js.map +1 -1
  213. package/dist/llm/oauth/google-pkce.d.ts.map +1 -1
  214. package/dist/llm/oauth/google-pkce.js +2 -18
  215. package/dist/llm/oauth/google-pkce.js.map +1 -1
  216. package/dist/llm/oauth/pkce.d.ts +70 -0
  217. package/dist/llm/oauth/pkce.d.ts.map +1 -1
  218. package/dist/llm/oauth/pkce.js +106 -29
  219. package/dist/llm/oauth/pkce.js.map +1 -1
  220. package/dist/llm/onboarding/front-door.d.ts +146 -0
  221. package/dist/llm/onboarding/front-door.d.ts.map +1 -0
  222. package/dist/llm/onboarding/front-door.js +153 -0
  223. package/dist/llm/onboarding/front-door.js.map +1 -0
  224. package/dist/llm/onboarding/login-engine.d.ts +175 -0
  225. package/dist/llm/onboarding/login-engine.d.ts.map +1 -0
  226. package/dist/llm/onboarding/login-engine.js +286 -0
  227. package/dist/llm/onboarding/login-engine.js.map +1 -0
  228. package/dist/llm/pi/gondolin-loader.d.ts +241 -0
  229. package/dist/llm/pi/gondolin-loader.d.ts.map +1 -0
  230. package/dist/llm/pi/gondolin-loader.js +195 -0
  231. package/dist/llm/pi/gondolin-loader.js.map +1 -0
  232. package/dist/llm/pi/index.d.ts +28 -0
  233. package/dist/llm/pi/index.d.ts.map +1 -0
  234. package/dist/llm/pi/index.js +27 -0
  235. package/dist/llm/pi/index.js.map +1 -0
  236. package/dist/llm/pi/pi-agent-adapter.d.ts +135 -0
  237. package/dist/llm/pi/pi-agent-adapter.d.ts.map +1 -0
  238. package/dist/llm/pi/pi-agent-adapter.js +329 -0
  239. package/dist/llm/pi/pi-agent-adapter.js.map +1 -0
  240. package/dist/llm/pi/pi-errors.d.ts +161 -0
  241. package/dist/llm/pi/pi-errors.d.ts.map +1 -0
  242. package/dist/llm/pi/pi-errors.js +296 -0
  243. package/dist/llm/pi/pi-errors.js.map +1 -0
  244. package/dist/llm/pi/pi-execution-env.d.ts +286 -0
  245. package/dist/llm/pi/pi-execution-env.d.ts.map +1 -0
  246. package/dist/llm/pi/pi-execution-env.js +406 -0
  247. package/dist/llm/pi/pi-execution-env.js.map +1 -0
  248. package/dist/llm/pi/pi-gondolin-env.d.ts +250 -0
  249. package/dist/llm/pi/pi-gondolin-env.d.ts.map +1 -0
  250. package/dist/llm/pi/pi-gondolin-env.js +541 -0
  251. package/dist/llm/pi/pi-gondolin-env.js.map +1 -0
  252. package/dist/llm/pi/pi-session-storage.d.ts +154 -0
  253. package/dist/llm/pi/pi-session-storage.d.ts.map +1 -0
  254. package/dist/llm/pi/pi-session-storage.js +314 -0
  255. package/dist/llm/pi/pi-session-storage.js.map +1 -0
  256. package/dist/llm/pi/pi-stream-fn.d.ts +124 -0
  257. package/dist/llm/pi/pi-stream-fn.d.ts.map +1 -0
  258. package/dist/llm/pi/pi-stream-fn.js +504 -0
  259. package/dist/llm/pi/pi-stream-fn.js.map +1 -0
  260. package/dist/llm/pi/pi-tool-bridge.d.ts +99 -0
  261. package/dist/llm/pi/pi-tool-bridge.d.ts.map +1 -0
  262. package/dist/llm/pi/pi-tool-bridge.js +117 -0
  263. package/dist/llm/pi/pi-tool-bridge.js.map +1 -0
  264. package/dist/llm/pi/pi-types.d.ts +56 -0
  265. package/dist/llm/pi/pi-types.d.ts.map +1 -0
  266. package/dist/llm/pi/pi-types.js +16 -0
  267. package/dist/llm/pi/pi-types.js.map +1 -0
  268. package/dist/llm/pi/resolve-execution-env.d.ts +194 -0
  269. package/dist/llm/pi/resolve-execution-env.d.ts.map +1 -0
  270. package/dist/llm/pi/resolve-execution-env.js +132 -0
  271. package/dist/llm/pi/resolve-execution-env.js.map +1 -0
  272. package/dist/llm/plugin-facade.js +5472 -1331
  273. package/dist/llm/plugin-facade.js.map +3 -3
  274. package/dist/llm/provider-registry/builtin/anthropic.d.ts.map +1 -1
  275. package/dist/llm/provider-registry/builtin/anthropic.js +23 -10
  276. package/dist/llm/provider-registry/builtin/anthropic.js.map +1 -1
  277. package/dist/llm/provider-registry/provider-alias.d.ts +62 -0
  278. package/dist/llm/provider-registry/provider-alias.d.ts.map +1 -0
  279. package/dist/llm/provider-registry/provider-alias.js +85 -0
  280. package/dist/llm/provider-registry/provider-alias.js.map +1 -0
  281. package/dist/llm/provider-registry/provider-defs.d.ts +45 -0
  282. package/dist/llm/provider-registry/provider-defs.d.ts.map +1 -0
  283. package/dist/llm/provider-registry/provider-defs.js +145 -0
  284. package/dist/llm/provider-registry/provider-defs.js.map +1 -0
  285. package/dist/llm/provider-registry/provider-seed.d.ts +78 -0
  286. package/dist/llm/provider-registry/provider-seed.d.ts.map +1 -0
  287. package/dist/llm/provider-registry/provider-seed.js +113 -0
  288. package/dist/llm/provider-registry/provider-seed.js.map +1 -0
  289. package/dist/llm/role-executor.d.ts.map +1 -1
  290. package/dist/llm/role-executor.js +44 -5
  291. package/dist/llm/role-executor.js.map +1 -1
  292. package/dist/llm/role-resolver.d.ts +46 -14
  293. package/dist/llm/role-resolver.d.ts.map +1 -1
  294. package/dist/llm/role-resolver.js +185 -20
  295. package/dist/llm/role-resolver.js.map +1 -1
  296. package/dist/llm/sealed-credential.d.ts +125 -0
  297. package/dist/llm/sealed-credential.d.ts.map +1 -0
  298. package/dist/llm/sealed-credential.js +133 -0
  299. package/dist/llm/sealed-credential.js.map +1 -0
  300. package/dist/llm/session-factory.d.ts.map +1 -1
  301. package/dist/llm/session-factory.js +6 -2
  302. package/dist/llm/session-factory.js.map +1 -1
  303. package/dist/llm/system-key.d.ts +67 -0
  304. package/dist/llm/system-key.d.ts.map +1 -0
  305. package/dist/llm/system-key.js +87 -0
  306. package/dist/llm/system-key.js.map +1 -0
  307. package/dist/llm/system-of-use-registry.d.ts +119 -0
  308. package/dist/llm/system-of-use-registry.d.ts.map +1 -0
  309. package/dist/llm/system-of-use-registry.js +200 -0
  310. package/dist/llm/system-of-use-registry.js.map +1 -0
  311. package/dist/llm/system-resolver.d.ts +32 -10
  312. package/dist/llm/system-resolver.d.ts.map +1 -1
  313. package/dist/llm/system-resolver.js +138 -35
  314. package/dist/llm/system-resolver.js.map +1 -1
  315. package/dist/memory/brain-writer-thread.d.ts.map +1 -1
  316. package/dist/memory/brain-writer-thread.js +116 -11
  317. package/dist/memory/brain-writer-thread.js.map +1 -1
  318. package/dist/memory/claude-mem-migration.d.ts.map +1 -1
  319. package/dist/memory/claude-mem-migration.js +21 -0
  320. package/dist/memory/claude-mem-migration.js.map +1 -1
  321. package/dist/memory/graph-memory-bridge.d.ts.map +1 -1
  322. package/dist/memory/graph-memory-bridge.js +32 -25
  323. package/dist/memory/graph-memory-bridge.js.map +1 -1
  324. package/dist/memory/learnings.d.ts +4 -0
  325. package/dist/memory/learnings.d.ts.map +1 -1
  326. package/dist/memory/llm-backend-resolver.js +23 -5
  327. package/dist/memory/llm-backend-resolver.js.map +1 -1
  328. package/dist/memory/patterns.d.ts +4 -0
  329. package/dist/memory/patterns.d.ts.map +1 -1
  330. package/dist/metrics/index.d.ts +2 -0
  331. package/dist/metrics/index.d.ts.map +1 -1
  332. package/dist/metrics/index.js +1 -0
  333. package/dist/metrics/index.js.map +1 -1
  334. package/dist/nexus/migrations/M-split-graph.d.ts.map +1 -1
  335. package/dist/nexus/migrations/M-split-graph.js +60 -53
  336. package/dist/nexus/migrations/M-split-graph.js.map +1 -1
  337. package/dist/orchestrate/pivot.d.ts.map +1 -1
  338. package/dist/orchestrate/pivot.js +20 -2
  339. package/dist/orchestrate/pivot.js.map +1 -1
  340. package/dist/orchestration/spawn.d.ts +89 -0
  341. package/dist/orchestration/spawn.d.ts.map +1 -1
  342. package/dist/orchestration/spawn.js +68 -0
  343. package/dist/orchestration/spawn.js.map +1 -1
  344. package/dist/playbooks/cantbook-profile.d.ts +96 -0
  345. package/dist/playbooks/cantbook-profile.d.ts.map +1 -0
  346. package/dist/playbooks/cantbook-profile.js +97 -0
  347. package/dist/playbooks/cantbook-profile.js.map +1 -0
  348. package/dist/playbooks/guarded-deterministic-runner.d.ts +153 -0
  349. package/dist/playbooks/guarded-deterministic-runner.d.ts.map +1 -0
  350. package/dist/playbooks/guarded-deterministic-runner.js +155 -0
  351. package/dist/playbooks/guarded-deterministic-runner.js.map +1 -0
  352. package/dist/playbooks/index.d.ts +2 -0
  353. package/dist/playbooks/index.d.ts.map +1 -1
  354. package/dist/playbooks/index.js +10 -0
  355. package/dist/playbooks/index.js.map +1 -1
  356. package/dist/playbooks/pi-runner-wiring.d.ts +75 -0
  357. package/dist/playbooks/pi-runner-wiring.d.ts.map +1 -0
  358. package/dist/playbooks/pi-runner-wiring.js +82 -0
  359. package/dist/playbooks/pi-runner-wiring.js.map +1 -0
  360. package/dist/release/engine-ops.js +2 -2
  361. package/dist/release/engine-ops.js.map +1 -1
  362. package/dist/routing/capability-matrix.d.ts.map +1 -1
  363. package/dist/routing/capability-matrix.js +0 -57
  364. package/dist/routing/capability-matrix.js.map +1 -1
  365. package/dist/runtime/openapi/generate-openapi.d.ts +211 -0
  366. package/dist/runtime/openapi/generate-openapi.d.ts.map +1 -0
  367. package/dist/runtime/openapi/generate-openapi.js +300 -0
  368. package/dist/runtime/openapi/generate-openapi.js.map +1 -0
  369. package/dist/runtime/openapi/index.d.ts +16 -0
  370. package/dist/runtime/openapi/index.d.ts.map +1 -0
  371. package/dist/runtime/openapi/index.js +16 -0
  372. package/dist/runtime/openapi/index.js.map +1 -0
  373. package/dist/selfimprove/budget.d.ts +206 -0
  374. package/dist/selfimprove/budget.d.ts.map +1 -0
  375. package/dist/selfimprove/budget.js +203 -0
  376. package/dist/selfimprove/budget.js.map +1 -0
  377. package/dist/selfimprove/dhq-adapter.d.ts +105 -0
  378. package/dist/selfimprove/dhq-adapter.d.ts.map +1 -0
  379. package/dist/selfimprove/dhq-adapter.js +95 -0
  380. package/dist/selfimprove/dhq-adapter.js.map +1 -0
  381. package/dist/selfimprove/draft-pr.d.ts +129 -0
  382. package/dist/selfimprove/draft-pr.d.ts.map +1 -0
  383. package/dist/selfimprove/draft-pr.js +158 -0
  384. package/dist/selfimprove/draft-pr.js.map +1 -0
  385. package/dist/selfimprove/envelope-diff.d.ts +162 -0
  386. package/dist/selfimprove/envelope-diff.d.ts.map +1 -0
  387. package/dist/selfimprove/envelope-diff.js +321 -0
  388. package/dist/selfimprove/envelope-diff.js.map +1 -0
  389. package/dist/selfimprove/replay.d.ts +121 -0
  390. package/dist/selfimprove/replay.d.ts.map +1 -0
  391. package/dist/selfimprove/replay.js +109 -0
  392. package/dist/selfimprove/replay.js.map +1 -0
  393. package/dist/selfimprove/run-loop.d.ts +148 -0
  394. package/dist/selfimprove/run-loop.d.ts.map +1 -0
  395. package/dist/selfimprove/run-loop.js +240 -0
  396. package/dist/selfimprove/run-loop.js.map +1 -0
  397. package/dist/selfimprove/scenario.d.ts +145 -0
  398. package/dist/selfimprove/scenario.d.ts.map +1 -0
  399. package/dist/selfimprove/scenario.js +243 -0
  400. package/dist/selfimprove/scenario.js.map +1 -0
  401. package/dist/selfimprove/scenarios/dhq-replay-find/golden.json +32 -0
  402. package/dist/selfimprove/scenarios/dhq-replay-find/scenario.json +18 -0
  403. package/dist/sentient/daemon-entry.js +5 -0
  404. package/dist/sentient/daemon-entry.js.map +1 -1
  405. package/dist/sentient/daemon.d.ts.map +1 -1
  406. package/dist/sentient/daemon.js +19 -0
  407. package/dist/sentient/daemon.js.map +1 -1
  408. package/dist/sentient/hygiene-scan.d.ts.map +1 -1
  409. package/dist/sentient/hygiene-scan.js +14 -6
  410. package/dist/sentient/hygiene-scan.js.map +1 -1
  411. package/dist/sessions/briefing.d.ts.map +1 -1
  412. package/dist/sessions/briefing.js +13 -9
  413. package/dist/sessions/briefing.js.map +1 -1
  414. package/dist/sessions/connection-session-handle.d.ts +161 -0
  415. package/dist/sessions/connection-session-handle.d.ts.map +1 -0
  416. package/dist/sessions/connection-session-handle.js +168 -0
  417. package/dist/sessions/connection-session-handle.js.map +1 -0
  418. package/dist/sessions/handoff.d.ts.map +1 -1
  419. package/dist/sessions/handoff.js +9 -0
  420. package/dist/sessions/handoff.js.map +1 -1
  421. package/dist/sessions/index.d.ts +4 -1
  422. package/dist/sessions/index.d.ts.map +1 -1
  423. package/dist/sessions/index.js +31 -1
  424. package/dist/sessions/index.js.map +1 -1
  425. package/dist/sessions/session-id.d.ts +34 -0
  426. package/dist/sessions/session-id.d.ts.map +1 -1
  427. package/dist/sessions/session-id.js +37 -0
  428. package/dist/sessions/session-id.js.map +1 -1
  429. package/dist/sessions/session-manifest-mirror.d.ts +115 -0
  430. package/dist/sessions/session-manifest-mirror.d.ts.map +1 -0
  431. package/dist/sessions/session-manifest-mirror.js +250 -0
  432. package/dist/sessions/session-manifest-mirror.js.map +1 -0
  433. package/dist/sessions/session-switch.d.ts.map +1 -1
  434. package/dist/sessions/session-switch.js +5 -2
  435. package/dist/sessions/session-switch.js.map +1 -1
  436. package/dist/setup/config-json-merge.d.ts.map +1 -1
  437. package/dist/setup/config-json-merge.js +14 -0
  438. package/dist/setup/config-json-merge.js.map +1 -1
  439. package/dist/setup/index.d.ts +23 -11
  440. package/dist/setup/index.d.ts.map +1 -1
  441. package/dist/setup/index.js +25 -12
  442. package/dist/setup/index.js.map +1 -1
  443. package/dist/setup/sections/llm.d.ts +28 -1
  444. package/dist/setup/sections/llm.d.ts.map +1 -1
  445. package/dist/setup/sections/llm.js +27 -6
  446. package/dist/setup/sections/llm.js.map +1 -1
  447. package/dist/setup/sections/models-roles.d.ts +40 -0
  448. package/dist/setup/sections/models-roles.d.ts.map +1 -0
  449. package/dist/setup/sections/models-roles.js +219 -0
  450. package/dist/setup/sections/models-roles.js.map +1 -0
  451. package/dist/setup/wizard.d.ts +19 -1
  452. package/dist/setup/wizard.d.ts.map +1 -1
  453. package/dist/setup/wizard.js.map +1 -1
  454. package/dist/store/converters.d.ts.map +1 -1
  455. package/dist/store/converters.js +2 -0
  456. package/dist/store/converters.js.map +1 -1
  457. package/dist/store/db-helpers.d.ts.map +1 -1
  458. package/dist/store/db-helpers.js +2 -0
  459. package/dist/store/db-helpers.js.map +1 -1
  460. package/dist/store/dual-scope-db.d.ts.map +1 -1
  461. package/dist/store/dual-scope-db.js +87 -47
  462. package/dist/store/dual-scope-db.js.map +1 -1
  463. package/dist/store/pi-session-store.d.ts +151 -0
  464. package/dist/store/pi-session-store.d.ts.map +1 -0
  465. package/dist/store/pi-session-store.js +166 -0
  466. package/dist/store/pi-session-store.js.map +1 -0
  467. package/dist/store/safety-data-accessor.d.ts +1 -0
  468. package/dist/store/safety-data-accessor.d.ts.map +1 -1
  469. package/dist/store/safety-data-accessor.js +5 -0
  470. package/dist/store/safety-data-accessor.js.map +1 -1
  471. package/dist/store/schedule-schema.d.ts +195 -0
  472. package/dist/store/schedule-schema.d.ts.map +1 -0
  473. package/dist/store/schedule-schema.js +84 -0
  474. package/dist/store/schedule-schema.js.map +1 -0
  475. package/dist/store/schedule-store.d.ts +144 -0
  476. package/dist/store/schedule-store.d.ts.map +1 -0
  477. package/dist/store/schedule-store.js +162 -0
  478. package/dist/store/schedule-store.js.map +1 -0
  479. package/dist/store/schema/attachments.d.ts +1 -1
  480. package/dist/store/schema/cleo-global/accounts.d.ts +357 -0
  481. package/dist/store/schema/cleo-global/accounts.d.ts.map +1 -0
  482. package/dist/store/schema/cleo-global/accounts.js +136 -0
  483. package/dist/store/schema/cleo-global/accounts.js.map +1 -0
  484. package/dist/store/schema/cleo-global/index.d.ts +5 -0
  485. package/dist/store/schema/cleo-global/index.d.ts.map +1 -1
  486. package/dist/store/schema/cleo-global/index.js +7 -0
  487. package/dist/store/schema/cleo-global/index.js.map +1 -1
  488. package/dist/store/schema/cleo-global/models-catalog.d.ts +359 -0
  489. package/dist/store/schema/cleo-global/models-catalog.d.ts.map +1 -0
  490. package/dist/store/schema/cleo-global/models-catalog.js +114 -0
  491. package/dist/store/schema/cleo-global/models-catalog.js.map +1 -0
  492. package/dist/store/schema/cleo-global/providers.d.ts +279 -0
  493. package/dist/store/schema/cleo-global/providers.d.ts.map +1 -0
  494. package/dist/store/schema/cleo-global/providers.js +94 -0
  495. package/dist/store/schema/cleo-global/providers.js.map +1 -0
  496. package/dist/store/schema/cleo-global/services.d.ts +493 -0
  497. package/dist/store/schema/cleo-global/services.d.ts.map +1 -0
  498. package/dist/store/schema/cleo-global/services.js +200 -0
  499. package/dist/store/schema/cleo-global/services.js.map +1 -0
  500. package/dist/store/schema/cleo-global/session-manifest.d.ts +217 -0
  501. package/dist/store/schema/cleo-global/session-manifest.d.ts.map +1 -0
  502. package/dist/store/schema/cleo-global/session-manifest.js +99 -0
  503. package/dist/store/schema/cleo-global/session-manifest.js.map +1 -0
  504. package/dist/store/schema/cleo-project/docs.d.ts +1 -1
  505. package/dist/store/schema/cleo-project/provenance-rest.d.ts +1 -1
  506. package/dist/store/schema/cleo-project/tasks-core.d.ts +16 -0
  507. package/dist/store/schema/cleo-project/tasks-core.d.ts.map +1 -1
  508. package/dist/store/schema/cleo-project/tasks-core.js +14 -0
  509. package/dist/store/schema/cleo-project/tasks-core.js.map +1 -1
  510. package/dist/store/schema/cleo-shared/brain.d.ts +2 -2
  511. package/dist/store/schema/memory-schema.d.ts +182 -2
  512. package/dist/store/schema/memory-schema.d.ts.map +1 -1
  513. package/dist/store/schema/memory-schema.js +111 -2
  514. package/dist/store/schema/memory-schema.js.map +1 -1
  515. package/dist/store/schema/provenance/releases.d.ts +1 -1
  516. package/dist/store/schema/tasks.d.ts +16 -0
  517. package/dist/store/schema/tasks.d.ts.map +1 -1
  518. package/dist/store/schema/tasks.js +10 -0
  519. package/dist/store/schema/tasks.js.map +1 -1
  520. package/dist/store/selfimprove-dhq-schema.d.ts +284 -0
  521. package/dist/store/selfimprove-dhq-schema.d.ts.map +1 -0
  522. package/dist/store/selfimprove-dhq-schema.js +128 -0
  523. package/dist/store/selfimprove-dhq-schema.js.map +1 -0
  524. package/dist/store/selfimprove-dhq-store.d.ts +175 -0
  525. package/dist/store/selfimprove-dhq-store.d.ts.map +1 -0
  526. package/dist/store/selfimprove-dhq-store.js +182 -0
  527. package/dist/store/selfimprove-dhq-store.js.map +1 -0
  528. package/dist/store/service-connections-accessor.d.ts +313 -0
  529. package/dist/store/service-connections-accessor.d.ts.map +1 -0
  530. package/dist/store/service-connections-accessor.js +464 -0
  531. package/dist/store/service-connections-accessor.js.map +1 -0
  532. package/dist/store/service-host-matcher.d.ts +70 -0
  533. package/dist/store/service-host-matcher.d.ts.map +1 -0
  534. package/dist/store/service-host-matcher.js +127 -0
  535. package/dist/store/service-host-matcher.js.map +1 -0
  536. package/dist/store/service-injection.d.ts +152 -0
  537. package/dist/store/service-injection.d.ts.map +1 -0
  538. package/dist/store/service-injection.js +225 -0
  539. package/dist/store/service-injection.js.map +1 -0
  540. package/dist/store/service-oauth.d.ts +287 -0
  541. package/dist/store/service-oauth.d.ts.map +1 -0
  542. package/dist/store/service-oauth.js +524 -0
  543. package/dist/store/service-oauth.js.map +1 -0
  544. package/dist/store/service-trust-gate.d.ts +164 -0
  545. package/dist/store/service-trust-gate.d.ts.map +1 -0
  546. package/dist/store/service-trust-gate.js +122 -0
  547. package/dist/store/service-trust-gate.js.map +1 -0
  548. package/dist/store/session-store.d.ts +52 -13
  549. package/dist/store/session-store.d.ts.map +1 -1
  550. package/dist/store/session-store.js +71 -13
  551. package/dist/store/session-store.js.map +1 -1
  552. package/dist/store/sqlite-data-accessor.d.ts.map +1 -1
  553. package/dist/store/sqlite-data-accessor.js +7 -0
  554. package/dist/store/sqlite-data-accessor.js.map +1 -1
  555. package/dist/store/umbrella-data-accessor.d.ts +1 -0
  556. package/dist/store/umbrella-data-accessor.d.ts.map +1 -1
  557. package/dist/store/umbrella-data-accessor.js +5 -0
  558. package/dist/store/umbrella-data-accessor.js.map +1 -1
  559. package/dist/store/validation-schemas.d.ts +36 -4
  560. package/dist/store/validation-schemas.d.ts.map +1 -1
  561. package/dist/store/writer-lease-schema.d.ts +392 -0
  562. package/dist/store/writer-lease-schema.d.ts.map +1 -0
  563. package/dist/store/writer-lease-schema.js +142 -0
  564. package/dist/store/writer-lease-schema.js.map +1 -0
  565. package/dist/store/writer-lease.d.ts +368 -0
  566. package/dist/store/writer-lease.d.ts.map +1 -0
  567. package/dist/store/writer-lease.js +1002 -0
  568. package/dist/store/writer-lease.js.map +1 -0
  569. package/dist/tasks/agent-lifecycle-lane.d.ts +175 -0
  570. package/dist/tasks/agent-lifecycle-lane.d.ts.map +1 -0
  571. package/dist/tasks/agent-lifecycle-lane.js +176 -0
  572. package/dist/tasks/agent-lifecycle-lane.js.map +1 -0
  573. package/dist/tasks/backfill-child-projections.d.ts.map +1 -1
  574. package/dist/tasks/backfill-child-projections.js +14 -9
  575. package/dist/tasks/backfill-child-projections.js.map +1 -1
  576. package/dist/tasks/complete.d.ts +17 -0
  577. package/dist/tasks/complete.d.ts.map +1 -1
  578. package/dist/tasks/complete.js +60 -20
  579. package/dist/tasks/complete.js.map +1 -1
  580. package/dist/tasks/depends-waiver-audit.d.ts +52 -0
  581. package/dist/tasks/depends-waiver-audit.d.ts.map +1 -0
  582. package/dist/tasks/depends-waiver-audit.js +36 -0
  583. package/dist/tasks/depends-waiver-audit.js.map +1 -0
  584. package/dist/tasks/duplicate-detector.d.ts.map +1 -1
  585. package/dist/tasks/duplicate-detector.js +14 -7
  586. package/dist/tasks/duplicate-detector.js.map +1 -1
  587. package/dist/tasks/engine-wrap.d.ts +36 -2
  588. package/dist/tasks/engine-wrap.d.ts.map +1 -1
  589. package/dist/tasks/engine-wrap.js +44 -2
  590. package/dist/tasks/engine-wrap.js.map +1 -1
  591. package/dist/tasks/index.d.ts +1 -0
  592. package/dist/tasks/index.d.ts.map +1 -1
  593. package/dist/tasks/index.js +1 -0
  594. package/dist/tasks/index.js.map +1 -1
  595. package/dist/tasks/ops.d.ts +3 -0
  596. package/dist/tasks/ops.d.ts.map +1 -1
  597. package/dist/tasks/task-ops.d.ts +1 -1
  598. package/dist/tasks/task-ops.d.ts.map +1 -1
  599. package/dist/tasks/task-ops.js +3 -1
  600. package/dist/tasks/task-ops.js.map +1 -1
  601. package/dist/tasks/task-reparent.d.ts +90 -0
  602. package/dist/tasks/task-reparent.d.ts.map +1 -1
  603. package/dist/tasks/task-reparent.js +171 -0
  604. package/dist/tasks/task-reparent.js.map +1 -1
  605. package/dist/telemetry/index.d.ts.map +1 -1
  606. package/dist/telemetry/index.js +10 -4
  607. package/dist/telemetry/index.js.map +1 -1
  608. package/dist/tools/agent-registry.d.ts +250 -0
  609. package/dist/tools/agent-registry.d.ts.map +1 -0
  610. package/dist/tools/agent-registry.js +292 -0
  611. package/dist/tools/agent-registry.js.map +1 -0
  612. package/dist/tools/agent-tool-families.d.ts +107 -0
  613. package/dist/tools/agent-tool-families.d.ts.map +1 -0
  614. package/dist/tools/agent-tool-families.js +527 -0
  615. package/dist/tools/agent-tool-families.js.map +1 -0
  616. package/dist/tools/browser-driver.d.ts +183 -0
  617. package/dist/tools/browser-driver.d.ts.map +1 -0
  618. package/dist/tools/browser-driver.js +242 -0
  619. package/dist/tools/browser-driver.js.map +1 -0
  620. package/dist/tools/builtin-agent-tools.d.ts +36 -0
  621. package/dist/tools/builtin-agent-tools.d.ts.map +1 -0
  622. package/dist/tools/builtin-agent-tools.js +191 -0
  623. package/dist/tools/builtin-agent-tools.js.map +1 -0
  624. package/dist/tools/dispatch.d.ts +370 -0
  625. package/dist/tools/dispatch.d.ts.map +1 -0
  626. package/dist/tools/dispatch.js +505 -0
  627. package/dist/tools/dispatch.js.map +1 -0
  628. package/dist/tools/env-scrub.d.ts +93 -0
  629. package/dist/tools/env-scrub.d.ts.map +1 -0
  630. package/dist/tools/env-scrub.js +176 -0
  631. package/dist/tools/env-scrub.js.map +1 -0
  632. package/dist/tools/exec-code-agent-tool.d.ts +179 -0
  633. package/dist/tools/exec-code-agent-tool.d.ts.map +1 -0
  634. package/dist/tools/exec-code-agent-tool.js +239 -0
  635. package/dist/tools/exec-code-agent-tool.js.map +1 -0
  636. package/dist/tools/fs.d.ts +30 -0
  637. package/dist/tools/fs.d.ts.map +1 -1
  638. package/dist/tools/fs.js +55 -2
  639. package/dist/tools/fs.js.map +1 -1
  640. package/dist/tools/guard.d.ts +15 -0
  641. package/dist/tools/guard.d.ts.map +1 -1
  642. package/dist/tools/guard.js +49 -12
  643. package/dist/tools/guard.js.map +1 -1
  644. package/dist/tools/index.d.ts +16 -0
  645. package/dist/tools/index.d.ts.map +1 -1
  646. package/dist/tools/index.js +52 -0
  647. package/dist/tools/index.js.map +1 -1
  648. package/dist/tools/mcp-agent-tool.d.ts +189 -0
  649. package/dist/tools/mcp-agent-tool.d.ts.map +1 -0
  650. package/dist/tools/mcp-agent-tool.js +243 -0
  651. package/dist/tools/mcp-agent-tool.js.map +1 -0
  652. package/dist/tools/media-agent-tools.d.ts +105 -0
  653. package/dist/tools/media-agent-tools.d.ts.map +1 -0
  654. package/dist/tools/media-agent-tools.js +255 -0
  655. package/dist/tools/media-agent-tools.js.map +1 -0
  656. package/dist/tools/memory-agent-tools.d.ts +99 -0
  657. package/dist/tools/memory-agent-tools.d.ts.map +1 -0
  658. package/dist/tools/memory-agent-tools.js +190 -0
  659. package/dist/tools/memory-agent-tools.js.map +1 -0
  660. package/dist/tools/pty.d.ts +45 -0
  661. package/dist/tools/pty.d.ts.map +1 -0
  662. package/dist/tools/pty.js +166 -0
  663. package/dist/tools/pty.js.map +1 -0
  664. package/dist/tools/schedule-agent-tools.d.ts +151 -0
  665. package/dist/tools/schedule-agent-tools.d.ts.map +1 -0
  666. package/dist/tools/schedule-agent-tools.js +238 -0
  667. package/dist/tools/schedule-agent-tools.js.map +1 -0
  668. package/dist/tools/schema-gen.d.ts +57 -0
  669. package/dist/tools/schema-gen.d.ts.map +1 -0
  670. package/dist/tools/schema-gen.js +52 -0
  671. package/dist/tools/schema-gen.js.map +1 -0
  672. package/dist/tools/shell.d.ts +12 -0
  673. package/dist/tools/shell.d.ts.map +1 -1
  674. package/dist/tools/shell.js +14 -1
  675. package/dist/tools/shell.js.map +1 -1
  676. package/dist/tools/skill-agent-tool.d.ts +108 -0
  677. package/dist/tools/skill-agent-tool.d.ts.map +1 -0
  678. package/dist/tools/skill-agent-tool.js +135 -0
  679. package/dist/tools/skill-agent-tool.js.map +1 -0
  680. package/dist/tools/web-agent-tools.d.ts +72 -0
  681. package/dist/tools/web-agent-tools.d.ts.map +1 -0
  682. package/dist/tools/web-agent-tools.js +393 -0
  683. package/dist/tools/web-agent-tools.js.map +1 -0
  684. package/dist/tools/web-search-backends.d.ts +156 -0
  685. package/dist/tools/web-search-backends.d.ts.map +1 -0
  686. package/dist/tools/web-search-backends.js +290 -0
  687. package/dist/tools/web-search-backends.js.map +1 -0
  688. package/dist/validation/engine-ops.d.ts.map +1 -1
  689. package/dist/validation/engine-ops.js +17 -1
  690. package/dist/validation/engine-ops.js.map +1 -1
  691. package/dist/validation/ops.d.ts +1 -15
  692. package/dist/validation/ops.d.ts.map +1 -1
  693. package/dist/validation/ops.js +0 -20
  694. package/dist/validation/ops.js.map +1 -1
  695. package/migrations/drizzle-brain/20260610000001_t10405-bitemporal-network-columns/migration.sql +71 -0
  696. package/migrations/drizzle-cleo-global/20260607000000_t11891-writer-leases/migration.sql +55 -0
  697. package/migrations/drizzle-cleo-global/20260607010000_t11639-session-manifest/migration.sql +43 -0
  698. package/migrations/drizzle-cleo-global/20260608000000_t11899-pi-session-tree/migration.sql +52 -0
  699. package/migrations/drizzle-cleo-global/20260608010000_t11709-accounts-credential-pool/migration.sql +72 -0
  700. package/migrations/drizzle-cleo-global/20260608020000_t11889-selfimprove-dhq/migration.sql +64 -0
  701. package/migrations/drizzle-cleo-global/20260609000000_t11937-service-vault/migration.sql +93 -0
  702. package/migrations/drizzle-cleo-global/20260609010000_t11733-models-catalog/migration.sql +65 -0
  703. package/migrations/drizzle-cleo-global/20260609020000_t11703-providers/migration.sql +52 -0
  704. package/migrations/drizzle-cleo-global/20260610000000_t11962-schedules/migration.sql +48 -0
  705. package/migrations/drizzle-cleo-project/20260607000000_t11891-writer-leases/migration.sql +55 -0
  706. package/migrations/drizzle-cleo-project/20260607010000_t11639-session-parent/migration.sql +22 -0
  707. package/migrations/drizzle-cleo-project/20260608000000_t11899-pi-session-tree/migration.sql +52 -0
  708. package/migrations/drizzle-cleo-project/20260608020000_t11889-selfimprove-dhq/migration.sql +64 -0
  709. package/migrations/drizzle-cleo-project/20260610000000_t11962-schedules/migration.sql +48 -0
  710. package/package.json +26 -14
  711. package/dist/lifecycle/chain-composition.d.ts +0 -30
  712. package/dist/lifecycle/chain-composition.d.ts.map +0 -1
  713. package/dist/lifecycle/chain-composition.js +0 -152
  714. package/dist/lifecycle/chain-composition.js.map +0 -1
  715. package/dist/lifecycle/chain-store.d.ts +0 -70
  716. package/dist/lifecycle/chain-store.d.ts.map +0 -1
  717. package/dist/lifecycle/chain-store.js +0 -246
  718. package/dist/lifecycle/chain-store.js.map +0 -1
  719. package/dist/lifecycle/default-chain.d.ts +0 -39
  720. package/dist/lifecycle/default-chain.d.ts.map +0 -1
  721. package/dist/lifecycle/default-chain.js +0 -176
  722. package/dist/lifecycle/default-chain.js.map +0 -1
  723. package/dist/lifecycle/tessera-engine.d.ts +0 -48
  724. package/dist/lifecycle/tessera-engine.d.ts.map +0 -1
  725. package/dist/lifecycle/tessera-engine.js +0 -249
  726. package/dist/lifecycle/tessera-engine.js.map +0 -1
  727. package/dist/validation/chain-validation.d.ts +0 -43
  728. package/dist/validation/chain-validation.d.ts.map +0 -1
  729. package/dist/validation/chain-validation.js +0 -146
  730. package/dist/validation/chain-validation.js.map +0 -1
@@ -0,0 +1,151 @@
1
+ /**
2
+ * Cron / todo agent-tool family — `todo_add` / `todo_list` / `cron_schedule`
3
+ * (T11950 · M7 · epic T11456 · SG-TOOLS).
4
+ *
5
+ * Surfaces the EXISTING task store to the agent loop as `agent`-toolset tools that
6
+ * work daemon-OFF:
7
+ *
8
+ * - **`todo_add`** — create a task, DELEGATING to the existing
9
+ * {@link import('../tasks/ops.js')}'s `tasksAddOp` (the same path `cleo add`
10
+ * uses). No new table, no new schema.
11
+ * - **`todo_list`** — list tasks, DELEGATING to `tasksListOp` (the same path
12
+ * `cleo list` uses).
13
+ * - **`cron_schedule`** — register a recurring schedule. The schedule store now
14
+ * exists (the `schedules` table + leased Gate-3 accessor `store/schedule-store.ts`,
15
+ * T11962 under T11679), so this tool DELEGATES to {@link ScheduleStore.add} and
16
+ * persists a row daemon-OFF (a future daemon scheduler consumes the SAME table
17
+ * as a separate reader). It stays REGISTERED-but-capability-gated: its
18
+ * {@link AvailabilityCheck} hides it until a host advertises a schedule store
19
+ * (`capabilities.scheduleStore === true`) so a host that has opted out of the
20
+ * schedule domain does not surface it; invoking it without the store still
21
+ * returns a typed `E_SCHEDULE_STORE_UNAVAILABLE` failure. `todo_*` are always
22
+ * available daemon-OFF.
23
+ *
24
+ * ## Why a seam, not a hardcoded import (testing + Gate-11)
25
+ *
26
+ * The task ops are injected through the {@link TaskOps} seam, defaulting to the
27
+ * real `ops` functions. The unit test injects a FAKE store and asserts delegation
28
+ * + schema validation WITHOUT opening a real `tasks.db`. The tools are DEFINED
29
+ * here under `packages/core/src/tools` and CONSUME the task subsystem — they
30
+ * construct no new atomic primitive (Gate-11).
31
+ *
32
+ * ## Gate-13
33
+ *
34
+ * No model/transport/provider client is constructed here — task CRUD is a local
35
+ * SQLite operation. There is no chokepoint concern.
36
+ *
37
+ * @epic T11456
38
+ * @task T11950
39
+ * @see ../tasks/ops.js — `tasksAddOp` / `tasksListOp` (the ops this family delegates to)
40
+ * @see ./exec-code-agent-tool.js — the injectable-seam + capability-gated availability pattern mirrored here
41
+ */
42
+ import type { TaskPriority, TaskStatus, TaskType } from '@cleocode/contracts';
43
+ import type { AddTaskResult } from '../tasks/add.js';
44
+ import type { ListTasksResult } from '../tasks/list.js';
45
+ import { type AgentToolRegistry, type AvailabilityCheck } from './agent-registry.js';
46
+ /**
47
+ * The task store operations the `todo_*` tools delegate to. Each member has the
48
+ * SAME signature as the corresponding `ops` function. Injectable so the unit test
49
+ * can supply a fake store; defaults to the real ops in production.
50
+ */
51
+ export interface TaskOps {
52
+ /** Create a task (→ `tasksAddOp`). */
53
+ readonly add: (projectRoot: string, params: {
54
+ title: string;
55
+ description?: string;
56
+ parent?: string;
57
+ priority?: TaskPriority;
58
+ type?: TaskType;
59
+ acceptance?: string[];
60
+ }) => Promise<AddTaskResult>;
61
+ /** List tasks (→ `tasksListOp`). */
62
+ readonly list: (projectRoot: string, params: {
63
+ parent?: string;
64
+ status?: TaskStatus;
65
+ priority?: TaskPriority;
66
+ type?: TaskType;
67
+ limit?: number;
68
+ }) => Promise<ListTasksResult>;
69
+ }
70
+ /**
71
+ * The result `cron_schedule` returns: on success the minted `scheduleId` of the
72
+ * persisted row; on failure a typed, non-throwing error (e.g. when no schedule
73
+ * store backs the host). The tool is registered (catalog-stable) and gated on the
74
+ * `scheduleStore` host capability.
75
+ */
76
+ export interface CronScheduleResult {
77
+ /** Whether a schedule row was registered. */
78
+ readonly ok: boolean;
79
+ /** The registered schedule's ID (present on success). */
80
+ readonly scheduleId?: string;
81
+ /** A stable code + message for why scheduling failed (present on failure). */
82
+ readonly error?: {
83
+ readonly code: string;
84
+ readonly message: string;
85
+ };
86
+ }
87
+ /**
88
+ * The schedule-store operation the `cron_schedule` tool delegates to. Injectable
89
+ * so the unit test can supply a fake store; defaults to the real Gate-3 accessor
90
+ * (`store/schedule-store.ts`) opened through the {@link openDualScopeDb} chokepoint.
91
+ */
92
+ export interface ScheduleStore {
93
+ /**
94
+ * Register a recurring schedule and return its minted opaque handle.
95
+ *
96
+ * @param projectRoot - The project root whose `cleo.db` the schedule persists in.
97
+ * @param params - The cron expression + task template (title / description).
98
+ * @returns The minted `sched-<token>` handle.
99
+ */
100
+ readonly add: (projectRoot: string, params: {
101
+ cron: string;
102
+ title: string;
103
+ description?: string;
104
+ }) => Promise<string>;
105
+ }
106
+ /**
107
+ * Available only when the host advertises a schedule store
108
+ * (`capabilities.scheduleStore === true`). The schedule store now EXISTS (the
109
+ * `schedules` table + leased Gate-3 accessor, T11962 under T11679), so the gate is
110
+ * a host POLICY/capability switch — a host that has opted out of the schedule
111
+ * domain does not surface `cron_schedule`. Registration of a schedule row persists
112
+ * WITHOUT a live daemon (the chokepoint serializes the single in-process writer);
113
+ * a future daemon scheduler consumes the same table as a separate reader.
114
+ */
115
+ export declare const scheduleStoreAvailable: AvailabilityCheck;
116
+ /** Options for {@link registerScheduleAgentTools} — all injectable for testing. */
117
+ export interface ScheduleAgentToolOptions {
118
+ /** The task ops seam. Defaults to the real `tasksAddOp` / `tasksListOp`. */
119
+ readonly tasks?: TaskOps;
120
+ /**
121
+ * The schedule-store seam `cron_schedule` delegates to. Defaults to the real
122
+ * Gate-3 accessor (`store/schedule-store.ts`). Injected in tests with a fake
123
+ * store so registration is asserted WITHOUT opening a real `cleo.db`.
124
+ */
125
+ readonly schedule?: ScheduleStore;
126
+ /**
127
+ * The project root threaded into every op (defaults to the resolved project
128
+ * root via {@link resolveOrCwd} — never a bare `process.cwd()` in core, T9584).
129
+ */
130
+ readonly projectRoot?: string;
131
+ }
132
+ /**
133
+ * Register the cron / todo agent-tool family into `registry`. Pure registration —
134
+ * no `tasks.db` is opened, no row is written here; all of that happens later
135
+ * inside each tool's `execute` through the injected (or lazily-resolved real)
136
+ * ops. Import-time side-effect-free.
137
+ *
138
+ * @param registry - The registry to populate.
139
+ * @param options - Injectable task ops / project root (for testing).
140
+ */
141
+ export declare function registerScheduleAgentTools(registry: AgentToolRegistry, options?: ScheduleAgentToolOptions): void;
142
+ /**
143
+ * Self-registration marker (AC1) — the identifier the
144
+ * {@link AgentToolRegistry.discover} bounded source scan greps for. Aliases
145
+ * {@link registerScheduleAgentTools} so a future scan-dir discovery (or the
146
+ * built-in aggregator) can call it uniformly with the other agent-tool modules.
147
+ *
148
+ * @param registry - The registry to populate.
149
+ */
150
+ export declare function registerAgentTools(registry: AgentToolRegistry): void;
151
+ //# sourceMappingURL=schedule-agent-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedule-agent-tools.d.ts","sourceRoot":"","sources":["../../src/tools/schedule-agent-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAG9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EACL,KAAK,iBAAiB,EAEtB,KAAK,iBAAiB,EACvB,MAAM,qBAAqB,CAAC;AAE7B;;;;GAIG;AACH,MAAM,WAAW,OAAO;IACtB,sCAAsC;IACtC,QAAQ,CAAC,GAAG,EAAE,CACZ,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,YAAY,CAAC;QACxB,IAAI,CAAC,EAAE,QAAQ,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;KACvB,KACE,OAAO,CAAC,aAAa,CAAC,CAAC;IAC5B,oCAAoC;IACpC,QAAQ,CAAC,IAAI,EAAE,CACb,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE;QACN,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,UAAU,CAAC;QACpB,QAAQ,CAAC,EAAE,YAAY,CAAC;QACxB,IAAI,CAAC,EAAE,QAAQ,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,KACE,OAAO,CAAC,eAAe,CAAC,CAAC;CAC/B;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,yDAAyD;IACzD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,8EAA8E;IAC9E,QAAQ,CAAC,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CACtE;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;;OAMG;IACH,QAAQ,CAAC,GAAG,EAAE,CACZ,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,KAC1D,OAAO,CAAC,MAAM,CAAC,CAAC;CACtB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,EAAE,iBACK,CAAC;AAE3C,mFAAmF;AACnF,MAAM,WAAW,wBAAwB;IACvC,4EAA4E;IAC5E,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;IAClC;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAwCD;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,GAAE,wBAA6B,GACrC,IAAI,CAwIN;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAEpE"}
@@ -0,0 +1,238 @@
1
+ /**
2
+ * Cron / todo agent-tool family — `todo_add` / `todo_list` / `cron_schedule`
3
+ * (T11950 · M7 · epic T11456 · SG-TOOLS).
4
+ *
5
+ * Surfaces the EXISTING task store to the agent loop as `agent`-toolset tools that
6
+ * work daemon-OFF:
7
+ *
8
+ * - **`todo_add`** — create a task, DELEGATING to the existing
9
+ * {@link import('../tasks/ops.js')}'s `tasksAddOp` (the same path `cleo add`
10
+ * uses). No new table, no new schema.
11
+ * - **`todo_list`** — list tasks, DELEGATING to `tasksListOp` (the same path
12
+ * `cleo list` uses).
13
+ * - **`cron_schedule`** — register a recurring schedule. The schedule store now
14
+ * exists (the `schedules` table + leased Gate-3 accessor `store/schedule-store.ts`,
15
+ * T11962 under T11679), so this tool DELEGATES to {@link ScheduleStore.add} and
16
+ * persists a row daemon-OFF (a future daemon scheduler consumes the SAME table
17
+ * as a separate reader). It stays REGISTERED-but-capability-gated: its
18
+ * {@link AvailabilityCheck} hides it until a host advertises a schedule store
19
+ * (`capabilities.scheduleStore === true`) so a host that has opted out of the
20
+ * schedule domain does not surface it; invoking it without the store still
21
+ * returns a typed `E_SCHEDULE_STORE_UNAVAILABLE` failure. `todo_*` are always
22
+ * available daemon-OFF.
23
+ *
24
+ * ## Why a seam, not a hardcoded import (testing + Gate-11)
25
+ *
26
+ * The task ops are injected through the {@link TaskOps} seam, defaulting to the
27
+ * real `ops` functions. The unit test injects a FAKE store and asserts delegation
28
+ * + schema validation WITHOUT opening a real `tasks.db`. The tools are DEFINED
29
+ * here under `packages/core/src/tools` and CONSUME the task subsystem — they
30
+ * construct no new atomic primitive (Gate-11).
31
+ *
32
+ * ## Gate-13
33
+ *
34
+ * No model/transport/provider client is constructed here — task CRUD is a local
35
+ * SQLite operation. There is no chokepoint concern.
36
+ *
37
+ * @epic T11456
38
+ * @task T11950
39
+ * @see ../tasks/ops.js — `tasksAddOp` / `tasksListOp` (the ops this family delegates to)
40
+ * @see ./exec-code-agent-tool.js — the injectable-seam + capability-gated availability pattern mirrored here
41
+ */
42
+ import { z } from 'zod';
43
+ import { resolveOrCwd } from '../paths.js';
44
+ import { ALWAYS_AVAILABLE, } from './agent-registry.js';
45
+ /**
46
+ * Available only when the host advertises a schedule store
47
+ * (`capabilities.scheduleStore === true`). The schedule store now EXISTS (the
48
+ * `schedules` table + leased Gate-3 accessor, T11962 under T11679), so the gate is
49
+ * a host POLICY/capability switch — a host that has opted out of the schedule
50
+ * domain does not surface `cron_schedule`. Registration of a schedule row persists
51
+ * WITHOUT a live daemon (the chokepoint serializes the single in-process writer);
52
+ * a future daemon scheduler consumes the same table as a separate reader.
53
+ */
54
+ export const scheduleStoreAvailable = (ctx) => ctx.capabilities?.scheduleStore === true;
55
+ /**
56
+ * Build the real task-ops seam by lazily importing the existing `ops` module.
57
+ * Lazy so this tool module stays import-time side-effect-free; the import happens
58
+ * only when the real ops are first needed.
59
+ *
60
+ * @returns The production {@link TaskOps}.
61
+ */
62
+ async function realTaskOps() {
63
+ const { tasksAddOp, tasksListOp } = await import('../tasks/ops.js');
64
+ return {
65
+ add: (root, params) => tasksAddOp(root, params),
66
+ list: (root, params) => tasksListOp(root, params),
67
+ };
68
+ }
69
+ /**
70
+ * Build the real schedule-store seam by lazily importing the Gate-3 accessor.
71
+ * Lazy so this tool module stays import-time side-effect-free; the import (and the
72
+ * `cleo.db` open) happens only when `cron_schedule` first fires. The accessor
73
+ * routes through {@link openDualScopeDb} (the dual-scope chokepoint) — it NEVER
74
+ * opens a raw handle.
75
+ *
76
+ * @returns The production {@link ScheduleStore}.
77
+ */
78
+ async function realScheduleStore() {
79
+ const { getScheduleNativeDb, addSchedule } = await import('../store/schedule-store.js');
80
+ return {
81
+ add: async (root, params) => {
82
+ const native = await getScheduleNativeDb(root);
83
+ return addSchedule(native, {
84
+ cronExpr: params.cron,
85
+ title: params.title,
86
+ description: params.description,
87
+ });
88
+ },
89
+ };
90
+ }
91
+ /**
92
+ * Register the cron / todo agent-tool family into `registry`. Pure registration —
93
+ * no `tasks.db` is opened, no row is written here; all of that happens later
94
+ * inside each tool's `execute` through the injected (or lazily-resolved real)
95
+ * ops. Import-time side-effect-free.
96
+ *
97
+ * @param registry - The registry to populate.
98
+ * @param options - Injectable task ops / project root (for testing).
99
+ */
100
+ export function registerScheduleAgentTools(registry, options = {}) {
101
+ const projectRoot = resolveOrCwd(options.projectRoot);
102
+ // --- todo_add (→ tasksAddOp) ---------------------------------------------
103
+ registry.register({
104
+ name: 'todo_add',
105
+ // 'fs' — persists a row to the local tasks store (its strongest side-effect surface).
106
+ class: 'fs',
107
+ description: 'Add a task (todo) to the project task store. Delegates to the same path as `cleo add`. ' +
108
+ 'Returns the created task. Always available daemon-OFF.',
109
+ toolset: 'agent',
110
+ stateless: false,
111
+ available: ALWAYS_AVAILABLE,
112
+ parameters: z.object({
113
+ title: z.string().describe('The task title.'),
114
+ description: z.string().optional().describe('A longer task description.'),
115
+ parent: z.string().optional().describe('Parent task/epic ID to nest this task under.'),
116
+ priority: z
117
+ .enum(['critical', 'high', 'medium', 'low'])
118
+ .optional()
119
+ .describe('Task priority (default medium).'),
120
+ acceptance: z
121
+ .array(z.string())
122
+ .optional()
123
+ .describe('Acceptance criteria — one entry per criterion.'),
124
+ }),
125
+ execute: async (rawArgs) => {
126
+ const tasks = options.tasks ?? (await realTaskOps());
127
+ const title = String(rawArgs.title);
128
+ const description = rawArgs.description === undefined ? undefined : String(rawArgs.description);
129
+ const parent = rawArgs.parent === undefined ? undefined : String(rawArgs.parent);
130
+ const priority = rawArgs.priority === 'critical' ||
131
+ rawArgs.priority === 'high' ||
132
+ rawArgs.priority === 'medium' ||
133
+ rawArgs.priority === 'low'
134
+ ? rawArgs.priority
135
+ : undefined;
136
+ const acceptance = Array.isArray(rawArgs.acceptance)
137
+ ? rawArgs.acceptance.map(String)
138
+ : undefined;
139
+ return tasks.add(projectRoot, {
140
+ title,
141
+ description,
142
+ parent,
143
+ priority,
144
+ type: 'task',
145
+ acceptance,
146
+ });
147
+ },
148
+ });
149
+ // --- todo_list (→ tasksListOp) -------------------------------------------
150
+ registry.register({
151
+ name: 'todo_list',
152
+ // 'search' — a local read-query of the tasks store.
153
+ class: 'search',
154
+ description: 'List tasks (todos) from the project task store, optionally filtered by parent / status / ' +
155
+ 'priority. Delegates to the same path as `cleo list`. Always available daemon-OFF.',
156
+ toolset: 'agent',
157
+ stateless: true,
158
+ available: ALWAYS_AVAILABLE,
159
+ parameters: z.object({
160
+ parent: z.string().optional().describe('Only list direct children of this task/epic ID.'),
161
+ status: z.string().optional().describe('Filter by status (e.g. pending, in_progress, done).'),
162
+ priority: z
163
+ .enum(['critical', 'high', 'medium', 'low'])
164
+ .optional()
165
+ .describe('Filter by priority.'),
166
+ limit: z.number().int().positive().optional().describe('Maximum number of tasks to return.'),
167
+ }),
168
+ execute: async (rawArgs) => {
169
+ const tasks = options.tasks ?? (await realTaskOps());
170
+ const parent = rawArgs.parent === undefined ? undefined : String(rawArgs.parent);
171
+ const status = rawArgs.status === undefined ? undefined : String(rawArgs.status);
172
+ const priority = rawArgs.priority === 'critical' ||
173
+ rawArgs.priority === 'high' ||
174
+ rawArgs.priority === 'medium' ||
175
+ rawArgs.priority === 'low'
176
+ ? rawArgs.priority
177
+ : undefined;
178
+ const limit = typeof rawArgs.limit === 'number' ? rawArgs.limit : undefined;
179
+ return tasks.list(projectRoot, { parent, status, priority, limit });
180
+ },
181
+ });
182
+ // --- cron_schedule (persists a row through the leased Gate-3 store) -------
183
+ registry.register({
184
+ name: 'cron_schedule',
185
+ // 'fs' — registering a schedule persists a store row.
186
+ class: 'fs',
187
+ description: 'Register a recurring schedule (cron expression → task template). Persists a row to the ' +
188
+ 'project schedule store and returns its schedule ID. Gated on the host advertising a ' +
189
+ 'schedule store; persists daemon-OFF (a daemon scheduler consumes the table separately).',
190
+ toolset: 'agent',
191
+ stateless: false,
192
+ available: scheduleStoreAvailable,
193
+ parameters: z.object({
194
+ cron: z.string().describe('A cron expression for the recurrence (e.g. "0 9 * * 1").'),
195
+ title: z.string().describe('The title of the task to create on each fire.'),
196
+ description: z
197
+ .string()
198
+ .optional()
199
+ .describe('A description for the task created on each fire.'),
200
+ }),
201
+ execute: async (rawArgs) => {
202
+ // Delegate to the schedule-store seam (the real Gate-3 accessor, or an
203
+ // injected fake in tests). The accessor routes through openDualScopeDb — no
204
+ // raw db open here. A store/IO failure is returned as a typed, non-throwing
205
+ // result so the agent loop sees a structured failure rather than an
206
+ // exception.
207
+ const cron = String(rawArgs.cron);
208
+ const title = String(rawArgs.title);
209
+ const description = rawArgs.description === undefined ? undefined : String(rawArgs.description);
210
+ try {
211
+ const schedule = options.schedule ?? (await realScheduleStore());
212
+ const scheduleId = await schedule.add(projectRoot, { cron, title, description });
213
+ return { ok: true, scheduleId };
214
+ }
215
+ catch (err) {
216
+ return {
217
+ ok: false,
218
+ error: {
219
+ code: 'E_SCHEDULE_STORE_UNAVAILABLE',
220
+ message: `failed to register schedule: ${err instanceof Error ? err.message : String(err)}`,
221
+ },
222
+ };
223
+ }
224
+ },
225
+ });
226
+ }
227
+ /**
228
+ * Self-registration marker (AC1) — the identifier the
229
+ * {@link AgentToolRegistry.discover} bounded source scan greps for. Aliases
230
+ * {@link registerScheduleAgentTools} so a future scan-dir discovery (or the
231
+ * built-in aggregator) can call it uniformly with the other agent-tool modules.
232
+ *
233
+ * @param registry - The registry to populate.
234
+ */
235
+ export function registerAgentTools(registry) {
236
+ registerScheduleAgentTools(registry);
237
+ }
238
+ //# sourceMappingURL=schedule-agent-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedule-agent-tools.js","sourceRoot":"","sources":["../../src/tools/schedule-agent-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,EAEL,gBAAgB,GAEjB,MAAM,qBAAqB,CAAC;AAmE7B;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAsB,CAAC,GAAG,EAAE,EAAE,CAC/D,GAAG,CAAC,YAAY,EAAE,aAAa,KAAK,IAAI,CAAC;AAmB3C;;;;;;GAMG;AACH,KAAK,UAAU,WAAW;IACxB,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACpE,OAAO;QACL,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC;QAC/C,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC;KAClD,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,KAAK,UAAU,iBAAiB;IAC9B,MAAM,EAAE,mBAAmB,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;IACxF,OAAO;QACL,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;YAC1B,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,IAAI,CAAC,CAAC;YAC/C,OAAO,WAAW,CAAC,MAAM,EAAE;gBACzB,QAAQ,EAAE,MAAM,CAAC,IAAI;gBACrB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,WAAW,EAAE,MAAM,CAAC,WAAW;aAChC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,0BAA0B,CACxC,QAA2B,EAC3B,UAAoC,EAAE;IAEtC,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAEtD,4EAA4E;IAC5E,QAAQ,CAAC,QAAQ,CAAC;QAChB,IAAI,EAAE,UAAU;QAChB,sFAAsF;QACtF,KAAK,EAAE,IAAI;QACX,WAAW,EACT,yFAAyF;YACzF,wDAAwD;QAC1D,OAAO,EAAE,OAAO;QAChB,SAAS,EAAE,KAAK;QAChB,SAAS,EAAE,gBAAgB;QAC3B,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;YACnB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YAC7C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;YACzE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;YACtF,QAAQ,EAAE,CAAC;iBACR,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;iBAC3C,QAAQ,EAAE;iBACV,QAAQ,CAAC,iCAAiC,CAAC;YAC9C,UAAU,EAAE,CAAC;iBACV,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,QAAQ,EAAE;iBACV,QAAQ,CAAC,gDAAgD,CAAC;SAC9D,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,OAAO,EAAoB,EAAE;YAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,MAAM,WAAW,EAAE,CAAC,CAAC;YACrD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACpC,MAAM,WAAW,GACf,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAC9E,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACjF,MAAM,QAAQ,GACZ,OAAO,CAAC,QAAQ,KAAK,UAAU;gBAC/B,OAAO,CAAC,QAAQ,KAAK,MAAM;gBAC3B,OAAO,CAAC,QAAQ,KAAK,QAAQ;gBAC7B,OAAO,CAAC,QAAQ,KAAK,KAAK;gBACxB,CAAC,CAAC,OAAO,CAAC,QAAQ;gBAClB,CAAC,CAAC,SAAS,CAAC;YAChB,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC;gBAClD,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC;gBAChC,CAAC,CAAC,SAAS,CAAC;YACd,OAAO,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE;gBAC5B,KAAK;gBACL,WAAW;gBACX,MAAM;gBACN,QAAQ;gBACR,IAAI,EAAE,MAAM;gBACZ,UAAU;aACX,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;IAEH,4EAA4E;IAC5E,QAAQ,CAAC,QAAQ,CAAC;QAChB,IAAI,EAAE,WAAW;QACjB,oDAAoD;QACpD,KAAK,EAAE,QAAQ;QACf,WAAW,EACT,2FAA2F;YAC3F,mFAAmF;QACrF,OAAO,EAAE,OAAO;QAChB,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,gBAAgB;QAC3B,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;YACnB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;YACzF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;YAC7F,QAAQ,EAAE,CAAC;iBACR,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;iBAC3C,QAAQ,EAAE;iBACV,QAAQ,CAAC,qBAAqB,CAAC;YAClC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;SAC7F,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,OAAO,EAAoB,EAAE;YAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,MAAM,WAAW,EAAE,CAAC,CAAC;YACrD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACjF,MAAM,MAAM,GACV,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAgB,CAAC;YACpF,MAAM,QAAQ,GACZ,OAAO,CAAC,QAAQ,KAAK,UAAU;gBAC/B,OAAO,CAAC,QAAQ,KAAK,MAAM;gBAC3B,OAAO,CAAC,QAAQ,KAAK,QAAQ;gBAC7B,OAAO,CAAC,QAAQ,KAAK,KAAK;gBACxB,CAAC,CAAC,OAAO,CAAC,QAAQ;gBAClB,CAAC,CAAC,SAAS,CAAC;YAChB,MAAM,KAAK,GAAG,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;YAC5E,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QACtE,CAAC;KACF,CAAC,CAAC;IAEH,6EAA6E;IAC7E,QAAQ,CAAC,QAAQ,CAAC;QAChB,IAAI,EAAE,eAAe;QACrB,sDAAsD;QACtD,KAAK,EAAE,IAAI;QACX,WAAW,EACT,yFAAyF;YACzF,sFAAsF;YACtF,yFAAyF;QAC3F,OAAO,EAAE,OAAO;QAChB,SAAS,EAAE,KAAK;QAChB,SAAS,EAAE,sBAAsB;QACjC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;YACnB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0DAA0D,CAAC;YACrF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;YAC3E,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,kDAAkD,CAAC;SAChE,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,OAAO,EAA+B,EAAE;YACtD,uEAAuE;YACvE,4EAA4E;YAC5E,4EAA4E;YAC5E,oEAAoE;YACpE,aAAa;YACb,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACpC,MAAM,WAAW,GACf,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAC9E,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,CAAC,MAAM,iBAAiB,EAAE,CAAC,CAAC;gBACjE,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;gBACjF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;YAClC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,KAAK,EAAE;wBACL,IAAI,EAAE,8BAA8B;wBACpC,OAAO,EAAE,gCAAgC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;qBAC5F;iBACF,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAA2B;IAC5D,0BAA0B,CAAC,QAAQ,CAAC,CAAC;AACvC,CAAC"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * OpenAI-format tool-schema generation (T1739 · AC3 · epic T11456).
3
+ *
4
+ * The SINGLE generator that turns a Cleo Zod parameter schema into the
5
+ * OpenAI / JSON-Schema {@link TransportTool} shape the ModelRunner + transport
6
+ * wire layer (and the Pi adapter) consume. Both the agent-facing
7
+ * {@link ./agent-registry.js | AgentToolRegistry} (AC3) and the Pi streamFn
8
+ * bridge (`core/src/llm/pi/pi-stream-fn.ts`) call THIS function, so there is one
9
+ * conversion doctrine and no drift (DRY).
10
+ *
11
+ * Uses Zod v4's native `z.toJSONSchema` — NO `zod-to-json-schema` dependency and
12
+ * NO typebox value-import, so the cleo↔Pi tool surface carries zero typebox
13
+ * (Gate 10). The resulting `inputSchema` is a plain JSON-Schema object the
14
+ * transport passes through verbatim after any provider-specific adaptation.
15
+ *
16
+ * @task T1739
17
+ * @epic T11456
18
+ */
19
+ import type { TransportTool } from '@cleocode/contracts/llm/normalized-response.js';
20
+ import { z } from 'zod';
21
+ /**
22
+ * A name + description + Zod-schema tool definition, in the shape the schema
23
+ * generator consumes. Both the agent registry's {@link
24
+ * ./agent-registry.js | AgentToolDescriptor} and the Pi streamFn's `PiZodTool`
25
+ * structurally satisfy this, so one generator serves both.
26
+ */
27
+ export interface ZodSchemaTool {
28
+ /** Tool name as the provider / model will see it. */
29
+ readonly name: string;
30
+ /** Human-readable description for the model. */
31
+ readonly description: string;
32
+ /** Zod schema for the tool's input parameters. */
33
+ readonly parameters: z.ZodType;
34
+ }
35
+ /**
36
+ * Convert a Cleo Zod-schema tool into the OpenAI-format JSON-Schema
37
+ * {@link TransportTool}.
38
+ *
39
+ * The conversion is purely a function of its input (no I/O, no global state), so
40
+ * it is safe to call at any time, including during a lazy
41
+ * {@link ./agent-registry.js | AgentToolRegistry} discovery pass.
42
+ *
43
+ * @param tool - The Cleo Zod tool ({@link ZodSchemaTool}).
44
+ * @returns The transport-shaped JSON-Schema tool (OpenAI function format).
45
+ *
46
+ * @example
47
+ * ```ts
48
+ * const t = zodSchemaToOpenAITool({
49
+ * name: 'read_file',
50
+ * description: 'Read a file as text',
51
+ * parameters: z.object({ path: z.string() }),
52
+ * });
53
+ * // t.inputSchema === { type: 'object', properties: { path: { type: 'string' } }, ... }
54
+ * ```
55
+ */
56
+ export declare function zodSchemaToOpenAITool(tool: ZodSchemaTool): TransportTool;
57
+ //# sourceMappingURL=schema-gen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-gen.d.ts","sourceRoot":"","sources":["../../src/tools/schema-gen.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gDAAgD,CAAC;AACpF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,qDAAqD;IACrD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,gDAAgD;IAChD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,kDAAkD;IAClD,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,aAAa,GAAG,aAAa,CAUxE"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * OpenAI-format tool-schema generation (T1739 · AC3 · epic T11456).
3
+ *
4
+ * The SINGLE generator that turns a Cleo Zod parameter schema into the
5
+ * OpenAI / JSON-Schema {@link TransportTool} shape the ModelRunner + transport
6
+ * wire layer (and the Pi adapter) consume. Both the agent-facing
7
+ * {@link ./agent-registry.js | AgentToolRegistry} (AC3) and the Pi streamFn
8
+ * bridge (`core/src/llm/pi/pi-stream-fn.ts`) call THIS function, so there is one
9
+ * conversion doctrine and no drift (DRY).
10
+ *
11
+ * Uses Zod v4's native `z.toJSONSchema` — NO `zod-to-json-schema` dependency and
12
+ * NO typebox value-import, so the cleo↔Pi tool surface carries zero typebox
13
+ * (Gate 10). The resulting `inputSchema` is a plain JSON-Schema object the
14
+ * transport passes through verbatim after any provider-specific adaptation.
15
+ *
16
+ * @task T1739
17
+ * @epic T11456
18
+ */
19
+ import { z } from 'zod';
20
+ /**
21
+ * Convert a Cleo Zod-schema tool into the OpenAI-format JSON-Schema
22
+ * {@link TransportTool}.
23
+ *
24
+ * The conversion is purely a function of its input (no I/O, no global state), so
25
+ * it is safe to call at any time, including during a lazy
26
+ * {@link ./agent-registry.js | AgentToolRegistry} discovery pass.
27
+ *
28
+ * @param tool - The Cleo Zod tool ({@link ZodSchemaTool}).
29
+ * @returns The transport-shaped JSON-Schema tool (OpenAI function format).
30
+ *
31
+ * @example
32
+ * ```ts
33
+ * const t = zodSchemaToOpenAITool({
34
+ * name: 'read_file',
35
+ * description: 'Read a file as text',
36
+ * parameters: z.object({ path: z.string() }),
37
+ * });
38
+ * // t.inputSchema === { type: 'object', properties: { path: { type: 'string' } }, ... }
39
+ * ```
40
+ */
41
+ export function zodSchemaToOpenAITool(tool) {
42
+ // Zod v4's native `z.toJSONSchema` renders a plain JSON-Schema object — NO
43
+ // `zod-to-json-schema` dep and NO typebox value-import at this boundary, so
44
+ // every tool surface (registry + Pi bridge) carries zero typebox (Gate 10).
45
+ const inputSchema = z.toJSONSchema(tool.parameters);
46
+ return {
47
+ name: tool.name,
48
+ description: tool.description,
49
+ inputSchema,
50
+ };
51
+ }
52
+ //# sourceMappingURL=schema-gen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-gen.js","sourceRoot":"","sources":["../../src/tools/schema-gen.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAiBxB;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAmB;IACvD,2EAA2E;IAC3E,4EAA4E;IAC5E,4EAA4E;IAC5E,MAAM,WAAW,GAAG,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAA4B,CAAC;IAC/E,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,WAAW;KACZ,CAAC;AACJ,CAAC"}
@@ -30,6 +30,18 @@ export type ShellExecutor = (input: ExecuteShellInput) => Promise<ExecuteShellRe
30
30
  * stderr and resolving `{ stdout, stderr, code }`. A `timeoutMs` kills the
31
31
  * process (code resolves to `null` on signal/timeout). Never rejects on a
32
32
  * non-zero exit — the exit code is the result, not an error.
33
+ *
34
+ * ## Environment is SCRUBBED, never inherited (T11897 · security)
35
+ *
36
+ * The child runs under a MINIMAL, explicitly-constructed environment built by
37
+ * {@link scrubSubprocessEnv} — it does NOT inherit the parent `process.env`.
38
+ * This is load-bearing: the parent (the Cleo daemon) holds resolved provider
39
+ * credentials (`ANTHROPIC_API_KEY`, vault material, OAuth headers); blindly
40
+ * forwarding the full env into a child spawned on behalf of an in-process Pi
41
+ * loop would let a single `env`/`printenv` exfiltrate them, and would forward a
42
+ * Pi-poisoned `LD_PRELOAD`/`PATH`/`NODE_OPTIONS` into the loader. The
43
+ * caller-supplied `input.env` is merged on top but itself scrubbed (forbidden
44
+ * keys dropped, `PATH` pinned). Benign vars (locale/term/home) pass through.
33
45
  */
34
46
  export declare const defaultShellExecutor: ShellExecutor;
35
47
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../src/tools/shell.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EACZ,MAAM,kCAAkC,CAAC;AAE1C;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,iBAAiB,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAEtF;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAE,aAoB/B,CAAC;AAEL;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,iBAAiB,EACxB,QAAQ,GAAE,aAAoC,GAC7C,OAAO,CAAC,kBAAkB,CAAC,CAE7B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,MAAM,CACpB,KAAK,EAAE,WAAW,EAClB,QAAQ,GAAE,aAAoC,GAC7C,OAAO,CAAC,kBAAkB,CAAC,CAK7B"}
1
+ {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../src/tools/shell.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EACZ,MAAM,kCAAkC,CAAC;AAG1C;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,iBAAiB,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAEtF;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,oBAAoB,EAAE,aAoB/B,CAAC;AAEL;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,iBAAiB,EACxB,QAAQ,GAAE,aAAoC,GAC7C,OAAO,CAAC,kBAAkB,CAAC,CAE7B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,MAAM,CACpB,KAAK,EAAE,WAAW,EAClB,QAAQ,GAAE,aAAoC,GAC7C,OAAO,CAAC,kBAAkB,CAAC,CAK7B"}
@@ -19,16 +19,29 @@
19
19
  * @saga T11387
20
20
  */
21
21
  import { spawn } from 'node:child_process';
22
+ import { scrubSubprocessEnv } from './env-scrub.js';
22
23
  /**
23
24
  * Default executor: `spawn(command, args)` with no shell, capturing stdout +
24
25
  * stderr and resolving `{ stdout, stderr, code }`. A `timeoutMs` kills the
25
26
  * process (code resolves to `null` on signal/timeout). Never rejects on a
26
27
  * non-zero exit — the exit code is the result, not an error.
28
+ *
29
+ * ## Environment is SCRUBBED, never inherited (T11897 · security)
30
+ *
31
+ * The child runs under a MINIMAL, explicitly-constructed environment built by
32
+ * {@link scrubSubprocessEnv} — it does NOT inherit the parent `process.env`.
33
+ * This is load-bearing: the parent (the Cleo daemon) holds resolved provider
34
+ * credentials (`ANTHROPIC_API_KEY`, vault material, OAuth headers); blindly
35
+ * forwarding the full env into a child spawned on behalf of an in-process Pi
36
+ * loop would let a single `env`/`printenv` exfiltrate them, and would forward a
37
+ * Pi-poisoned `LD_PRELOAD`/`PATH`/`NODE_OPTIONS` into the loader. The
38
+ * caller-supplied `input.env` is merged on top but itself scrubbed (forbidden
39
+ * keys dropped, `PATH` pinned). Benign vars (locale/term/home) pass through.
27
40
  */
28
41
  export const defaultShellExecutor = (input) => new Promise((resolve, reject) => {
29
42
  const child = spawn(input.command, [...(input.args ?? [])], {
30
43
  cwd: input.cwd,
31
- env: input.env ? { ...process.env, ...input.env } : process.env,
44
+ env: scrubSubprocessEnv({ extra: input.env }),
32
45
  timeout: input.timeoutMs,
33
46
  shell: false,
34
47
  });
@@ -1 +1 @@
1
- {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/tools/shell.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAc3C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAkB,CAAC,KAAK,EAAE,EAAE,CAC3D,IAAI,OAAO,CAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;IAClD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE;QAC1D,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG;QAC/D,OAAO,EAAE,KAAK,CAAC,SAAS;QACxB,KAAK,EAAE,KAAK;KACb,CAAC,CAAC;IACH,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE;QACrC,MAAM,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE;QACrC,MAAM,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC1B,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;QACzB,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,YAAY,CAC1B,KAAwB,EACxB,WAA0B,oBAAoB;IAE9C,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,MAAM,CACpB,KAAkB,EAClB,WAA0B,oBAAoB;IAE9C,OAAO,YAAY,CACjB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,EAChF,QAAQ,CACT,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/tools/shell.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAM3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AASpD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAkB,CAAC,KAAK,EAAE,EAAE,CAC3D,IAAI,OAAO,CAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;IAClD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE;QAC1D,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,GAAG,EAAE,kBAAkB,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;QAC7C,OAAO,EAAE,KAAK,CAAC,SAAS;QACxB,KAAK,EAAE,KAAK;KACb,CAAC,CAAC;IACH,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE;QACrC,MAAM,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE;QACrC,MAAM,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC1B,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;QACzB,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,YAAY,CAC1B,KAAwB,EACxB,WAA0B,oBAAoB;IAE9C,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,MAAM,CACpB,KAAkB,EAClB,WAA0B,oBAAoB;IAE9C,OAAO,YAAY,CACjB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,EAChF,QAAQ,CACT,CAAC;AACJ,CAAC"}