@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,96 @@
1
+ /**
2
+ * Cantbook stage LLM-profile resolution (T11759 · M4 cantbook done-gate).
3
+ *
4
+ * A `.cantbook` agentic stage can pin its LLM via `profile:` (a named
5
+ * `llm.profiles` entry), or the inline `model:` / `provider:` escape hatch
6
+ * ({@link PlaybookAgenticNode}). This module is the single seam the two
7
+ * production cantbook dispatchers (`buildDefaultDispatcher` in `playbook.ts` and
8
+ * `buildGoDispatcher` in `go-ivtr-runner.ts`) call to turn that declaration into
9
+ * a RESOLUTION through the E9 chokepoint.
10
+ *
11
+ * ## Gate-13 compliance (no transport construction here)
12
+ *
13
+ * This helper ONLY calls {@link resolveLLMForSystem} — the single E9 resolution
14
+ * chokepoint. It NEVER constructs a transport, an AI-SDK client, or reads a
15
+ * credential off the wire; the returned {@link ResolvedLLMForSystem} carries the
16
+ * provider/model/sealed-credential METADATA only. The Pi runner / model-runner
17
+ * downstream is the sole place a client is built. Passing a resolution hint (the
18
+ * profile + the cantbook system key) is exactly the Gate-13-allowed seam.
19
+ *
20
+ * ## How the cantbook node keys the resolver
21
+ *
22
+ * The node identity is encoded as the OPEN-axis system-of-use key
23
+ * `cantbook:<playbook>#<nodeId>` (via {@link formatSystemKey}), and threaded as
24
+ * `resolveLLMForSystem`'s `systemKey` option so it drives the
25
+ * `llm.systems[key]` granular-override tier + audit identity. The flat `system`
26
+ * argument stays the resolvable `'task-executor'` background label (the same one
27
+ * the Pi runner uses), and the node's `profile:` flows through `opts.profile` as
28
+ * the highest-priority pin. When the node declares neither `profile` nor
29
+ * `model`/`provider`, callers should skip this helper — the resolution is
30
+ * unchanged.
31
+ *
32
+ * @module playbooks/cantbook-profile
33
+ * @task T11759
34
+ * @epic T10403
35
+ */
36
+ import { type ResolvedLLMForSystem } from '../llm/system-resolver.js';
37
+ /** The per-stage LLM pin a `.cantbook` agentic node may declare (T11759). */
38
+ export interface CantbookProfilePin {
39
+ /** Named `llm.profiles` profile to pin (highest priority when resolvable). */
40
+ readonly profile?: string;
41
+ /** Inline model id escape hatch (resolution hint only — no transport built). */
42
+ readonly model?: string;
43
+ /** Inline provider transport escape hatch (resolution hint only). */
44
+ readonly provider?: string;
45
+ }
46
+ /** Inputs to {@link resolveCantbookNodeProfile}. */
47
+ export interface ResolveCantbookNodeProfileInput {
48
+ /** The playbook (`.cantbook`) name — the first segment of the node identity. */
49
+ readonly playbookName: string;
50
+ /** The agentic node id — the second segment of the node identity. */
51
+ readonly nodeId: string;
52
+ /** The node's declared LLM pin (`profile` / `model` / `provider`). */
53
+ readonly pin: CantbookProfilePin;
54
+ /** Project root for config + credential resolution (defaults to cwd inside E9). */
55
+ readonly projectRoot?: string;
56
+ }
57
+ /**
58
+ * Build the canonical OPEN-axis system-of-use key for a cantbook node
59
+ * (`cantbook:<playbook>#<nodeId>`).
60
+ *
61
+ * Exported so the dispatchers + tests assert the exact key the resolver is
62
+ * threaded with WITHOUT re-implementing the encoding.
63
+ *
64
+ * @param playbookName - The `.cantbook` name.
65
+ * @param nodeId - The agentic node id.
66
+ * @returns The encoded `cantbook:<playbook>#<nodeId>` key.
67
+ * @task T11759
68
+ */
69
+ export declare function cantbookNodeSystemKey(playbookName: string, nodeId: string): string;
70
+ /**
71
+ * `true` when a node's pin actually declares an LLM override (so the dispatcher
72
+ * should resolve via {@link resolveCantbookNodeProfile}); `false` when it is the
73
+ * empty/unset pin and the default resolution path applies unchanged.
74
+ *
75
+ * @param pin - The node's declared pin (may be all-undefined).
76
+ * @returns Whether any of `profile` / `model` / `provider` is set.
77
+ * @task T11759
78
+ */
79
+ export declare function hasCantbookProfilePin(pin: CantbookProfilePin): boolean;
80
+ /**
81
+ * Resolve a cantbook stage's pinned LLM through the E9 chokepoint
82
+ * ({@link resolveLLMForSystem}).
83
+ *
84
+ * Threads the node identity as the `cantbook:<playbook>#<nodeId>` system key and
85
+ * the node's `profile:` as the highest-priority pin. Inline `model:` / `provider:`
86
+ * are NOT consumed by the resolver tiers directly (those are not config keys) —
87
+ * they ride back on the returned envelope as the caller-supplied hint so the
88
+ * dispatcher can surface them to the spawn / model-runner boundary. This function
89
+ * NEVER constructs a transport (Gate-13): it only resolves metadata.
90
+ *
91
+ * @param input - Playbook name + node id + the declared pin + project root.
92
+ * @returns The {@link ResolvedLLMForSystem} envelope (metadata only; never throws).
93
+ * @task T11759
94
+ */
95
+ export declare function resolveCantbookNodeProfile(input: ResolveCantbookNodeProfileInput): Promise<ResolvedLLMForSystem>;
96
+ //# sourceMappingURL=cantbook-profile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cantbook-profile.d.ts","sourceRoot":"","sources":["../../src/playbooks/cantbook-profile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAIH,OAAO,EAAE,KAAK,oBAAoB,EAAuB,MAAM,2BAA2B,CAAC;AAS3F,6EAA6E;AAC7E,MAAM,WAAW,kBAAkB;IACjC,8EAA8E;IAC9E,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,gFAAgF;IAChF,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,qEAAqE;IACrE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,oDAAoD;AACpD,MAAM,WAAW,+BAA+B;IAC9C,gFAAgF;IAChF,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,qEAAqE;IACrE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,sEAAsE;IACtE,QAAQ,CAAC,GAAG,EAAE,kBAAkB,CAAC;IACjC,mFAAmF;IACnF,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAElF;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAEtE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,0BAA0B,CAC9C,KAAK,EAAE,+BAA+B,GACrC,OAAO,CAAC,oBAAoB,CAAC,CAQ/B"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Cantbook stage LLM-profile resolution (T11759 · M4 cantbook done-gate).
3
+ *
4
+ * A `.cantbook` agentic stage can pin its LLM via `profile:` (a named
5
+ * `llm.profiles` entry), or the inline `model:` / `provider:` escape hatch
6
+ * ({@link PlaybookAgenticNode}). This module is the single seam the two
7
+ * production cantbook dispatchers (`buildDefaultDispatcher` in `playbook.ts` and
8
+ * `buildGoDispatcher` in `go-ivtr-runner.ts`) call to turn that declaration into
9
+ * a RESOLUTION through the E9 chokepoint.
10
+ *
11
+ * ## Gate-13 compliance (no transport construction here)
12
+ *
13
+ * This helper ONLY calls {@link resolveLLMForSystem} — the single E9 resolution
14
+ * chokepoint. It NEVER constructs a transport, an AI-SDK client, or reads a
15
+ * credential off the wire; the returned {@link ResolvedLLMForSystem} carries the
16
+ * provider/model/sealed-credential METADATA only. The Pi runner / model-runner
17
+ * downstream is the sole place a client is built. Passing a resolution hint (the
18
+ * profile + the cantbook system key) is exactly the Gate-13-allowed seam.
19
+ *
20
+ * ## How the cantbook node keys the resolver
21
+ *
22
+ * The node identity is encoded as the OPEN-axis system-of-use key
23
+ * `cantbook:<playbook>#<nodeId>` (via {@link formatSystemKey}), and threaded as
24
+ * `resolveLLMForSystem`'s `systemKey` option so it drives the
25
+ * `llm.systems[key]` granular-override tier + audit identity. The flat `system`
26
+ * argument stays the resolvable `'task-executor'` background label (the same one
27
+ * the Pi runner uses), and the node's `profile:` flows through `opts.profile` as
28
+ * the highest-priority pin. When the node declares neither `profile` nor
29
+ * `model`/`provider`, callers should skip this helper — the resolution is
30
+ * unchanged.
31
+ *
32
+ * @module playbooks/cantbook-profile
33
+ * @task T11759
34
+ * @epic T10403
35
+ */
36
+ import { formatSystemKey } from '../llm/system-key.js';
37
+ import { resolveLLMForSystem } from '../llm/system-resolver.js';
38
+ /**
39
+ * The flat background {@link SystemOfUseLabel} a cantbook stage resolves its LLM
40
+ * through. Mirrors the Pi runner's default (`'task-executor'`) so a stage with
41
+ * NO profile pin resolves to the same background lane the runner already uses.
42
+ */
43
+ const CANTBOOK_BASE_SYSTEM = 'task-executor';
44
+ /**
45
+ * Build the canonical OPEN-axis system-of-use key for a cantbook node
46
+ * (`cantbook:<playbook>#<nodeId>`).
47
+ *
48
+ * Exported so the dispatchers + tests assert the exact key the resolver is
49
+ * threaded with WITHOUT re-implementing the encoding.
50
+ *
51
+ * @param playbookName - The `.cantbook` name.
52
+ * @param nodeId - The agentic node id.
53
+ * @returns The encoded `cantbook:<playbook>#<nodeId>` key.
54
+ * @task T11759
55
+ */
56
+ export function cantbookNodeSystemKey(playbookName, nodeId) {
57
+ return formatSystemKey({ kind: 'cantbook-node', id: `${playbookName}#${nodeId}` });
58
+ }
59
+ /**
60
+ * `true` when a node's pin actually declares an LLM override (so the dispatcher
61
+ * should resolve via {@link resolveCantbookNodeProfile}); `false` when it is the
62
+ * empty/unset pin and the default resolution path applies unchanged.
63
+ *
64
+ * @param pin - The node's declared pin (may be all-undefined).
65
+ * @returns Whether any of `profile` / `model` / `provider` is set.
66
+ * @task T11759
67
+ */
68
+ export function hasCantbookProfilePin(pin) {
69
+ return pin.profile !== undefined || pin.model !== undefined || pin.provider !== undefined;
70
+ }
71
+ /**
72
+ * Resolve a cantbook stage's pinned LLM through the E9 chokepoint
73
+ * ({@link resolveLLMForSystem}).
74
+ *
75
+ * Threads the node identity as the `cantbook:<playbook>#<nodeId>` system key and
76
+ * the node's `profile:` as the highest-priority pin. Inline `model:` / `provider:`
77
+ * are NOT consumed by the resolver tiers directly (those are not config keys) —
78
+ * they ride back on the returned envelope as the caller-supplied hint so the
79
+ * dispatcher can surface them to the spawn / model-runner boundary. This function
80
+ * NEVER constructs a transport (Gate-13): it only resolves metadata.
81
+ *
82
+ * @param input - Playbook name + node id + the declared pin + project root.
83
+ * @returns The {@link ResolvedLLMForSystem} envelope (metadata only; never throws).
84
+ * @task T11759
85
+ */
86
+ export async function resolveCantbookNodeProfile(input) {
87
+ const systemKey = cantbookNodeSystemKey(input.playbookName, input.nodeId);
88
+ const opts = { systemKey };
89
+ if (input.projectRoot !== undefined)
90
+ opts.projectRoot = input.projectRoot;
91
+ if (input.pin.profile !== undefined)
92
+ opts.profile = input.pin.profile;
93
+ // `resolveLLMForSystem` is the single E9 chokepoint — it owns config tiers,
94
+ // CredentialPool binding, and the sealed-handle. No client is built here.
95
+ return resolveLLMForSystem(CANTBOOK_BASE_SYSTEM, opts);
96
+ }
97
+ //# sourceMappingURL=cantbook-profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cantbook-profile.js","sourceRoot":"","sources":["../../src/playbooks/cantbook-profile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAA6B,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAE3F;;;;GAIG;AACH,MAAM,oBAAoB,GAAqB,eAAe,CAAC;AAwB/D;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,qBAAqB,CAAC,YAAoB,EAAE,MAAc;IACxE,OAAO,eAAe,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,GAAG,YAAY,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;AACrF,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAuB;IAC3D,OAAO,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC;AAC5F,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,KAAsC;IAEtC,MAAM,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1E,MAAM,IAAI,GAA+B,EAAE,SAAS,EAAE,CAAC;IACvD,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS;QAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;IAC1E,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,KAAK,SAAS;QAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;IACtE,4EAA4E;IAC5E,0EAA0E;IAC1E,OAAO,mBAAmB,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;AACzD,CAAC"}
@@ -0,0 +1,153 @@
1
+ /**
2
+ * Guarded deterministic-node runner — routes EVERY `deterministic` (shell/tool)
3
+ * dispatch in `executePlaybook` through the `guard.ts` deny-first chokepoint
4
+ * (T11802 · M4 cantbook done-gate).
5
+ *
6
+ * ## The gap this closes (AC1)
7
+ *
8
+ * The playbook runtime (`@cleocode/playbooks/runtime`) executes `deterministic`
9
+ * nodes through an INJECTED `DeterministicRunner`. When no runner is injected it
10
+ * degrades to `AgentDispatcher.dispatch` with a synthetic `deterministic:<cmd>`
11
+ * agent id — a path that NEVER touches the `guard.ts` shell denylist. So a
12
+ * `.cantbook` shell step could spawn a subprocess that bypasses the single
13
+ * policy point.
14
+ *
15
+ * This factory builds the CANONICAL production `DeterministicRunner`: every
16
+ * command is funnelled through the injected {@link GuardedToolSurface}'s
17
+ * `executeShell` — the SAME deny-first command policy + env-scrub chokepoint
18
+ * (`createToolGuard`) that in-process skill nodes already use (T11477). There is
19
+ * NO second subprocess code path: shell steps and skill→tool calls share ONE
20
+ * guard. The runtime stays a pure state machine (it imports no `child_process`);
21
+ * the guard owns the spawn (AC1).
22
+ *
23
+ * ## Deny semantics (AC3)
24
+ *
25
+ * The guard's `executeShell` checks the command basename against the policy
26
+ * denylist BEFORE any process is spawned. In `mode: 'enforce'` a denied command
27
+ * rejects with {@link GuardDeniedError} (`E_TOOL_GUARD_DENIED`); this runner
28
+ * catches that rejection and maps it to a contract-clean
29
+ * `{ status: 'failure', error }` envelope so the runtime's retry / escalation
30
+ * semantics stay intact (the runtime contract is non-throwing). In `mode: 'warn'`
31
+ * the guard logs-and-proceeds — the denylist is advisory — so a guarded runner
32
+ * built for enforcement MUST be constructed from an `enforce`-mode guard.
33
+ *
34
+ * ## Why a factory over a guard (DIP)
35
+ *
36
+ * The runner depends on the abstract {@link GuardedToolSurface} (the contract
37
+ * shape of `createToolGuard()`), NOT on the concrete guard — so the policy point
38
+ * is injected, exactly mirroring {@link createSkillNodeExecutor}. `core` builds
39
+ * the guard once (`createToolGuard({ allowedRoots, deniedCommands, mode })`) and
40
+ * hands the same surface to BOTH the skill executor and this deterministic
41
+ * runner.
42
+ *
43
+ * @epic T11391
44
+ * @task T11802
45
+ * @saga T11387
46
+ * @see ../tools/guard.ts — the deny-first chokepoint
47
+ * @see ./skill-node-executor.ts — the sibling in-process skill path
48
+ */
49
+ import type { GuardedToolSurface } from '@cleocode/contracts/tools/skill-executor';
50
+ /**
51
+ * Canonical deny-list of destructive command basenames a `.cantbook`
52
+ * `deterministic` node may NOT run (T11802 · AC3). This is the SSoT the
53
+ * production dispatcher hands to `createToolGuard({ deniedCommands })` so the
54
+ * SAME chokepoint that guards in-process skill→tool calls also rejects a
55
+ * dangerous shell step. Matched against the command's last path segment by the
56
+ * guard, so `/bin/rm` and `rm` are both denied.
57
+ *
58
+ * Intentionally conservative — destructive disk / process / system operations a
59
+ * planning playbook should never invoke. Extend deliberately; every addition is
60
+ * a policy decision.
61
+ */
62
+ export declare const DEFAULT_DETERMINISTIC_DENIED_COMMANDS: readonly string[];
63
+ /**
64
+ * Minimal projection of the playbook runtime's `DeterministicRunInput` that the
65
+ * guarded runner consumes. Declared structurally so `@cleocode/core` does NOT
66
+ * import `@cleocode/playbooks` (preserves the directed layering
67
+ * `contracts → core → playbooks`). The runtime's input is structurally
68
+ * assignable to this shape.
69
+ */
70
+ export interface GuardedDeterministicInput {
71
+ /** Playbook run identifier (FK into `playbook_runs.run_id`). */
72
+ readonly runId: string;
73
+ /** Node identifier within the run graph. */
74
+ readonly nodeId: string;
75
+ /** Executable to run (NOT a shell string — args are passed separately). */
76
+ readonly command: string;
77
+ /** Arguments passed to {@link GuardedDeterministicInput.command}. */
78
+ readonly args: readonly string[];
79
+ /** Working directory. Defaults to `process.cwd()` in the shell primitive. */
80
+ readonly cwd?: string;
81
+ /** Extra environment variables merged (and scrubbed) over the child env. */
82
+ readonly env?: Readonly<Record<string, string>>;
83
+ /** Hard timeout in milliseconds; the process is killed when exceeded. */
84
+ readonly timeout_ms?: number;
85
+ }
86
+ /**
87
+ * Terminal output of a guarded deterministic execution. Structurally identical
88
+ * to the runtime's `DeterministicRunResult` so this runner is assignable to the
89
+ * runtime's `DeterministicRunner` interface without a wrapper.
90
+ */
91
+ export interface GuardedDeterministicResult {
92
+ status: 'success' | 'failure';
93
+ /** Key-value pairs merged into the run context on success. */
94
+ output: Record<string, unknown>;
95
+ /** Human-readable failure reason on `status === 'failure'`. */
96
+ error?: string;
97
+ }
98
+ /**
99
+ * Structural match for the playbook runtime's `DeterministicRunner` interface.
100
+ * Re-declared here (not imported) for the same directed-layering reason as
101
+ * {@link GuardedDeterministicInput}.
102
+ */
103
+ export interface GuardedDeterministicRunner {
104
+ run(input: GuardedDeterministicInput): Promise<GuardedDeterministicResult>;
105
+ }
106
+ /**
107
+ * Options accepted by {@link createGuardedDeterministicRunner}.
108
+ *
109
+ * @task T11802
110
+ */
111
+ export interface GuardedDeterministicRunnerOptions {
112
+ /**
113
+ * The deny-first guarded tool surface every deterministic command is routed
114
+ * through. Typically the SAME `createToolGuard({ allowedRoots, deniedCommands,
115
+ * mode })` result handed to the in-process skill executor — so shell steps and
116
+ * skill→tool calls share ONE policy point. Injected (DIP) — the runner never
117
+ * constructs its own guard.
118
+ */
119
+ readonly tools: GuardedToolSurface;
120
+ }
121
+ /**
122
+ * Build a {@link GuardedDeterministicRunner} that routes EVERY `deterministic`
123
+ * node command through the injected guard's `executeShell` (T11802 · AC1).
124
+ *
125
+ * Inject the result as `deterministicRunner` when calling `executePlaybook`:
126
+ *
127
+ * @example
128
+ * ```ts
129
+ * import { createToolGuard } from '@cleocode/core/internal';
130
+ *
131
+ * const tools = createToolGuard({
132
+ * allowedRoots: [projectRoot],
133
+ * deniedCommands: ['rm', 'shutdown', 'mkfs'],
134
+ * mode: 'enforce',
135
+ * });
136
+ * await executePlaybook({
137
+ * db, playbook, playbookHash, initialContext, dispatcher,
138
+ * deterministicRunner: createGuardedDeterministicRunner({ tools }),
139
+ * });
140
+ * // A `deterministic` node running `rm` → guard rejects → { status: 'failure' }
141
+ * ```
142
+ *
143
+ * The returned runner NEVER throws — a guard `enforce`-mode rejection
144
+ * ({@link import('../tools/guard.js').GuardDeniedError}) is caught and mapped to
145
+ * a `{ status: 'failure', error }` envelope so the runtime's retry / escalation
146
+ * stays intact (the runtime's `DeterministicRunner` contract is non-throwing).
147
+ *
148
+ * @param opts - The injected guarded tool surface.
149
+ * @returns A runner assignable to the runtime's `DeterministicRunner`.
150
+ * @task T11802
151
+ */
152
+ export declare function createGuardedDeterministicRunner(opts: GuardedDeterministicRunnerOptions): GuardedDeterministicRunner;
153
+ //# sourceMappingURL=guarded-deterministic-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guarded-deterministic-runner.d.ts","sourceRoot":"","sources":["../../src/playbooks/guarded-deterministic-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAEnF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,qCAAqC,EAAE,SAAS,MAAM,EAYjE,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,WAAW,yBAAyB;IACxC,gEAAgE;IAChE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,4CAA4C;IAC5C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,2EAA2E;IAC3E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,qEAAqE;IACrE,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,6EAA6E;IAC7E,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,4EAA4E;IAC5E,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAChD,yEAAyE;IACzE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;;GAIG;AACH,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC;IAC9B,8DAA8D;IAC9D,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,MAAM,WAAW,0BAA0B;IACzC,GAAG,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;CAC5E;AAED;;;;GAIG;AACH,MAAM,WAAW,iCAAiC;IAChD;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC;CACpC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,iCAAiC,GACtC,0BAA0B,CAiD5B"}
@@ -0,0 +1,155 @@
1
+ /**
2
+ * Guarded deterministic-node runner — routes EVERY `deterministic` (shell/tool)
3
+ * dispatch in `executePlaybook` through the `guard.ts` deny-first chokepoint
4
+ * (T11802 · M4 cantbook done-gate).
5
+ *
6
+ * ## The gap this closes (AC1)
7
+ *
8
+ * The playbook runtime (`@cleocode/playbooks/runtime`) executes `deterministic`
9
+ * nodes through an INJECTED `DeterministicRunner`. When no runner is injected it
10
+ * degrades to `AgentDispatcher.dispatch` with a synthetic `deterministic:<cmd>`
11
+ * agent id — a path that NEVER touches the `guard.ts` shell denylist. So a
12
+ * `.cantbook` shell step could spawn a subprocess that bypasses the single
13
+ * policy point.
14
+ *
15
+ * This factory builds the CANONICAL production `DeterministicRunner`: every
16
+ * command is funnelled through the injected {@link GuardedToolSurface}'s
17
+ * `executeShell` — the SAME deny-first command policy + env-scrub chokepoint
18
+ * (`createToolGuard`) that in-process skill nodes already use (T11477). There is
19
+ * NO second subprocess code path: shell steps and skill→tool calls share ONE
20
+ * guard. The runtime stays a pure state machine (it imports no `child_process`);
21
+ * the guard owns the spawn (AC1).
22
+ *
23
+ * ## Deny semantics (AC3)
24
+ *
25
+ * The guard's `executeShell` checks the command basename against the policy
26
+ * denylist BEFORE any process is spawned. In `mode: 'enforce'` a denied command
27
+ * rejects with {@link GuardDeniedError} (`E_TOOL_GUARD_DENIED`); this runner
28
+ * catches that rejection and maps it to a contract-clean
29
+ * `{ status: 'failure', error }` envelope so the runtime's retry / escalation
30
+ * semantics stay intact (the runtime contract is non-throwing). In `mode: 'warn'`
31
+ * the guard logs-and-proceeds — the denylist is advisory — so a guarded runner
32
+ * built for enforcement MUST be constructed from an `enforce`-mode guard.
33
+ *
34
+ * ## Why a factory over a guard (DIP)
35
+ *
36
+ * The runner depends on the abstract {@link GuardedToolSurface} (the contract
37
+ * shape of `createToolGuard()`), NOT on the concrete guard — so the policy point
38
+ * is injected, exactly mirroring {@link createSkillNodeExecutor}. `core` builds
39
+ * the guard once (`createToolGuard({ allowedRoots, deniedCommands, mode })`) and
40
+ * hands the same surface to BOTH the skill executor and this deterministic
41
+ * runner.
42
+ *
43
+ * @epic T11391
44
+ * @task T11802
45
+ * @saga T11387
46
+ * @see ../tools/guard.ts — the deny-first chokepoint
47
+ * @see ./skill-node-executor.ts — the sibling in-process skill path
48
+ */
49
+ /**
50
+ * Canonical deny-list of destructive command basenames a `.cantbook`
51
+ * `deterministic` node may NOT run (T11802 · AC3). This is the SSoT the
52
+ * production dispatcher hands to `createToolGuard({ deniedCommands })` so the
53
+ * SAME chokepoint that guards in-process skill→tool calls also rejects a
54
+ * dangerous shell step. Matched against the command's last path segment by the
55
+ * guard, so `/bin/rm` and `rm` are both denied.
56
+ *
57
+ * Intentionally conservative — destructive disk / process / system operations a
58
+ * planning playbook should never invoke. Extend deliberately; every addition is
59
+ * a policy decision.
60
+ */
61
+ export const DEFAULT_DETERMINISTIC_DENIED_COMMANDS = Object.freeze([
62
+ 'rm',
63
+ 'rmdir',
64
+ 'shutdown',
65
+ 'reboot',
66
+ 'mkfs',
67
+ 'dd',
68
+ 'shred',
69
+ 'fdisk',
70
+ 'mkswap',
71
+ 'kill',
72
+ 'killall',
73
+ ]);
74
+ /**
75
+ * Build a {@link GuardedDeterministicRunner} that routes EVERY `deterministic`
76
+ * node command through the injected guard's `executeShell` (T11802 · AC1).
77
+ *
78
+ * Inject the result as `deterministicRunner` when calling `executePlaybook`:
79
+ *
80
+ * @example
81
+ * ```ts
82
+ * import { createToolGuard } from '@cleocode/core/internal';
83
+ *
84
+ * const tools = createToolGuard({
85
+ * allowedRoots: [projectRoot],
86
+ * deniedCommands: ['rm', 'shutdown', 'mkfs'],
87
+ * mode: 'enforce',
88
+ * });
89
+ * await executePlaybook({
90
+ * db, playbook, playbookHash, initialContext, dispatcher,
91
+ * deterministicRunner: createGuardedDeterministicRunner({ tools }),
92
+ * });
93
+ * // A `deterministic` node running `rm` → guard rejects → { status: 'failure' }
94
+ * ```
95
+ *
96
+ * The returned runner NEVER throws — a guard `enforce`-mode rejection
97
+ * ({@link import('../tools/guard.js').GuardDeniedError}) is caught and mapped to
98
+ * a `{ status: 'failure', error }` envelope so the runtime's retry / escalation
99
+ * stays intact (the runtime's `DeterministicRunner` contract is non-throwing).
100
+ *
101
+ * @param opts - The injected guarded tool surface.
102
+ * @returns A runner assignable to the runtime's `DeterministicRunner`.
103
+ * @task T11802
104
+ */
105
+ export function createGuardedDeterministicRunner(opts) {
106
+ const { tools } = opts;
107
+ return {
108
+ async run(input) {
109
+ try {
110
+ // The guard checks the command basename against the denylist BEFORE
111
+ // spawning (deny → reject in enforce mode), then scrubs the child env at
112
+ // the chokepoint. This is the ONLY shell-spawn path for deterministic
113
+ // nodes — there is no bypass.
114
+ const result = await tools.executeShell({
115
+ command: input.command,
116
+ args: [...input.args],
117
+ ...(input.cwd !== undefined ? { cwd: input.cwd } : {}),
118
+ ...(input.env !== undefined ? { env: input.env } : {}),
119
+ ...(input.timeout_ms !== undefined ? { timeoutMs: input.timeout_ms } : {}),
120
+ });
121
+ // A non-zero exit is a node failure, not a thrown error — mirror the
122
+ // shell primitive's "exit code is the result" contract.
123
+ if (result.code === 0) {
124
+ return {
125
+ status: 'success',
126
+ output: {
127
+ [`${input.nodeId}_stdout`]: result.stdout,
128
+ [`${input.nodeId}_exitCode`]: result.code,
129
+ },
130
+ };
131
+ }
132
+ return {
133
+ status: 'failure',
134
+ output: {
135
+ [`${input.nodeId}_stdout`]: result.stdout,
136
+ [`${input.nodeId}_stderr`]: result.stderr,
137
+ [`${input.nodeId}_exitCode`]: result.code,
138
+ },
139
+ error: `deterministic node "${input.nodeId}" command "${input.command}" exited ` +
140
+ `${result.code === null ? 'on signal/timeout' : `with code ${result.code}`}`,
141
+ };
142
+ }
143
+ catch (err) {
144
+ // Guard-denied (enforce mode) or an unexpected spawn error — never let it
145
+ // escape; the runtime contract is non-throwing.
146
+ return {
147
+ status: 'failure',
148
+ output: {},
149
+ error: err instanceof Error ? err.message : String(err),
150
+ };
151
+ }
152
+ },
153
+ };
154
+ }
155
+ //# sourceMappingURL=guarded-deterministic-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guarded-deterministic-runner.js","sourceRoot":"","sources":["../../src/playbooks/guarded-deterministic-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AAIH;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAsB,MAAM,CAAC,MAAM,CAAC;IACpF,IAAI;IACJ,OAAO;IACP,UAAU;IACV,QAAQ;IACR,MAAM;IACN,IAAI;IACJ,OAAO;IACP,OAAO;IACP,QAAQ;IACR,MAAM;IACN,SAAS;CACV,CAAC,CAAC;AAgEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,UAAU,gCAAgC,CAC9C,IAAuC;IAEvC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IACvB,OAAO;QACL,KAAK,CAAC,GAAG,CAAC,KAAgC;YACxC,IAAI,CAAC;gBACH,oEAAoE;gBACpE,yEAAyE;gBACzE,sEAAsE;gBACtE,8BAA8B;gBAC9B,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,YAAY,CAAC;oBACtC,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC;oBACrB,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACtD,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACtD,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC3E,CAAC,CAAC;gBACH,qEAAqE;gBACrE,wDAAwD;gBACxD,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;oBACtB,OAAO;wBACL,MAAM,EAAE,SAAS;wBACjB,MAAM,EAAE;4BACN,CAAC,GAAG,KAAK,CAAC,MAAM,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM;4BACzC,CAAC,GAAG,KAAK,CAAC,MAAM,WAAW,CAAC,EAAE,MAAM,CAAC,IAAI;yBAC1C;qBACF,CAAC;gBACJ,CAAC;gBACD,OAAO;oBACL,MAAM,EAAE,SAAS;oBACjB,MAAM,EAAE;wBACN,CAAC,GAAG,KAAK,CAAC,MAAM,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM;wBACzC,CAAC,GAAG,KAAK,CAAC,MAAM,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM;wBACzC,CAAC,GAAG,KAAK,CAAC,MAAM,WAAW,CAAC,EAAE,MAAM,CAAC,IAAI;qBAC1C;oBACD,KAAK,EACH,uBAAuB,KAAK,CAAC,MAAM,cAAc,KAAK,CAAC,OAAO,WAAW;wBACzE,GAAG,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,aAAa,MAAM,CAAC,IAAI,EAAE,EAAE;iBAC/E,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,0EAA0E;gBAC1E,gDAAgD;gBAChD,OAAO;oBACL,MAAM,EAAE,SAAS;oBACjB,MAAM,EAAE,EAAE;oBACV,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;iBACxD,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -11,7 +11,9 @@
11
11
  * @task T1239 — meta-agent infrastructure (epic T1232)
