@ikarmic/forge-core 4.5.0 → 5.0.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 (593) hide show
  1. package/LICENSE +44 -21
  2. package/README.md +1 -1
  3. package/dist/agent/agent.d.ts +0 -1
  4. package/dist/agent/agent.js +20 -1
  5. package/dist/agent/architect.d.ts +0 -1
  6. package/dist/agent/architect.js +0 -1
  7. package/dist/agent/cache-hints.d.ts +0 -1
  8. package/dist/agent/cache-hints.js +0 -1
  9. package/dist/agent/cost-router.d.ts +0 -1
  10. package/dist/agent/cost-router.js +0 -1
  11. package/dist/agent/enhance-prompt.d.ts +7 -0
  12. package/dist/agent/enhance-prompt.js +30 -0
  13. package/dist/agent/index.d.ts +0 -1
  14. package/dist/agent/index.js +0 -1
  15. package/dist/agent/loop-guard.d.ts +21 -0
  16. package/dist/agent/loop-guard.js +41 -0
  17. package/dist/agent/prompts.d.ts +0 -1
  18. package/dist/agent/prompts.js +0 -1
  19. package/dist/agent/think-tags.d.ts +0 -1
  20. package/dist/agent/think-tags.js +0 -1
  21. package/dist/agent/verify.d.ts +0 -1
  22. package/dist/agent/verify.js +0 -1
  23. package/dist/ai-comments/index.d.ts +0 -1
  24. package/dist/ai-comments/index.js +0 -1
  25. package/dist/attachments.d.ts +0 -1
  26. package/dist/attachments.js +0 -1
  27. package/dist/browser/cdp.d.ts +0 -1
  28. package/dist/browser/cdp.js +0 -1
  29. package/dist/browser/chrome.d.ts +0 -1
  30. package/dist/browser/chrome.js +0 -1
  31. package/dist/browser/session.d.ts +0 -1
  32. package/dist/browser/session.js +0 -1
  33. package/dist/checkpoints/index.d.ts +0 -1
  34. package/dist/checkpoints/index.js +0 -1
  35. package/dist/checkpoints/store.d.ts +0 -1
  36. package/dist/checkpoints/store.js +0 -1
  37. package/dist/checkpoints/types.d.ts +0 -1
  38. package/dist/checkpoints/types.js +0 -1
  39. package/dist/code-index/builder.d.ts +0 -1
  40. package/dist/code-index/builder.js +0 -1
  41. package/dist/code-index/index-store.d.ts +0 -1
  42. package/dist/code-index/index-store.js +0 -1
  43. package/dist/code-index/parser.d.ts +0 -1
  44. package/dist/code-index/parser.js +0 -1
  45. package/dist/code-index/types.d.ts +0 -1
  46. package/dist/code-index/types.js +0 -1
  47. package/dist/commands/custom-commands.d.ts +0 -1
  48. package/dist/commands/custom-commands.js +0 -1
  49. package/dist/config-file.d.ts +4 -1
  50. package/dist/config-file.js +0 -1
  51. package/dist/config.d.ts +0 -1
  52. package/dist/config.js +0 -1
  53. package/dist/context/compaction.d.ts +0 -1
  54. package/dist/context/compaction.js +6 -2
  55. package/dist/context/mask.d.ts +0 -1
  56. package/dist/context/mask.js +0 -1
  57. package/dist/credentials/index.d.ts +0 -1
  58. package/dist/credentials/index.js +0 -1
  59. package/dist/credentials/types.d.ts +0 -1
  60. package/dist/credentials/types.js +0 -1
  61. package/dist/diff/index.d.ts +0 -1
  62. package/dist/diff/index.js +0 -1
  63. package/dist/diff/unified-diff.d.ts +0 -1
  64. package/dist/diff/unified-diff.js +0 -1
  65. package/dist/git/auto-commit.d.ts +1 -2
  66. package/dist/git/auto-commit.js +3 -3
  67. package/dist/git/index.d.ts +0 -1
  68. package/dist/git/index.js +0 -1
  69. package/dist/github/github-tools.d.ts +0 -1
  70. package/dist/github/github-tools.js +0 -1
  71. package/dist/hooks/agent-runner.d.ts +0 -1
  72. package/dist/hooks/agent-runner.js +0 -1
  73. package/dist/hooks/bus.d.ts +0 -1
  74. package/dist/hooks/bus.js +0 -1
  75. package/dist/hooks/config.d.ts +0 -1
  76. package/dist/hooks/config.js +0 -1
  77. package/dist/hooks/events.d.ts +0 -1
  78. package/dist/hooks/events.js +0 -1
  79. package/dist/hooks/index.d.ts +0 -1
  80. package/dist/hooks/index.js +0 -1
  81. package/dist/hooks/loader.d.ts +0 -1
  82. package/dist/hooks/loader.js +0 -1
  83. package/dist/hooks/runner.d.ts +0 -1
  84. package/dist/hooks/runner.js +0 -1
  85. package/dist/hooks/watch-coalescer.d.ts +0 -1
  86. package/dist/hooks/watch-coalescer.js +0 -1
  87. package/dist/hooks/watch-ignore.d.ts +0 -1
  88. package/dist/hooks/watch-ignore.js +0 -1
  89. package/dist/hooks/watcher.d.ts +0 -1
  90. package/dist/hooks/watcher.js +0 -1
  91. package/dist/index.d.ts +5 -3
  92. package/dist/index.js +4 -2
  93. package/dist/lazy-model.d.ts +0 -1
  94. package/dist/lazy-model.js +0 -1
  95. package/dist/lint/auto-lint.d.ts +0 -1
  96. package/dist/lint/auto-lint.js +0 -1
  97. package/dist/lint/index.d.ts +0 -1
  98. package/dist/lint/index.js +0 -1
  99. package/dist/lsp/client.d.ts +0 -1
  100. package/dist/lsp/client.js +0 -1
  101. package/dist/lsp/diagnostics.d.ts +0 -1
  102. package/dist/lsp/diagnostics.js +0 -1
  103. package/dist/lsp/index.d.ts +0 -1
  104. package/dist/lsp/index.js +0 -1
  105. package/dist/mcp/catalog.d.ts +0 -1
  106. package/dist/mcp/catalog.js +0 -1
  107. package/dist/mcp/index.d.ts +0 -1
  108. package/dist/mcp/index.js +0 -1
  109. package/dist/mcp/json-schema-to-zod.d.ts +0 -1
  110. package/dist/mcp/json-schema-to-zod.js +0 -1
  111. package/dist/mcp/manager.d.ts +0 -1
  112. package/dist/mcp/manager.js +0 -1
  113. package/dist/mcp/marketplace-types.d.ts +0 -1
  114. package/dist/mcp/marketplace-types.js +0 -1
  115. package/dist/mcp/marketplace.d.ts +0 -1
  116. package/dist/mcp/marketplace.js +0 -1
  117. package/dist/mcp/mcp-client.d.ts +0 -1
  118. package/dist/mcp/mcp-client.js +0 -1
  119. package/dist/mcp/mcp-config.d.ts +0 -1
  120. package/dist/mcp/mcp-config.js +0 -1
  121. package/dist/mcp/registry.d.ts +0 -1
  122. package/dist/mcp/registry.js +0 -1
  123. package/dist/memory/memory-store.d.ts +0 -1
  124. package/dist/memory/memory-store.js +0 -1
  125. package/dist/memory/rank.d.ts +0 -1
  126. package/dist/memory/rank.js +0 -1
  127. package/dist/memory/stale.d.ts +0 -1
  128. package/dist/memory/stale.js +0 -1
  129. package/dist/model-alias.d.ts +0 -1
  130. package/dist/model-alias.js +0 -1
  131. package/dist/model-catalog.d.ts +0 -1
  132. package/dist/model-catalog.js +0 -1
  133. package/dist/model-list.d.ts +0 -1
  134. package/dist/model-list.js +0 -1
  135. package/dist/orchestrator/board-tools.d.ts +0 -1
  136. package/dist/orchestrator/board-tools.js +0 -1
  137. package/dist/orchestrator/board.d.ts +0 -1
  138. package/dist/orchestrator/board.js +0 -1
  139. package/dist/orchestrator/index.d.ts +0 -1
  140. package/dist/orchestrator/index.js +0 -1
  141. package/dist/orchestrator/orchestrator.d.ts +0 -1
  142. package/dist/orchestrator/orchestrator.js +0 -1
  143. package/dist/orchestrator/router.d.ts +0 -1
  144. package/dist/orchestrator/router.js +0 -1
  145. package/dist/orchestrator/specialists-registry.d.ts +0 -1
  146. package/dist/orchestrator/specialists-registry.js +0 -1
  147. package/dist/orchestrator/specialists.d.ts +0 -1
  148. package/dist/orchestrator/specialists.js +0 -1
  149. package/dist/orchestrator/types.d.ts +0 -1
  150. package/dist/orchestrator/types.js +0 -1
  151. package/dist/plugins/index.d.ts +0 -1
  152. package/dist/plugins/index.js +0 -1
  153. package/dist/plugins/install.d.ts +0 -1
  154. package/dist/plugins/install.js +0 -1
  155. package/dist/plugins/loader.d.ts +0 -1
  156. package/dist/plugins/loader.js +0 -1
  157. package/dist/policy/audit.d.ts +0 -1
  158. package/dist/policy/audit.js +0 -1
  159. package/dist/policy/policy.d.ts +0 -1
  160. package/dist/policy/policy.js +0 -1
  161. package/dist/policy/proxy.d.ts +0 -1
  162. package/dist/policy/proxy.js +0 -1
  163. package/dist/pricing.d.ts +0 -1
  164. package/dist/pricing.js +0 -1
  165. package/dist/providers.d.ts +0 -1
  166. package/dist/providers.js +0 -1
  167. package/dist/repomap/index.d.ts +0 -1
  168. package/dist/repomap/index.js +0 -1
  169. package/dist/repomap/repo-map.d.ts +0 -1
  170. package/dist/repomap/repo-map.js +0 -1
  171. package/dist/semantic/chunker.d.ts +0 -1
  172. package/dist/semantic/chunker.js +0 -1
  173. package/dist/semantic/embedder.d.ts +0 -1
  174. package/dist/semantic/embedder.js +0 -1
  175. package/dist/semantic/semantic-index.d.ts +0 -1
  176. package/dist/semantic/semantic-index.js +0 -1
  177. package/dist/semantic/vector-store.d.ts +0 -1
  178. package/dist/semantic/vector-store.js +0 -1
  179. package/dist/sessions/index.d.ts +1 -1
  180. package/dist/sessions/index.js +1 -1
  181. package/dist/sessions/prune.d.ts +23 -0
  182. package/dist/sessions/prune.js +35 -0
  183. package/dist/sessions/search.d.ts +0 -1
  184. package/dist/sessions/search.js +0 -1
  185. package/dist/sessions/session-export.d.ts +0 -1
  186. package/dist/sessions/session-export.js +0 -1
  187. package/dist/sessions/session-store.d.ts +0 -1
  188. package/dist/sessions/session-store.js +0 -1
  189. package/dist/sessions/watch.d.ts +0 -1
  190. package/dist/sessions/watch.js +0 -1
  191. package/dist/settings-export.d.ts +0 -1
  192. package/dist/settings-export.js +0 -1
  193. package/dist/skills/activator.d.ts +0 -1
  194. package/dist/skills/activator.js +0 -1
  195. package/dist/skills/index.d.ts +0 -1
  196. package/dist/skills/index.js +0 -1
  197. package/dist/skills/loader.d.ts +0 -1
  198. package/dist/skills/loader.js +0 -1
  199. package/dist/skills/marketplace-types.d.ts +0 -1
  200. package/dist/skills/marketplace-types.js +0 -1
  201. package/dist/skills/marketplace.d.ts +0 -1
  202. package/dist/skills/marketplace.js +0 -1
  203. package/dist/skills/parser.d.ts +0 -1
  204. package/dist/skills/parser.js +0 -1
  205. package/dist/skills/types.d.ts +0 -1
  206. package/dist/skills/types.js +0 -1
  207. package/dist/specs/generate.d.ts +0 -1
  208. package/dist/specs/generate.js +0 -1
  209. package/dist/specs/index.d.ts +0 -1
  210. package/dist/specs/index.js +0 -1
  211. package/dist/specs/store.d.ts +0 -1
  212. package/dist/specs/store.js +0 -1
  213. package/dist/specs/sync.d.ts +0 -1
  214. package/dist/specs/sync.js +0 -1
  215. package/dist/specs/tasks-parser.d.ts +0 -1
  216. package/dist/specs/tasks-parser.js +0 -1
  217. package/dist/specs/types.d.ts +0 -1
  218. package/dist/specs/types.js +0 -1
  219. package/dist/steering/glob.d.ts +0 -1
  220. package/dist/steering/glob.js +0 -1
  221. package/dist/steering/index.d.ts +0 -1
  222. package/dist/steering/index.js +0 -1
  223. package/dist/steering/loader.d.ts +0 -1
  224. package/dist/steering/loader.js +0 -1
  225. package/dist/steering/project-instructions.d.ts +0 -1
  226. package/dist/steering/project-instructions.js +0 -1
  227. package/dist/steering/select.d.ts +0 -1
  228. package/dist/steering/select.js +0 -1
  229. package/dist/steering/types.d.ts +0 -1
  230. package/dist/steering/types.js +0 -1
  231. package/dist/structured/index.d.ts +0 -1
  232. package/dist/structured/index.js +0 -1
  233. package/dist/structured/retry.d.ts +0 -1
  234. package/dist/structured/retry.js +0 -1
  235. package/dist/structured/schema.d.ts +0 -1
  236. package/dist/structured/schema.js +0 -1
  237. package/dist/tools/browser-tools.d.ts +0 -1
  238. package/dist/tools/browser-tools.js +0 -1
  239. package/dist/tools/codebase-search.d.ts +0 -1
  240. package/dist/tools/codebase-search.js +0 -1
  241. package/dist/tools/command-allow.d.ts +0 -1
  242. package/dist/tools/command-allow.js +0 -1
  243. package/dist/tools/edit-file.d.ts +0 -1
  244. package/dist/tools/edit-file.js +0 -1
  245. package/dist/tools/fetch-url.d.ts +0 -1
  246. package/dist/tools/fetch-url.js +0 -1
  247. package/dist/tools/find-references.d.ts +0 -1
  248. package/dist/tools/find-references.js +0 -1
  249. package/dist/tools/find-symbol.d.ts +0 -1
  250. package/dist/tools/find-symbol.js +0 -1
  251. package/dist/tools/ignore-rules.d.ts +0 -1
  252. package/dist/tools/ignore-rules.js +0 -1
  253. package/dist/tools/index.d.ts +0 -1
  254. package/dist/tools/index.js +0 -1
  255. package/dist/tools/list-files.d.ts +0 -1
  256. package/dist/tools/list-files.js +0 -1
  257. package/dist/tools/list-symbols.d.ts +0 -1
  258. package/dist/tools/list-symbols.js +0 -1
  259. package/dist/tools/memory.d.ts +0 -1
  260. package/dist/tools/memory.js +0 -1
  261. package/dist/tools/notebook.d.ts +0 -1
  262. package/dist/tools/notebook.js +0 -1
  263. package/dist/tools/policy.d.ts +0 -1
  264. package/dist/tools/policy.js +0 -1
  265. package/dist/tools/read-file.d.ts +0 -1
  266. package/dist/tools/read-file.js +0 -1
  267. package/dist/tools/read-image.d.ts +0 -1
  268. package/dist/tools/read-image.js +0 -1
  269. package/dist/tools/read-only.d.ts +0 -1
  270. package/dist/tools/read-only.js +0 -1
  271. package/dist/tools/redact.d.ts +0 -1
  272. package/dist/tools/redact.js +0 -1
  273. package/dist/tools/result-cache.d.ts +0 -1
  274. package/dist/tools/result-cache.js +0 -1
  275. package/dist/tools/run-command.d.ts +0 -1
  276. package/dist/tools/run-command.js +0 -1
  277. package/dist/tools/sandbox-loader.d.ts +0 -1
  278. package/dist/tools/sandbox-loader.js +0 -1
  279. package/dist/tools/search-files.d.ts +0 -1
  280. package/dist/tools/search-files.js +0 -1
  281. package/dist/tools/shared.d.ts +0 -1
  282. package/dist/tools/shared.js +0 -1
  283. package/dist/tools/sub-agent.d.ts +0 -1
  284. package/dist/tools/sub-agent.js +0 -1
  285. package/dist/tools/web-search.d.ts +0 -1
  286. package/dist/tools/web-search.js +0 -1
  287. package/dist/tools/write-file.d.ts +0 -1
  288. package/dist/tools/write-file.js +0 -1
  289. package/dist/types.d.ts +12 -2
  290. package/dist/types.js +0 -1
  291. package/dist/verify/detect.d.ts +0 -1
  292. package/dist/verify/detect.js +0 -1
  293. package/dist/verify/index.d.ts +0 -1
  294. package/dist/verify/index.js +0 -1
  295. package/dist/worktree/branch-ops.d.ts +0 -1
  296. package/dist/worktree/branch-ops.js +0 -1
  297. package/dist/worktree/index.d.ts +0 -1
  298. package/dist/worktree/index.js +0 -1
  299. package/dist/worktree/worktree.d.ts +0 -1
  300. package/dist/worktree/worktree.js +0 -1
  301. package/package.json +3 -2
  302. package/dist/agent/agent.d.ts.map +0 -1
  303. package/dist/agent/agent.js.map +0 -1
  304. package/dist/agent/architect.d.ts.map +0 -1
  305. package/dist/agent/architect.js.map +0 -1
  306. package/dist/agent/cache-hints.d.ts.map +0 -1
  307. package/dist/agent/cache-hints.js.map +0 -1
  308. package/dist/agent/cost-router.d.ts.map +0 -1
  309. package/dist/agent/cost-router.js.map +0 -1
  310. package/dist/agent/index.d.ts.map +0 -1
  311. package/dist/agent/index.js.map +0 -1
  312. package/dist/agent/prompts.d.ts.map +0 -1
  313. package/dist/agent/prompts.js.map +0 -1
  314. package/dist/agent/think-tags.d.ts.map +0 -1
  315. package/dist/agent/think-tags.js.map +0 -1
  316. package/dist/agent/verify.d.ts.map +0 -1
  317. package/dist/agent/verify.js.map +0 -1
  318. package/dist/ai-comments/index.d.ts.map +0 -1
  319. package/dist/ai-comments/index.js.map +0 -1
  320. package/dist/attachments.d.ts.map +0 -1
  321. package/dist/attachments.js.map +0 -1
  322. package/dist/browser/cdp.d.ts.map +0 -1
  323. package/dist/browser/cdp.js.map +0 -1
  324. package/dist/browser/chrome.d.ts.map +0 -1
  325. package/dist/browser/chrome.js.map +0 -1
  326. package/dist/browser/session.d.ts.map +0 -1
  327. package/dist/browser/session.js.map +0 -1
  328. package/dist/checkpoints/index.d.ts.map +0 -1
  329. package/dist/checkpoints/index.js.map +0 -1
  330. package/dist/checkpoints/store.d.ts.map +0 -1
  331. package/dist/checkpoints/store.js.map +0 -1
  332. package/dist/checkpoints/types.d.ts.map +0 -1
  333. package/dist/checkpoints/types.js.map +0 -1
  334. package/dist/code-index/builder.d.ts.map +0 -1
  335. package/dist/code-index/builder.js.map +0 -1
  336. package/dist/code-index/index-store.d.ts.map +0 -1
  337. package/dist/code-index/index-store.js.map +0 -1
  338. package/dist/code-index/parser.d.ts.map +0 -1
  339. package/dist/code-index/parser.js.map +0 -1
  340. package/dist/code-index/types.d.ts.map +0 -1
  341. package/dist/code-index/types.js.map +0 -1
  342. package/dist/commands/custom-commands.d.ts.map +0 -1
  343. package/dist/commands/custom-commands.js.map +0 -1
  344. package/dist/config-file.d.ts.map +0 -1
  345. package/dist/config-file.js.map +0 -1
  346. package/dist/config.d.ts.map +0 -1
  347. package/dist/config.js.map +0 -1
  348. package/dist/context/compaction.d.ts.map +0 -1
  349. package/dist/context/compaction.js.map +0 -1
  350. package/dist/context/mask.d.ts.map +0 -1
  351. package/dist/context/mask.js.map +0 -1
  352. package/dist/credentials/index.d.ts.map +0 -1
  353. package/dist/credentials/index.js.map +0 -1
  354. package/dist/credentials/types.d.ts.map +0 -1
  355. package/dist/credentials/types.js.map +0 -1
  356. package/dist/diff/index.d.ts.map +0 -1
  357. package/dist/diff/index.js.map +0 -1
  358. package/dist/diff/unified-diff.d.ts.map +0 -1
  359. package/dist/diff/unified-diff.js.map +0 -1
  360. package/dist/git/auto-commit.d.ts.map +0 -1
  361. package/dist/git/auto-commit.js.map +0 -1
  362. package/dist/git/index.d.ts.map +0 -1
  363. package/dist/git/index.js.map +0 -1
  364. package/dist/github/github-tools.d.ts.map +0 -1
  365. package/dist/github/github-tools.js.map +0 -1
  366. package/dist/hooks/agent-runner.d.ts.map +0 -1
  367. package/dist/hooks/agent-runner.js.map +0 -1
  368. package/dist/hooks/bus.d.ts.map +0 -1
  369. package/dist/hooks/bus.js.map +0 -1
  370. package/dist/hooks/config.d.ts.map +0 -1
  371. package/dist/hooks/config.js.map +0 -1
  372. package/dist/hooks/events.d.ts.map +0 -1
  373. package/dist/hooks/events.js.map +0 -1
  374. package/dist/hooks/index.d.ts.map +0 -1
  375. package/dist/hooks/index.js.map +0 -1
  376. package/dist/hooks/loader.d.ts.map +0 -1
  377. package/dist/hooks/loader.js.map +0 -1
  378. package/dist/hooks/runner.d.ts.map +0 -1
  379. package/dist/hooks/runner.js.map +0 -1
  380. package/dist/hooks/watch-coalescer.d.ts.map +0 -1
  381. package/dist/hooks/watch-coalescer.js.map +0 -1
  382. package/dist/hooks/watch-ignore.d.ts.map +0 -1
  383. package/dist/hooks/watch-ignore.js.map +0 -1
  384. package/dist/hooks/watcher.d.ts.map +0 -1
  385. package/dist/hooks/watcher.js.map +0 -1
  386. package/dist/index.d.ts.map +0 -1
  387. package/dist/index.js.map +0 -1
  388. package/dist/lazy-model.d.ts.map +0 -1
  389. package/dist/lazy-model.js.map +0 -1
  390. package/dist/lint/auto-lint.d.ts.map +0 -1
  391. package/dist/lint/auto-lint.js.map +0 -1
  392. package/dist/lint/index.d.ts.map +0 -1
  393. package/dist/lint/index.js.map +0 -1
  394. package/dist/lsp/client.d.ts.map +0 -1
  395. package/dist/lsp/client.js.map +0 -1
  396. package/dist/lsp/diagnostics.d.ts.map +0 -1
  397. package/dist/lsp/diagnostics.js.map +0 -1
  398. package/dist/lsp/index.d.ts.map +0 -1
  399. package/dist/lsp/index.js.map +0 -1
  400. package/dist/mcp/catalog.d.ts.map +0 -1
  401. package/dist/mcp/catalog.js.map +0 -1
  402. package/dist/mcp/index.d.ts.map +0 -1
  403. package/dist/mcp/index.js.map +0 -1
  404. package/dist/mcp/json-schema-to-zod.d.ts.map +0 -1
  405. package/dist/mcp/json-schema-to-zod.js.map +0 -1
  406. package/dist/mcp/manager.d.ts.map +0 -1
  407. package/dist/mcp/manager.js.map +0 -1
  408. package/dist/mcp/marketplace-types.d.ts.map +0 -1
  409. package/dist/mcp/marketplace-types.js.map +0 -1
  410. package/dist/mcp/marketplace.d.ts.map +0 -1
  411. package/dist/mcp/marketplace.js.map +0 -1
  412. package/dist/mcp/mcp-client.d.ts.map +0 -1
  413. package/dist/mcp/mcp-client.js.map +0 -1
  414. package/dist/mcp/mcp-config.d.ts.map +0 -1
  415. package/dist/mcp/mcp-config.js.map +0 -1
  416. package/dist/mcp/registry.d.ts.map +0 -1
  417. package/dist/mcp/registry.js.map +0 -1
  418. package/dist/memory/memory-store.d.ts.map +0 -1
  419. package/dist/memory/memory-store.js.map +0 -1
  420. package/dist/memory/rank.d.ts.map +0 -1
  421. package/dist/memory/rank.js.map +0 -1
  422. package/dist/memory/stale.d.ts.map +0 -1
  423. package/dist/memory/stale.js.map +0 -1
  424. package/dist/model-alias.d.ts.map +0 -1
  425. package/dist/model-alias.js.map +0 -1
  426. package/dist/model-catalog.d.ts.map +0 -1
  427. package/dist/model-catalog.js.map +0 -1
  428. package/dist/model-list.d.ts.map +0 -1
  429. package/dist/model-list.js.map +0 -1
  430. package/dist/orchestrator/board-tools.d.ts.map +0 -1
  431. package/dist/orchestrator/board-tools.js.map +0 -1
  432. package/dist/orchestrator/board.d.ts.map +0 -1
  433. package/dist/orchestrator/board.js.map +0 -1
  434. package/dist/orchestrator/index.d.ts.map +0 -1
  435. package/dist/orchestrator/index.js.map +0 -1
  436. package/dist/orchestrator/orchestrator.d.ts.map +0 -1
  437. package/dist/orchestrator/orchestrator.js.map +0 -1
  438. package/dist/orchestrator/router.d.ts.map +0 -1
  439. package/dist/orchestrator/router.js.map +0 -1
  440. package/dist/orchestrator/specialists-registry.d.ts.map +0 -1
  441. package/dist/orchestrator/specialists-registry.js.map +0 -1
  442. package/dist/orchestrator/specialists.d.ts.map +0 -1
  443. package/dist/orchestrator/specialists.js.map +0 -1
  444. package/dist/orchestrator/types.d.ts.map +0 -1
  445. package/dist/orchestrator/types.js.map +0 -1
  446. package/dist/plugins/index.d.ts.map +0 -1
  447. package/dist/plugins/index.js.map +0 -1
  448. package/dist/plugins/install.d.ts.map +0 -1
  449. package/dist/plugins/install.js.map +0 -1
  450. package/dist/plugins/loader.d.ts.map +0 -1
  451. package/dist/plugins/loader.js.map +0 -1
  452. package/dist/policy/audit.d.ts.map +0 -1
  453. package/dist/policy/audit.js.map +0 -1
  454. package/dist/policy/policy.d.ts.map +0 -1
  455. package/dist/policy/policy.js.map +0 -1
  456. package/dist/policy/proxy.d.ts.map +0 -1
  457. package/dist/policy/proxy.js.map +0 -1
  458. package/dist/pricing.d.ts.map +0 -1
  459. package/dist/pricing.js.map +0 -1
  460. package/dist/providers.d.ts.map +0 -1
  461. package/dist/providers.js.map +0 -1
  462. package/dist/repomap/index.d.ts.map +0 -1
  463. package/dist/repomap/index.js.map +0 -1
  464. package/dist/repomap/repo-map.d.ts.map +0 -1
  465. package/dist/repomap/repo-map.js.map +0 -1
  466. package/dist/semantic/chunker.d.ts.map +0 -1
  467. package/dist/semantic/chunker.js.map +0 -1
  468. package/dist/semantic/embedder.d.ts.map +0 -1
  469. package/dist/semantic/embedder.js.map +0 -1
  470. package/dist/semantic/semantic-index.d.ts.map +0 -1
  471. package/dist/semantic/semantic-index.js.map +0 -1
  472. package/dist/semantic/vector-store.d.ts.map +0 -1
  473. package/dist/semantic/vector-store.js.map +0 -1
  474. package/dist/sessions/index.d.ts.map +0 -1
  475. package/dist/sessions/index.js.map +0 -1
  476. package/dist/sessions/search.d.ts.map +0 -1
  477. package/dist/sessions/search.js.map +0 -1
  478. package/dist/sessions/session-export.d.ts.map +0 -1
  479. package/dist/sessions/session-export.js.map +0 -1
  480. package/dist/sessions/session-store.d.ts.map +0 -1
  481. package/dist/sessions/session-store.js.map +0 -1
  482. package/dist/sessions/watch.d.ts.map +0 -1
  483. package/dist/sessions/watch.js.map +0 -1
  484. package/dist/settings-export.d.ts.map +0 -1
  485. package/dist/settings-export.js.map +0 -1
  486. package/dist/skills/activator.d.ts.map +0 -1
  487. package/dist/skills/activator.js.map +0 -1
  488. package/dist/skills/index.d.ts.map +0 -1
  489. package/dist/skills/index.js.map +0 -1
  490. package/dist/skills/loader.d.ts.map +0 -1
  491. package/dist/skills/loader.js.map +0 -1
  492. package/dist/skills/marketplace-types.d.ts.map +0 -1
  493. package/dist/skills/marketplace-types.js.map +0 -1
  494. package/dist/skills/marketplace.d.ts.map +0 -1
  495. package/dist/skills/marketplace.js.map +0 -1
  496. package/dist/skills/parser.d.ts.map +0 -1
  497. package/dist/skills/parser.js.map +0 -1
  498. package/dist/skills/types.d.ts.map +0 -1
  499. package/dist/skills/types.js.map +0 -1
  500. package/dist/specs/generate.d.ts.map +0 -1
  501. package/dist/specs/generate.js.map +0 -1
  502. package/dist/specs/index.d.ts.map +0 -1
  503. package/dist/specs/index.js.map +0 -1
  504. package/dist/specs/store.d.ts.map +0 -1
  505. package/dist/specs/store.js.map +0 -1
  506. package/dist/specs/sync.d.ts.map +0 -1
  507. package/dist/specs/sync.js.map +0 -1
  508. package/dist/specs/tasks-parser.d.ts.map +0 -1
  509. package/dist/specs/tasks-parser.js.map +0 -1
  510. package/dist/specs/types.d.ts.map +0 -1
  511. package/dist/specs/types.js.map +0 -1
  512. package/dist/steering/glob.d.ts.map +0 -1
  513. package/dist/steering/glob.js.map +0 -1
  514. package/dist/steering/index.d.ts.map +0 -1
  515. package/dist/steering/index.js.map +0 -1
  516. package/dist/steering/loader.d.ts.map +0 -1
  517. package/dist/steering/loader.js.map +0 -1
  518. package/dist/steering/project-instructions.d.ts.map +0 -1
  519. package/dist/steering/project-instructions.js.map +0 -1
  520. package/dist/steering/select.d.ts.map +0 -1
  521. package/dist/steering/select.js.map +0 -1
  522. package/dist/steering/types.d.ts.map +0 -1
  523. package/dist/steering/types.js.map +0 -1
  524. package/dist/structured/index.d.ts.map +0 -1
  525. package/dist/structured/index.js.map +0 -1
  526. package/dist/structured/retry.d.ts.map +0 -1
  527. package/dist/structured/retry.js.map +0 -1
  528. package/dist/structured/schema.d.ts.map +0 -1
  529. package/dist/structured/schema.js.map +0 -1
  530. package/dist/tools/browser-tools.d.ts.map +0 -1
  531. package/dist/tools/browser-tools.js.map +0 -1
  532. package/dist/tools/codebase-search.d.ts.map +0 -1
  533. package/dist/tools/codebase-search.js.map +0 -1
  534. package/dist/tools/command-allow.d.ts.map +0 -1
  535. package/dist/tools/command-allow.js.map +0 -1
  536. package/dist/tools/edit-file.d.ts.map +0 -1
  537. package/dist/tools/edit-file.js.map +0 -1
  538. package/dist/tools/fetch-url.d.ts.map +0 -1
  539. package/dist/tools/fetch-url.js.map +0 -1
  540. package/dist/tools/find-references.d.ts.map +0 -1
  541. package/dist/tools/find-references.js.map +0 -1
  542. package/dist/tools/find-symbol.d.ts.map +0 -1
  543. package/dist/tools/find-symbol.js.map +0 -1
  544. package/dist/tools/ignore-rules.d.ts.map +0 -1
  545. package/dist/tools/ignore-rules.js.map +0 -1
  546. package/dist/tools/index.d.ts.map +0 -1
  547. package/dist/tools/index.js.map +0 -1
  548. package/dist/tools/list-files.d.ts.map +0 -1
  549. package/dist/tools/list-files.js.map +0 -1
  550. package/dist/tools/list-symbols.d.ts.map +0 -1
  551. package/dist/tools/list-symbols.js.map +0 -1
  552. package/dist/tools/memory.d.ts.map +0 -1
  553. package/dist/tools/memory.js.map +0 -1
  554. package/dist/tools/notebook.d.ts.map +0 -1
  555. package/dist/tools/notebook.js.map +0 -1
  556. package/dist/tools/policy.d.ts.map +0 -1
  557. package/dist/tools/policy.js.map +0 -1
  558. package/dist/tools/read-file.d.ts.map +0 -1
  559. package/dist/tools/read-file.js.map +0 -1
  560. package/dist/tools/read-image.d.ts.map +0 -1
  561. package/dist/tools/read-image.js.map +0 -1
  562. package/dist/tools/read-only.d.ts.map +0 -1
  563. package/dist/tools/read-only.js.map +0 -1
  564. package/dist/tools/redact.d.ts.map +0 -1
  565. package/dist/tools/redact.js.map +0 -1
  566. package/dist/tools/result-cache.d.ts.map +0 -1
  567. package/dist/tools/result-cache.js.map +0 -1
  568. package/dist/tools/run-command.d.ts.map +0 -1
  569. package/dist/tools/run-command.js.map +0 -1
  570. package/dist/tools/sandbox-loader.d.ts.map +0 -1
  571. package/dist/tools/sandbox-loader.js.map +0 -1
  572. package/dist/tools/search-files.d.ts.map +0 -1
  573. package/dist/tools/search-files.js.map +0 -1
  574. package/dist/tools/shared.d.ts.map +0 -1
  575. package/dist/tools/shared.js.map +0 -1
  576. package/dist/tools/sub-agent.d.ts.map +0 -1
  577. package/dist/tools/sub-agent.js.map +0 -1
  578. package/dist/tools/web-search.d.ts.map +0 -1
  579. package/dist/tools/web-search.js.map +0 -1
  580. package/dist/tools/write-file.d.ts.map +0 -1
  581. package/dist/tools/write-file.js.map +0 -1
  582. package/dist/types.d.ts.map +0 -1
  583. package/dist/types.js.map +0 -1
  584. package/dist/verify/detect.d.ts.map +0 -1
  585. package/dist/verify/detect.js.map +0 -1
  586. package/dist/verify/index.d.ts.map +0 -1
  587. package/dist/verify/index.js.map +0 -1
  588. package/dist/worktree/branch-ops.d.ts.map +0 -1
  589. package/dist/worktree/branch-ops.js.map +0 -1
  590. package/dist/worktree/index.d.ts.map +0 -1
  591. package/dist/worktree/index.js.map +0 -1
  592. package/dist/worktree/worktree.d.ts.map +0 -1
  593. package/dist/worktree/worktree.js.map +0 -1
