praxis-agent 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (395) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +534 -0
  3. package/dist/application/background-agent-manager.d.ts +66 -0
  4. package/dist/application/background-agent-manager.d.ts.map +1 -0
  5. package/dist/application/background-agent-manager.js +362 -0
  6. package/dist/application/background-agent-manager.js.map +1 -0
  7. package/dist/application/background-bash-manager.d.ts +54 -0
  8. package/dist/application/background-bash-manager.d.ts.map +1 -0
  9. package/dist/application/background-bash-manager.js +354 -0
  10. package/dist/application/background-bash-manager.js.map +1 -0
  11. package/dist/application/background-task-id.d.ts +5 -0
  12. package/dist/application/background-task-id.d.ts.map +1 -0
  13. package/dist/application/background-task-id.js +25 -0
  14. package/dist/application/background-task-id.js.map +1 -0
  15. package/dist/application/claude-project-purge.d.ts +50 -0
  16. package/dist/application/claude-project-purge.d.ts.map +1 -0
  17. package/dist/application/claude-project-purge.js +459 -0
  18. package/dist/application/claude-project-purge.js.map +1 -0
  19. package/dist/application/managed-worktree.d.ts +15 -0
  20. package/dist/application/managed-worktree.d.ts.map +1 -0
  21. package/dist/application/managed-worktree.js +127 -0
  22. package/dist/application/managed-worktree.js.map +1 -0
  23. package/dist/application/model-compactor.d.ts +8 -0
  24. package/dist/application/model-compactor.d.ts.map +1 -0
  25. package/dist/application/model-compactor.js +70 -0
  26. package/dist/application/model-compactor.js.map +1 -0
  27. package/dist/application/scheduled-prompt-manager.d.ts +69 -0
  28. package/dist/application/scheduled-prompt-manager.d.ts.map +1 -0
  29. package/dist/application/scheduled-prompt-manager.js +387 -0
  30. package/dist/application/scheduled-prompt-manager.js.map +1 -0
  31. package/dist/application/session-service.d.ts +142 -0
  32. package/dist/application/session-service.d.ts.map +1 -0
  33. package/dist/application/session-service.js +1690 -0
  34. package/dist/application/session-service.js.map +1 -0
  35. package/dist/application/session-worktree.d.ts +55 -0
  36. package/dist/application/session-worktree.d.ts.map +1 -0
  37. package/dist/application/session-worktree.js +311 -0
  38. package/dist/application/session-worktree.js.map +1 -0
  39. package/dist/application/subagent-service.d.ts +98 -0
  40. package/dist/application/subagent-service.d.ts.map +1 -0
  41. package/dist/application/subagent-service.js +1305 -0
  42. package/dist/application/subagent-service.js.map +1 -0
  43. package/dist/application/tool-use-summary.d.ts +8 -0
  44. package/dist/application/tool-use-summary.d.ts.map +1 -0
  45. package/dist/application/tool-use-summary.js +53 -0
  46. package/dist/application/tool-use-summary.js.map +1 -0
  47. package/dist/application/top-level-agent-manager.d.ts +58 -0
  48. package/dist/application/top-level-agent-manager.d.ts.map +1 -0
  49. package/dist/application/top-level-agent-manager.js +907 -0
  50. package/dist/application/top-level-agent-manager.js.map +1 -0
  51. package/dist/application/workflow-manager.d.ts +61 -0
  52. package/dist/application/workflow-manager.d.ts.map +1 -0
  53. package/dist/application/workflow-manager.js +582 -0
  54. package/dist/application/workflow-manager.js.map +1 -0
  55. package/dist/application/workflow-meta.d.ts +18 -0
  56. package/dist/application/workflow-meta.d.ts.map +1 -0
  57. package/dist/application/workflow-meta.js +146 -0
  58. package/dist/application/workflow-meta.js.map +1 -0
  59. package/dist/application/workflow-runtime.d.ts +29 -0
  60. package/dist/application/workflow-runtime.d.ts.map +1 -0
  61. package/dist/application/workflow-runtime.js +176 -0
  62. package/dist/application/workflow-runtime.js.map +1 -0
  63. package/dist/application/workflow-worktree.d.ts +9 -0
  64. package/dist/application/workflow-worktree.d.ts.map +1 -0
  65. package/dist/application/workflow-worktree.js +11 -0
  66. package/dist/application/workflow-worktree.js.map +1 -0
  67. package/dist/cli/agents-dashboard.d.ts +37 -0
  68. package/dist/cli/agents-dashboard.d.ts.map +1 -0
  69. package/dist/cli/agents-dashboard.js +408 -0
  70. package/dist/cli/agents-dashboard.js.map +1 -0
  71. package/dist/cli/controls.d.ts +15 -0
  72. package/dist/cli/controls.d.ts.map +1 -0
  73. package/dist/cli/controls.js +219 -0
  74. package/dist/cli/controls.js.map +1 -0
  75. package/dist/cli/debug.d.ts +13 -0
  76. package/dist/cli/debug.d.ts.map +1 -0
  77. package/dist/cli/debug.js +37 -0
  78. package/dist/cli/debug.js.map +1 -0
  79. package/dist/cli/interactive.d.ts +63 -0
  80. package/dist/cli/interactive.d.ts.map +1 -0
  81. package/dist/cli/interactive.js +600 -0
  82. package/dist/cli/interactive.js.map +1 -0
  83. package/dist/cli/protocol.d.ts +251 -0
  84. package/dist/cli/protocol.d.ts.map +1 -0
  85. package/dist/cli/protocol.js +2146 -0
  86. package/dist/cli/protocol.js.map +1 -0
  87. package/dist/cli.d.ts +116 -0
  88. package/dist/cli.d.ts.map +1 -0
  89. package/dist/cli.js +3901 -0
  90. package/dist/cli.js.map +1 -0
  91. package/dist/compatibility/claude/compaction.d.ts +19 -0
  92. package/dist/compatibility/claude/compaction.d.ts.map +1 -0
  93. package/dist/compatibility/claude/compaction.js +82 -0
  94. package/dist/compatibility/claude/compaction.js.map +1 -0
  95. package/dist/compatibility/claude/context.d.ts +24 -0
  96. package/dist/compatibility/claude/context.d.ts.map +1 -0
  97. package/dist/compatibility/claude/context.js +92 -0
  98. package/dist/compatibility/claude/context.js.map +1 -0
  99. package/dist/compatibility/claude/dynamic-context.d.ts +20 -0
  100. package/dist/compatibility/claude/dynamic-context.d.ts.map +1 -0
  101. package/dist/compatibility/claude/dynamic-context.js +168 -0
  102. package/dist/compatibility/claude/dynamic-context.js.map +1 -0
  103. package/dist/compatibility/claude/file-history.d.ts +14 -0
  104. package/dist/compatibility/claude/file-history.d.ts.map +1 -0
  105. package/dist/compatibility/claude/file-history.js +340 -0
  106. package/dist/compatibility/claude/file-history.js.map +1 -0
  107. package/dist/compatibility/claude/file-resources.d.ts +28 -0
  108. package/dist/compatibility/claude/file-resources.d.ts.map +1 -0
  109. package/dist/compatibility/claude/file-resources.js +168 -0
  110. package/dist/compatibility/claude/file-resources.js.map +1 -0
  111. package/dist/compatibility/claude/fork.d.ts +9 -0
  112. package/dist/compatibility/claude/fork.d.ts.map +1 -0
  113. package/dist/compatibility/claude/fork.js +225 -0
  114. package/dist/compatibility/claude/fork.js.map +1 -0
  115. package/dist/compatibility/claude/history.d.ts +4 -0
  116. package/dist/compatibility/claude/history.d.ts.map +1 -0
  117. package/dist/compatibility/claude/history.js +86 -0
  118. package/dist/compatibility/claude/history.js.map +1 -0
  119. package/dist/compatibility/claude/ownership.d.ts +87 -0
  120. package/dist/compatibility/claude/ownership.d.ts.map +1 -0
  121. package/dist/compatibility/claude/ownership.js +100 -0
  122. package/dist/compatibility/claude/ownership.js.map +1 -0
  123. package/dist/compatibility/claude/paths.d.ts +17 -0
  124. package/dist/compatibility/claude/paths.d.ts.map +1 -0
  125. package/dist/compatibility/claude/paths.js +54 -0
  126. package/dist/compatibility/claude/paths.js.map +1 -0
  127. package/dist/compatibility/claude/pr-links.d.ts +25 -0
  128. package/dist/compatibility/claude/pr-links.d.ts.map +1 -0
  129. package/dist/compatibility/claude/pr-links.js +80 -0
  130. package/dist/compatibility/claude/pr-links.js.map +1 -0
  131. package/dist/compatibility/claude/projection.d.ts +11 -0
  132. package/dist/compatibility/claude/projection.d.ts.map +1 -0
  133. package/dist/compatibility/claude/projection.js +325 -0
  134. package/dist/compatibility/claude/projection.js.map +1 -0
  135. package/dist/compatibility/claude/schema.d.ts +18 -0
  136. package/dist/compatibility/claude/schema.d.ts.map +1 -0
  137. package/dist/compatibility/claude/schema.js +983 -0
  138. package/dist/compatibility/claude/schema.js.map +1 -0
  139. package/dist/compatibility/claude/shared-resources.d.ts +51 -0
  140. package/dist/compatibility/claude/shared-resources.d.ts.map +1 -0
  141. package/dist/compatibility/claude/shared-resources.js +382 -0
  142. package/dist/compatibility/claude/shared-resources.js.map +1 -0
  143. package/dist/compatibility/claude/sidechain.d.ts +50 -0
  144. package/dist/compatibility/claude/sidechain.d.ts.map +1 -0
  145. package/dist/compatibility/claude/sidechain.js +90 -0
  146. package/dist/compatibility/claude/sidechain.js.map +1 -0
  147. package/dist/compatibility/claude/tool-links.d.ts +13 -0
  148. package/dist/compatibility/claude/tool-links.d.ts.map +1 -0
  149. package/dist/compatibility/claude/tool-links.js +61 -0
  150. package/dist/compatibility/claude/tool-links.js.map +1 -0
  151. package/dist/compatibility/claude/translation.d.ts +71 -0
  152. package/dist/compatibility/claude/translation.d.ts.map +1 -0
  153. package/dist/compatibility/claude/translation.js +443 -0
  154. package/dist/compatibility/claude/translation.js.map +1 -0
  155. package/dist/compatibility/claude/workflow-replay.d.ts +10 -0
  156. package/dist/compatibility/claude/workflow-replay.d.ts.map +1 -0
  157. package/dist/compatibility/claude/workflow-replay.js +66 -0
  158. package/dist/compatibility/claude/workflow-replay.js.map +1 -0
  159. package/dist/compatibility/claude/workflow.d.ts +33 -0
  160. package/dist/compatibility/claude/workflow.d.ts.map +1 -0
  161. package/dist/compatibility/claude/workflow.js +76 -0
  162. package/dist/compatibility/claude/workflow.js.map +1 -0
  163. package/dist/core/compaction.d.ts +16 -0
  164. package/dist/core/compaction.d.ts.map +1 -0
  165. package/dist/core/compaction.js +2 -0
  166. package/dist/core/compaction.js.map +1 -0
  167. package/dist/core/context-budget.d.ts +28 -0
  168. package/dist/core/context-budget.d.ts.map +1 -0
  169. package/dist/core/context-budget.js +108 -0
  170. package/dist/core/context-budget.js.map +1 -0
  171. package/dist/core/context.d.ts +16 -0
  172. package/dist/core/context.d.ts.map +1 -0
  173. package/dist/core/context.js +13 -0
  174. package/dist/core/context.js.map +1 -0
  175. package/dist/core/runtime.d.ts +394 -0
  176. package/dist/core/runtime.d.ts.map +1 -0
  177. package/dist/core/runtime.js +507 -0
  178. package/dist/core/runtime.js.map +1 -0
  179. package/dist/core/usage.d.ts +26 -0
  180. package/dist/core/usage.d.ts.map +1 -0
  181. package/dist/core/usage.js +133 -0
  182. package/dist/core/usage.js.map +1 -0
  183. package/dist/extensions/claude-extension-tools.d.ts +16 -0
  184. package/dist/extensions/claude-extension-tools.d.ts.map +1 -0
  185. package/dist/extensions/claude-extension-tools.js +78 -0
  186. package/dist/extensions/claude-extension-tools.js.map +1 -0
  187. package/dist/extensions/claude-extensions.d.ts +41 -0
  188. package/dist/extensions/claude-extensions.d.ts.map +1 -0
  189. package/dist/extensions/claude-extensions.js +270 -0
  190. package/dist/extensions/claude-extensions.js.map +1 -0
  191. package/dist/hooks/claude-hook-tools.d.ts +26 -0
  192. package/dist/hooks/claude-hook-tools.d.ts.map +1 -0
  193. package/dist/hooks/claude-hook-tools.js +129 -0
  194. package/dist/hooks/claude-hook-tools.js.map +1 -0
  195. package/dist/hooks/claude-hooks.d.ts +87 -0
  196. package/dist/hooks/claude-hooks.d.ts.map +1 -0
  197. package/dist/hooks/claude-hooks.js +411 -0
  198. package/dist/hooks/claude-hooks.js.map +1 -0
  199. package/dist/maintenance/doctor.d.ts +33 -0
  200. package/dist/maintenance/doctor.d.ts.map +1 -0
  201. package/dist/maintenance/doctor.js +391 -0
  202. package/dist/maintenance/doctor.js.map +1 -0
  203. package/dist/maintenance/self-update.d.ts +31 -0
  204. package/dist/maintenance/self-update.d.ts.map +1 -0
  205. package/dist/maintenance/self-update.js +81 -0
  206. package/dist/maintenance/self-update.js.map +1 -0
  207. package/dist/mcp/claude-mcp-management.d.ts +28 -0
  208. package/dist/mcp/claude-mcp-management.d.ts.map +1 -0
  209. package/dist/mcp/claude-mcp-management.js +169 -0
  210. package/dist/mcp/claude-mcp-management.js.map +1 -0
  211. package/dist/mcp/claude-mcp-oauth.d.ts +113 -0
  212. package/dist/mcp/claude-mcp-oauth.d.ts.map +1 -0
  213. package/dist/mcp/claude-mcp-oauth.js +1053 -0
  214. package/dist/mcp/claude-mcp-oauth.js.map +1 -0
  215. package/dist/mcp/claude-mcp-tools.d.ts +98 -0
  216. package/dist/mcp/claude-mcp-tools.d.ts.map +1 -0
  217. package/dist/mcp/claude-mcp-tools.js +1246 -0
  218. package/dist/mcp/claude-mcp-tools.js.map +1 -0
  219. package/dist/mcp/praxis-mcp-server.d.ts +35 -0
  220. package/dist/mcp/praxis-mcp-server.d.ts.map +1 -0
  221. package/dist/mcp/praxis-mcp-server.js +520 -0
  222. package/dist/mcp/praxis-mcp-server.js.map +1 -0
  223. package/dist/permissions/claude-auto-classifier.d.ts +20 -0
  224. package/dist/permissions/claude-auto-classifier.d.ts.map +1 -0
  225. package/dist/permissions/claude-auto-classifier.js +140 -0
  226. package/dist/permissions/claude-auto-classifier.js.map +1 -0
  227. package/dist/permissions/claude-permission-resolver.d.ts +30 -0
  228. package/dist/permissions/claude-permission-resolver.d.ts.map +1 -0
  229. package/dist/permissions/claude-permission-resolver.js +334 -0
  230. package/dist/permissions/claude-permission-resolver.js.map +1 -0
  231. package/dist/persistence/claude-job-store.d.ts +68 -0
  232. package/dist/persistence/claude-job-store.d.ts.map +1 -0
  233. package/dist/persistence/claude-job-store.js +311 -0
  234. package/dist/persistence/claude-job-store.js.map +1 -0
  235. package/dist/persistence/claude-scheduled-task-store.d.ts +29 -0
  236. package/dist/persistence/claude-scheduled-task-store.d.ts.map +1 -0
  237. package/dist/persistence/claude-scheduled-task-store.js +163 -0
  238. package/dist/persistence/claude-scheduled-task-store.js.map +1 -0
  239. package/dist/persistence/claude-sidechain-store.d.ts +18 -0
  240. package/dist/persistence/claude-sidechain-store.d.ts.map +1 -0
  241. package/dist/persistence/claude-sidechain-store.js +107 -0
  242. package/dist/persistence/claude-sidechain-store.js.map +1 -0
  243. package/dist/persistence/claude-task-store.d.ts +72 -0
  244. package/dist/persistence/claude-task-store.d.ts.map +1 -0
  245. package/dist/persistence/claude-task-store.js +440 -0
  246. package/dist/persistence/claude-task-store.js.map +1 -0
  247. package/dist/persistence/claude-transcript-store.d.ts +85 -0
  248. package/dist/persistence/claude-transcript-store.d.ts.map +1 -0
  249. package/dist/persistence/claude-transcript-store.js +385 -0
  250. package/dist/persistence/claude-transcript-store.js.map +1 -0
  251. package/dist/persistence/claude-workflow-store.d.ts +41 -0
  252. package/dist/persistence/claude-workflow-store.d.ts.map +1 -0
  253. package/dist/persistence/claude-workflow-store.js +263 -0
  254. package/dist/persistence/claude-workflow-store.js.map +1 -0
  255. package/dist/persistence/in-memory-sidechain-store.d.ts +12 -0
  256. package/dist/persistence/in-memory-sidechain-store.d.ts.map +1 -0
  257. package/dist/persistence/in-memory-sidechain-store.js +30 -0
  258. package/dist/persistence/in-memory-sidechain-store.js.map +1 -0
  259. package/dist/persistence/in-memory-transcript-store.d.ts +15 -0
  260. package/dist/persistence/in-memory-transcript-store.d.ts.map +1 -0
  261. package/dist/persistence/in-memory-transcript-store.js +95 -0
  262. package/dist/persistence/in-memory-transcript-store.js.map +1 -0
  263. package/dist/platform/atomic-write.d.ts +5 -0
  264. package/dist/platform/atomic-write.d.ts.map +1 -0
  265. package/dist/platform/atomic-write.js +25 -0
  266. package/dist/platform/atomic-write.js.map +1 -0
  267. package/dist/platform/bounded-process-runner.d.ts +28 -0
  268. package/dist/platform/bounded-process-runner.d.ts.map +1 -0
  269. package/dist/platform/bounded-process-runner.js +209 -0
  270. package/dist/platform/bounded-process-runner.js.map +1 -0
  271. package/dist/platform/claude-version.d.ts +5 -0
  272. package/dist/platform/claude-version.d.ts.map +1 -0
  273. package/dist/platform/claude-version.js +17 -0
  274. package/dist/platform/claude-version.js.map +1 -0
  275. package/dist/platform/command-shell.d.ts +3 -0
  276. package/dist/platform/command-shell.d.ts.map +1 -0
  277. package/dist/platform/command-shell.js +15 -0
  278. package/dist/platform/command-shell.js.map +1 -0
  279. package/dist/platform/exclusive-file-lease.d.ts +15 -0
  280. package/dist/platform/exclusive-file-lease.d.ts.map +1 -0
  281. package/dist/platform/exclusive-file-lease.js +265 -0
  282. package/dist/platform/exclusive-file-lease.js.map +1 -0
  283. package/dist/platform/sensitive-data.d.ts +8 -0
  284. package/dist/platform/sensitive-data.d.ts.map +1 -0
  285. package/dist/platform/sensitive-data.js +138 -0
  286. package/dist/platform/sensitive-data.js.map +1 -0
  287. package/dist/platform/tmux-worktree.d.ts +30 -0
  288. package/dist/platform/tmux-worktree.d.ts.map +1 -0
  289. package/dist/platform/tmux-worktree.js +138 -0
  290. package/dist/platform/tmux-worktree.js.map +1 -0
  291. package/dist/plugins/claude-plugin-eval-discovery.d.ts +20 -0
  292. package/dist/plugins/claude-plugin-eval-discovery.d.ts.map +1 -0
  293. package/dist/plugins/claude-plugin-eval-discovery.js +128 -0
  294. package/dist/plugins/claude-plugin-eval-discovery.js.map +1 -0
  295. package/dist/plugins/claude-plugin-eval-graders.d.ts +49 -0
  296. package/dist/plugins/claude-plugin-eval-graders.d.ts.map +1 -0
  297. package/dist/plugins/claude-plugin-eval-graders.js +137 -0
  298. package/dist/plugins/claude-plugin-eval-graders.js.map +1 -0
  299. package/dist/plugins/claude-plugin-eval-runner.d.ts +50 -0
  300. package/dist/plugins/claude-plugin-eval-runner.d.ts.map +1 -0
  301. package/dist/plugins/claude-plugin-eval-runner.js +189 -0
  302. package/dist/plugins/claude-plugin-eval-runner.js.map +1 -0
  303. package/dist/plugins/claude-plugin-eval-schema.d.ts +80 -0
  304. package/dist/plugins/claude-plugin-eval-schema.d.ts.map +1 -0
  305. package/dist/plugins/claude-plugin-eval-schema.js +436 -0
  306. package/dist/plugins/claude-plugin-eval-schema.js.map +1 -0
  307. package/dist/plugins/claude-plugin-eval.d.ts +66 -0
  308. package/dist/plugins/claude-plugin-eval.d.ts.map +1 -0
  309. package/dist/plugins/claude-plugin-eval.js +438 -0
  310. package/dist/plugins/claude-plugin-eval.js.map +1 -0
  311. package/dist/plugins/claude-plugin-maintenance.d.ts +39 -0
  312. package/dist/plugins/claude-plugin-maintenance.d.ts.map +1 -0
  313. package/dist/plugins/claude-plugin-maintenance.js +336 -0
  314. package/dist/plugins/claude-plugin-maintenance.js.map +1 -0
  315. package/dist/plugins/claude-plugin-marketplace.d.ts +97 -0
  316. package/dist/plugins/claude-plugin-marketplace.d.ts.map +1 -0
  317. package/dist/plugins/claude-plugin-marketplace.js +1433 -0
  318. package/dist/plugins/claude-plugin-marketplace.js.map +1 -0
  319. package/dist/plugins/claude-plugin-mcpb.d.ts +71 -0
  320. package/dist/plugins/claude-plugin-mcpb.d.ts.map +1 -0
  321. package/dist/plugins/claude-plugin-mcpb.js +885 -0
  322. package/dist/plugins/claude-plugin-mcpb.js.map +1 -0
  323. package/dist/plugins/claude-plugin-runtime.d.ts +120 -0
  324. package/dist/plugins/claude-plugin-runtime.d.ts.map +1 -0
  325. package/dist/plugins/claude-plugin-runtime.js +1263 -0
  326. package/dist/plugins/claude-plugin-runtime.js.map +1 -0
  327. package/dist/providers/anthropic-compatible.d.ts +35 -0
  328. package/dist/providers/anthropic-compatible.d.ts.map +1 -0
  329. package/dist/providers/anthropic-compatible.js +733 -0
  330. package/dist/providers/anthropic-compatible.js.map +1 -0
  331. package/dist/providers/environment.d.ts +14 -0
  332. package/dist/providers/environment.d.ts.map +1 -0
  333. package/dist/providers/environment.js +67 -0
  334. package/dist/providers/environment.js.map +1 -0
  335. package/dist/providers/fallback-provider.d.ts +17 -0
  336. package/dist/providers/fallback-provider.d.ts.map +1 -0
  337. package/dist/providers/fallback-provider.js +70 -0
  338. package/dist/providers/fallback-provider.js.map +1 -0
  339. package/dist/providers/openai-compatible.d.ts +30 -0
  340. package/dist/providers/openai-compatible.d.ts.map +1 -0
  341. package/dist/providers/openai-compatible.js +409 -0
  342. package/dist/providers/openai-compatible.js.map +1 -0
  343. package/dist/tools/claude-interactive-tools.d.ts +58 -0
  344. package/dist/tools/claude-interactive-tools.d.ts.map +1 -0
  345. package/dist/tools/claude-interactive-tools.js +390 -0
  346. package/dist/tools/claude-interactive-tools.js.map +1 -0
  347. package/dist/tools/claude-lsp-formatters.d.ts +2 -0
  348. package/dist/tools/claude-lsp-formatters.d.ts.map +1 -0
  349. package/dist/tools/claude-lsp-formatters.js +291 -0
  350. package/dist/tools/claude-lsp-formatters.js.map +1 -0
  351. package/dist/tools/claude-lsp-tool.d.ts +22 -0
  352. package/dist/tools/claude-lsp-tool.d.ts.map +1 -0
  353. package/dist/tools/claude-lsp-tool.js +744 -0
  354. package/dist/tools/claude-lsp-tool.js.map +1 -0
  355. package/dist/tools/claude-scheduled-tools.d.ts +20 -0
  356. package/dist/tools/claude-scheduled-tools.d.ts.map +1 -0
  357. package/dist/tools/claude-scheduled-tools.js +344 -0
  358. package/dist/tools/claude-scheduled-tools.js.map +1 -0
  359. package/dist/tools/claude-task-tools.d.ts +30 -0
  360. package/dist/tools/claude-task-tools.d.ts.map +1 -0
  361. package/dist/tools/claude-task-tools.js +503 -0
  362. package/dist/tools/claude-task-tools.js.map +1 -0
  363. package/dist/tools/claude-user-message.d.ts +16 -0
  364. package/dist/tools/claude-user-message.d.ts.map +1 -0
  365. package/dist/tools/claude-user-message.js +98 -0
  366. package/dist/tools/claude-user-message.js.map +1 -0
  367. package/dist/tools/claude-workflow-tools.d.ts +27 -0
  368. package/dist/tools/claude-workflow-tools.d.ts.map +1 -0
  369. package/dist/tools/claude-workflow-tools.js +257 -0
  370. package/dist/tools/claude-workflow-tools.js.map +1 -0
  371. package/dist/tools/claude-worktree-tools.d.ts +17 -0
  372. package/dist/tools/claude-worktree-tools.d.ts.map +1 -0
  373. package/dist/tools/claude-worktree-tools.js +135 -0
  374. package/dist/tools/claude-worktree-tools.js.map +1 -0
  375. package/dist/tools/filtered-tool-registry.d.ts +16 -0
  376. package/dist/tools/filtered-tool-registry.d.ts.map +1 -0
  377. package/dist/tools/filtered-tool-registry.js +51 -0
  378. package/dist/tools/filtered-tool-registry.js.map +1 -0
  379. package/dist/tools/glob.d.ts +9 -0
  380. package/dist/tools/glob.d.ts.map +1 -0
  381. package/dist/tools/glob.js +88 -0
  382. package/dist/tools/glob.js.map +1 -0
  383. package/dist/tools/local-tools.d.ts +47 -0
  384. package/dist/tools/local-tools.d.ts.map +1 -0
  385. package/dist/tools/local-tools.js +1082 -0
  386. package/dist/tools/local-tools.js.map +1 -0
  387. package/dist/tools/notebook.d.ts +22 -0
  388. package/dist/tools/notebook.d.ts.map +1 -0
  389. package/dist/tools/notebook.js +154 -0
  390. package/dist/tools/notebook.js.map +1 -0
  391. package/dist/tools/web.d.ts +48 -0
  392. package/dist/tools/web.d.ts.map +1 -0
  393. package/dist/tools/web.js +726 -0
  394. package/dist/tools/web.js.map +1 -0
  395. package/package.json +145 -0
