toolroll 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (626) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1113 -0
  3. package/THIRD_PARTY_NOTICES.md +449 -0
  4. package/dist/accent-colors.d.ts +48 -0
  5. package/dist/accent-colors.js +122 -0
  6. package/dist/action-ledger.d.ts +26 -0
  7. package/dist/action-ledger.js +75 -0
  8. package/dist/agent-fence.d.ts +42 -0
  9. package/dist/agent-fence.js +183 -0
  10. package/dist/agentconfig.d.ts +216 -0
  11. package/dist/agentconfig.js +454 -0
  12. package/dist/api-tokens.d.ts +16 -0
  13. package/dist/api-tokens.js +27 -0
  14. package/dist/approval-policy.d.ts +69 -0
  15. package/dist/approval-policy.js +137 -0
  16. package/dist/approval-rules-ui.d.ts +25 -0
  17. package/dist/approval-rules-ui.js +39 -0
  18. package/dist/assignment-adapters.d.ts +180 -0
  19. package/dist/assignment-adapters.js +239 -0
  20. package/dist/assignment-brief.d.ts +71 -0
  21. package/dist/assignment-brief.js +129 -0
  22. package/dist/assignment-delivery.d.ts +56 -0
  23. package/dist/assignment-delivery.js +160 -0
  24. package/dist/assignment-presentation.d.ts +26 -0
  25. package/dist/assignment-presentation.js +80 -0
  26. package/dist/assignment-status.d.ts +62 -0
  27. package/dist/assignment-status.js +152 -0
  28. package/dist/assignment-ui.d.ts +71 -0
  29. package/dist/assignment-ui.js +103 -0
  30. package/dist/assignment.d.ts +222 -0
  31. package/dist/assignment.js +399 -0
  32. package/dist/attest.d.ts +56 -0
  33. package/dist/attest.js +153 -0
  34. package/dist/backend.d.ts +97 -0
  35. package/dist/backend.js +166 -0
  36. package/dist/backup-ui.d.ts +22 -0
  37. package/dist/backup-ui.js +59 -0
  38. package/dist/backup.d.ts +84 -0
  39. package/dist/backup.js +421 -0
  40. package/dist/beads.d.ts +34 -0
  41. package/dist/beads.js +135 -0
  42. package/dist/bin.d.ts +2 -0
  43. package/dist/bin.js +22 -0
  44. package/dist/board.d.ts +150 -0
  45. package/dist/board.js +210 -0
  46. package/dist/boot-identity.d.ts +63 -0
  47. package/dist/boot-identity.js +99 -0
  48. package/dist/browser/THIRD_PARTY_NOTICES.txt +2295 -0
  49. package/dist/browser/workspace.css +4 -0
  50. package/dist/browser/workspace.js +225 -0
  51. package/dist/browser-crew.d.ts +11 -0
  52. package/dist/browser-crew.js +50 -0
  53. package/dist/browser-shell.d.ts +8 -0
  54. package/dist/browser-shell.js +60 -0
  55. package/dist/browser-workspace.d.ts +780 -0
  56. package/dist/browser-workspace.js +47 -0
  57. package/dist/budget-alerts.d.ts +19 -0
  58. package/dist/budget-alerts.js +46 -0
  59. package/dist/builder.d.ts +370 -0
  60. package/dist/builder.js +3262 -0
  61. package/dist/capscan.d.ts +35 -0
  62. package/dist/capscan.js +113 -0
  63. package/dist/chat-acceptance.d.ts +71 -0
  64. package/dist/chat-acceptance.js +120 -0
  65. package/dist/chat-actions.d.ts +265 -0
  66. package/dist/chat-actions.js +1273 -0
  67. package/dist/chat-channel.d.ts +109 -0
  68. package/dist/chat-channel.js +652 -0
  69. package/dist/chat-continuity.d.ts +32 -0
  70. package/dist/chat-continuity.js +317 -0
  71. package/dist/chat-controls.d.ts +113 -0
  72. package/dist/chat-controls.js +53 -0
  73. package/dist/chat-delivery-state.d.ts +159 -0
  74. package/dist/chat-delivery-state.js +309 -0
  75. package/dist/chat-delivery.d.ts +38 -0
  76. package/dist/chat-delivery.js +693 -0
  77. package/dist/chat-display.d.ts +1 -0
  78. package/dist/chat-display.js +18 -0
  79. package/dist/chat-evidence.d.ts +123 -0
  80. package/dist/chat-evidence.js +207 -0
  81. package/dist/chat-flow.d.ts +44 -0
  82. package/dist/chat-flow.js +215 -0
  83. package/dist/chat-inbox.d.ts +57 -0
  84. package/dist/chat-inbox.js +123 -0
  85. package/dist/chat-polish.d.ts +16 -0
  86. package/dist/chat-polish.js +135 -0
  87. package/dist/chat-review.d.ts +46 -0
  88. package/dist/chat-review.js +98 -0
  89. package/dist/chat-rooms.d.ts +123 -0
  90. package/dist/chat-rooms.js +216 -0
  91. package/dist/chat-task-actions.d.ts +44 -0
  92. package/dist/chat-task-actions.js +79 -0
  93. package/dist/check-progress.d.ts +51 -0
  94. package/dist/check-progress.js +290 -0
  95. package/dist/child-database.d.ts +12 -0
  96. package/dist/child-database.js +30 -0
  97. package/dist/claim.d.ts +688 -0
  98. package/dist/claim.js +1740 -0
  99. package/dist/cli.d.ts +137 -0
  100. package/dist/cli.js +1461 -0
  101. package/dist/codex-limits.d.ts +15 -0
  102. package/dist/codex-limits.js +145 -0
  103. package/dist/coding-context.d.ts +55 -0
  104. package/dist/coding-context.js +92 -0
  105. package/dist/coding-handoff.d.ts +57 -0
  106. package/dist/coding-handoff.js +277 -0
  107. package/dist/coding-provider.d.ts +72 -0
  108. package/dist/coding-provider.js +424 -0
  109. package/dist/coding-shipping-ui.d.ts +4 -0
  110. package/dist/coding-shipping-ui.js +12 -0
  111. package/dist/coding-types.d.ts +62 -0
  112. package/dist/coding-types.js +1 -0
  113. package/dist/coding-ui.d.ts +17 -0
  114. package/dist/coding-ui.js +364 -0
  115. package/dist/coding-update.d.ts +15 -0
  116. package/dist/coding-update.js +149 -0
  117. package/dist/coding-workspace.d.ts +124 -0
  118. package/dist/coding-workspace.js +768 -0
  119. package/dist/container-state.d.ts +5 -0
  120. package/dist/container-state.js +62 -0
  121. package/dist/containment.d.ts +197 -0
  122. package/dist/containment.js +559 -0
  123. package/dist/contest.d.ts +318 -0
  124. package/dist/contest.js +753 -0
  125. package/dist/control-setup.d.ts +35 -0
  126. package/dist/control-setup.js +40 -0
  127. package/dist/control-ui.d.ts +29 -0
  128. package/dist/control-ui.js +53 -0
  129. package/dist/controller-service.d.ts +1 -0
  130. package/dist/controller-service.js +19 -0
  131. package/dist/controller-supervisor.d.ts +30 -0
  132. package/dist/controller-supervisor.js +104 -0
  133. package/dist/converse.d.ts +304 -0
  134. package/dist/converse.js +849 -0
  135. package/dist/coordinator-proposals.d.ts +29 -0
  136. package/dist/coordinator-proposals.js +137 -0
  137. package/dist/coordinator.d.ts +186 -0
  138. package/dist/coordinator.js +447 -0
  139. package/dist/credentials-ui.d.ts +25 -0
  140. package/dist/credentials-ui.js +48 -0
  141. package/dist/daemon.d.ts +209 -0
  142. package/dist/daemon.js +604 -0
  143. package/dist/decision.d.ts +120 -0
  144. package/dist/decision.js +388 -0
  145. package/dist/demo.d.ts +55 -0
  146. package/dist/demo.js +992 -0
  147. package/dist/desktop-access.d.ts +28 -0
  148. package/dist/desktop-access.js +88 -0
  149. package/dist/desktop-bundle.d.ts +16 -0
  150. package/dist/desktop-bundle.js +74 -0
  151. package/dist/desktop-host.d.ts +54 -0
  152. package/dist/desktop-host.js +508 -0
  153. package/dist/desktop-update-gate.d.ts +12 -0
  154. package/dist/desktop-update-gate.js +91 -0
  155. package/dist/desktop-update-recovery.d.ts +14 -0
  156. package/dist/desktop-update-recovery.js +243 -0
  157. package/dist/desktop-update.d.ts +110 -0
  158. package/dist/desktop-update.js +740 -0
  159. package/dist/discord-api.d.ts +20 -0
  160. package/dist/discord-api.js +138 -0
  161. package/dist/discord-chat.d.ts +16 -0
  162. package/dist/discord-chat.js +381 -0
  163. package/dist/discord-settings.d.ts +7 -0
  164. package/dist/discord-settings.js +75 -0
  165. package/dist/discord.d.ts +10 -0
  166. package/dist/discord.js +169 -0
  167. package/dist/discover.d.ts +75 -0
  168. package/dist/discover.js +150 -0
  169. package/dist/dispatch.d.ts +100 -0
  170. package/dist/dispatch.js +311 -0
  171. package/dist/dispose.d.ts +161 -0
  172. package/dist/dispose.js +803 -0
  173. package/dist/email-settings.d.ts +34 -0
  174. package/dist/email-settings.js +50 -0
  175. package/dist/envelope.d.ts +47 -0
  176. package/dist/envelope.js +105 -0
  177. package/dist/evidence-pack.d.ts +185 -0
  178. package/dist/evidence-pack.js +258 -0
  179. package/dist/evidence.d.ts +345 -0
  180. package/dist/evidence.js +782 -0
  181. package/dist/exec.d.ts +285 -0
  182. package/dist/exec.js +1841 -0
  183. package/dist/exhaustion.d.ts +85 -0
  184. package/dist/exhaustion.js +141 -0
  185. package/dist/export-ui.d.ts +4 -0
  186. package/dist/export-ui.js +17 -0
  187. package/dist/export.d.ts +48 -0
  188. package/dist/export.js +305 -0
  189. package/dist/flow-actions.d.ts +77 -0
  190. package/dist/flow-actions.js +203 -0
  191. package/dist/flow-code.d.ts +50 -0
  192. package/dist/flow-code.js +159 -0
  193. package/dist/flow-draft.d.ts +38 -0
  194. package/dist/flow-draft.js +80 -0
  195. package/dist/flow-engine.d.ts +66 -0
  196. package/dist/flow-engine.js +416 -0
  197. package/dist/flow-insights.d.ts +95 -0
  198. package/dist/flow-insights.js +149 -0
  199. package/dist/flow-live.d.ts +24 -0
  200. package/dist/flow-live.js +150 -0
  201. package/dist/flow-people.d.ts +24 -0
  202. package/dist/flow-people.js +91 -0
  203. package/dist/flow-replies.d.ts +48 -0
  204. package/dist/flow-replies.js +113 -0
  205. package/dist/flow-scripts.d.ts +38 -0
  206. package/dist/flow-scripts.js +73 -0
  207. package/dist/flow-secrets.d.ts +13 -0
  208. package/dist/flow-secrets.js +45 -0
  209. package/dist/flow-sort.d.ts +82 -0
  210. package/dist/flow-sort.js +153 -0
  211. package/dist/flow-steps.d.ts +40 -0
  212. package/dist/flow-steps.js +408 -0
  213. package/dist/flow-triggers.d.ts +244 -0
  214. package/dist/flow-triggers.js +959 -0
  215. package/dist/flows-ui.d.ts +20 -0
  216. package/dist/flows-ui.js +175 -0
  217. package/dist/flows.d.ts +229 -0
  218. package/dist/flows.js +968 -0
  219. package/dist/fonts.d.ts +19 -0
  220. package/dist/fonts.js +19 -0
  221. package/dist/gaps.d.ts +35 -0
  222. package/dist/gaps.js +101 -0
  223. package/dist/gate-failure.d.ts +40 -0
  224. package/dist/gate-failure.js +66 -0
  225. package/dist/git.d.ts +54 -0
  226. package/dist/git.js +94 -0
  227. package/dist/google-mail.d.ts +58 -0
  228. package/dist/google-mail.js +151 -0
  229. package/dist/grant.d.ts +136 -0
  230. package/dist/grant.js +238 -0
  231. package/dist/graph.d.ts +164 -0
  232. package/dist/graph.js +383 -0
  233. package/dist/guides.d.ts +22 -0
  234. package/dist/guides.js +363 -0
  235. package/dist/held.d.ts +150 -0
  236. package/dist/held.js +799 -0
  237. package/dist/invoke.d.ts +112 -0
  238. package/dist/invoke.js +780 -0
  239. package/dist/issues.d.ts +41 -0
  240. package/dist/issues.js +131 -0
  241. package/dist/job-object-helper.ps1 +252 -0
  242. package/dist/jsonl-discriminants.d.ts +11 -0
  243. package/dist/jsonl-discriminants.js +93 -0
  244. package/dist/keys.d.ts +104 -0
  245. package/dist/keys.js +229 -0
  246. package/dist/kits-ui.d.ts +17 -0
  247. package/dist/kits-ui.js +46 -0
  248. package/dist/kits.d.ts +86 -0
  249. package/dist/kits.js +215 -0
  250. package/dist/knowledge-cli.d.ts +101 -0
  251. package/dist/knowledge-cli.js +92 -0
  252. package/dist/knowledge-ui.d.ts +24 -0
  253. package/dist/knowledge-ui.js +40 -0
  254. package/dist/lead-context.d.ts +8 -0
  255. package/dist/lead-context.js +56 -0
  256. package/dist/lead-follow.d.ts +22 -0
  257. package/dist/lead-follow.js +167 -0
  258. package/dist/lead-status.d.ts +75 -0
  259. package/dist/lead-status.js +285 -0
  260. package/dist/ledger-chain.d.ts +46 -0
  261. package/dist/ledger-chain.js +187 -0
  262. package/dist/ledger-csv.d.ts +4 -0
  263. package/dist/ledger-csv.js +11 -0
  264. package/dist/ledger-view.d.ts +24 -0
  265. package/dist/ledger-view.js +58 -0
  266. package/dist/limits-ui.d.ts +26 -0
  267. package/dist/limits-ui.js +67 -0
  268. package/dist/link.d.ts +72 -0
  269. package/dist/link.js +217 -0
  270. package/dist/live.d.ts +96 -0
  271. package/dist/live.js +366 -0
  272. package/dist/liveness.d.ts +30 -0
  273. package/dist/liveness.js +42 -0
  274. package/dist/log.d.ts +7 -0
  275. package/dist/log.js +25 -0
  276. package/dist/mailbox.d.ts +57 -0
  277. package/dist/mailbox.js +150 -0
  278. package/dist/maintenance.d.ts +11 -0
  279. package/dist/maintenance.js +35 -0
  280. package/dist/mate-cli.d.ts +52 -0
  281. package/dist/mate-cli.js +345 -0
  282. package/dist/mate-contract.d.ts +10 -0
  283. package/dist/mate-contract.js +30 -0
  284. package/dist/mate-doors.d.ts +69 -0
  285. package/dist/mate-doors.js +548 -0
  286. package/dist/mate-progress.d.ts +29 -0
  287. package/dist/mate-progress.js +121 -0
  288. package/dist/mate-tools.d.ts +94 -0
  289. package/dist/mate-tools.js +1878 -0
  290. package/dist/mate.d.ts +92 -0
  291. package/dist/mate.js +435 -0
  292. package/dist/mcp-connect.d.ts +103 -0
  293. package/dist/mcp-connect.js +252 -0
  294. package/dist/mcp.d.ts +27 -0
  295. package/dist/mcp.js +651 -0
  296. package/dist/memory-cli.d.ts +466 -0
  297. package/dist/memory-cli.js +111 -0
  298. package/dist/memory-pass.d.ts +160 -0
  299. package/dist/memory-pass.js +409 -0
  300. package/dist/metrics.d.ts +3 -0
  301. package/dist/metrics.js +56 -0
  302. package/dist/mobile-viewport.d.ts +3 -0
  303. package/dist/mobile-viewport.js +37 -0
  304. package/dist/model-catalog.d.ts +118 -0
  305. package/dist/model-catalog.js +376 -0
  306. package/dist/models-cli.d.ts +102 -0
  307. package/dist/models-cli.js +66 -0
  308. package/dist/models-ui.d.ts +34 -0
  309. package/dist/models-ui.js +68 -0
  310. package/dist/modes.d.ts +80 -0
  311. package/dist/modes.js +182 -0
  312. package/dist/monitoring-settings.d.ts +44 -0
  313. package/dist/monitoring-settings.js +173 -0
  314. package/dist/monitoring-ui.d.ts +20 -0
  315. package/dist/monitoring-ui.js +51 -0
  316. package/dist/monitoring.d.ts +34 -0
  317. package/dist/monitoring.js +221 -0
  318. package/dist/names.d.ts +67 -0
  319. package/dist/names.js +102 -0
  320. package/dist/observations.d.ts +40 -0
  321. package/dist/observations.js +211 -0
  322. package/dist/oidc.d.ts +71 -0
  323. package/dist/oidc.js +182 -0
  324. package/dist/onboard.d.ts +108 -0
  325. package/dist/onboard.js +325 -0
  326. package/dist/openrouter-models.d.ts +30 -0
  327. package/dist/openrouter-models.js +120 -0
  328. package/dist/operate.d.ts +118 -0
  329. package/dist/operate.js +11321 -0
  330. package/dist/peek-cli.d.ts +97 -0
  331. package/dist/peek-cli.js +215 -0
  332. package/dist/peek.d.ts +134 -0
  333. package/dist/peek.js +578 -0
  334. package/dist/phase-routing.d.ts +307 -0
  335. package/dist/phase-routing.js +658 -0
  336. package/dist/plan-auto.d.ts +14 -0
  337. package/dist/plan-auto.js +92 -0
  338. package/dist/plan.d.ts +186 -0
  339. package/dist/plan.js +401 -0
  340. package/dist/planner-source.d.ts +251 -0
  341. package/dist/planner-source.js +460 -0
  342. package/dist/planner.d.ts +75 -0
  343. package/dist/planner.js +992 -0
  344. package/dist/policy-ui.d.ts +20 -0
  345. package/dist/policy-ui.js +41 -0
  346. package/dist/policy.d.ts +111 -0
  347. package/dist/policy.js +231 -0
  348. package/dist/prepared-evidence.d.ts +16 -0
  349. package/dist/prepared-evidence.js +96 -0
  350. package/dist/pricing.d.ts +45 -0
  351. package/dist/pricing.js +77 -0
  352. package/dist/principal.d.ts +42 -0
  353. package/dist/principal.js +82 -0
  354. package/dist/probe.d.ts +46 -0
  355. package/dist/probe.js +79 -0
  356. package/dist/process-custody.d.ts +17 -0
  357. package/dist/process-custody.js +91 -0
  358. package/dist/process-liveness.d.ts +10 -0
  359. package/dist/process-liveness.js +81 -0
  360. package/dist/process-recovery-anchor.d.ts +75 -0
  361. package/dist/process-recovery-anchor.js +188 -0
  362. package/dist/process-recovery-coalition.d.ts +25 -0
  363. package/dist/process-recovery-coalition.js +105 -0
  364. package/dist/process-recovery-eligibility.d.ts +178 -0
  365. package/dist/process-recovery-eligibility.js +170 -0
  366. package/dist/process-recovery-native.d.ts +172 -0
  367. package/dist/process-recovery-native.js +592 -0
  368. package/dist/process-recovery-provenance.d.ts +163 -0
  369. package/dist/process-recovery-provenance.js +292 -0
  370. package/dist/process-recovery-services.d.ts +56 -0
  371. package/dist/process-recovery-services.js +191 -0
  372. package/dist/process-recovery-settlement.d.ts +32 -0
  373. package/dist/process-recovery-settlement.js +132 -0
  374. package/dist/process-recovery.d.ts +41 -0
  375. package/dist/process-recovery.js +91 -0
  376. package/dist/process-tree.d.ts +41 -0
  377. package/dist/process-tree.js +264 -0
  378. package/dist/project-access.d.ts +14 -0
  379. package/dist/project-access.js +34 -0
  380. package/dist/project-cli.d.ts +18 -0
  381. package/dist/project-cli.js +104 -0
  382. package/dist/project-delete-ui.d.ts +22 -0
  383. package/dist/project-delete-ui.js +48 -0
  384. package/dist/project-delete.d.ts +55 -0
  385. package/dist/project-delete.js +413 -0
  386. package/dist/project-knowledge.d.ts +111 -0
  387. package/dist/project-knowledge.js +241 -0
  388. package/dist/project-learning.d.ts +100 -0
  389. package/dist/project-learning.js +438 -0
  390. package/dist/project-memory.d.ts +81 -0
  391. package/dist/project-memory.js +264 -0
  392. package/dist/project-skills.d.ts +152 -0
  393. package/dist/project-skills.js +660 -0
  394. package/dist/project-tools.d.ts +219 -0
  395. package/dist/project-tools.js +796 -0
  396. package/dist/project.d.ts +61 -0
  397. package/dist/project.js +125 -0
  398. package/dist/prompt.d.ts +22 -0
  399. package/dist/prompt.js +72 -0
  400. package/dist/proof.d.ts +513 -0
  401. package/dist/proof.js +1140 -0
  402. package/dist/proposal.d.ts +82 -0
  403. package/dist/proposal.js +210 -0
  404. package/dist/provider-connection.d.ts +22 -0
  405. package/dist/provider-connection.js +98 -0
  406. package/dist/provider-limits.d.ts +35 -0
  407. package/dist/provider-limits.js +95 -0
  408. package/dist/provider.d.ts +279 -0
  409. package/dist/provider.js +935 -0
  410. package/dist/publish.d.ts +107 -0
  411. package/dist/publish.js +650 -0
  412. package/dist/pulls.d.ts +118 -0
  413. package/dist/pulls.js +240 -0
  414. package/dist/push.d.ts +95 -0
  415. package/dist/push.js +353 -0
  416. package/dist/quality.d.ts +8 -0
  417. package/dist/quality.js +6 -0
  418. package/dist/recipe-ui.d.ts +18 -0
  419. package/dist/recipe-ui.js +152 -0
  420. package/dist/recipes.d.ts +81 -0
  421. package/dist/recipes.js +332 -0
  422. package/dist/remote.d.ts +67 -0
  423. package/dist/remote.js +122 -0
  424. package/dist/render.d.ts +64 -0
  425. package/dist/render.js +587 -0
  426. package/dist/report-summary.d.ts +13 -0
  427. package/dist/report-summary.js +15 -0
  428. package/dist/repos.d.ts +65 -0
  429. package/dist/repos.js +277 -0
  430. package/dist/repository-context-ui.d.ts +2 -0
  431. package/dist/repository-context-ui.js +10 -0
  432. package/dist/repository-context.d.ts +67 -0
  433. package/dist/repository-context.js +376 -0
  434. package/dist/restart-certification.d.ts +134 -0
  435. package/dist/restart-certification.js +226 -0
  436. package/dist/result-actions.d.ts +28 -0
  437. package/dist/result-actions.js +270 -0
  438. package/dist/result-completion.d.ts +18 -0
  439. package/dist/result-completion.js +66 -0
  440. package/dist/result-review.d.ts +213 -0
  441. package/dist/result-review.js +430 -0
  442. package/dist/retention-ui.d.ts +12 -0
  443. package/dist/retention-ui.js +39 -0
  444. package/dist/retention.d.ts +72 -0
  445. package/dist/retention.js +288 -0
  446. package/dist/review-context.d.ts +243 -0
  447. package/dist/review-context.js +1043 -0
  448. package/dist/review-evidence.d.ts +33 -0
  449. package/dist/review-evidence.js +56 -0
  450. package/dist/reviewer.d.ts +97 -0
  451. package/dist/reviewer.js +202 -0
  452. package/dist/routine.d.ts +228 -0
  453. package/dist/routine.js +764 -0
  454. package/dist/runner.d.ts +266 -0
  455. package/dist/runner.js +399 -0
  456. package/dist/scan.d.ts +32 -0
  457. package/dist/scan.js +92 -0
  458. package/dist/scope.d.ts +695 -0
  459. package/dist/scope.js +1176 -0
  460. package/dist/scout-report.d.ts +42 -0
  461. package/dist/scout-report.js +108 -0
  462. package/dist/scout.d.ts +69 -0
  463. package/dist/scout.js +351 -0
  464. package/dist/serve.d.ts +313 -0
  465. package/dist/serve.js +21776 -0
  466. package/dist/session-brief.d.ts +8 -0
  467. package/dist/session-brief.js +24 -0
  468. package/dist/session-cli.d.ts +13 -0
  469. package/dist/session-cli.js +284 -0
  470. package/dist/session-contract.d.ts +183 -0
  471. package/dist/session-contract.js +122 -0
  472. package/dist/session-http.d.ts +19 -0
  473. package/dist/session-http.js +154 -0
  474. package/dist/session-server.d.ts +12 -0
  475. package/dist/session-server.js +37 -0
  476. package/dist/session-service.d.ts +22 -0
  477. package/dist/session-service.js +157 -0
  478. package/dist/setup-guide.d.ts +39 -0
  479. package/dist/setup-guide.js +93 -0
  480. package/dist/sign-in-guard.d.ts +45 -0
  481. package/dist/sign-in-guard.js +74 -0
  482. package/dist/skills-ui.d.ts +11 -0
  483. package/dist/skills-ui.js +58 -0
  484. package/dist/skills.d.ts +97 -0
  485. package/dist/skills.js +276 -0
  486. package/dist/slack-api.d.ts +55 -0
  487. package/dist/slack-api.js +229 -0
  488. package/dist/slack-chat.d.ts +28 -0
  489. package/dist/slack-chat.js +413 -0
  490. package/dist/slack-settings.d.ts +7 -0
  491. package/dist/slack-settings.js +75 -0
  492. package/dist/slack-state.d.ts +13 -0
  493. package/dist/slack-state.js +9 -0
  494. package/dist/slack.d.ts +13 -0
  495. package/dist/slack.js +167 -0
  496. package/dist/spend-ui.d.ts +28 -0
  497. package/dist/spend-ui.js +95 -0
  498. package/dist/spend.d.ts +142 -0
  499. package/dist/spend.js +313 -0
  500. package/dist/sqlite-runtime.d.ts +3 -0
  501. package/dist/sqlite-runtime.js +6 -0
  502. package/dist/sso-settings.d.ts +33 -0
  503. package/dist/sso-settings.js +103 -0
  504. package/dist/sso-ui.d.ts +22 -0
  505. package/dist/sso-ui.js +39 -0
  506. package/dist/storage.d.ts +15 -0
  507. package/dist/storage.js +84 -0
  508. package/dist/store.d.ts +7754 -0
  509. package/dist/store.js +23279 -0
  510. package/dist/structured-output.d.ts +58 -0
  511. package/dist/structured-output.js +103 -0
  512. package/dist/style-asset.d.ts +7 -0
  513. package/dist/style-asset.js +41 -0
  514. package/dist/subscription-chat.d.ts +46 -0
  515. package/dist/subscription-chat.js +275 -0
  516. package/dist/summary.d.ts +33 -0
  517. package/dist/summary.js +71 -0
  518. package/dist/supervisor.mjs +297 -0
  519. package/dist/surface.d.ts +63 -0
  520. package/dist/surface.js +352 -0
  521. package/dist/sync.d.ts +94 -0
  522. package/dist/sync.js +279 -0
  523. package/dist/task-composer.d.ts +13 -0
  524. package/dist/task-composer.js +52 -0
  525. package/dist/task-control.d.ts +165 -0
  526. package/dist/task-control.js +214 -0
  527. package/dist/task-outcome-cli.d.ts +10 -0
  528. package/dist/task-outcome-cli.js +92 -0
  529. package/dist/task-text.d.ts +30 -0
  530. package/dist/task-text.js +41 -0
  531. package/dist/team-cli.d.ts +15 -0
  532. package/dist/team-cli.js +618 -0
  533. package/dist/team-contract.d.ts +92 -0
  534. package/dist/team-contract.js +1 -0
  535. package/dist/team-http.d.ts +17 -0
  536. package/dist/team-http.js +144 -0
  537. package/dist/team-leads.d.ts +81 -0
  538. package/dist/team-leads.js +565 -0
  539. package/dist/team-runtime.d.ts +27 -0
  540. package/dist/team-runtime.js +264 -0
  541. package/dist/team-ui.d.ts +3 -0
  542. package/dist/team-ui.js +9 -0
  543. package/dist/team-updates.d.ts +8 -0
  544. package/dist/team-updates.js +57 -0
  545. package/dist/teammate-admin.d.ts +53 -0
  546. package/dist/teammate-admin.js +111 -0
  547. package/dist/teammate-desk.d.ts +60 -0
  548. package/dist/teammate-desk.js +154 -0
  549. package/dist/teammate-memory.d.ts +64 -0
  550. package/dist/teammate-memory.js +196 -0
  551. package/dist/teammate-question.d.ts +59 -0
  552. package/dist/teammate-question.js +175 -0
  553. package/dist/teammate-tools.d.ts +108 -0
  554. package/dist/teammate-tools.js +271 -0
  555. package/dist/teammate-week.d.ts +68 -0
  556. package/dist/teammate-week.js +132 -0
  557. package/dist/teammate-work.d.ts +76 -0
  558. package/dist/teammate-work.js +280 -0
  559. package/dist/teammates-ui.d.ts +20 -0
  560. package/dist/teammates-ui.js +166 -0
  561. package/dist/teammates.d.ts +180 -0
  562. package/dist/teammates.js +253 -0
  563. package/dist/teams-api.d.ts +33 -0
  564. package/dist/teams-api.js +204 -0
  565. package/dist/teams-chat.d.ts +26 -0
  566. package/dist/teams-chat.js +215 -0
  567. package/dist/teams-settings.d.ts +12 -0
  568. package/dist/teams-settings.js +57 -0
  569. package/dist/teams.d.ts +21 -0
  570. package/dist/teams.js +124 -0
  571. package/dist/telegram-flow.d.ts +49 -0
  572. package/dist/telegram-flow.js +110 -0
  573. package/dist/telegram-mate.d.ts +137 -0
  574. package/dist/telegram-mate.js +707 -0
  575. package/dist/telegram-progress.d.ts +14 -0
  576. package/dist/telegram-progress.js +129 -0
  577. package/dist/telegram-settings.d.ts +9 -0
  578. package/dist/telegram-settings.js +36 -0
  579. package/dist/telegram-status.d.ts +75 -0
  580. package/dist/telegram-status.js +265 -0
  581. package/dist/telegram-team.d.ts +85 -0
  582. package/dist/telegram-team.js +359 -0
  583. package/dist/telegram.d.ts +230 -0
  584. package/dist/telegram.js +1931 -0
  585. package/dist/templates.d.ts +65 -0
  586. package/dist/templates.js +118 -0
  587. package/dist/tool-launcher.d.ts +1 -0
  588. package/dist/tool-launcher.js +101 -0
  589. package/dist/tools-ui.d.ts +30 -0
  590. package/dist/tools-ui.js +40 -0
  591. package/dist/transitions-recipes.d.ts +1 -0
  592. package/dist/transitions-recipes.js +203 -0
  593. package/dist/tree-proof.d.ts +34 -0
  594. package/dist/tree-proof.js +58 -0
  595. package/dist/verification-evidence.d.ts +44 -0
  596. package/dist/verification-evidence.js +238 -0
  597. package/dist/version.d.ts +2 -0
  598. package/dist/version.js +10 -0
  599. package/dist/webhooks.d.ts +91 -0
  600. package/dist/webhooks.js +283 -0
  601. package/dist/work-index.d.ts +68 -0
  602. package/dist/work-index.js +384 -0
  603. package/dist/work-summary.d.ts +57 -0
  604. package/dist/work-summary.js +116 -0
  605. package/dist/workspace-motion.d.ts +4 -0
  606. package/dist/workspace-motion.js +133 -0
  607. package/dist/workspace-revision.d.ts +19 -0
  608. package/dist/workspace-revision.js +92 -0
  609. package/dist/workspace-ui.d.ts +204 -0
  610. package/dist/workspace-ui.js +411 -0
  611. package/dist/worktree-notices.d.ts +13 -0
  612. package/dist/worktree-notices.js +17 -0
  613. package/dist/worktree.d.ts +249 -0
  614. package/dist/worktree.js +720 -0
  615. package/package.json +122 -0
  616. package/scripts/canary-assertions.mjs +42 -0
  617. package/scripts/crash-canary.mjs +253 -0
  618. package/scripts/fixtures/crash-process.mjs +74 -0
  619. package/scripts/fixtures/pilot-scenarios.mjs +85 -0
  620. package/scripts/fixtures/restart-service.mjs +27 -0
  621. package/scripts/launchd-certification.mjs +143 -0
  622. package/scripts/pilot.mjs +121 -0
  623. package/scripts/proof-preflight.mjs +140 -0
  624. package/scripts/provider-canary.mjs +379 -0
  625. package/scripts/recovery-canary.mjs +135 -0
  626. package/scripts/restart-certification.mjs +98 -0