@@ -131,4 +131,3 @@ export declare function saveSpecialistsToConfig(entries: CustomSpecialistConfig[
131
131
  * callers can use this without touching the registry.
132
132
  */
133
133
  export declare function validateSpecialistConfig(input: CustomSpecialistConfig | SpecialistConfig, configDir?: string): SpecialistConfig;
134
- //# sourceMappingURL=specialists-registry.d.ts.map
@@ -264,4 +264,3 @@ export function validateSpecialistConfig(input, configDir) {
264
264
  ...(inputProvider !== undefined ? { provider: inputProvider } : {}),
265
265
  };
266
266
  }
267
- //# sourceMappingURL=specialists-registry.js.map
@@ -36,4 +36,3 @@ export declare function getSpecialist(id: SpecialistId): SpecialistConfig | unde
36
36
  * `toolSandbox`.
37
37
  */
38
38
  export declare function effectiveToolsFor(spec: SpecialistConfig): string[];
39
- //# sourceMappingURL=specialists.d.ts.map
@@ -130,4 +130,3 @@ export function effectiveToolsFor(spec) {
130
130
  const forbidden = new Set(spec.forbiddenTools);
131
131
  return spec.allowedTools.filter((t) => !forbidden.has(t));
132
132
  }
133
- //# sourceMappingURL=specialists.js.map
@@ -118,4 +118,3 @@ export interface OrchestratorStepResult {
118
118
  /** Files changed by that commit. */
119
119
  changedFiles?: string[];
120
120
  }
121
- //# sourceMappingURL=types.d.ts.map
@@ -1,2 +1 @@
1
1
  export {};
2
- //# sourceMappingURL=types.js.map
@@ -2,4 +2,3 @@ export { discoverPlugins, findManifest, loadPlugin, loadPluginMcpServers, PLUGIN
2
2
  export type { Plugin, PluginScope } from './loader.js';
3
3
  export { installPlugin, removePlugin } from './install.js';
4
4
  export type { InstallPluginOptions } from './install.js';
5
- //# sourceMappingURL=index.d.ts.map
@@ -1,3 +1,2 @@
1
1
  export { discoverPlugins, findManifest, loadPlugin, loadPluginMcpServers, PLUGIN_NAME_PATTERN, pluginRoots } from './loader.js';
2
2
  export { installPlugin, removePlugin } from './install.js';
3
- //# sourceMappingURL=index.js.map
@@ -10,4 +10,3 @@ export interface InstallPluginOptions {
10
10
  export declare function installPlugin(source: string, opts: InstallPluginOptions): Promise<Plugin>;
11
11
  /** Removes an installed plugin; returns false when it was not installed. */
12
12
  export declare function removePlugin(name: string, opts: Pick<InstallPluginOptions, 'scope' | 'cwd' | 'home'>): Promise<boolean>;
13
- //# sourceMappingURL=install.d.ts.map
@@ -64,4 +64,3 @@ export async function removePlugin(name, opts) {
64
64
  await rm(target, { recursive: true, force: true });
65
65
  return true;
66
66
  }
67
- //# sourceMappingURL=install.js.map
@@ -27,4 +27,3 @@ export declare function loadPlugin(root: string, scope: PluginScope): Promise<Pl
27
27
  export declare function discoverPlugins(cwd: string, home?: string): Promise<Plugin[]>;
28
28
  /** MCP servers contributed by global plugins only; project plugins are untrusted. */
29
29
  export declare function loadPluginMcpServers(cwd: string, home?: string): Promise<Record<string, McpServerSpec>>;
30
- //# sourceMappingURL=loader.d.ts.map
@@ -125,4 +125,3 @@ export async function loadPluginMcpServers(cwd, home = homedir()) {
125
125
  }
126
126
  return out;
127
127
  }
128
- //# sourceMappingURL=loader.js.map
@@ -28,4 +28,3 @@ export declare function defaultAuditFile(): string;
28
28
  /** Redacted, size-capped rendering of tool arguments. */
29
29
  export declare function scrubArgs(args: unknown): unknown;
30
30
  export declare function createFileAuditSink(file?: string, now?: () => Date): AuditSink;
31
- //# sourceMappingURL=audit.d.ts.map
@@ -66,4 +66,3 @@ export function createFileAuditSink(file = defaultAuditFile(), now = () => new D
66
66
  },
67
67
  };
68
68
  }
