@cleocode/core 2026.6.12 → 2026.6.13

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 (385) hide show
  1. package/dist/conduit/local-transport.d.ts +12 -0
  2. package/dist/conduit/local-transport.d.ts.map +1 -1
  3. package/dist/conduit/local-transport.js +53 -23
  4. package/dist/conduit/local-transport.js.map +1 -1
  5. package/dist/crypto/credentials.d.ts +37 -0
  6. package/dist/crypto/credentials.d.ts.map +1 -1
  7. package/dist/crypto/credentials.js +110 -0
  8. package/dist/crypto/credentials.js.map +1 -1
  9. package/dist/dispatch/contracts/derive-output-contract.d.ts +86 -0
  10. package/dist/dispatch/contracts/derive-output-contract.d.ts.map +1 -0
  11. package/dist/dispatch/contracts/derive-output-contract.js +347 -0
  12. package/dist/dispatch/contracts/derive-output-contract.js.map +1 -0
  13. package/dist/dispatch/contracts/ensures-schema.d.ts +77 -0
  14. package/dist/dispatch/contracts/ensures-schema.d.ts.map +1 -0
  15. package/dist/dispatch/contracts/ensures-schema.js +91 -0
  16. package/dist/dispatch/contracts/ensures-schema.js.map +1 -0
  17. package/dist/dispatch/contracts/output-contracts.d.ts +27 -5
  18. package/dist/dispatch/contracts/output-contracts.d.ts.map +1 -1
  19. package/dist/dispatch/contracts/output-contracts.js +29 -6
  20. package/dist/dispatch/contracts/output-contracts.js.map +1 -1
  21. package/dist/docs/export-document.js +2294 -1250
  22. package/dist/docs/export-document.js.map +3 -3
  23. package/dist/go/driver.d.ts +132 -7
  24. package/dist/go/driver.d.ts.map +1 -1
  25. package/dist/go/driver.js +135 -10
  26. package/dist/go/driver.js.map +1 -1
  27. package/dist/go/index.d.ts +1 -1
  28. package/dist/go/index.d.ts.map +1 -1
  29. package/dist/go/index.js +1 -1
  30. package/dist/go/index.js.map +1 -1
  31. package/dist/index.d.ts +1 -0
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +5 -0
  34. package/dist/index.js.map +1 -1
  35. package/dist/internal.d.ts +13 -10
  36. package/dist/internal.d.ts.map +1 -1
  37. package/dist/internal.js +11 -11
  38. package/dist/internal.js.map +1 -1
  39. package/dist/lifecycle/engine-ops.d.ts.map +1 -1
  40. package/dist/lifecycle/engine-ops.js +7 -4
  41. package/dist/lifecycle/engine-ops.js.map +1 -1
  42. package/dist/lifecycle/ivtr-loop.d.ts +108 -183
  43. package/dist/lifecycle/ivtr-loop.d.ts.map +1 -1
  44. package/dist/lifecycle/ivtr-loop.js +207 -522
  45. package/dist/lifecycle/ivtr-loop.js.map +1 -1
  46. package/dist/llm/auxiliary-fallback.js +1 -1
  47. package/dist/llm/auxiliary-fallback.js.map +1 -1
  48. package/dist/llm/cli-ops.d.ts +14 -1
  49. package/dist/llm/cli-ops.d.ts.map +1 -1
  50. package/dist/llm/cli-ops.js +41 -12
  51. package/dist/llm/cli-ops.js.map +1 -1
  52. package/dist/llm/concrete-session.d.ts.map +1 -1
  53. package/dist/llm/concrete-session.js +4 -0
  54. package/dist/llm/concrete-session.js.map +1 -1
  55. package/dist/llm/credentials.d.ts +35 -0
  56. package/dist/llm/credentials.d.ts.map +1 -1
  57. package/dist/llm/credentials.js +49 -0
  58. package/dist/llm/credentials.js.map +1 -1
  59. package/dist/llm/index.d.ts +4 -0
  60. package/dist/llm/index.d.ts.map +1 -1
  61. package/dist/llm/index.js +4 -0
  62. package/dist/llm/index.js.map +1 -1
  63. package/dist/llm/pi/gondolin-loader.d.ts +241 -0
  64. package/dist/llm/pi/gondolin-loader.d.ts.map +1 -0
  65. package/dist/llm/pi/gondolin-loader.js +195 -0
  66. package/dist/llm/pi/gondolin-loader.js.map +1 -0
  67. package/dist/llm/pi/index.d.ts +28 -0
  68. package/dist/llm/pi/index.d.ts.map +1 -0
  69. package/dist/llm/pi/index.js +27 -0
  70. package/dist/llm/pi/index.js.map +1 -0
  71. package/dist/llm/pi/pi-agent-adapter.d.ts +135 -0
  72. package/dist/llm/pi/pi-agent-adapter.d.ts.map +1 -0
  73. package/dist/llm/pi/pi-agent-adapter.js +329 -0
  74. package/dist/llm/pi/pi-agent-adapter.js.map +1 -0
  75. package/dist/llm/pi/pi-errors.d.ts +161 -0
  76. package/dist/llm/pi/pi-errors.d.ts.map +1 -0
  77. package/dist/llm/pi/pi-errors.js +296 -0
  78. package/dist/llm/pi/pi-errors.js.map +1 -0
  79. package/dist/llm/pi/pi-execution-env.d.ts +286 -0
  80. package/dist/llm/pi/pi-execution-env.d.ts.map +1 -0
  81. package/dist/llm/pi/pi-execution-env.js +406 -0
  82. package/dist/llm/pi/pi-execution-env.js.map +1 -0
  83. package/dist/llm/pi/pi-gondolin-env.d.ts +227 -0
  84. package/dist/llm/pi/pi-gondolin-env.d.ts.map +1 -0
  85. package/dist/llm/pi/pi-gondolin-env.js +541 -0
  86. package/dist/llm/pi/pi-gondolin-env.js.map +1 -0
  87. package/dist/llm/pi/pi-session-storage.d.ts +154 -0
  88. package/dist/llm/pi/pi-session-storage.d.ts.map +1 -0
  89. package/dist/llm/pi/pi-session-storage.js +314 -0
  90. package/dist/llm/pi/pi-session-storage.js.map +1 -0
  91. package/dist/llm/pi/pi-stream-fn.d.ts +124 -0
  92. package/dist/llm/pi/pi-stream-fn.d.ts.map +1 -0
  93. package/dist/llm/pi/pi-stream-fn.js +504 -0
  94. package/dist/llm/pi/pi-stream-fn.js.map +1 -0
  95. package/dist/llm/pi/pi-tool-bridge.d.ts +99 -0
  96. package/dist/llm/pi/pi-tool-bridge.d.ts.map +1 -0
  97. package/dist/llm/pi/pi-tool-bridge.js +117 -0
  98. package/dist/llm/pi/pi-tool-bridge.js.map +1 -0
  99. package/dist/llm/pi/pi-types.d.ts +56 -0
  100. package/dist/llm/pi/pi-types.d.ts.map +1 -0
  101. package/dist/llm/pi/pi-types.js +16 -0
  102. package/dist/llm/pi/pi-types.js.map +1 -0
  103. package/dist/llm/pi/resolve-execution-env.d.ts +194 -0
  104. package/dist/llm/pi/resolve-execution-env.d.ts.map +1 -0
  105. package/dist/llm/pi/resolve-execution-env.js +132 -0
  106. package/dist/llm/pi/resolve-execution-env.js.map +1 -0
  107. package/dist/llm/plugin-facade.js +2253 -1151
  108. package/dist/llm/plugin-facade.js.map +3 -3
  109. package/dist/llm/role-executor.d.ts.map +1 -1
  110. package/dist/llm/role-executor.js +8 -5
  111. package/dist/llm/role-executor.js.map +1 -1
  112. package/dist/llm/role-resolver.d.ts +46 -14
  113. package/dist/llm/role-resolver.d.ts.map +1 -1
  114. package/dist/llm/role-resolver.js +178 -20
  115. package/dist/llm/role-resolver.js.map +1 -1
  116. package/dist/llm/sealed-credential.d.ts +125 -0
  117. package/dist/llm/sealed-credential.d.ts.map +1 -0
  118. package/dist/llm/sealed-credential.js +133 -0
  119. package/dist/llm/sealed-credential.js.map +1 -0
  120. package/dist/llm/session-factory.d.ts.map +1 -1
  121. package/dist/llm/session-factory.js +6 -2
  122. package/dist/llm/session-factory.js.map +1 -1
  123. package/dist/llm/system-key.d.ts +67 -0
  124. package/dist/llm/system-key.d.ts.map +1 -0
  125. package/dist/llm/system-key.js +87 -0
  126. package/dist/llm/system-key.js.map +1 -0
  127. package/dist/llm/system-of-use-registry.d.ts +119 -0
  128. package/dist/llm/system-of-use-registry.d.ts.map +1 -0
  129. package/dist/llm/system-of-use-registry.js +200 -0
  130. package/dist/llm/system-of-use-registry.js.map +1 -0
  131. package/dist/llm/system-resolver.d.ts +32 -10
  132. package/dist/llm/system-resolver.d.ts.map +1 -1
  133. package/dist/llm/system-resolver.js +70 -18
  134. package/dist/llm/system-resolver.js.map +1 -1
  135. package/dist/memory/brain-writer-thread.d.ts.map +1 -1
  136. package/dist/memory/brain-writer-thread.js +116 -11
  137. package/dist/memory/brain-writer-thread.js.map +1 -1
  138. package/dist/memory/claude-mem-migration.d.ts.map +1 -1
  139. package/dist/memory/claude-mem-migration.js +21 -0
  140. package/dist/memory/claude-mem-migration.js.map +1 -1
  141. package/dist/memory/graph-memory-bridge.d.ts.map +1 -1
  142. package/dist/memory/graph-memory-bridge.js +32 -25
  143. package/dist/memory/graph-memory-bridge.js.map +1 -1
  144. package/dist/memory/llm-backend-resolver.js +23 -5
  145. package/dist/memory/llm-backend-resolver.js.map +1 -1
  146. package/dist/nexus/migrations/M-split-graph.d.ts.map +1 -1
  147. package/dist/nexus/migrations/M-split-graph.js +60 -53
  148. package/dist/nexus/migrations/M-split-graph.js.map +1 -1
  149. package/dist/orchestrate/pivot.d.ts.map +1 -1
  150. package/dist/orchestrate/pivot.js +20 -2
  151. package/dist/orchestrate/pivot.js.map +1 -1
  152. package/dist/release/engine-ops.js +2 -2
  153. package/dist/release/engine-ops.js.map +1 -1
  154. package/dist/routing/capability-matrix.d.ts.map +1 -1
  155. package/dist/routing/capability-matrix.js +0 -57
  156. package/dist/routing/capability-matrix.js.map +1 -1
  157. package/dist/selfimprove/budget.d.ts +206 -0
  158. package/dist/selfimprove/budget.d.ts.map +1 -0
  159. package/dist/selfimprove/budget.js +203 -0
  160. package/dist/selfimprove/budget.js.map +1 -0
  161. package/dist/selfimprove/dhq-adapter.d.ts +105 -0
  162. package/dist/selfimprove/dhq-adapter.d.ts.map +1 -0
  163. package/dist/selfimprove/dhq-adapter.js +95 -0
  164. package/dist/selfimprove/dhq-adapter.js.map +1 -0
  165. package/dist/selfimprove/draft-pr.d.ts +129 -0
  166. package/dist/selfimprove/draft-pr.d.ts.map +1 -0
  167. package/dist/selfimprove/draft-pr.js +158 -0
  168. package/dist/selfimprove/draft-pr.js.map +1 -0
  169. package/dist/selfimprove/envelope-diff.d.ts +162 -0
  170. package/dist/selfimprove/envelope-diff.d.ts.map +1 -0
  171. package/dist/selfimprove/envelope-diff.js +321 -0
  172. package/dist/selfimprove/envelope-diff.js.map +1 -0
  173. package/dist/selfimprove/replay.d.ts +121 -0
  174. package/dist/selfimprove/replay.d.ts.map +1 -0
  175. package/dist/selfimprove/replay.js +109 -0
  176. package/dist/selfimprove/replay.js.map +1 -0
  177. package/dist/selfimprove/run-loop.d.ts +148 -0
  178. package/dist/selfimprove/run-loop.d.ts.map +1 -0
  179. package/dist/selfimprove/run-loop.js +240 -0
  180. package/dist/selfimprove/run-loop.js.map +1 -0
  181. package/dist/selfimprove/scenario.d.ts +145 -0
  182. package/dist/selfimprove/scenario.d.ts.map +1 -0
  183. package/dist/selfimprove/scenario.js +243 -0
  184. package/dist/selfimprove/scenario.js.map +1 -0
  185. package/dist/sentient/daemon-entry.js +5 -0
  186. package/dist/sentient/daemon-entry.js.map +1 -1
  187. package/dist/sentient/daemon.d.ts.map +1 -1
  188. package/dist/sentient/daemon.js +19 -0
  189. package/dist/sentient/daemon.js.map +1 -1
  190. package/dist/sentient/hygiene-scan.d.ts.map +1 -1
  191. package/dist/sentient/hygiene-scan.js +14 -6
  192. package/dist/sentient/hygiene-scan.js.map +1 -1
  193. package/dist/sessions/briefing.d.ts.map +1 -1
  194. package/dist/sessions/briefing.js +13 -9
  195. package/dist/sessions/briefing.js.map +1 -1
  196. package/dist/sessions/connection-session-handle.d.ts +161 -0
  197. package/dist/sessions/connection-session-handle.d.ts.map +1 -0
  198. package/dist/sessions/connection-session-handle.js +168 -0
  199. package/dist/sessions/connection-session-handle.js.map +1 -0
  200. package/dist/sessions/handoff.d.ts.map +1 -1
  201. package/dist/sessions/handoff.js +9 -0
  202. package/dist/sessions/handoff.js.map +1 -1
  203. package/dist/sessions/index.d.ts +4 -1
  204. package/dist/sessions/index.d.ts.map +1 -1
  205. package/dist/sessions/index.js +31 -1
  206. package/dist/sessions/index.js.map +1 -1
  207. package/dist/sessions/session-id.d.ts +34 -0
  208. package/dist/sessions/session-id.d.ts.map +1 -1
  209. package/dist/sessions/session-id.js +37 -0
  210. package/dist/sessions/session-id.js.map +1 -1
  211. package/dist/sessions/session-manifest-mirror.d.ts +115 -0
  212. package/dist/sessions/session-manifest-mirror.d.ts.map +1 -0
  213. package/dist/sessions/session-manifest-mirror.js +250 -0
  214. package/dist/sessions/session-manifest-mirror.js.map +1 -0
  215. package/dist/sessions/session-switch.d.ts.map +1 -1
  216. package/dist/sessions/session-switch.js +5 -2
  217. package/dist/sessions/session-switch.js.map +1 -1
  218. package/dist/store/converters.d.ts.map +1 -1
  219. package/dist/store/converters.js +2 -0
  220. package/dist/store/converters.js.map +1 -1
  221. package/dist/store/db-helpers.d.ts.map +1 -1
  222. package/dist/store/db-helpers.js +2 -0
  223. package/dist/store/db-helpers.js.map +1 -1
  224. package/dist/store/dual-scope-db.d.ts.map +1 -1
  225. package/dist/store/dual-scope-db.js +87 -47
  226. package/dist/store/dual-scope-db.js.map +1 -1
  227. package/dist/store/pi-session-store.d.ts +151 -0
  228. package/dist/store/pi-session-store.d.ts.map +1 -0
  229. package/dist/store/pi-session-store.js +166 -0
  230. package/dist/store/pi-session-store.js.map +1 -0
  231. package/dist/store/safety-data-accessor.d.ts +1 -0
  232. package/dist/store/safety-data-accessor.d.ts.map +1 -1
  233. package/dist/store/safety-data-accessor.js +5 -0
  234. package/dist/store/safety-data-accessor.js.map +1 -1
  235. package/dist/store/schema/cleo-global/accounts.d.ts +357 -0
  236. package/dist/store/schema/cleo-global/accounts.d.ts.map +1 -0
  237. package/dist/store/schema/cleo-global/accounts.js +136 -0
  238. package/dist/store/schema/cleo-global/accounts.js.map +1 -0
  239. package/dist/store/schema/cleo-global/index.d.ts +2 -0
  240. package/dist/store/schema/cleo-global/index.d.ts.map +1 -1
  241. package/dist/store/schema/cleo-global/index.js +2 -0
  242. package/dist/store/schema/cleo-global/index.js.map +1 -1
  243. package/dist/store/schema/cleo-global/session-manifest.d.ts +217 -0
  244. package/dist/store/schema/cleo-global/session-manifest.d.ts.map +1 -0
  245. package/dist/store/schema/cleo-global/session-manifest.js +99 -0
  246. package/dist/store/schema/cleo-global/session-manifest.js.map +1 -0
  247. package/dist/store/schema/cleo-project/tasks-core.d.ts +16 -0
  248. package/dist/store/schema/cleo-project/tasks-core.d.ts.map +1 -1
  249. package/dist/store/schema/cleo-project/tasks-core.js +14 -0
  250. package/dist/store/schema/cleo-project/tasks-core.js.map +1 -1
  251. package/dist/store/schema/tasks.d.ts +16 -0
  252. package/dist/store/schema/tasks.d.ts.map +1 -1
  253. package/dist/store/schema/tasks.js +10 -0
  254. package/dist/store/schema/tasks.js.map +1 -1
  255. package/dist/store/selfimprove-dhq-schema.d.ts +284 -0
  256. package/dist/store/selfimprove-dhq-schema.d.ts.map +1 -0
  257. package/dist/store/selfimprove-dhq-schema.js +128 -0
  258. package/dist/store/selfimprove-dhq-schema.js.map +1 -0
  259. package/dist/store/selfimprove-dhq-store.d.ts +175 -0
  260. package/dist/store/selfimprove-dhq-store.d.ts.map +1 -0
  261. package/dist/store/selfimprove-dhq-store.js +182 -0
  262. package/dist/store/selfimprove-dhq-store.js.map +1 -0
  263. package/dist/store/session-store.d.ts +52 -13
  264. package/dist/store/session-store.d.ts.map +1 -1
  265. package/dist/store/session-store.js +71 -13
  266. package/dist/store/session-store.js.map +1 -1
  267. package/dist/store/sqlite-data-accessor.d.ts.map +1 -1
  268. package/dist/store/sqlite-data-accessor.js +7 -0
  269. package/dist/store/sqlite-data-accessor.js.map +1 -1
  270. package/dist/store/umbrella-data-accessor.d.ts +1 -0
  271. package/dist/store/umbrella-data-accessor.d.ts.map +1 -1
  272. package/dist/store/umbrella-data-accessor.js +5 -0
  273. package/dist/store/umbrella-data-accessor.js.map +1 -1
  274. package/dist/store/validation-schemas.d.ts +32 -0
  275. package/dist/store/validation-schemas.d.ts.map +1 -1
  276. package/dist/store/writer-lease-schema.d.ts +392 -0
  277. package/dist/store/writer-lease-schema.d.ts.map +1 -0
  278. package/dist/store/writer-lease-schema.js +142 -0
  279. package/dist/store/writer-lease-schema.js.map +1 -0
  280. package/dist/store/writer-lease.d.ts +368 -0
  281. package/dist/store/writer-lease.d.ts.map +1 -0
  282. package/dist/store/writer-lease.js +1002 -0
  283. package/dist/store/writer-lease.js.map +1 -0
  284. package/dist/tasks/backfill-child-projections.d.ts.map +1 -1
  285. package/dist/tasks/backfill-child-projections.js +14 -9
  286. package/dist/tasks/backfill-child-projections.js.map +1 -1
  287. package/dist/tasks/complete.d.ts.map +1 -1
  288. package/dist/tasks/complete.js +7 -10
  289. package/dist/tasks/complete.js.map +1 -1
  290. package/dist/tasks/duplicate-detector.d.ts.map +1 -1
  291. package/dist/tasks/duplicate-detector.js +14 -7
  292. package/dist/tasks/duplicate-detector.js.map +1 -1
  293. package/dist/telemetry/index.d.ts.map +1 -1
  294. package/dist/telemetry/index.js +10 -4
  295. package/dist/telemetry/index.js.map +1 -1
  296. package/dist/tools/agent-registry.d.ts +250 -0
  297. package/dist/tools/agent-registry.d.ts.map +1 -0
  298. package/dist/tools/agent-registry.js +292 -0
  299. package/dist/tools/agent-registry.js.map +1 -0
  300. package/dist/tools/agent-tool-families.d.ts +107 -0
  301. package/dist/tools/agent-tool-families.d.ts.map +1 -0
  302. package/dist/tools/agent-tool-families.js +527 -0
  303. package/dist/tools/agent-tool-families.js.map +1 -0
  304. package/dist/tools/browser-driver.d.ts +183 -0
  305. package/dist/tools/browser-driver.d.ts.map +1 -0
  306. package/dist/tools/browser-driver.js +242 -0
  307. package/dist/tools/browser-driver.js.map +1 -0
  308. package/dist/tools/builtin-agent-tools.d.ts +36 -0
  309. package/dist/tools/builtin-agent-tools.d.ts.map +1 -0
  310. package/dist/tools/builtin-agent-tools.js +150 -0
  311. package/dist/tools/builtin-agent-tools.js.map +1 -0
  312. package/dist/tools/dispatch.d.ts +370 -0
  313. package/dist/tools/dispatch.d.ts.map +1 -0
  314. package/dist/tools/dispatch.js +505 -0
  315. package/dist/tools/dispatch.js.map +1 -0
  316. package/dist/tools/env-scrub.d.ts +93 -0
  317. package/dist/tools/env-scrub.d.ts.map +1 -0
  318. package/dist/tools/env-scrub.js +176 -0
  319. package/dist/tools/env-scrub.js.map +1 -0
  320. package/dist/tools/fs.d.ts +30 -0
  321. package/dist/tools/fs.d.ts.map +1 -1
  322. package/dist/tools/fs.js +55 -2
  323. package/dist/tools/fs.js.map +1 -1
  324. package/dist/tools/guard.d.ts +15 -0
  325. package/dist/tools/guard.d.ts.map +1 -1
  326. package/dist/tools/guard.js +49 -12
  327. package/dist/tools/guard.js.map +1 -1
  328. package/dist/tools/index.d.ts +10 -0
  329. package/dist/tools/index.d.ts.map +1 -1
  330. package/dist/tools/index.js +37 -0
  331. package/dist/tools/index.js.map +1 -1
  332. package/dist/tools/pty.d.ts +45 -0
  333. package/dist/tools/pty.d.ts.map +1 -0
  334. package/dist/tools/pty.js +166 -0
  335. package/dist/tools/pty.js.map +1 -0
  336. package/dist/tools/schema-gen.d.ts +57 -0
  337. package/dist/tools/schema-gen.d.ts.map +1 -0
  338. package/dist/tools/schema-gen.js +52 -0
  339. package/dist/tools/schema-gen.js.map +1 -0
  340. package/dist/tools/shell.d.ts +12 -0
  341. package/dist/tools/shell.d.ts.map +1 -1
  342. package/dist/tools/shell.js +14 -1
  343. package/dist/tools/shell.js.map +1 -1
  344. package/dist/tools/web-agent-tools.d.ts +72 -0
  345. package/dist/tools/web-agent-tools.d.ts.map +1 -0
  346. package/dist/tools/web-agent-tools.js +393 -0
  347. package/dist/tools/web-agent-tools.js.map +1 -0
  348. package/dist/tools/web-search-backends.d.ts +156 -0
  349. package/dist/tools/web-search-backends.d.ts.map +1 -0
  350. package/dist/tools/web-search-backends.js +290 -0
  351. package/dist/tools/web-search-backends.js.map +1 -0
  352. package/dist/validation/ops.d.ts +1 -15
  353. package/dist/validation/ops.d.ts.map +1 -1
  354. package/dist/validation/ops.js +0 -20
  355. package/dist/validation/ops.js.map +1 -1
  356. package/migrations/drizzle-cleo-global/20260607000000_t11891-writer-leases/migration.sql +55 -0
  357. package/migrations/drizzle-cleo-global/20260607010000_t11639-session-manifest/migration.sql +43 -0
  358. package/migrations/drizzle-cleo-global/20260608000000_t11899-pi-session-tree/migration.sql +52 -0
  359. package/migrations/drizzle-cleo-global/20260608010000_t11709-accounts-credential-pool/migration.sql +72 -0
  360. package/migrations/drizzle-cleo-global/20260608020000_t11889-selfimprove-dhq/migration.sql +64 -0
  361. package/migrations/drizzle-cleo-project/20260607000000_t11891-writer-leases/migration.sql +55 -0
  362. package/migrations/drizzle-cleo-project/20260607010000_t11639-session-parent/migration.sql +22 -0
  363. package/migrations/drizzle-cleo-project/20260608000000_t11899-pi-session-tree/migration.sql +52 -0
  364. package/migrations/drizzle-cleo-project/20260608020000_t11889-selfimprove-dhq/migration.sql +64 -0
  365. package/package.json +15 -13
  366. package/dist/lifecycle/chain-composition.d.ts +0 -30
  367. package/dist/lifecycle/chain-composition.d.ts.map +0 -1
  368. package/dist/lifecycle/chain-composition.js +0 -152
  369. package/dist/lifecycle/chain-composition.js.map +0 -1
  370. package/dist/lifecycle/chain-store.d.ts +0 -70
  371. package/dist/lifecycle/chain-store.d.ts.map +0 -1
  372. package/dist/lifecycle/chain-store.js +0 -246
  373. package/dist/lifecycle/chain-store.js.map +0 -1
  374. package/dist/lifecycle/default-chain.d.ts +0 -39
  375. package/dist/lifecycle/default-chain.d.ts.map +0 -1
  376. package/dist/lifecycle/default-chain.js +0 -176
  377. package/dist/lifecycle/default-chain.js.map +0 -1
  378. package/dist/lifecycle/tessera-engine.d.ts +0 -48
  379. package/dist/lifecycle/tessera-engine.d.ts.map +0 -1
  380. package/dist/lifecycle/tessera-engine.js +0 -249
  381. package/dist/lifecycle/tessera-engine.js.map +0 -1
  382. package/dist/validation/chain-validation.d.ts +0 -43
  383. package/dist/validation/chain-validation.d.ts.map +0 -1
  384. package/dist/validation/chain-validation.js +0 -146
  385. package/dist/validation/chain-validation.js.map +0 -1