@@ -0,0 +1,466 @@
1
+ import { type MemoryAnalyzer } from './memory-pass.js';
2
+ import type { Store } from './store.js';
3
+ export declare const MEMORY_DESCRIPTORS: readonly [{
4
+ readonly action: 'search';
5
+ readonly synopsis: 'search decisions, instructions, references, lessons and your conversations';
6
+ readonly mutation: 'none';
7
+ readonly takesQuery: true;
8
+ readonly flags: readonly [{
9
+ readonly name: 'repo';
10
+ readonly takesValue: true;
11
+ readonly meaning: 'admitted project checkout root';
12
+ }, {
13
+ readonly name: 'why';
14
+ readonly takesValue: true;
15
+ readonly meaning: 'the reason behind a decision';
16
+ }, {
17
+ readonly name: 'reason';
18
+ readonly takesValue: true;
19
+ readonly meaning: 'why a decision no longer holds';
20
+ }, {
21
+ readonly name: 'supersedes';
22
+ readonly takesValue: true;
23
+ readonly meaning: 'the decision id this one replaces';
24
+ }, {
25
+ readonly name: 'source';
26
+ readonly takesValue: true;
27
+ readonly meaning: 'where the decision came from (conversation, task, result)';
28
+ }, {
29
+ readonly name: 'all';
30
+ readonly takesValue: false;
31
+ readonly meaning: 'include superseded and retired decisions';
32
+ }, {
33
+ readonly name: 'json';
34
+ readonly takesValue: false;
35
+ readonly meaning: 'versioned structured response';
36
+ }, {
37
+ readonly name: 'db';
38
+ readonly takesValue: true;
39
+ readonly meaning: 'local Toolroll database';
40
+ }, {
41
+ readonly name: 'decision';
42
+ readonly takesValue: true;
43
+ readonly meaning: 'accept or reject, for memory apply';
44
+ }, {
45
+ readonly name: 'sessions';
46
+ readonly takesValue: true;
47
+ readonly meaning: 'at most this many newest sessions for one pass (default 100)';
48
+ }, {
49
+ readonly name: 'no-local';
50
+ readonly takesValue: false;
51
+ readonly meaning: 'read only the plane\'s own transcripts, not local Claude Code or Codex session files';
52
+ }];
53
+ }, {
54
+ readonly action: 'decisions';
55
+ readonly synopsis: "list a project's active decisions (--all for history)";
56
+ readonly mutation: 'none';
57
+ readonly takesQuery: false;
58
+ readonly flags: readonly [{
59
+ readonly name: 'repo';
60
+ readonly takesValue: true;
61
+ readonly meaning: 'admitted project checkout root';
62
+ }, {
63
+ readonly name: 'why';
64
+ readonly takesValue: true;
65
+ readonly meaning: 'the reason behind a decision';
66
+ }, {
67
+ readonly name: 'reason';
68
+ readonly takesValue: true;
69
+ readonly meaning: 'why a decision no longer holds';
70
+ }, {
71
+ readonly name: 'supersedes';
72
+ readonly takesValue: true;
73
+ readonly meaning: 'the decision id this one replaces';
74
+ }, {
75
+ readonly name: 'source';
76
+ readonly takesValue: true;
77
+ readonly meaning: 'where the decision came from (conversation, task, result)';
78
+ }, {
79
+ readonly name: 'all';
80
+ readonly takesValue: false;
81
+ readonly meaning: 'include superseded and retired decisions';
82
+ }, {
83
+ readonly name: 'json';
84
+ readonly takesValue: false;
85
+ readonly meaning: 'versioned structured response';
86
+ }, {
87
+ readonly name: 'db';
88
+ readonly takesValue: true;
89
+ readonly meaning: 'local Toolroll database';
90
+ }, {
91
+ readonly name: 'decision';
92
+ readonly takesValue: true;
93
+ readonly meaning: 'accept or reject, for memory apply';
94
+ }, {
95
+ readonly name: 'sessions';
96
+ readonly takesValue: true;
97
+ readonly meaning: 'at most this many newest sessions for one pass (default 100)';
98
+ }, {
99
+ readonly name: 'no-local';
100
+ readonly takesValue: false;
101
+ readonly meaning: 'read only the plane\'s own transcripts, not local Claude Code or Codex session files';
102
+ }];
103
+ }, {
104
+ readonly action: 'show';
105
+ readonly synopsis: 'read one decision with its reason and history';
106
+ readonly mutation: 'none';
107
+ readonly takesQuery: true;
108
+ readonly flags: readonly [{
109
+ readonly name: 'repo';
110
+ readonly takesValue: true;
111
+ readonly meaning: 'admitted project checkout root';
112
+ }, {
113
+ readonly name: 'why';
114
+ readonly takesValue: true;
115
+ readonly meaning: 'the reason behind a decision';
116
+ }, {
117
+ readonly name: 'reason';
118
+ readonly takesValue: true;
119
+ readonly meaning: 'why a decision no longer holds';
120
+ }, {
121
+ readonly name: 'supersedes';
122
+ readonly takesValue: true;
123
+ readonly meaning: 'the decision id this one replaces';
124
+ }, {
125
+ readonly name: 'source';
126
+ readonly takesValue: true;
127
+ readonly meaning: 'where the decision came from (conversation, task, result)';
128
+ }, {
129
+ readonly name: 'all';
130
+ readonly takesValue: false;
131
+ readonly meaning: 'include superseded and retired decisions';
132
+ }, {
133
+ readonly name: 'json';
134
+ readonly takesValue: false;
135
+ readonly meaning: 'versioned structured response';
136
+ }, {
137
+ readonly name: 'db';
138
+ readonly takesValue: true;
139
+ readonly meaning: 'local Toolroll database';
140
+ }, {
141
+ readonly name: 'decision';
142
+ readonly takesValue: true;
143
+ readonly meaning: 'accept or reject, for memory apply';
144
+ }, {
145
+ readonly name: 'sessions';
146
+ readonly takesValue: true;
147
+ readonly meaning: 'at most this many newest sessions for one pass (default 100)';
148
+ }, {
149
+ readonly name: 'no-local';
150
+ readonly takesValue: false;
151
+ readonly meaning: 'read only the plane\'s own transcripts, not local Claude Code or Codex session files';
152
+ }];
153
+ }, {
154
+ readonly action: 'decide';
155
+ readonly synopsis: 'record a settled choice: memory decide "<choice>" --why "<reason>" --repo PATH';
156
+ readonly mutation: 'unkeyed';
157
+ readonly takesQuery: true;
158
+ readonly flags: readonly [{
159
+ readonly name: 'repo';
160
+ readonly takesValue: true;
161
+ readonly meaning: 'admitted project checkout root';
162
+ }, {
163
+ readonly name: 'why';
164
+ readonly takesValue: true;
165
+ readonly meaning: 'the reason behind a decision';
166
+ }, {
167
+ readonly name: 'reason';
168
+ readonly takesValue: true;
169
+ readonly meaning: 'why a decision no longer holds';
170
+ }, {
171
+ readonly name: 'supersedes';
172
+ readonly takesValue: true;
173
+ readonly meaning: 'the decision id this one replaces';
174
+ }, {
175
+ readonly name: 'source';
176
+ readonly takesValue: true;
177
+ readonly meaning: 'where the decision came from (conversation, task, result)';
178
+ }, {
179
+ readonly name: 'all';
180
+ readonly takesValue: false;
181
+ readonly meaning: 'include superseded and retired decisions';
182
+ }, {
183
+ readonly name: 'json';
184
+ readonly takesValue: false;
185
+ readonly meaning: 'versioned structured response';
186
+ }, {
187
+ readonly name: 'db';
188
+ readonly takesValue: true;
189
+ readonly meaning: 'local Toolroll database';
190
+ }, {
191
+ readonly name: 'decision';
192
+ readonly takesValue: true;
193
+ readonly meaning: 'accept or reject, for memory apply';
194
+ }, {
195
+ readonly name: 'sessions';
196
+ readonly takesValue: true;
197
+ readonly meaning: 'at most this many newest sessions for one pass (default 100)';
198
+ }, {
199
+ readonly name: 'no-local';
200
+ readonly takesValue: false;
201
+ readonly meaning: 'read only the plane\'s own transcripts, not local Claude Code or Codex session files';
202
+ }];
203
+ }, {
204
+ readonly action: 'retire';
205
+ readonly synopsis: 'retire a decision that no longer holds: memory retire <id> --reason "<why>"';
206
+ readonly mutation: 'unkeyed';
207
+ readonly takesQuery: true;
208
+ readonly flags: readonly [{
209
+ readonly name: 'repo';
210
+ readonly takesValue: true;
211
+ readonly meaning: 'admitted project checkout root';
212
+ }, {
213
+ readonly name: 'why';
214
+ readonly takesValue: true;
215
+ readonly meaning: 'the reason behind a decision';
216
+ }, {
217
+ readonly name: 'reason';
218
+ readonly takesValue: true;
219
+ readonly meaning: 'why a decision no longer holds';
220
+ }, {
221
+ readonly name: 'supersedes';
222
+ readonly takesValue: true;
223
+ readonly meaning: 'the decision id this one replaces';
224
+ }, {
225
+ readonly name: 'source';
226
+ readonly takesValue: true;
227
+ readonly meaning: 'where the decision came from (conversation, task, result)';
228
+ }, {
229
+ readonly name: 'all';
230
+ readonly takesValue: false;
231
+ readonly meaning: 'include superseded and retired decisions';
232
+ }, {
233
+ readonly name: 'json';
234
+ readonly takesValue: false;
235
+ readonly meaning: 'versioned structured response';
236
+ }, {
237
+ readonly name: 'db';
238
+ readonly takesValue: true;
239
+ readonly meaning: 'local Toolroll database';
240
+ }, {
241
+ readonly name: 'decision';
242
+ readonly takesValue: true;
243
+ readonly meaning: 'accept or reject, for memory apply';
244
+ }, {
245
+ readonly name: 'sessions';
246
+ readonly takesValue: true;
247
+ readonly meaning: 'at most this many newest sessions for one pass (default 100)';
248
+ }, {
249
+ readonly name: 'no-local';
250
+ readonly takesValue: false;
251
+ readonly meaning: 'read only the plane\'s own transcripts, not local Claude Code or Codex session files';
252
+ }];
253
+ }, {
254
+ readonly action: 'propose';
255
+ readonly synopsis: 'the backward pass: read recent sessions, keep a ledger of evidenced gaps, propose a few edits (writes nothing to memory)';
256
+ readonly mutation: 'unkeyed';
257
+ readonly takesQuery: false;
258
+ readonly flags: readonly [{
259
+ readonly name: 'repo';
260
+ readonly takesValue: true;
261
+ readonly meaning: 'admitted project checkout root';
262
+ }, {
263
+ readonly name: 'why';
264
+ readonly takesValue: true;
265
+ readonly meaning: 'the reason behind a decision';
266
+ }, {
267
+ readonly name: 'reason';
268
+ readonly takesValue: true;
269
+ readonly meaning: 'why a decision no longer holds';
270
+ }, {
271
+ readonly name: 'supersedes';
272
+ readonly takesValue: true;
273
+ readonly meaning: 'the decision id this one replaces';
274
+ }, {
275
+ readonly name: 'source';
276
+ readonly takesValue: true;
277
+ readonly meaning: 'where the decision came from (conversation, task, result)';
278
+ }, {
279
+ readonly name: 'all';
280
+ readonly takesValue: false;
281
+ readonly meaning: 'include superseded and retired decisions';
282
+ }, {
283
+ readonly name: 'json';
284
+ readonly takesValue: false;
285
+ readonly meaning: 'versioned structured response';
286
+ }, {
287
+ readonly name: 'db';
288
+ readonly takesValue: true;
289
+ readonly meaning: 'local Toolroll database';
290
+ }, {
291
+ readonly name: 'decision';
292
+ readonly takesValue: true;
293
+ readonly meaning: 'accept or reject, for memory apply';
294
+ }, {
295
+ readonly name: 'sessions';
296
+ readonly takesValue: true;
297
+ readonly meaning: 'at most this many newest sessions for one pass (default 100)';
298
+ }, {
299
+ readonly name: 'no-local';
300
+ readonly takesValue: false;
301
+ readonly meaning: 'read only the plane\'s own transcripts, not local Claude Code or Codex session files';
302
+ }];
303
+ }, {
304
+ readonly action: 'review';
305
+ readonly synopsis: 'list pending memory proposals with their evidence';
306
+ readonly mutation: 'none';
307
+ readonly takesQuery: false;
308
+ readonly flags: readonly [{
309
+ readonly name: 'repo';
310
+ readonly takesValue: true;
311
+ readonly meaning: 'admitted project checkout root';
312
+ }, {
313
+ readonly name: 'why';
314
+ readonly takesValue: true;
315
+ readonly meaning: 'the reason behind a decision';
316
+ }, {
317
+ readonly name: 'reason';
318
+ readonly takesValue: true;
319
+ readonly meaning: 'why a decision no longer holds';
320
+ }, {
321
+ readonly name: 'supersedes';
322
+ readonly takesValue: true;
323
+ readonly meaning: 'the decision id this one replaces';
324
+ }, {
325
+ readonly name: 'source';
326
+ readonly takesValue: true;
327
+ readonly meaning: 'where the decision came from (conversation, task, result)';
328
+ }, {
329
+ readonly name: 'all';
330
+ readonly takesValue: false;
331
+ readonly meaning: 'include superseded and retired decisions';
332
+ }, {
333
+ readonly name: 'json';
334
+ readonly takesValue: false;
335
+ readonly meaning: 'versioned structured response';
336
+ }, {
337
+ readonly name: 'db';
338
+ readonly takesValue: true;
339
+ readonly meaning: 'local Toolroll database';
340
+ }, {
341
+ readonly name: 'decision';
342
+ readonly takesValue: true;
343
+ readonly meaning: 'accept or reject, for memory apply';
344
+ }, {
345
+ readonly name: 'sessions';
346
+ readonly takesValue: true;
347
+ readonly meaning: 'at most this many newest sessions for one pass (default 100)';
348
+ }, {
349
+ readonly name: 'no-local';
350
+ readonly takesValue: false;
351
+ readonly meaning: 'read only the plane\'s own transcripts, not local Claude Code or Codex session files';
352
+ }];
353
+ }, {
354
+ readonly action: 'apply';
355
+ readonly synopsis: 'decide one proposal: memory apply <id> --decision accept|reject — the only writer';
356
+ readonly mutation: 'unkeyed';
357
+ readonly takesQuery: true;
358
+ readonly flags: readonly [{
359
+ readonly name: 'repo';
360
+ readonly takesValue: true;
361
+ readonly meaning: 'admitted project checkout root';
362
+ }, {
363
+ readonly name: 'why';
364
+ readonly takesValue: true;
365
+ readonly meaning: 'the reason behind a decision';
366
+ }, {
367
+ readonly name: 'reason';
368
+ readonly takesValue: true;
369
+ readonly meaning: 'why a decision no longer holds';
370
+ }, {
371
+ readonly name: 'supersedes';
372
+ readonly takesValue: true;
373
+ readonly meaning: 'the decision id this one replaces';
374
+ }, {
375
+ readonly name: 'source';
376
+ readonly takesValue: true;
377
+ readonly meaning: 'where the decision came from (conversation, task, result)';
378
+ }, {
379
+ readonly name: 'all';
380
+ readonly takesValue: false;
381
+ readonly meaning: 'include superseded and retired decisions';
382
+ }, {
383
+ readonly name: 'json';
384
+ readonly takesValue: false;
385
+ readonly meaning: 'versioned structured response';
386
+ }, {
387
+ readonly name: 'db';
388
+ readonly takesValue: true;
389
+ readonly meaning: 'local Toolroll database';
390
+ }, {
391
+ readonly name: 'decision';
392
+ readonly takesValue: true;
393
+ readonly meaning: 'accept or reject, for memory apply';
394
+ }, {
395
+ readonly name: 'sessions';
396
+ readonly takesValue: true;
397
+ readonly meaning: 'at most this many newest sessions for one pass (default 100)';
398
+ }, {
399
+ readonly name: 'no-local';
400
+ readonly takesValue: false;
401
+ readonly meaning: 'read only the plane\'s own transcripts, not local Claude Code or Codex session files';
402
+ }];
403
+ }, {
404
+ readonly action: 'status';
405
+ readonly synopsis: 'surface version, instruction budget, sessions analysed, open gaps and pending proposals';
406
+ readonly mutation: 'none';
407
+ readonly takesQuery: false;
408
+ readonly flags: readonly [{
409
+ readonly name: 'repo';
410
+ readonly takesValue: true;
411
+ readonly meaning: 'admitted project checkout root';
412
+ }, {
413
+ readonly name: 'why';
414
+ readonly takesValue: true;
415
+ readonly meaning: 'the reason behind a decision';
416
+ }, {
417
+ readonly name: 'reason';
418
+ readonly takesValue: true;
419
+ readonly meaning: 'why a decision no longer holds';
420
+ }, {
421
+ readonly name: 'supersedes';
422
+ readonly takesValue: true;
423
+ readonly meaning: 'the decision id this one replaces';
424
+ }, {
425
+ readonly name: 'source';
426
+ readonly takesValue: true;
427
+ readonly meaning: 'where the decision came from (conversation, task, result)';
428
+ }, {
429
+ readonly name: 'all';
430
+ readonly takesValue: false;
431
+ readonly meaning: 'include superseded and retired decisions';
432
+ }, {
433
+ readonly name: 'json';
434
+ readonly takesValue: false;
435
+ readonly meaning: 'versioned structured response';
436
+ }, {
437
+ readonly name: 'db';
438
+ readonly takesValue: true;
439
+ readonly meaning: 'local Toolroll database';
440
+ }, {
441
+ readonly name: 'decision';
442
+ readonly takesValue: true;
443
+ readonly meaning: 'accept or reject, for memory apply';
444
+ }, {
445
+ readonly name: 'sessions';
446
+ readonly takesValue: true;
447
+ readonly meaning: 'at most this many newest sessions for one pass (default 100)';
448
+ }, {
449
+ readonly name: 'no-local';
450
+ readonly takesValue: false;
451
+ readonly meaning: 'read only the plane\'s own transcripts, not local Claude Code or Codex session files';
452
+ }];
453
+ }];
454
+ export type MemoryCliContext = {
455
+ store: Store;
456
+ write: (line: string) => void;
457
+ json: boolean;
458
+ now: Date;
459
+ actor: string | null;
460
+ repos: readonly string[];
461
+ evidenceRoot?: string;
462
+ configDir?: string;
463
+ analyzer?: MemoryAnalyzer;
464
+ home?: string;
465
+ };
466
+ export declare function runMemoryCommand(positional: readonly string[], options: Map<string, string | true>, context: MemoryCliContext): Promise<number>;
@@ -0,0 +1,111 @@
1
+ /** `toolroll memory …`: the project's decisions and one search over its
2
+ * memory, from the terminal. Reads use the remembered local login; writes
3
+ * record who did them. Nothing here starts a model. */
4
+ import { envelopeJson } from './envelope.js';
5
+ import { decisionHistory, getDecision, listDecisions, recordDecision, retireDecision, searchMemory } from './project-memory.js';
6
+ import { decideProposal, defaultAnalyzer, listProposals, memoryStatus, runMemoryPass } from './memory-pass.js';
7
+ const flags = [
8
+ { name: 'repo', takesValue: true, meaning: 'admitted project checkout root' },
9
+ { name: 'why', takesValue: true, meaning: 'the reason behind a decision' },
10
+ { name: 'reason', takesValue: true, meaning: 'why a decision no longer holds' },
11
+ { name: 'supersedes', takesValue: true, meaning: 'the decision id this one replaces' },
12
+ { name: 'source', takesValue: true, meaning: 'where the decision came from (conversation, task, result)' },
13
+ { name: 'all', takesValue: false, meaning: 'include superseded and retired decisions' },
14
+ { name: 'json', takesValue: false, meaning: 'versioned structured response' },
15
+ { name: 'db', takesValue: true, meaning: 'local Toolroll database' },
16
+ { name: 'decision', takesValue: true, meaning: 'accept or reject, for memory apply' },
17
+ { name: 'sessions', takesValue: true, meaning: 'at most this many newest sessions for one pass (default 100)' },
18
+ { name: 'no-local', takesValue: false, meaning: 'read only the plane\'s own transcripts, not local Claude Code or Codex session files' },
19
+ ];
20
+ export const MEMORY_DESCRIPTORS = [
21
+ { action: 'search', synopsis: 'search decisions, instructions, references, lessons and your conversations', mutation: 'none', takesQuery: true, flags },
22
+ { action: 'decisions', synopsis: "list a project's active decisions (--all for history)", mutation: 'none', takesQuery: false, flags },
23
+ { action: 'show', synopsis: 'read one decision with its reason and history', mutation: 'none', takesQuery: true, flags },
24
+ { action: 'decide', synopsis: 'record a settled choice: memory decide "<choice>" --why "<reason>" --repo PATH', mutation: 'unkeyed', takesQuery: true, flags },
25
+ { action: 'retire', synopsis: 'retire a decision that no longer holds: memory retire <id> --reason "<why>"', mutation: 'unkeyed', takesQuery: true, flags },
26
+ { action: 'propose', synopsis: 'the backward pass: read recent sessions, keep a ledger of evidenced gaps, propose a few edits (writes nothing to memory)', mutation: 'unkeyed', takesQuery: false, flags },
27
+ { action: 'review', synopsis: 'list pending memory proposals with their evidence', mutation: 'none', takesQuery: false, flags },
28
+ { action: 'apply', synopsis: 'decide one proposal: memory apply <id> --decision accept|reject — the only writer', mutation: 'unkeyed', takesQuery: true, flags },
29
+ { action: 'status', synopsis: 'surface version, instruction budget, sessions analysed, open gaps and pending proposals', mutation: 'none', takesQuery: false, flags },
30
+ ];
31
+ const line = (d) => `#${d.id} ${d.claim} — ${d.decidedBy}, ${d.decidedAt.slice(0, 10)}${d.status === 'active' ? '' : ` (${d.status})`}`;
32
+ export async function runMemoryCommand(positional, options, context) {
33
+ const action = positional[0];
34
+ const command = action ? `memory ${action}` : 'memory';
35
+ const fail = (reason, message) => { context.write(context.json ? envelopeJson({ ok: false, command, reason, message }) : message); return reason === 'usage' ? 2 : 1; };
36
+ const ok = (result, lines) => { context.write(context.json ? envelopeJson({ ok: true, command, ...result }) : lines.join('\n')); return 0; };
37
+ if (!MEMORY_DESCRIPTORS.some(d => d.action === action))
38
+ return fail('usage', 'Use memory search <query> | decisions | show <id> | decide "<choice>" --why "<reason>" | retire <id> --reason "<why>" | propose | review | apply <id> --decision accept|reject | status, with --repo PATH.');
39
+ if (context.actor === null)
40
+ return fail('unauthenticated', 'Sign in first: the remembered local login drives memory commands.');
41
+ const text = (key) => { const v = options.get(key); return typeof v === 'string' ? v : null; };
42
+ const repo = text('repo') ?? (context.repos.length === 1 ? context.repos[0] : null);
43
+ if (action === 'search') {
44
+ const query = positional.slice(1).join(' ').trim();
45
+ if (!query)
46
+ return fail('usage', 'Give a search query.');
47
+ const hits = searchMemory(context.store, { actor: context.actor, repos: repo === null ? context.repos : [repo], query, limit: 20 });
48
+ return ok({ hits }, hits.length === 0 ? ['Nothing in project memory matches.'] : hits.map(h => `${h.kind}${h.kind === 'decision' || h.kind === 'lesson' ? ` #${h.ref}` : ''} · ${h.title}\n ${h.snippet}`));
49
+ }
50
+ if (repo === null)
51
+ return fail('usage', 'Use --repo with the project checkout root.');
52
+ if (!context.repos.includes(repo))
53
+ return fail('not-found', 'That project is outside your access.');
54
+ try {
55
+ if (action === 'decisions') {
56
+ const decisions = listDecisions(context.store, repo, context.actor, { status: options.has('all') ? 'all' : 'active', limit: 100 });
57
+ return ok({ decisions }, decisions.length === 0 ? ['No decisions recorded for this project.'] : decisions.map(line));
58
+ }
59
+ if (action === 'show') {
60
+ const id = Number(positional[1]);
61
+ if (!Number.isSafeInteger(id) || id < 1)
62
+ return fail('usage', 'memory show <decision id>');
63
+ const decision = getDecision(context.store, repo, context.actor, id);
64
+ if (decision === null)
65
+ return fail('not-found', 'No such decision in this project.');
66
+ const history = decisionHistory(context.store, repo, context.actor, id);
67
+ return ok({ decision, history }, [line(decision), `Why: ${decision.why}`, `Source: ${decision.sourceKind}${decision.sourceRef ? ` · ${decision.sourceRef}` : ''}`, ...history.map(h => ` v${h.revision} ${h.action} by ${h.actor} at ${h.at.slice(0, 16).replace('T', ' ')}`)]);
68
+ }
69
+ if (action === 'decide') {
70
+ const claim = positional.slice(1).join(' ').trim(), why = text('why') ?? '';
71
+ if (!claim || !why)
72
+ return fail('usage', 'memory decide "<choice in one sentence>" --why "<reason>" [--supersedes <id>] [--source <ref>]');
73
+ const supersedes = text('supersedes');
74
+ const decision = recordDecision(context.store, { repo, actor: context.actor, draft: { claim, why, sourceKind: 'manual', ...(text('source') === null ? {} : { sourceRef: text('source') }), ...(supersedes === null ? {} : { supersedes: Number(supersedes) }) } }, context.now);
75
+ return ok({ decision }, [`Recorded ${line(decision)}`]);
76
+ }
77
+ if (action === 'status') {
78
+ const status = memoryStatus(context.store, repo, context.actor);
79
+ return ok({ status }, [`Surface ${status.surface} · instructions ${status.instructionBytes}/${status.budgetBytes} bytes`, `Sessions: ${status.sessions.total} seen, ${status.sessions.analyzed} analysed, ${status.sessions.failed} failed`, `Open gaps: ${status.openGaps} · pending proposals: ${status.pending}`]);
80
+ }
81
+ const proposalLine = (p) => `#${p.id} ${p.kind} · ${p.title} (${p.sessions} sessions${p.status === 'pending' ? '' : `, ${p.status}`})\n ${p.rationale}${p.afterText ? `\n → ${p.afterText}` : ''}${p.beforeText ? `\n ← ${p.beforeText}` : ''}${p.evidence.map(e => `\n "${e.quote.slice(0, 160)}" — ${e.session.split(':')[0]}`).join('')}`;
82
+ if (action === 'review') {
83
+ const proposals = listProposals(context.store, repo, options.has('all') ? 'all' : 'pending');
84
+ return ok({ proposals }, proposals.length === 0 ? ['No proposals waiting. Run memory propose after more sessions.'] : proposals.map(proposalLine));
85
+ }
86
+ if (action === 'propose') {
87
+ const sessions = text('sessions');
88
+ const max = sessions === null ? 100 : Number(sessions);
89
+ if (!Number.isSafeInteger(max) || max < 1 || max > 1000)
90
+ return fail('usage', '--sessions takes a whole number from 1 to 1000.');
91
+ const analyzer = context.analyzer ?? defaultAnalyzer(context.store, { ...(context.configDir === undefined ? {} : { configDir: context.configDir }) });
92
+ const report = await runMemoryPass(context.store, { repo, actor: context.actor, analyzer, maxSessions: max, local: !options.has('no-local'), ...(context.evidenceRoot === undefined ? {} : { evidenceRoot: context.evidenceRoot }), ...(context.home === undefined ? {} : { home: context.home }) }, context.now);
93
+ return ok({ report }, [`Sessions: ${report.sessions} found, ${report.analyzed} analysed now, ${report.cached} already analysed, ${report.failed} failed`, `Open gaps: ${report.gaps} · new proposals: ${report.proposals}`, ...report.problems.slice(0, 5).map(p => ` problem: ${p}`), report.proposals > 0 ? 'Review them with memory review, then memory apply <id> --decision accept|reject.' : 'Nothing to propose yet: a gap needs the same mistake in two distinct sessions.']);
94
+ }
95
+ if (action === 'apply') {
96
+ const id = Number(positional[1]), decision = text('decision');
97
+ if (!Number.isSafeInteger(id) || id < 1 || (decision !== 'accept' && decision !== 'reject'))
98
+ return fail('usage', 'memory apply <proposal id> --decision accept|reject');
99
+ const proposal = decideProposal(context.store, { repo, actor: context.actor, id, decision }, context.now);
100
+ return ok({ proposal }, [`${decision === 'accept' ? 'Applied' : 'Rejected'} ${proposalLine(proposal)}`]);
101
+ }
102
+ const id = Number(positional[1]), reason = text('reason') ?? '';
103
+ if (!Number.isSafeInteger(id) || id < 1 || !reason)
104
+ return fail('usage', 'memory retire <decision id> --reason "<why it no longer holds>"');
105
+ const decision = retireDecision(context.store, { repo, actor: context.actor, id, reason }, context.now);
106
+ return ok({ decision }, [`Retired ${line(decision)}`]);
107
+ }
108
+ catch (error) {
109
+ return fail('refused', error instanceof Error ? error.message : 'Project memory refused the change.');
110
+ }
111
+ }