12
12
  */
13
13
  export { AGENT_TIER_META, type AgentDispatcher, CoreAgentDispatcher, type CoreAgentDispatcherOptions, createAgentDispatcher, type DispatchContext, type DispatchResult, resolveMetaAgent, } from './agent-dispatcher.js';
14
+ export { type CantbookProfilePin, cantbookNodeSystemKey, hasCantbookProfilePin, type ResolveCantbookNodeProfileInput, resolveCantbookNodeProfile, } from './cantbook-profile.js';
14
15
  export type { playbookCoreOps } from './ops.js';
16
+ export { type MaybePiRunnerDeps, maybeCreatePiRunner } from './pi-runner-wiring.js';
15
17
  export { listPlaybooks, PlaybookNotFoundError, type PlaybookTier, type ResolvedPlaybook, type ResolvePlaybookOptions, resolvePlaybook, } from './playbook-resolver.js';
16
18
  export { createSkillNodeExecutor, ISOLATION_CONTEXT_KEY, runSkillNodeOrSpawn, type SkillNodeDispatchInput, type SkillNodeExecutorOptions, type SubprocessSpawnExecutor, } from './skill-node-executor.js';
17
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/playbooks/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EACL,eAAe,EACf,KAAK,eAAe,EACpB,mBAAmB,EACnB,KAAK,0BAA0B,EAC/B,qBAAqB,EACrB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEhD,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,eAAe,GAChB,MAAM,wBAAwB,CAAC;AAKhC,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,EACnB,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,GAC7B,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/playbooks/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EACL,eAAe,EACf,KAAK,eAAe,EACpB,mBAAmB,EACnB,KAAK,0BAA0B,EAC/B,qBAAqB,EACrB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAM/B,OAAO,EACL,KAAK,kBAAkB,EACvB,qBAAqB,EACrB,qBAAqB,EACrB,KAAK,+BAA+B,EACpC,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAKhD,OAAO,EAAE,KAAK,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACpF,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,eAAe,GAChB,MAAM,wBAAwB,CAAC;AAIhC,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,EACnB,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,GAC7B,MAAM,0BAA0B,CAAC"}
@@ -11,6 +11,16 @@
11
11
  * @task T1239 — meta-agent infrastructure (epic T1232)