69
- //# sourceMappingURL=audit.js.map
@@ -106,4 +106,3 @@ export declare function filterMcpServers<T>(servers: Record<string, T>, policy:
106
106
  /** Return `config` with the policy applied (a new object; the input is not mutated). */
107
107
  export declare function applyPolicy(config: AgentConfig, policy: OrgPolicy | undefined): AgentConfig;
108
108
  export {};
109
- //# sourceMappingURL=policy.d.ts.map
@@ -124,4 +124,3 @@ export function applyPolicy(config, policy) {
124
124
  }
125
125
  return out;
126
126
  }
127
- //# sourceMappingURL=policy.js.map
@@ -18,4 +18,3 @@ export declare function hasProxy(p: ProxySettings): boolean;
18
18
  * Idempotent. Returns whether a proxy was installed.
19
19
  */
20
20
  export declare function installProxy(settings?: ProxySettings): Promise<boolean>;
21
- //# sourceMappingURL=proxy.d.ts.map
@@ -36,4 +36,3 @@ export async function installProxy(settings = proxyFromEnv()) {
36
36
  installed = true;
37
37
  return true;
38
38
  }
39
- //# sourceMappingURL=proxy.js.map
package/dist/pricing.d.ts CHANGED
@@ -70,4 +70,3 @@ export declare function costFor(model: ModelConfig | string, tokens: {
70
70
  * `--list-models` enrichment and for tests.
71
71
  */
72
72
  export declare function knownModelIds(provider?: ProviderName): string[];
73
- //# sourceMappingURL=pricing.d.ts.map
package/dist/pricing.js CHANGED
@@ -187,4 +187,3 @@ export function knownModelIds(provider) {
187
187
  const hints = prefixHints[provider];
188
188
  return ids.filter((id) => hints.some((h) => id.includes(h)));
189
189
  }
190
- //# sourceMappingURL=pricing.js.map
@@ -34,4 +34,3 @@ export declare function pickAvailableProvider(env?: NodeJS.ProcessEnv, disabled?
34
34
  * Pretty-print a model identifier for display (e.g. "anthropic/claude-sonnet-4-5").
35
35
  */
36
36
  export declare function formatModelId(config: ModelConfig): string;
37
- //# sourceMappingURL=providers.d.ts.map
package/dist/providers.js CHANGED
@@ -218,4 +218,3 @@ export function pickAvailableProvider(env = process.env, disabled = []) {
218
218
  export function formatModelId(config) {
219
219
  return `${config.provider}/${config.model}`;
220
220
  }
221
- //# sourceMappingURL=providers.js.map
@@ -2,4 +2,3 @@ export { DEFAULT_MAP_TOKENS, buildEdges, buildRepoMap, estimateTokens, identifie
2
2
  export type { RepoMap, RepoMapOptions } from './repo-map.js';
3
3
  export { isExported, isTestFile, nameWeight } from './repo-map.js';
4
4
  export type { DefinitionFilter } from './repo-map.js';
5
- //# sourceMappingURL=index.d.ts.map
@@ -1,3 +1,2 @@
1
1
  export { DEFAULT_MAP_TOKENS, buildEdges, buildRepoMap, estimateTokens, identifierCounts, pageRank, repoMapBlock } from './repo-map.js';
2
2
  export { isExported, isTestFile, nameWeight } from './repo-map.js';
3
- //# sourceMappingURL=index.js.map
@@ -41,4 +41,3 @@ export declare function isExported(file: string, sym: CodeSymbol, line: string):
41
41
  export declare function buildRepoMap(cwd: string, options?: RepoMapOptions): Promise<RepoMap>;
42
42
  /** The block added to the system prompt. */
43
43
  export declare function repoMapBlock(map: RepoMap): string;
44
- //# sourceMappingURL=repo-map.d.ts.map
@@ -256,4 +256,3 @@ export function repoMapBlock(map) {
256
256
  return '';
257
257
  return `<repo-map>\nOutline of the codebase, most important files first. It is a map, not the code: read a file before editing it.\n\n${map.text}\n</repo-map>`;
258
258
  }
259
- //# sourceMappingURL=repo-map.js.map
@@ -10,4 +10,3 @@ export interface Chunk {
10
10
  * overlapping line windows over the whole file.
11
11
  */
12
12
  export declare function chunkSource(source: string, ext: string): Promise<Chunk[]>;
13
- //# sourceMappingURL=chunker.d.ts.map
@@ -32,4 +32,3 @@ export async function chunkSource(source, ext) {
32
32
  }
33
33
  return out;
34
34
  }
35
- //# sourceMappingURL=chunker.js.map
@@ -32,4 +32,3 @@ export declare function openAiCompatibleEmbedder(options: OpenAiCompatibleEmbedd
32
32
  * chosen provider lacks what it needs (e.g. no OPENAI_API_KEY).
33
33
  */
34
34
  export declare function embedderFromEnv(env?: NodeJS.ProcessEnv): Embedder;
35
- //# sourceMappingURL=embedder.d.ts.map
@@ -105,4 +105,3 @@ export function embedderFromEnv(env = process.env) {
105
105
  }
106
106
  return hashingEmbedder();
107
107
  }
108
- //# sourceMappingURL=embedder.js.map
@@ -10,4 +10,3 @@ export interface SemanticHit {
10
10
  /** Bring `.forge/index/embeddings.json` up to date: re-embed only changed files, drop deleted ones. */
11
11
  export declare function ensureSemanticFresh(cwd: string, embedder: Embedder): Promise<SemanticManifest>;
12
12
  export declare function searchSemantic(cwd: string, embedder: Embedder, query: string, k?: number): Promise<SemanticHit[]>;
13
- //# sourceMappingURL=semantic-index.d.ts.map
@@ -93,4 +93,3 @@ export async function searchSemantic(cwd, embedder, query, k = 8) {
93
93
  }
94
94
  return hits;
95
95
  }
96
- //# sourceMappingURL=semantic-index.js.map
@@ -17,4 +17,3 @@ export declare function encodeVector(v: number[]): string;
17
17
  export declare function decodeVector(s: string): number[];
18
18
  export declare function loadSemanticManifest(cwd: string, embedderId: string): Promise<SemanticManifest>;
19
19
  export declare function saveSemanticManifest(cwd: string, manifest: SemanticManifest): Promise<void>;
20
- //# sourceMappingURL=vector-store.d.ts.map
@@ -25,4 +25,3 @@ export async function saveSemanticManifest(cwd, manifest) {
25
25
  await mkdir(path.dirname(file), { recursive: true });
26
26
  await writeFile(file, JSON.stringify(manifest), 'utf8');
27
27
  }
28
- //# sourceMappingURL=vector-store.js.map
@@ -1,7 +1,7 @@
1
1
  export { defaultSessionDir, generateSessionId, saveSession, loadSession, deleteSession, listSessions, findLatestSession, } from './session-store.js';
2
2
  export type { Session, ListEntry } from './session-store.js';
3
+ export { pruneByRetention, pruneSessions, type SessionPruneOptions, type SessionPruneResult } from './prune.js';
3
4
  export { formatSessionMarkdown, formatSessionJson, type FormatOptions } from './session-export.js';
4
5
  export { appendedSince, summarizeMessage, watchSession } from './watch.js';
5
6
  export type { SessionUpdate, WatchSessionOptions } from './watch.js';
6
7
  export { searchSessions, sessionText, type SessionMatch, type SearchSessionsOptions } from './search.js';
7
- //# sourceMappingURL=index.d.ts.map
@@ -1,5 +1,5 @@
1
1
  export { defaultSessionDir, generateSessionId, saveSession, loadSession, deleteSession, listSessions, findLatestSession, } from './session-store.js';
2
+ export { pruneByRetention, pruneSessions } from './prune.js';
2
3
  export { formatSessionMarkdown, formatSessionJson } from './session-export.js';
3
4
  export { appendedSince, summarizeMessage, watchSession } from './watch.js';
4
5
  export { searchSessions, sessionText } from './search.js';
5
- //# sourceMappingURL=index.js.map
@@ -0,0 +1,23 @@
1
+ export interface SessionPruneOptions {
2
+ /** Delete sessions last updated more than this many days ago. */
3
+ olderThanDays: number;
4
+ /** Session ids never to delete, such as the one that is open right now. */
5
+ keepIds?: readonly string[];
6
+ /** Report what would be deleted without deleting it. */
7
+ dryRun?: boolean;
8
+ /** The clock; tests pass a fixed date. */
9
+ now?: Date;
10
+ }
11
+ export interface SessionPruneResult {
12
+ /** Ids deleted (or, in a dry run, that would be). */
13
+ deleted: string[];
14
+ /** Sessions left in place. */
15
+ kept: number;
16
+ }
17
+ /**
18
+ * Prune by the `sessionRetentionDays` setting. Returns undefined, touching nothing, unless it is a
19
+ * positive number: unset means "keep everything".
20
+ */
21
+ export declare function pruneByRetention(dir: string, retentionDays: number | undefined, opts?: Pick<SessionPruneOptions, 'keepIds' | 'now'>): Promise<SessionPruneResult | undefined>;
22
+ /** Delete saved sessions that have not been touched for `olderThanDays` days. Files that are not valid sessions are never touched. */
23
+ export declare function pruneSessions(dir: string, opts: SessionPruneOptions): Promise<SessionPruneResult>;
@@ -0,0 +1,35 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { deleteSession, listSessions } from './session-store.js';
3
+ /**
4
+ * Prune by the `sessionRetentionDays` setting. Returns undefined, touching nothing, unless it is a
5
+ * positive number: unset means "keep everything".
6
+ */
7
+ export async function pruneByRetention(dir, retentionDays, opts = {}) {
8
+ if (retentionDays === undefined || !Number.isFinite(retentionDays) || retentionDays <= 0)
9
+ return undefined;
10
+ return pruneSessions(dir, { ...opts, olderThanDays: retentionDays });
11
+ }
12
+ /** Delete saved sessions that have not been touched for `olderThanDays` days. Files that are not valid sessions are never touched. */
13
+ export async function pruneSessions(dir, opts) {
14
+ if (!Number.isFinite(opts.olderThanDays) || opts.olderThanDays <= 0) {
15
+ throw new Error(`pruneSessions: olderThanDays must be a positive number, got ${opts.olderThanDays}`);
16
+ }
17
+ if (!existsSync(dir))
18
+ return { deleted: [], kept: 0 };
19
+ const cutoff = (opts.now ?? new Date()).getTime() - opts.olderThanDays * 86_400_000;
20
+ const keep = new Set(opts.keepIds ?? []);
21
+ const deleted = [];
22
+ let kept = 0;
23
+ for (const entry of await listSessions(dir)) {
24
+ const updated = Date.parse(entry.updatedAt);
25
+ const stale = Number.isFinite(updated) && updated < cutoff;
26
+ if (!stale || keep.has(entry.id)) {
27
+ kept++;
28
+ continue;
29
+ }
30
+ if (!opts.dryRun)
31
+ await deleteSession(entry.id, dir);
32
+ deleted.push(entry.id);
33
+ }
34
+ return { deleted, kept };
35
+ }
@@ -20,4 +20,3 @@ export interface SearchSessionsOptions {
20
20
  export declare function sessionText(messages: readonly unknown[]): string;
21
21
  export declare function snippetAround(text: string, at: number, width?: number): string;
22
22
  export declare function searchSessions(dir: string, query: string, options?: SearchSessionsOptions): Promise<SessionMatch[]>;
23
- //# sourceMappingURL=search.d.ts.map
@@ -64,4 +64,3 @@ export async function searchSessions(dir, query, options = {}) {
64
64
  matches.sort((a, b) => b.hits - a.hits);
65
65
  return matches.slice(0, options.limit ?? 20);
66
66
  }
67
- //# sourceMappingURL=search.js.map
@@ -36,4 +36,3 @@ export declare function formatSessionMarkdown(session: Session, options?: Format
36
36
  * strings with `***REDACTED***`.
37
37
  */
38
38
  export declare function formatSessionJson(session: Session, options?: FormatOptions): string;
39
- //# sourceMappingURL=session-export.d.ts.map
@@ -319,4 +319,3 @@ function redactContent(content) {
319
319
  return out;
320
320
  });
321
321
  }
322
- //# sourceMappingURL=session-export.js.map
@@ -62,4 +62,3 @@ export declare function deleteSession(id: string, dir: string): Promise<void>;
62
62
  export declare function listSessions(dir: string): Promise<ListEntry[]>;
63
63
  /** Most-recent session, or null if there are none. */
64
64
  export declare function findLatestSession(dir: string): Promise<ListEntry | null>;
65
- //# sourceMappingURL=session-store.d.ts.map
@@ -180,4 +180,3 @@ async function rename(from, to) {
180
180
  // Suppress unused-import warning on rare Node versions.
181
181
  void mkdtemp;
182
182
  void rm;
183
- //# sourceMappingURL=session-store.js.map
@@ -26,4 +26,3 @@ export declare function watchSession(id: string, dir: string, onUpdate: (update:
26
26
  export declare function appendedSince(prev: ModelMessage[], next: ModelMessage[]): ModelMessage[] | null;
27
27
  /** One short line per message part, for live tails. */
28
28
  export declare function summarizeMessage(message: ModelMessage, maxChars?: number): string[];
29
- //# sourceMappingURL=watch.d.ts.map
@@ -79,4 +79,3 @@ export function summarizeMessage(message, maxChars = 200) {
79
79
  }
80
80
  return lines;
81
81
  }
82
- //# sourceMappingURL=watch.js.map
@@ -22,4 +22,3 @@ export declare function importSettings(data: ForgeSettingsExport, opts: {
22
22
  configPath?: string;
23
23
  specialistsPath?: string;
24
24
  }): Promise<void>;
25
- //# sourceMappingURL=settings-export.d.ts.map
@@ -36,4 +36,3 @@ export async function importSettings(data, opts) {
36
36
  await saveForgeConfigFile(data.config, opts.configPath);
37
37
  await saveSpecialistsToConfig(data.specialists ?? [], opts.specialistsPath);
38
38
  }
39
- //# sourceMappingURL=settings-export.js.map
@@ -49,4 +49,3 @@ export declare function buildSkillsBlock(skills: Skill[]): string;
49
49
  * Returns an empty string when no skills are selected.
50
50
  */
51
51
  export declare function composeSkillsPrompt(skills: Skill[]): string;
52
- //# sourceMappingURL=activator.d.ts.map
@@ -116,4 +116,3 @@ export function composeSkillsPrompt(skills) {
116
116
  block,
117
117
  ].join('\n');
118
118
  }
119
- //# sourceMappingURL=activator.js.map
@@ -13,4 +13,3 @@ export { fetchSkillsCatalog, installSkillFromCatalog, searchSkills, } from './ma
13
13
  export type { CatalogFetcher } from './marketplace.js';
14
14
  export type { SkillCatalog, SkillCatalogEntry, SkillSearchResult, } from './marketplace-types.js';
15
15
  export { DEFAULT_SKILL_CATALOG_URL, SKILL_CATALOG_VERSION } from './marketplace-types.js';
16
- //# sourceMappingURL=index.d.ts.map
@@ -11,4 +11,3 @@ export { buildSkillsBlock, composeSkillsPrompt, scoreSkill, selectSkills, } from
11
11
  // Skills marketplace
12
12
  export { fetchSkillsCatalog, installSkillFromCatalog, searchSkills, } from './marketplace.js';
13
13
  export { DEFAULT_SKILL_CATALOG_URL, SKILL_CATALOG_VERSION } from './marketplace-types.js';
14
- //# sourceMappingURL=index.js.map
@@ -48,4 +48,3 @@ export declare function loadSkillsRegistry(cwd: string): SkillRegistry;
48
48
  * Useful for callers that want a fully-populated registry in one step.
49
49
  */
50
50
  export declare function loadSkillsRegistryAsync(cwd: string): Promise<SkillRegistry>;
51
- //# sourceMappingURL=loader.d.ts.map
@@ -128,4 +128,3 @@ export async function loadSkillsRegistryAsync(cwd) {
128
128
  await registry.reload();
129
129
  return registry;
130
130
  }
131
- //# sourceMappingURL=loader.js.map
@@ -52,4 +52,3 @@ export interface SkillSearchResult {
52
52
  /** Total entries scanned (before filtering). */
53
53
  totalScanned: number;
54
54
  }
55
- //# sourceMappingURL=marketplace-types.d.ts.map
@@ -13,4 +13,3 @@
13
13
  export const SKILL_CATALOG_VERSION = 1;
14
14
  /** Default catalog URL: fetched via {@link fetchSkillsCatalog} when none is supplied. */
15
15
  export const DEFAULT_SKILL_CATALOG_URL = 'https://raw.githubusercontent.com/ikarmicai/forge-skills/main/skills-catalog.json';
16
- //# sourceMappingURL=marketplace-types.js.map
@@ -60,4 +60,3 @@ export declare function installSkillFromCatalog(params: {
60
60
  path: string;
61
61
  skill: Skill;
62
62
  } | null>;
63
- //# sourceMappingURL=marketplace.d.ts.map
@@ -182,4 +182,3 @@ function defaultDestination() {
182
182
  const path = require('node:path');
183
183
  return path.join(homedir(), '.forge', 'skills');
184
184
  }
185
- //# sourceMappingURL=marketplace.js.map
@@ -28,4 +28,3 @@ export declare function parseFrontmatter(text: string): {
28
28
  * originating file path.
29
29
  */
30
30
  export declare function parseSkill(content: string, source: SkillSource, fallbackName?: string): Skill;
31
- //# sourceMappingURL=parser.d.ts.map
@@ -96,4 +96,3 @@ export function parseSkill(content, source, fallbackName) {
96
96
  source,
97
97
  };
98
98
  }
99
- //# sourceMappingURL=parser.js.map
@@ -71,4 +71,3 @@ export interface SkillRegistry {
71
71
  /** Where skills were discovered (for diagnostics). */
72
72
  roots(): SkillRoots;
73
73
  }
74
- //# sourceMappingURL=types.d.ts.map
@@ -29,4 +29,3 @@
29
29
  * can override a global skill by name).
30
30
  */
31
31
  export {};
32
- //# sourceMappingURL=types.js.map
@@ -24,4 +24,3 @@ export declare const SPEC_READONLY_TOOLS: readonly string[];
24
24
  * or malformed files.
25
25
  */
26
26
  export declare function splitSpecSections(raw: string): SpecSections;
27
- //# sourceMappingURL=generate.d.ts.map
@@ -86,4 +86,3 @@ function splitInlineSubtasks(tasks) {
86
86
  function escapeRegExp(s) {
87
87
  return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
88
88
  }
89
- //# sourceMappingURL=generate.js.map
@@ -12,4 +12,3 @@ export { convertToCheckboxes, parseTasks, setTaskDone } from './tasks-parser.js'
12
12
  export type { SpecTask } from './tasks-parser.js';
13
13
  export { changedSince, changeSize, keepDoneTasks, referencedPaths, specDrift, syncSpecTask } from './sync.js';
14
14
  export type { SpecDrift } from './sync.js';
15
- //# sourceMappingURL=index.d.ts.map
@@ -9,4 +9,3 @@ export { SpecStore, isSafeSpecId, runKey, slugifyTaskForSpecId } from './store.j
9
9
  export { SPEC_READONLY_TOOLS, splitSpecSections } from './generate.js';
10
10
  export { convertToCheckboxes, parseTasks, setTaskDone } from './tasks-parser.js';
11
11
  export { changedSince, changeSize, keepDoneTasks, referencedPaths, specDrift, syncSpecTask } from './sync.js';
12
- //# sourceMappingURL=index.js.map
@@ -51,4 +51,3 @@ export declare class SpecStore {
51
51
  * all (e.g. `"!!!"`).
52
52
  */
53
53
  export declare function slugifyTaskForSpecId(task: string): string;
54
- //# sourceMappingURL=store.d.ts.map
@@ -255,4 +255,3 @@ export function slugifyTaskForSpecId(task) {
255
255
  const suffix = Math.random().toString(36).slice(2, 8);
256
256
  return `${slug}-${suffix}`;
257
257
  }
258
- //# sourceMappingURL=store.js.map
@@ -27,4 +27,3 @@ export declare function changeSize(before: string, after: string): {
27
27
  added: number;
28
28
  removed: number;
29
29
  };
30
- //# sourceMappingURL=sync.d.ts.map
@@ -153,4 +153,3 @@ export function changeSize(before, after) {
153
153
  removed += Math.max(0, n - (b.get(line) ?? 0));
154
154
  return { added, removed };
155
155
  }
156
- //# sourceMappingURL=sync.js.map
@@ -25,4 +25,3 @@ export declare function setTaskDone(md: string, task: {
25
25
  reason: string;
26
26
  };
27
27
  export declare function convertToCheckboxes(md: string): string;
28
- //# sourceMappingURL=tasks-parser.d.ts.map
@@ -75,4 +75,3 @@ export function convertToCheckboxes(md) {
75
75
  });
76
76
  return changed ? out.join(eolOf(md)) : md;
77
77
  }
78
- //# sourceMappingURL=tasks-parser.js.map
@@ -41,4 +41,3 @@ export interface SpecSummary {
41
41
  /** Absolute path to `.forge/specs/<id>/`. */
42
42
  dir: string;
43
43
  }
44
- //# sourceMappingURL=types.d.ts.map
@@ -1,2 +1 @@
1
1
  export {};
2
- //# sourceMappingURL=types.js.map
@@ -12,4 +12,3 @@
12
12
  * Spec: docs/superpowers/specs/2026-09-29-steering-files-design.md §5.1
13
13
  */
14
14
  export declare function pathMatchesGlob(rawPattern: string, relPath: string): boolean;
15
- //# sourceMappingURL=glob.d.ts.map
@@ -88,4 +88,3 @@ export function pathMatchesGlob(rawPattern, relPath) {
88
88
  const subject = pattern.includes('/') ? relPath : relPath.slice(relPath.lastIndexOf('/') + 1);
89
89
  return matchTokens(tokenize(pattern), subject);
90
90
  }
91
- //# sourceMappingURL=glob.js.map
@@ -4,4 +4,3 @@ export { isSafeSteeringName, loadSteering, overrideFilePath, parseSteering, read
4
4
  export { MAX_TOOL_INJECTIONS, START_BUDGET_BYTES, TOOL_DOC_BYTES, formatSteeringLine, selectAtStart, selectOnToolTouch, stripSteering, toWorkspaceRelative, wrapSteering, } from './select.js';
5
5
  export type { StartSelection } from './select.js';
6
6
  export type { SteeringConfig, SteeringDoc, SteeringInclusion, SteeringLoadResult, SteeringSkip } from './types.js';
7
- //# sourceMappingURL=index.d.ts.map
@@ -2,4 +2,3 @@
2
2
  export { pathMatchesGlob } from './glob.js';
3
3
  export { isSafeSteeringName, loadSteering, overrideFilePath, parseSteering, readOverride, setSteeringDisabled, } from './loader.js';
4
4
  export { MAX_TOOL_INJECTIONS, START_BUDGET_BYTES, TOOL_DOC_BYTES, formatSteeringLine, selectAtStart, selectOnToolTouch, stripSteering, toWorkspaceRelative, wrapSteering, } from './select.js';
5
- //# sourceMappingURL=index.js.map
@@ -12,4 +12,3 @@ export declare function loadSteering(cwd: string, opts?: {
12
12
  includeProject?: boolean;
13
13
  homeDir?: string;
14
14
  }): Promise<SteeringLoadResult>;
15
- //# sourceMappingURL=loader.d.ts.map
@@ -150,4 +150,3 @@ export async function loadSteering(cwd, opts = {}) {
150
150
  .sort((a, b) => a.name.toLowerCase().localeCompare(b.name.toLowerCase()));
151
151
  return { docs, warnings };
152
152
  }
153
- //# sourceMappingURL=loader.js.map
@@ -1,4 +1,3 @@
1
1
  export declare const PROJECT_INSTRUCTION_FILES: readonly ["AGENTS.md", "CLAUDE.md", "CONVENTIONS.md"];
2
2
  export declare const MAX_INSTRUCTION_BYTES = 16000;
3
3
  export declare function buildProjectInstructionsBlock(cwd: string): Promise<string>;
4
- //# sourceMappingURL=project-instructions.d.ts.map
@@ -25,4 +25,3 @@ export async function buildProjectInstructionsBlock(cwd) {
25
25
  }
26
26
  return blocks.join('\n\n');
27
27
  }
28
- //# sourceMappingURL=project-instructions.js.map
@@ -26,4 +26,3 @@ export declare function formatSteeringLine(e: {
26
26
  skipped: SteeringSkip[];
27
27
  path?: string;
28
28
  }): string;
29
- //# sourceMappingURL=select.d.ts.map
@@ -94,4 +94,3 @@ export function formatSteeringLine(e) {
94
94
  const skipped = e.skipped.length > 0 ? ` · skipped: ${e.skipped.map((s) => `${s.name} (${s.reason})`).join(', ')}` : '';
95
95
  return `${head}: ${applied}${skipped}`;
96
96
  }
97
- //# sourceMappingURL=select.js.map
@@ -32,4 +32,3 @@ export interface SteeringSkip {
32
32
  name: string;
33
33
  reason: 'budget' | 'cap';
34
34
  }
35
- //# sourceMappingURL=types.d.ts.map
@@ -1,3 +1,2 @@
1
1
  /** Steering files (SP3a). Spec: docs/superpowers/specs/2026-09-29-steering-files-design.md §5.1 */
2
2
  export {};
3
- //# sourceMappingURL=types.js.map
@@ -16,4 +16,3 @@ export type { ZodTypeAny } from 'zod';
16
16
  export { formatZodError, jsonSchemaToZod, loadSchemaFile, } from './schema.js';
17
17
  export { defaultRetryPrompt, isStructuredOutputError, runStructuredAgent, StructuredOutputError, validateFinalText, } from './retry.js';
18
18
  export type { StructuredRunOptions, StructuredRunResult } from './retry.js';
19
- //# sourceMappingURL=index.d.ts.map
@@ -1,3 +1,2 @@
1
1
  export { formatZodError, jsonSchemaToZod, loadSchemaFile, } from './schema.js';
2
2
  export { defaultRetryPrompt, isStructuredOutputError, runStructuredAgent, StructuredOutputError, validateFinalText, } from './retry.js';
3
- //# sourceMappingURL=index.js.map