@@ -0,0 +1,527 @@
1
+ /**
2
+ * Agent-facing tool FAMILIES — terminal, file, search, git (T1741 · epic T11456).
3
+ *
4
+ * The six richer tool families layered over the atomic primitives and registered
5
+ * into the {@link ./agent-registry.js | AgentToolRegistry}, on top of the thin
6
+ * built-ins in {@link ./builtin-agent-tools.js}:
7
+ *
8
+ * - **AC1** `run_shell` — terminal execution with PTY + non-PTY (spawn) modes
9
+ * (PTY via the OPTIONAL, lazily-loaded `node-pty`; transparent spawn fallback).
10
+ * - **AC2** `read_file_paged` — file read with `offset`/`limit` pagination.
11
+ * - **AC3** `write_file_atomic` — atomic (tmp-then-rename) write.
12
+ * - **AC4** `apply_patch` — fuzzy (whitespace-tolerant) text replacement.
13
+ * - **AC5** `search_files` — ripgrep-backed search with graceful degradation
14
+ * to `grep` when `rg` is absent.
15
+ * - **AC6** `git_status` / `git_diff` / `git_log` / `git_commit` — workspace-
16
+ * confined git operations.
17
+ *
18
+ * Every family performs ALL side effects through the injected
19
+ * {@link GuardedToolSurface} (deny-first chokepoint) — there is NO raw `fs` /
20
+ * `child_process` use here. The pure helpers (patch matching, search-output
21
+ * parsing, git parsing) are exported for direct unit testing with mocked
22
+ * backends (AC8). Import-time side-effect-free.
23
+ *
24
+ * @epic T11456
25
+ * @task T1741
26
+ * @see ./guard.js — the deny-first chokepoint every executable routes through
27
+ */
28
+ import { z } from 'zod';
29
+ import { ALWAYS_AVAILABLE } from './agent-registry.js';
30
+ /** Available only when the named binary is known on PATH (AC5/AC6 example). */
31
+ function binaryAvailable(name) {
32
+ return (ctx) => ctx.availableBinaries === undefined || ctx.availableBinaries.includes(name);
33
+ }
34
+ // ===========================================================================
35
+ // AC2 — paginated read (pure slice helper + tool)
36
+ // ===========================================================================
37
+ /**
38
+ * Slice a file's text into a paginated window. Pure helper — no I/O — so it is
39
+ * unit-testable in isolation (AC8).
40
+ *
41
+ * @param content - The full file text.
42
+ * @param offset - 0-based starting line (clamped to `[0, totalLines]`).
43
+ * @param limit - Max lines to return; `undefined` → to end of file.
44
+ * @returns The paginated {@link ReadFilePagedResult} body for `path`.
45
+ */
46
+ export function paginateLines(content, path, offset = 0, limit) {
47
+ const lines = content === '' ? [] : content.split('\n');
48
+ const totalLines = lines.length;
49
+ const start = Math.max(0, Math.min(offset, totalLines));
50
+ const end = limit === undefined ? totalLines : Math.min(start + Math.max(0, limit), totalLines);
51
+ const slice = lines.slice(start, end);
52
+ return {
53
+ path,
54
+ content: slice.join('\n'),
55
+ offset: start,
56
+ lineCount: slice.length,
57
+ totalLines,
58
+ hasMore: end < totalLines,
59
+ };
60
+ }
61
+ /** Normalise a block for fuzzy comparison: trim each line, drop blank edges. */
62
+ function normaliseBlock(block) {
63
+ return block
64
+ .split('\n')
65
+ .map((l) => l.trim())
66
+ .filter((_l, i, arr) => {
67
+ // keep interior; trim leading/trailing all-blank lines
68
+ if (arr[i] !== '')
69
+ return true;
70
+ const beforeAllBlank = arr.slice(0, i).every((x) => x === '');
71
+ const afterAllBlank = arr.slice(i + 1).every((x) => x === '');
72
+ return !(beforeAllBlank || afterAllBlank);
73
+ });
74
+ }
75
+ /**
76
+ * Apply a text replacement, falling back to whitespace-tolerant fuzzy matching
77
+ * when an exact substring match is not found. Pure function of its inputs — no
78
+ * I/O — so it is unit-testable with no filesystem (AC8).
79
+ *
80
+ * Strategy:
81
+ * 1. **Exact** — a verbatim `indexOf(oldText)` substring replacement (first hit).
82
+ * 2. **Fuzzy** (when enabled) — compare `oldText` line-trimmed against every
83
+ * same-length window of the file's line-trimmed lines; the first window that
84
+ * matches is replaced (preserving the file's other lines).
85
+ * 3. **None** — no match; content returned unchanged.
86
+ *
87
+ * @param content - The current file content.
88
+ * @param oldText - The block to locate.
89
+ * @param newText - The replacement.
90
+ * @param fuzzy - Permit fuzzy matching (default `true`).
91
+ * @returns The {@link FuzzyPatchOutcome}.
92
+ */
93
+ export function applyFuzzyPatch(content, oldText, newText, fuzzy = true) {
94
+ // 1) exact substring
95
+ const idx = content.indexOf(oldText);
96
+ if (idx !== -1) {
97
+ const startLine = content.slice(0, idx).split('\n').length - 1;
98
+ const patched = `${content.slice(0, idx)}${newText}${content.slice(idx + oldText.length)}`;
99
+ return { content: patched, matchKind: 'exact', startLine };
100
+ }
101
+ if (!fuzzy) {
102
+ return { content, matchKind: 'none' };
103
+ }
104
+ // 2) fuzzy line-window match (whitespace-insensitive)
105
+ const fileLines = content.split('\n');
106
+ const needle = normaliseBlock(oldText);
107
+ if (needle.length === 0) {
108
+ return { content, matchKind: 'none' };
109
+ }
110
+ for (let i = 0; i + needle.length <= fileLines.length; i++) {
111
+ const window = fileLines.slice(i, i + needle.length).map((l) => l.trim());
112
+ if (window.every((line, j) => line === needle[j])) {
113
+ const replacementLines = newText.split('\n');
114
+ const patchedLines = [
115
+ ...fileLines.slice(0, i),
116
+ ...replacementLines,
117
+ ...fileLines.slice(i + needle.length),
118
+ ];
119
+ return { content: patchedLines.join('\n'), matchKind: 'fuzzy', startLine: i };
120
+ }
121
+ }
122
+ return { content, matchKind: 'none' };
123
+ }
124
+ // ===========================================================================
125
+ // AC5 — ripgrep search-output parsing
126
+ // ===========================================================================
127
+ /**
128
+ * Parse ripgrep `--vimgrep`/`-n` style output (`path:line:col:text` or
129
+ * `path:line:text`) into structured matches. Pure helper (AC8).
130
+ *
131
+ * @param stdout - ripgrep stdout.
132
+ * @param maxResults - Cap on returned matches.
133
+ * @returns The parsed matches and whether the cap truncated them.
134
+ */
135
+ export function parseRipgrepOutput(stdout, maxResults) {
136
+ const matches = [];
137
+ const lines = stdout.split('\n').filter((l) => l.length > 0);
138
+ for (const raw of lines) {
139
+ // path may contain ':' (rare); split on the FIRST two/three colons carefully.
140
+ // rg -n emits `path:line:text`; rg --vimgrep emits `path:line:col:text`.
141
+ const m = /^(.*?):(\d+):(?:(\d+):)?(.*)$/.exec(raw);
142
+ if (m === null)
143
+ continue;
144
+ const path = m[1];
145
+ const line = Number.parseInt(m[2], 10);
146
+ const text = m[4] ?? '';
147
+ if (Number.isNaN(line))
148
+ continue;
149
+ matches.push({ path, line, text });
150
+ if (matches.length >= maxResults) {
151
+ return { matches, truncated: true };
152
+ }
153
+ }
154
+ return { matches, truncated: false };
155
+ }
156
+ // ===========================================================================
157
+ // AC6 — git output parsing
158
+ // ===========================================================================
159
+ /**
160
+ * Parse `git status --porcelain=v1` output into structured entries. Pure (AC8).
161
+ *
162
+ * @param stdout - porcelain-v1 stdout.
163
+ * @returns The parsed status entries.
164
+ */
165
+ export function parseGitStatus(stdout) {
166
+ const entries = [];
167
+ for (const raw of stdout.split('\n')) {
168
+ if (raw.length < 4)
169
+ continue;
170
+ const status = raw.slice(0, 2);
171
+ const path = raw.slice(3);
172
+ entries.push({ status, path });
173
+ }
174
+ return entries;
175
+ }
176
+ /** The record separator used in the {@link GIT_LOG_FORMAT} pretty format. */
177
+ const GIT_LOG_FIELD_SEP = '';
178
+ /**
179
+ * The `--pretty=format:` argument for {@link parseGitLog} — SHA, author name,
180
+ * ISO date, subject, unit-separated.
181
+ */
182
+ export const GIT_LOG_FORMAT = `%H${GIT_LOG_FIELD_SEP}%an${GIT_LOG_FIELD_SEP}%aI${GIT_LOG_FIELD_SEP}%s`;
183
+ /**
184
+ * Parse `git log --pretty=format:<GIT_LOG_FORMAT>` output. Pure (AC8).
185
+ *
186
+ * @param stdout - The git-log stdout.
187
+ * @returns The parsed commit entries, newest-first.
188
+ */
189
+ export function parseGitLog(stdout) {
190
+ const commits = [];
191
+ for (const raw of stdout.split('\n')) {
192
+ if (raw.length === 0)
193
+ continue;
194
+ const [sha, author, date, subject] = raw.split(GIT_LOG_FIELD_SEP);
195
+ if (sha === undefined)
196
+ continue;
197
+ commits.push({
198
+ sha,
199
+ author: author ?? '',
200
+ date: date ?? '',
201
+ subject: subject ?? '',
202
+ });
203
+ }
204
+ return commits;
205
+ }
206
+ /**
207
+ * Run a guarded ripgrep search, degrading to `grep -rn` when `rg` is absent.
208
+ * All execution flows through {@link GuardedToolSurface.executeShell}.
209
+ *
210
+ * @param tools - The guarded surface.
211
+ * @param args - Search parameters (already normalised).
212
+ * @returns Matches, truncation flag, and whether the search degraded.
213
+ */
214
+ async function guardedSearch(tools, args) {
215
+ const rgArgs = ['--no-heading', '--line-number', '--color=never'];
216
+ if (args.fixedStrings)
217
+ rgArgs.push('--fixed-strings');
218
+ if (args.ignoreCase)
219
+ rgArgs.push('--ignore-case');
220
+ if (args.glob !== undefined)
221
+ rgArgs.push('--glob', args.glob);
222
+ rgArgs.push('--max-count', String(args.maxResults), '--', args.pattern, args.root);
223
+ try {
224
+ const res = await tools.executeShell({
225
+ command: 'rg',
226
+ args: rgArgs,
227
+ timeoutMs: args.timeoutMs,
228
+ });
229
+ // rg exit 0 = matches, 1 = no matches (both fine), 2 = error.
230
+ if (res.code === 2) {
231
+ return { matches: [], truncated: false, degraded: false };
232
+ }
233
+ const { matches, truncated } = parseRipgrepOutput(res.stdout, args.maxResults);
234
+ return { matches, truncated, degraded: false };
235
+ }
236
+ catch {
237
+ // rg not on PATH (spawn ENOENT) — degrade to grep.
238
+ return grepFallback(tools, args);
239
+ }
240
+ }
241
+ /** Degraded `grep -rn` fallback when ripgrep is unavailable. */
242
+ async function grepFallback(tools, args) {
243
+ const grepArgs = ['-rn'];
244
+ if (args.fixedStrings)
245
+ grepArgs.push('-F');
246
+ if (args.ignoreCase)
247
+ grepArgs.push('-i');
248
+ grepArgs.push('--', args.pattern, args.root);
249
+ try {
250
+ const res = await tools.executeShell({
251
+ command: 'grep',
252
+ args: grepArgs,
253
+ timeoutMs: args.timeoutMs,
254
+ });
255
+ const { matches, truncated } = parseRipgrepOutput(res.stdout, args.maxResults);
256
+ return { matches, truncated, degraded: true };
257
+ }
258
+ catch {
259
+ // Neither rg nor grep available — report empty, degraded.
260
+ return { matches: [], truncated: false, degraded: true };
261
+ }
262
+ }
263
+ /**
264
+ * Register the agent-facing tool FAMILIES (terminal, file, search, git) into
265
+ * `registry`. Pure registration — no I/O, no scan; side effects happen later
266
+ * through the injected {@link GuardedToolSurface}.
267
+ *
268
+ * @param registry - The registry to populate.
269
+ */
270
+ export function registerAgentToolFamilies(registry) {
271
+ // --- AC1: terminal — run_shell (PTY + non-PTY) ---------------------------
272
+ registry.register({
273
+ name: 'run_shell',
274
+ class: 'shell',
275
+ description: 'Run a command under a PTY (or non-PTY spawn fallback) with cwd/env/timeout. ' +
276
+ 'argv form — never a shell string.',
277
+ toolset: 'terminal',
278
+ stateless: true,
279
+ available: ALWAYS_AVAILABLE,
280
+ parameters: z.object({
281
+ command: z.string().describe('Executable to run (NOT a shell string).'),
282
+ args: z.array(z.string()).optional().describe('Arguments for the command.'),
283
+ cwd: z.string().optional().describe('Working directory.'),
284
+ timeoutMs: z.number().int().positive().optional().describe('Hard timeout in ms.'),
285
+ mode: z
286
+ .enum(['pty', 'spawn', 'auto'])
287
+ .optional()
288
+ .describe("Execution mode: 'pty', 'spawn', or 'auto' (default)."),
289
+ cols: z.number().int().positive().optional().describe('PTY column count (PTY mode).'),
290
+ rows: z.number().int().positive().optional().describe('PTY row count (PTY mode).'),
291
+ }),
292
+ execute: async (rawArgs, tools) => {
293
+ const command = String(rawArgs.command);
294
+ const argv = Array.isArray(rawArgs.args) ? rawArgs.args.map(String) : undefined;
295
+ const cwd = rawArgs.cwd === undefined ? undefined : String(rawArgs.cwd);
296
+ const timeoutMs = typeof rawArgs.timeoutMs === 'number' ? rawArgs.timeoutMs : undefined;
297
+ const mode = rawArgs.mode === 'pty' || rawArgs.mode === 'spawn' || rawArgs.mode === 'auto'
298
+ ? rawArgs.mode
299
+ : undefined;
300
+ const cols = typeof rawArgs.cols === 'number' ? rawArgs.cols : undefined;
301
+ const rows = typeof rawArgs.rows === 'number' ? rawArgs.rows : undefined;
302
+ return tools.executePty({ command, args: argv, cwd, timeoutMs, mode, cols, rows });
303
+ },
304
+ });
305
+ // --- AC2: file — read_file_paged ----------------------------------------
306
+ registry.register({
307
+ name: 'read_file_paged',
308
+ class: 'fs',
309
+ description: 'Read a file with line pagination (offset/limit).',
310
+ toolset: 'file',
311
+ stateless: true,
312
+ available: ALWAYS_AVAILABLE,
313
+ parameters: z.object({
314
+ path: z.string().describe('Absolute path to read.'),
315
+ offset: z.number().int().min(0).optional().describe('0-based start line.'),
316
+ limit: z.number().int().positive().optional().describe('Max lines to return.'),
317
+ }),
318
+ execute: async (rawArgs, tools) => {
319
+ const path = String(rawArgs.path);
320
+ const offset = typeof rawArgs.offset === 'number' ? rawArgs.offset : 0;
321
+ const limit = typeof rawArgs.limit === 'number' ? rawArgs.limit : undefined;
322
+ const { content } = await tools.readFileText({ path });
323
+ return paginateLines(content, path, offset, limit);
324
+ },
325
+ });
326
+ // --- AC3: file — write_file_atomic --------------------------------------
327
+ registry.register({
328
+ name: 'write_file_atomic',
329
+ class: 'fs',
330
+ description: 'Atomically write a file (tmp-then-rename), creating parent dirs.',
331
+ toolset: 'file',
332
+ stateless: true,
333
+ available: ALWAYS_AVAILABLE,
334
+ parameters: z.object({
335
+ path: z.string().describe('Absolute path to write.'),
336
+ content: z.string().describe('File content to write.'),
337
+ }),
338
+ execute: async (rawArgs, tools) => {
339
+ const path = String(rawArgs.path);
340
+ const content = String(rawArgs.content);
341
+ return tools.writeFileAtomic({ path, content });
342
+ },
343
+ });
344
+ // --- AC4: file — apply_patch (fuzzy) ------------------------------------
345
+ registry.register({
346
+ name: 'apply_patch',
347
+ class: 'fs',
348
+ description: 'Replace a block of text in a file (exact, then fuzzy whitespace-tolerant match).',
349
+ toolset: 'file',
350
+ stateless: true,
351
+ available: ALWAYS_AVAILABLE,
352
+ parameters: z.object({
353
+ path: z.string().describe('Absolute path of the file to patch.'),
354
+ oldText: z.string().describe('Block of original text to locate.'),
355
+ newText: z.string().describe('Replacement text.'),
356
+ fuzzy: z.boolean().optional().describe('Permit fuzzy matching (default true).'),
357
+ }),
358
+ execute: async (rawArgs, tools) => {
359
+ const path = String(rawArgs.path);
360
+ const oldText = String(rawArgs.oldText);
361
+ const newText = String(rawArgs.newText);
362
+ const fuzzy = rawArgs.fuzzy === undefined ? true : Boolean(rawArgs.fuzzy);
363
+ const { content } = await tools.readFileText({ path });
364
+ const outcome = applyFuzzyPatch(content, oldText, newText, fuzzy);
365
+ if (outcome.matchKind === 'none') {
366
+ return { path, applied: false, matchKind: 'none' };
367
+ }
368
+ await tools.writeFileAtomic({ path, content: outcome.content });
369
+ return {
370
+ path,
371
+ applied: true,
372
+ matchKind: outcome.matchKind,
373
+ startLine: outcome.startLine,
374
+ };
375
+ },
376
+ });
377
+ // --- AC5: search — search_files (ripgrep, grep fallback) ----------------
378
+ registry.register({
379
+ name: 'search_files',
380
+ class: 'search',
381
+ description: 'Search file contents under a root via ripgrep (grep fallback when rg is absent).',
382
+ toolset: 'file',
383
+ stateless: true,
384
+ available: ALWAYS_AVAILABLE,
385
+ parameters: z.object({
386
+ pattern: z.string().describe('Pattern to search for (regex unless fixedStrings).'),
387
+ root: z.string().describe('Root directory to search under.'),
388
+ fixedStrings: z.boolean().optional().describe('Treat pattern as a literal string.'),
389
+ ignoreCase: z.boolean().optional().describe('Case-insensitive matching.'),
390
+ glob: z.string().optional().describe('Restrict to files matching this glob.'),
391
+ maxResults: z.number().int().positive().optional().describe('Cap on matches (default 1000).'),
392
+ timeoutMs: z.number().int().positive().optional().describe('Hard timeout in ms.'),
393
+ }),
394
+ execute: async (rawArgs, tools) => {
395
+ const maxResults = typeof rawArgs.maxResults === 'number' ? rawArgs.maxResults : 1000;
396
+ return guardedSearch(tools, {
397
+ pattern: String(rawArgs.pattern),
398
+ root: String(rawArgs.root),
399
+ fixedStrings: Boolean(rawArgs.fixedStrings),
400
+ ignoreCase: Boolean(rawArgs.ignoreCase),
401
+ glob: rawArgs.glob === undefined ? undefined : String(rawArgs.glob),
402
+ maxResults,
403
+ timeoutMs: typeof rawArgs.timeoutMs === 'number' ? rawArgs.timeoutMs : undefined,
404
+ });
405
+ },
406
+ });
407
+ // --- AC6: git — status / diff / log / commit ----------------------------
408
+ const gitAvailable = binaryAvailable('git');
409
+ registry.register({
410
+ name: 'git_status',
411
+ class: 'shell',
412
+ description: 'Show the working-tree status (branch + porcelain entries).',
413
+ toolset: 'terminal',
414
+ stateless: true,
415
+ available: gitAvailable,
416
+ parameters: z.object({
417
+ cwd: z.string().optional().describe('Repository working directory.'),
418
+ timeoutMs: z.number().int().positive().optional().describe('Hard timeout in ms.'),
419
+ }),
420
+ execute: async (rawArgs, tools) => {
421
+ const cwd = rawArgs.cwd === undefined ? undefined : String(rawArgs.cwd);
422
+ const timeoutMs = typeof rawArgs.timeoutMs === 'number' ? rawArgs.timeoutMs : undefined;
423
+ const branchRes = await tools.runGit({
424
+ args: ['rev-parse', '--abbrev-ref', 'HEAD'],
425
+ cwd,
426
+ timeoutMs,
427
+ });
428
+ const statusRes = await tools.runGit({
429
+ args: ['status', '--porcelain=v1'],
430
+ cwd,
431
+ timeoutMs,
432
+ });
433
+ const entries = parseGitStatus(statusRes.stdout);
434
+ return {
435
+ branch: branchRes.stdout.trim() || 'HEAD',
436
+ entries,
437
+ clean: entries.length === 0,
438
+ };
439
+ },
440
+ });
441
+ registry.register({
442
+ name: 'git_diff',
443
+ class: 'shell',
444
+ description: 'Show the unified diff of working-tree or staged changes.',
445
+ toolset: 'terminal',
446
+ stateless: true,
447
+ available: gitAvailable,
448
+ parameters: z.object({
449
+ staged: z.boolean().optional().describe('Show staged (--cached) changes.'),
450
+ paths: z.array(z.string()).optional().describe('Restrict to these paths.'),
451
+ cwd: z.string().optional().describe('Repository working directory.'),
452
+ timeoutMs: z.number().int().positive().optional().describe('Hard timeout in ms.'),
453
+ }),
454
+ execute: async (rawArgs, tools) => {
455
+ const cwd = rawArgs.cwd === undefined ? undefined : String(rawArgs.cwd);
456
+ const timeoutMs = typeof rawArgs.timeoutMs === 'number' ? rawArgs.timeoutMs : undefined;
457
+ const gitArgs = ['diff'];
458
+ if (rawArgs.staged === true)
459
+ gitArgs.push('--cached');
460
+ if (Array.isArray(rawArgs.paths) && rawArgs.paths.length > 0) {
461
+ gitArgs.push('--', ...rawArgs.paths.map(String));
462
+ }
463
+ const res = await tools.runGit({ args: gitArgs, cwd, timeoutMs });
464
+ return { diff: res.stdout };
465
+ },
466
+ });
467
+ registry.register({
468
+ name: 'git_log',
469
+ class: 'shell',
470
+ description: 'List recent commits (sha, author, date, subject).',
471
+ toolset: 'terminal',
472
+ stateless: true,
473
+ available: gitAvailable,
474
+ parameters: z.object({
475
+ maxCount: z.number().int().positive().optional().describe('Max commits (default 20).'),
476
+ cwd: z.string().optional().describe('Repository working directory.'),
477
+ timeoutMs: z.number().int().positive().optional().describe('Hard timeout in ms.'),
478
+ }),
479
+ execute: async (rawArgs, tools) => {
480
+ const cwd = rawArgs.cwd === undefined ? undefined : String(rawArgs.cwd);
481
+ const timeoutMs = typeof rawArgs.timeoutMs === 'number' ? rawArgs.timeoutMs : undefined;
482
+ const maxCount = typeof rawArgs.maxCount === 'number' ? rawArgs.maxCount : 20;
483
+ const res = await tools.runGit({
484
+ args: ['log', `--max-count=${maxCount}`, `--pretty=format:${GIT_LOG_FORMAT}`],
485
+ cwd,
486
+ timeoutMs,
487
+ });
488
+ return { commits: parseGitLog(res.stdout) };
489
+ },
490
+ });
491
+ registry.register({
492
+ name: 'git_commit',
493
+ class: 'shell',
494
+ description: 'Create a commit (optionally staging tracked changes or explicit paths).',
495
+ toolset: 'terminal',
496
+ stateless: true,
497
+ available: gitAvailable,
498
+ parameters: z.object({
499
+ message: z.string().describe('Commit message.'),
500
+ all: z.boolean().optional().describe('Stage all tracked modifications first (-a).'),
501
+ paths: z.array(z.string()).optional().describe('Explicit paths to stage before committing.'),
502
+ cwd: z.string().optional().describe('Repository working directory.'),
503
+ timeoutMs: z.number().int().positive().optional().describe('Hard timeout in ms.'),
504
+ }),
505
+ execute: async (rawArgs, tools) => {
506
+ const cwd = rawArgs.cwd === undefined ? undefined : String(rawArgs.cwd);
507
+ const timeoutMs = typeof rawArgs.timeoutMs === 'number' ? rawArgs.timeoutMs : undefined;
508
+ const message = String(rawArgs.message);
509
+ if (Array.isArray(rawArgs.paths) && rawArgs.paths.length > 0) {
510
+ await tools.runGit({ args: ['add', '--', ...rawArgs.paths.map(String)], cwd, timeoutMs });
511
+ }
512
+ const commitArgs = ['commit', '-m', message];
513
+ if (rawArgs.all === true)
514
+ commitArgs.splice(1, 0, '-a');
515
+ const res = await tools.runGit({ args: commitArgs, cwd, timeoutMs });
516
+ const committed = res.code === 0;
517
+ let sha;
518
+ if (committed) {
519
+ const head = await tools.runGit({ args: ['rev-parse', 'HEAD'], cwd, timeoutMs });
520
+ sha = head.stdout.trim() || undefined;
521
+ }
522
+ const summary = `${res.stdout}${res.stderr}`.trim();
523
+ return { committed, sha, summary };
524
+ },
525
+ });
526
+ }
527
+ //# sourceMappingURL=agent-tool-families.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-tool-families.js","sourceRoot":"","sources":["../../src/tools/agent-tool-families.ts"],"names":[],"mappings":"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"}