12
12
  */
13
13
  export { AGENT_TIER_META, CoreAgentDispatcher, createAgentDispatcher, resolveMetaAgent, } from './agent-dispatcher.js';
14
+ // Cantbook stage LLM-profile resolution — the seam the production cantbook
15
+ // dispatchers call to resolve a node's `profile:` / `model:` / `provider:` pin
16
+ // through the E9 chokepoint (`resolveLLMForSystem`). Gate-13: resolves metadata
17
+ // only, never constructs a transport (T11759 · M4).
18
+ export { cantbookNodeSystemKey, hasCantbookProfilePin, resolveCantbookNodeProfile, } from './cantbook-profile.js';
19
+ // Pi in-process runner wiring — default-OFF, lazy-imported Pi `SkillRunner` the
20
+ // production cantbook dispatchers pass into `runSkillNodeOrSpawn`'s `runner`
21
+ // slot (T11945 · M4). Exported here (the eager core graph) so its live binding
22
+ // is initialised before `internal.ts` re-exports it.
23
+ export { maybeCreatePiRunner } from './pi-runner-wiring.js';
14
24
  export { listPlaybooks, PlaybookNotFoundError, resolvePlaybook, } from './playbook-resolver.js';
15
25
  // Skill-node executor — injects the in-process SkillExecutorAdapter as the