@@ -0,0 +1,459 @@
1
+ import { lstat, readFile, readdir, realpath, rm } from 'node:fs/promises';
2
+ import { homedir } from 'node:os';
3
+ import { dirname, isAbsolute, join, relative, resolve, sep } from 'node:path';
4
+ import { isClaudeSessionId, sanitizeClaudeProjectPath, } from '../compatibility/claude/paths.js';
5
+ import { resolveClaudeProjectIdentity } from '../compatibility/claude/shared-resources.js';
6
+ import { writeFileAtomically } from '../platform/atomic-write.js';
7
+ const MAX_ATOMIC_UPDATE_RETRIES = 8;
8
+ function errorCode(error) {
9
+ return error.code;
10
+ }
11
+ async function canonicalPath(path) {
12
+ const absolute = resolve(path);
13
+ try {
14
+ return await realpath(absolute);
15
+ }
16
+ catch (error) {
17
+ if (errorCode(error) === 'ENOENT') {
18
+ const parent = dirname(absolute);
19
+ if (parent === absolute)
20
+ return absolute;
21
+ return join(await canonicalPath(parent), absolute.slice(parent.length + 1));
22
+ }
23
+ throw error;
24
+ }
25
+ }
26
+ function isRecord(value) {
27
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
28
+ }
29
+ async function readOptionalFile(path) {
30
+ try {
31
+ return await readFile(path, 'utf8');
32
+ }
33
+ catch (error) {
34
+ if (errorCode(error) === 'ENOENT')
35
+ return null;
36
+ throw error;
37
+ }
38
+ }
39
+ async function pathExists(path) {
40
+ try {
41
+ await lstat(path);
42
+ return true;
43
+ }
44
+ catch (error) {
45
+ if (errorCode(error) === 'ENOENT')
46
+ return false;
47
+ throw error;
48
+ }
49
+ }
50
+ function assertLexicallyContained(configRoot, candidate) {
51
+ const child = relative(configRoot, candidate);
52
+ if (child.length === 0 ||
53
+ child === '..' ||
54
+ child.startsWith(`..${sep}`) ||
55
+ isAbsolute(child)) {
56
+ throw new Error(`Refusing to purge path outside config root: ${candidate}`);
57
+ }
58
+ }
59
+ async function assertSafePurgePath(configRoot, candidate) {
60
+ const absolute = resolve(candidate);
61
+ assertLexicallyContained(configRoot, absolute);
62
+ let metadata;
63
+ try {
64
+ metadata = await lstat(absolute);
65
+ }
66
+ catch (error) {
67
+ if (errorCode(error) === 'ENOENT')
68
+ return;
69
+ throw error;
70
+ }
71
+ if (metadata.isSymbolicLink()) {
72
+ throw new Error(`Refusing to purge symbolic link: ${absolute}`);
73
+ }
74
+ const canonical = await realpath(absolute);
75
+ assertLexicallyContained(configRoot, canonical);
76
+ }
77
+ async function assertMutableRegularFile(path) {
78
+ let current = resolve(path);
79
+ while (true) {
80
+ try {
81
+ const metadata = await lstat(current);
82
+ if (metadata.isSymbolicLink()) {
83
+ throw new Error(`Refusing to update path through symbolic link: ${current}`);
84
+ }
85
+ }
86
+ catch (error) {
87
+ if (errorCode(error) !== 'ENOENT')
88
+ throw error;
89
+ }
90
+ const parent = dirname(current);
91
+ if (parent === current)
92
+ break;
93
+ current = parent;
94
+ }
95
+ try {
96
+ const metadata = await lstat(path);
97
+ if (metadata.isSymbolicLink()) {
98
+ throw new Error(`Refusing to update symbolic link: ${path}`);
99
+ }
100
+ if (!metadata.isFile())
101
+ throw new Error(`Expected a file: ${path}`);
102
+ }
103
+ catch (error) {
104
+ if (errorCode(error) !== 'ENOENT')
105
+ throw error;
106
+ }
107
+ }
108
+ function parseState(source, statePath) {
109
+ if (source === null)
110
+ return {};
111
+ let value;
112
+ try {
113
+ value = JSON.parse(source);
114
+ }
115
+ catch (error) {
116
+ throw new Error(`Invalid Claude state JSON: ${statePath}`, { cause: error });
117
+ }
118
+ if (!isRecord(value)) {
119
+ throw new Error(`Claude state must be an object: ${statePath}`);
120
+ }
121
+ if (value.projects !== undefined && !isRecord(value.projects)) {
122
+ throw new Error(`Claude state projects must be an object: ${statePath}`);
123
+ }
124
+ return value;
125
+ }
126
+ function stateProjects(state) {
127
+ return isRecord(state.projects) ? state.projects : {};
128
+ }
129
+ function historyProject(line) {
130
+ const source = line.endsWith('\r') ? line.slice(0, -1) : line;
131
+ if (source.trim().length === 0)
132
+ return null;
133
+ try {
134
+ const value = JSON.parse(source);
135
+ return isRecord(value) && typeof value.project === 'string'
136
+ ? value.project
137
+ : null;
138
+ }
139
+ catch {
140
+ return null;
141
+ }
142
+ }
143
+ function filterProjectHistory(source, projectPaths) {
144
+ const paths = new Set(projectPaths);
145
+ let cursor = 0;
146
+ let content = '';
147
+ let removed = 0;
148
+ while (cursor < source.length) {
149
+ const newline = source.indexOf('\n', cursor);
150
+ const end = newline === -1 ? source.length : newline;
151
+ const line = source.slice(cursor, end);
152
+ const segment = source.slice(cursor, newline === -1 ? end : end + 1);
153
+ if (paths.has(historyProject(line) ?? ''))
154
+ removed += 1;
155
+ else
156
+ content += segment;
157
+ cursor = newline === -1 ? source.length : end + 1;
158
+ }
159
+ return { content, removed };
160
+ }
161
+ async function discoverSessionIds(projectRoot) {
162
+ let entries;
163
+ try {
164
+ entries = await readdir(projectRoot, { withFileTypes: true });
165
+ }
166
+ catch (error) {
167
+ if (errorCode(error) === 'ENOENT' || errorCode(error) === 'ENOTDIR') {
168
+ return [];
169
+ }
170
+ throw error;
171
+ }
172
+ const sessionIds = new Set();
173
+ for (const entry of entries) {
174
+ if (entry.isFile() && entry.name.endsWith('.jsonl')) {
175
+ const sessionId = entry.name.slice(0, -'.jsonl'.length);
176
+ if (isClaudeSessionId(sessionId))
177
+ sessionIds.add(sessionId);
178
+ }
179
+ if (entry.isDirectory() && isClaudeSessionId(entry.name)) {
180
+ sessionIds.add(entry.name);
181
+ }
182
+ }
183
+ return [...sessionIds].sort();
184
+ }
185
+ async function discoverProjectRoots(configRoot, targetPaths) {
186
+ const projectsRoot = join(configRoot, 'projects');
187
+ if (!(await pathExists(projectsRoot)))
188
+ return [];
189
+ await assertSafePurgePath(configRoot, projectsRoot);
190
+ let entries;
191
+ try {
192
+ entries = await readdir(projectsRoot, { withFileTypes: true });
193
+ }
194
+ catch (error) {
195
+ if (errorCode(error) === 'ENOENT' || errorCode(error) === 'ENOTDIR') {
196
+ return [];
197
+ }
198
+ throw error;
199
+ }
200
+ const targetKeys = targetPaths.map(sanitizeClaudeProjectPath);
201
+ return entries
202
+ .filter((entry) => targetKeys.some((targetKey) => entry.name === targetKey ||
203
+ entry.name.startsWith(`${targetKey}--worktrees-`)))
204
+ .map((entry) => join(projectsRoot, entry.name))
205
+ .sort();
206
+ }
207
+ function removePathItem(kind, path, description) {
208
+ return {
209
+ id: `${kind}:${path}`,
210
+ kind,
211
+ path,
212
+ description,
213
+ count: 1,
214
+ operation: 'remove-path',
215
+ };
216
+ }
217
+ async function addExistingPath(items, configRoot, item) {
218
+ if (!(await pathExists(item.path)))
219
+ return;
220
+ await assertSafePurgePath(configRoot, item.path);
221
+ items.push(item);
222
+ }
223
+ export async function planClaudeProjectPurge(options) {
224
+ if (options.all && options.path !== undefined) {
225
+ throw new Error('Cannot specify both a path and --all');
226
+ }
227
+ const configuredRoot = options.configRoot ??
228
+ (process.env.CLAUDE_CONFIG_DIR || join(homedir(), '.claude'));
229
+ const configRoot = await canonicalPath(configuredRoot);
230
+ const defaultStatePath = options.configRoot !== undefined || Boolean(process.env.CLAUDE_CONFIG_DIR)
231
+ ? join(configRoot, '.claude.json')
232
+ : resolve(homedir(), '.claude.json');
233
+ const statePath = await canonicalPath(options.statePath ?? defaultStatePath);
234
+ await assertMutableRegularFile(statePath);
235
+ const state = parseState(await readOptionalFile(statePath), statePath);
236
+ const projects = stateProjects(state);
237
+ const items = [];
238
+ if (options.all) {
239
+ const roots = [
240
+ {
241
+ kind: 'project',
242
+ name: 'projects',
243
+ description: 'all project transcripts and memory',
244
+ },
245
+ {
246
+ kind: 'tasks',
247
+ name: 'tasks',
248
+ description: 'all session task lists',
249
+ },
250
+ {
251
+ kind: 'debug',
252
+ name: 'debug',
253
+ description: 'all session debug logs',
254
+ },
255
+ {
256
+ kind: 'file-history',
257
+ name: 'file-history',
258
+ description: 'all session file edit history',
259
+ },
260
+ {
261
+ kind: 'prompt-history',
262
+ name: 'history.jsonl',
263
+ description: 'prompt history across all projects',
264
+ },
265
+ ];
266
+ for (const root of roots) {
267
+ const path = join(configRoot, root.name);
268
+ await addExistingPath(items, configRoot, removePathItem(root.kind, path, root.description));
269
+ }
270
+ const projectCount = Object.keys(projects).length;
271
+ if (projectCount > 0) {
272
+ items.push({
273
+ id: `config-key:${statePath}:all`,
274
+ kind: 'config-key',
275
+ path: statePath,
276
+ description: 'all project entries in Claude state',
277
+ count: projectCount,
278
+ operation: 'clear-project-config',
279
+ });
280
+ }
281
+ return {
282
+ mode: 'all',
283
+ configRoot,
284
+ statePath,
285
+ projectRootPaths: [],
286
+ sessionIds: [],
287
+ items,
288
+ };
289
+ }
290
+ const requestedPath = resolve(options.path ?? options.cwd);
291
+ const targetPath = await canonicalPath(requestedPath);
292
+ const targetPaths = [...new Set([requestedPath, targetPath])];
293
+ const projectIdentity = await resolveClaudeProjectIdentity({
294
+ cwd: targetPath,
295
+ homeDirectory: options.homeDirectory ?? homedir(),
296
+ });
297
+ const projectRootPaths = await discoverProjectRoots(configRoot, targetPaths);
298
+ const sessionIdSet = new Set();
299
+ for (const projectRoot of projectRootPaths) {
300
+ await assertSafePurgePath(configRoot, projectRoot);
301
+ for (const sessionId of await discoverSessionIds(projectRoot)) {
302
+ sessionIdSet.add(sessionId);
303
+ }
304
+ }
305
+ const sessionIds = [...sessionIdSet].sort();
306
+ for (const sessionId of sessionIds) {
307
+ await addExistingPath(items, configRoot, removePathItem('tasks', join(configRoot, 'tasks', sessionId), `tasks for session ${sessionId}`));
308
+ await addExistingPath(items, configRoot, removePathItem('debug', join(configRoot, 'debug', `${sessionId}.txt`), `debug log for session ${sessionId}`));
309
+ await addExistingPath(items, configRoot, removePathItem('file-history', join(configRoot, 'file-history', sessionId), `file edit history for session ${sessionId}`));
310
+ }
311
+ for (const projectRoot of projectRootPaths) {
312
+ await addExistingPath(items, configRoot, removePathItem('project', projectRoot, 'project transcripts and memory'));
313
+ }
314
+ const historyPath = join(configRoot, 'history.jsonl');
315
+ const historyExists = await pathExists(historyPath);
316
+ if (historyExists)
317
+ await assertSafePurgePath(configRoot, historyPath);
318
+ const historySource = historyExists
319
+ ? await readOptionalFile(historyPath)
320
+ : null;
321
+ if (historySource !== null) {
322
+ const { removed } = filterProjectHistory(historySource, targetPaths);
323
+ if (removed > 0) {
324
+ items.push({
325
+ id: `prompt-history:${historyPath}:${targetPath}`,
326
+ kind: 'prompt-history',
327
+ path: historyPath,
328
+ description: `${removed} prompt history line(s) for project`,
329
+ count: removed,
330
+ operation: 'filter-history',
331
+ projectIdentity: targetPath,
332
+ projectIdentities: targetPaths,
333
+ });
334
+ }
335
+ }
336
+ const projectIdentities = [...new Set([projectIdentity, ...targetPaths])];
337
+ for (const identity of projectIdentities) {
338
+ if (!Object.hasOwn(projects, identity))
339
+ continue;
340
+ items.push({
341
+ id: `config-key:${statePath}:${identity}`,
342
+ kind: 'config-key',
343
+ path: statePath,
344
+ description: 'project entry in Claude state',
345
+ count: 1,
346
+ operation: 'remove-project-config',
347
+ projectIdentity: identity,
348
+ });
349
+ }
350
+ return {
351
+ mode: 'project',
352
+ configRoot,
353
+ statePath,
354
+ targetPath,
355
+ projectIdentity,
356
+ projectRootPaths,
357
+ sessionIds,
358
+ items,
359
+ };
360
+ }
361
+ async function atomicallyUpdate(path, update) {
362
+ await assertMutableRegularFile(path);
363
+ for (let attempt = 0; attempt < MAX_ATOMIC_UPDATE_RETRIES; attempt += 1) {
364
+ const source = await readOptionalFile(path);
365
+ const content = update(source);
366
+ if (content === null || content === source)
367
+ return;
368
+ const committed = await writeFileAtomically(path, content, {
369
+ beforeCommit: async () => (await readOptionalFile(path)) === source,
370
+ });
371
+ if (committed)
372
+ return;
373
+ }
374
+ throw new Error(`Claude state changed repeatedly during purge: ${path}`);
375
+ }
376
+ async function executeItem(plan, item) {
377
+ if (item.operation === 'remove-path') {
378
+ await assertSafePurgePath(plan.configRoot, item.path);
379
+ await rm(item.path, { recursive: true, force: true });
380
+ return;
381
+ }
382
+ if (item.operation === 'filter-history') {
383
+ const projectPath = item.projectIdentity;
384
+ if (!projectPath)
385
+ throw new Error('Missing project path for history purge');
386
+ const projectPaths = item.projectIdentities ?? [projectPath];
387
+ await assertSafePurgePath(plan.configRoot, item.path);
388
+ await atomicallyUpdate(item.path, (source) => {
389
+ if (source === null)
390
+ return null;
391
+ return filterProjectHistory(source, projectPaths).content;
392
+ });
393
+ return;
394
+ }
395
+ await atomicallyUpdate(item.path, (source) => {
396
+ if (source === null)
397
+ return null;
398
+ const state = parseState(source, item.path);
399
+ const projects = { ...stateProjects(state) };
400
+ if (item.operation === 'remove-project-config') {
401
+ const projectIdentity = item.projectIdentity;
402
+ if (!projectIdentity || !Object.hasOwn(projects, projectIdentity)) {
403
+ return null;
404
+ }
405
+ delete projects[projectIdentity];
406
+ }
407
+ else {
408
+ if (Object.keys(projects).length === 0)
409
+ return null;
410
+ for (const key of Object.keys(projects))
411
+ delete projects[key];
412
+ }
413
+ state.projects = projects;
414
+ return `${JSON.stringify(state, null, 2)}\n`;
415
+ });
416
+ }
417
+ export async function executeClaudeProjectPurge(plan, options = {}) {
418
+ if (options.dryRun) {
419
+ return {
420
+ dryRun: true,
421
+ aborted: false,
422
+ deleted: [],
423
+ skipped: [],
424
+ failures: [],
425
+ };
426
+ }
427
+ const deleted = [];
428
+ const skipped = [];
429
+ const failures = [];
430
+ let deleteAll = false;
431
+ let aborted = false;
432
+ for (const item of plan.items) {
433
+ const selection = deleteAll
434
+ ? 'delete'
435
+ : await (options.selectItem?.(item) ?? Promise.resolve('delete'));
436
+ if (selection === 'abort') {
437
+ aborted = true;
438
+ break;
439
+ }
440
+ if (selection === 'skip') {
441
+ skipped.push(item);
442
+ continue;
443
+ }
444
+ if (selection === 'delete-all')
445
+ deleteAll = true;
446
+ try {
447
+ await executeItem(plan, item);
448
+ deleted.push(item);
449
+ }
450
+ catch (error) {
451
+ failures.push({
452
+ item,
453
+ error: error instanceof Error ? error : new Error(String(error)),
454
+ });
455
+ }
456
+ }
457
+ return { dryRun: false, aborted, deleted, skipped, failures };
458
+ }
459
+ //# sourceMappingURL=claude-project-purge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-project-purge.js","sourceRoot":"","sources":["../../src/application/claude-project-purge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ export interface ManagedWorktreeCleanup {
2
+ retained: boolean;
3
+ reason?: string;
4
+ }
5
+ export interface ManagedWorktree {
6
+ cwd: string;
7
+ cleanup(): Promise<ManagedWorktreeCleanup>;
8
+ }
9
+ export declare function createManagedWorktree(options: {
10
+ cwd: string;
11
+ parentDirectory: string;
12
+ directoryName: string;
13
+ label: 'Agent' | 'Workflow';
14
+ }): Promise<ManagedWorktree>;
15
+ //# sourceMappingURL=managed-worktree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"managed-worktree.d.ts","sourceRoot":"","sources":["../../src/application/managed-worktree.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,OAAO,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,IAAI,OAAO,CAAC,sBAAsB,CAAC,CAAA;CAC3C;AAkBD,wBAAsB,qBAAqB,CAAC,OAAO,EAAE;IACnD,GAAG,EAAE,MAAM,CAAA;IACX,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,KAAK,EAAE,OAAO,GAAG,UAAU,CAAA;CAC5B,GAAG,OAAO,CAAC,eAAe,CAAC,CAyG3B"}
@@ -0,0 +1,127 @@
1
+ import { execFile } from 'node:child_process';
2
+ import { lstat, mkdir } from 'node:fs/promises';
3
+ import { join, resolve } from 'node:path';
4
+ import { promisify } from 'node:util';
5
+ const execFileAsync = promisify(execFile);
6
+ async function git(cwd, args) {
7
+ return (await execFileAsync('git', ['-C', cwd, ...args], { encoding: 'utf8' })).stdout.trim();
8
+ }
9
+ async function registeredWorktrees(root) {
10
+ const output = await git(root, ['worktree', 'list', '--porcelain']);
11
+ return new Set(output
12
+ .split('\n')
13
+ .filter((line) => line.startsWith('worktree '))
14
+ .map((line) => resolve(line.slice('worktree '.length))));
15
+ }
16
+ export async function createManagedWorktree(options) {
17
+ if (!/^[A-Za-z0-9][A-Za-z0-9._-]{0,191}$/u.test(options.directoryName)) {
18
+ throw new Error(`Invalid ${options.label.toLowerCase()} worktree name`);
19
+ }
20
+ let root;
21
+ let initialHead;
22
+ try {
23
+ ;
24
+ [root, initialHead] = await Promise.all([
25
+ git(options.cwd, ['rev-parse', '--show-toplevel']),
26
+ git(options.cwd, ['rev-parse', 'HEAD']),
27
+ ]);
28
+ }
29
+ catch {
30
+ throw new Error(`${options.label} worktree isolation requires a Git repository`);
31
+ }
32
+ const parent = resolve(options.parentDirectory);
33
+ const path = join(parent, options.directoryName);
34
+ await mkdir(parent, { recursive: true });
35
+ let exists = false;
36
+ try {
37
+ const entry = await lstat(path);
38
+ if (entry.isSymbolicLink()) {
39
+ throw new Error(`${options.label} worktree path must not be a symlink`);
40
+ }
41
+ exists = true;
42
+ }
43
+ catch (error) {
44
+ if (error.code !== 'ENOENT')
45
+ throw error;
46
+ }
47
+ if (exists) {
48
+ let registered;
49
+ try {
50
+ registered = await registeredWorktrees(root);
51
+ }
52
+ catch (error) {
53
+ throw new Error(`Could not inspect ${options.label.toLowerCase()} worktrees: ${error.message}`);
54
+ }
55
+ if (!registered.has(resolve(path))) {
56
+ throw new Error(`${options.label} worktree path already exists and is not registered: ${path}`);
57
+ }
58
+ }
59
+ else {
60
+ try {
61
+ await git(root, ['worktree', 'add', '--detach', path, initialHead]);
62
+ }
63
+ catch (error) {
64
+ throw new Error(`Could not create ${options.label.toLowerCase()} worktree: ${error.message}`);
65
+ }
66
+ }
67
+ let removedResult;
68
+ let cleanupInFlight;
69
+ return {
70
+ cwd: path,
71
+ cleanup: async () => {
72
+ if (removedResult)
73
+ return removedResult;
74
+ if (cleanupInFlight)
75
+ return cleanupInFlight;
76
+ cleanupInFlight = (async () => {
77
+ let status;
78
+ let head;
79
+ try {
80
+ ;
81
+ [status, head] = await Promise.all([
82
+ git(path, ['status', '--porcelain']),
83
+ git(path, ['rev-parse', 'HEAD']),
84
+ ]);
85
+ }
86
+ catch (error) {
87
+ return {
88
+ retained: true,
89
+ reason: `Could not inspect ${options.label.toLowerCase()} worktree ${path}: ${error.message}`,
90
+ };
91
+ }
92
+ if (status.length > 0) {
93
+ return {
94
+ retained: true,
95
+ reason: `${options.label} worktree has uncommitted changes and was retained at ${path}`,
96
+ };
97
+ }
98
+ if (head !== initialHead) {
99
+ return {
100
+ retained: true,
101
+ reason: `${options.label} worktree has commits and was retained at ${path}`,
102
+ };
103
+ }
104
+ try {
105
+ await git(root, ['worktree', 'remove', path]);
106
+ return { retained: false };
107
+ }
108
+ catch (error) {
109
+ return {
110
+ retained: true,
111
+ reason: `Could not remove ${options.label.toLowerCase()} worktree ${path}: ${error.message}`,
112
+ };
113
+ }
114
+ })();
115
+ try {
116
+ const result = await cleanupInFlight;
117
+ if (!result.retained)
118
+ removedResult = result;
119
+ return result;
120
+ }
121
+ finally {
122
+ cleanupInFlight = undefined;
123
+ }
124
+ },
125
+ };
126
+ }
127
+ //# sourceMappingURL=managed-worktree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"managed-worktree.js","sourceRoot":"","sources":["../../src/application/managed-worktree.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { CompactionRequest, CompactionResult, Compactor } from '../core/compaction.js';
2
+ import { type ModelProvider } from '../core/runtime.js';
3
+ export declare class ModelCompactor implements Compactor {
4
+ private readonly provider;
5
+ constructor(provider: ModelProvider);
6
+ compact(request: CompactionRequest): Promise<CompactionResult>;
7
+ }
8
+ //# sourceMappingURL=model-compactor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-compactor.d.ts","sourceRoot":"","sources":["../../src/application/model-compactor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,gBAAgB,EAChB,SAAS,EACV,MAAM,uBAAuB,CAAA;AAK9B,OAAO,EAEL,KAAK,aAAa,EAEnB,MAAM,oBAAoB,CAAA;AAkB3B,qBAAa,cAAe,YAAW,SAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,aAAa;IAE9C,OAAO,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;CA6DrE"}