16
26
  // dispatcher's executor while retaining subprocess-spawn for isolation nodes
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/playbooks/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EACL,eAAe,EAEf,mBAAmB,EAEnB,qBAAqB,EAGrB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EACL,aAAa,EACb,qBAAqB,EAIrB,eAAe,GAChB,MAAM,wBAAwB,CAAC;AAEhC,2EAA2E;AAC3E,6EAA6E;AAC7E,0BAA0B;AAC1B,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,GAIpB,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/playbooks/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EACL,eAAe,EAEf,mBAAmB,EAEnB,qBAAqB,EAGrB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAE/B,2EAA2E;AAC3E,+EAA+E;AAC/E,gFAAgF;AAChF,oDAAoD;AACpD,OAAO,EAEL,qBAAqB,EACrB,qBAAqB,EAErB,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC;AAE/B,gFAAgF;AAChF,6EAA6E;AAC7E,+EAA+E;AAC/E,qDAAqD;AACrD,OAAO,EAA0B,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACpF,OAAO,EACL,aAAa,EACb,qBAAqB,EAIrB,eAAe,GAChB,MAAM,wBAAwB,CAAC;AAChC,2EAA2E;AAC3E,6EAA6E;AAC7E,0BAA0B;AAC1B,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,GAIpB,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Production wiring helper for the Pi in-process `SkillRunner` (T11945 · M4).
3
+ *
4
+ * THE M4 keystone seam: this is the single place the two production cantbook
5
+ * dispatchers (`buildDefaultDispatcher` in `playbook.ts` and `buildGoDispatcher`
6
+ * in `go-ivtr-runner.ts`) reach to obtain the Pi-backed `SkillRunner` they pass
7
+ * into {@link runSkillNodeOrSpawn}'s `runner` slot. When the runner is supplied,
8
+ * an in-process `ct-*` skill node routes THROUGH the {@link
9
+ * import('../llm/pi/pi-agent-adapter.js').PiAgentAdapter} (the Pi agent loop);
10
+ * when it is `undefined`, the adapter falls back to `defaultSkillRunner` — the
11
+ * pre-T11945 behaviour.
12
+ *
13
+ * ## Default-OFF + lazy-import (Gate-13 + OOM safety)
14
+ *
15
+ * The Pi embed is gated behind the **default-OFF** `CLEO_PI_RUNNER_ENABLED`
16
+ * flag. When the flag is unset (the default) this helper returns `undefined`
17
+ * WITHOUT importing the Pi barrel — so `@earendil-works/pi-ai`'s `register-
18
+ * builtins` side effect is never paid on the hot dispatch path, and there is
19
+ * ZERO behaviour change. Only when the flag is explicitly `'1'` do we
20
+ * dynamically import the barrel and construct the runner. The import is dynamic
21
+ * (not a top-level `import`) precisely so the heavy `pi-ai` dependency stays out
22
+ * of `@cleocode/core/internal`'s eager module graph (every CLI dispatcher loads
23
+ * `internal`, but must not load `pi-ai` unless Pi is enabled).
24
+ *
25
+ * Keeping this helper in `core` keeps the CLI dispatchers thin (CLI package
26
+ * boundary, Gate-6): each call site is a single `await maybeCreatePiRunner(...)`.
27
+ *
28
+ * @epic T10403
29
+ * @task T11761
30
+ * @task T11945
31
+ */
32
+ import type { SystemOfUseLabel } from '@cleocode/contracts';
33
+ import type { SkillRunner } from '../skills/skill-executor-adapter.js';
34
+ /**
35
+ * Resolution + project-root deps forwarded to `createPiSkillRunner` when the Pi
36
+ * runner is constructed. Mirrors the subset of `PiAgentAdapterDeps` the
37
+ * dispatchers can supply at their call site.
38
+ */
39
+ export interface MaybePiRunnerDeps {
40
+ /**
41
+ * The system-of-use label the Pi adapter resolves its LLM through (E9). When
42
+ * omitted, `createPiSkillRunner` defaults to `'task-executor'`.
43
+ */
44
+ readonly system?: SystemOfUseLabel;
45
+ /**
46
+ * Project root for config + credential resolution. When omitted, resolution
47
+ * defaults to `process.cwd()` inside `resolveLLMForSystem`.
48
+ */
49
+ readonly projectRoot?: string;
50
+ }
51
+ /**
52
+ * Return the Pi-backed {@link SkillRunner} when `CLEO_PI_RUNNER_ENABLED=1`, else
53
+ * `undefined`.
54
+ *
55
+ * The two production cantbook dispatchers call this and pass the result into
56
+ * {@link runSkillNodeOrSpawn}'s `runner` slot:
57
+ *
58
+ * @example
59
+ * ```ts
60
+ * const runner = await maybeCreatePiRunner({ system: 'task-executor', projectRoot });
61
+ * await runSkillNodeOrSpawn(input, { tools, cwd: projectRoot, subprocessSpawn, runner });
62
+ * ```
63
+ *
64
+ * Default-OFF: when the flag is unset (the common case) this short-circuits to
65
+ * `undefined` before importing the Pi barrel, so `pi-ai`'s `register-builtins`
66
+ * is never loaded and the dispatcher behaves exactly as it did pre-T11945
67
+ * (`defaultSkillRunner` runs the in-process skill node).
68
+ *
69
+ * @param deps - Optional resolution system + project root forwarded to the Pi
70
+ * adapter when the runner is constructed.
71
+ * @returns The Pi `SkillRunner` when enabled, otherwise `undefined`.
72
+ * @task T11945
73
+ */
74
+ export declare function maybeCreatePiRunner(deps?: MaybePiRunnerDeps): Promise<SkillRunner | undefined>;
75
+ //# sourceMappingURL=pi-runner-wiring.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pi-runner-wiring.d.ts","sourceRoot":"","sources":["../../src/playbooks/pi-runner-wiring.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAUvE;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC;IACnC;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,GAAE,iBAAsB,GAC3B,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAoBlC"}