@felan-ai/felan 0.28.4 → 0.30.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 (842) hide show
  1. package/NOTICE +20 -0
  2. package/README.md +127 -40
  3. package/dist/acp/daemon-session.d.ts +34 -0
  4. package/dist/acp/daemon-session.d.ts.map +1 -0
  5. package/dist/acp/daemon-session.js +142 -0
  6. package/dist/acp/daemon-session.js.map +1 -0
  7. package/dist/acp/login.d.ts +4 -2
  8. package/dist/acp/login.d.ts.map +1 -1
  9. package/dist/acp/login.js +155 -251
  10. package/dist/acp/login.js.map +1 -1
  11. package/dist/acp/protocol-interactions.d.ts +25 -0
  12. package/dist/acp/protocol-interactions.d.ts.map +1 -0
  13. package/dist/acp/protocol-interactions.js +297 -0
  14. package/dist/acp/protocol-interactions.js.map +1 -0
  15. package/dist/acp/protocol-updates.d.ts +20 -0
  16. package/dist/acp/protocol-updates.d.ts.map +1 -0
  17. package/dist/acp/protocol-updates.js +114 -0
  18. package/dist/acp/protocol-updates.js.map +1 -0
  19. package/dist/acp/session-registry.d.ts +4 -9
  20. package/dist/acp/session-registry.d.ts.map +1 -1
  21. package/dist/acp/session-registry.js +178 -386
  22. package/dist/acp/session-registry.js.map +1 -1
  23. package/dist/cli-config.d.ts +7 -0
  24. package/dist/cli-config.d.ts.map +1 -0
  25. package/dist/cli-config.js +18 -0
  26. package/dist/cli-config.js.map +1 -0
  27. package/dist/cli-main.d.ts +12 -7
  28. package/dist/cli-main.d.ts.map +1 -1
  29. package/dist/cli-main.js +106 -105
  30. package/dist/cli-main.js.map +1 -1
  31. package/dist/client/agent-host.d.ts +52 -0
  32. package/dist/client/agent-host.d.ts.map +1 -0
  33. package/dist/client/agent-host.js +413 -0
  34. package/dist/client/agent-host.js.map +1 -0
  35. package/dist/client/agents-presenter.d.ts +12 -0
  36. package/dist/client/agents-presenter.d.ts.map +1 -0
  37. package/dist/client/agents-presenter.js +66 -0
  38. package/dist/client/agents-presenter.js.map +1 -0
  39. package/dist/client/client.d.ts +181 -0
  40. package/dist/client/client.d.ts.map +1 -0
  41. package/dist/client/client.js +806 -0
  42. package/dist/client/client.js.map +1 -0
  43. package/dist/client/daemon-blocked.d.ts +12 -0
  44. package/dist/client/daemon-blocked.d.ts.map +1 -0
  45. package/dist/client/daemon-blocked.js +27 -0
  46. package/dist/client/daemon-blocked.js.map +1 -0
  47. package/dist/client/daemon-stop.d.ts +5 -0
  48. package/dist/client/daemon-stop.d.ts.map +1 -0
  49. package/dist/client/daemon-stop.js +36 -0
  50. package/dist/client/daemon-stop.js.map +1 -0
  51. package/dist/client/diagnostics.d.ts +55 -0
  52. package/dist/client/diagnostics.d.ts.map +1 -0
  53. package/dist/client/diagnostics.js +47 -0
  54. package/dist/client/diagnostics.js.map +1 -0
  55. package/dist/client/hint-renderers.d.ts +16 -0
  56. package/dist/client/hint-renderers.d.ts.map +1 -0
  57. package/dist/client/hint-renderers.js +28 -0
  58. package/dist/client/hint-renderers.js.map +1 -0
  59. package/dist/client/index.d.ts +5 -0
  60. package/dist/client/index.d.ts.map +1 -0
  61. package/dist/client/index.js +5 -0
  62. package/dist/client/index.js.map +1 -0
  63. package/dist/client/message-display.d.ts +21 -0
  64. package/dist/client/message-display.d.ts.map +1 -0
  65. package/dist/client/message-display.js +115 -0
  66. package/dist/client/message-display.js.map +1 -0
  67. package/dist/client/powerline-presenter.d.ts +13 -0
  68. package/dist/client/powerline-presenter.d.ts.map +1 -0
  69. package/dist/client/powerline-presenter.js +67 -0
  70. package/dist/client/powerline-presenter.js.map +1 -0
  71. package/dist/client/presenters.d.ts +43 -0
  72. package/dist/client/presenters.d.ts.map +1 -0
  73. package/dist/client/presenters.js +118 -0
  74. package/dist/client/presenters.js.map +1 -0
  75. package/dist/client/reducer.d.ts +37 -0
  76. package/dist/client/reducer.d.ts.map +1 -0
  77. package/dist/client/reducer.js +173 -0
  78. package/dist/client/reducer.js.map +1 -0
  79. package/dist/client/session-title.d.ts +6 -0
  80. package/dist/client/session-title.d.ts.map +1 -0
  81. package/dist/client/session-title.js +13 -0
  82. package/dist/client/session-title.js.map +1 -0
  83. package/dist/client/transport.d.ts +14 -0
  84. package/dist/client/transport.d.ts.map +1 -0
  85. package/dist/client/transport.js +46 -0
  86. package/dist/client/transport.js.map +1 -0
  87. package/dist/client/ui.d.ts +25 -0
  88. package/dist/client/ui.d.ts.map +1 -0
  89. package/dist/client/ui.js +123 -0
  90. package/dist/client/ui.js.map +1 -0
  91. package/dist/client-application.d.ts +37 -0
  92. package/dist/client-application.d.ts.map +1 -0
  93. package/dist/client-application.js +126 -0
  94. package/dist/client-application.js.map +1 -0
  95. package/dist/compaction-presentation.d.ts +6 -4
  96. package/dist/compaction-presentation.d.ts.map +1 -1
  97. package/dist/compaction-presentation.js +11 -37
  98. package/dist/compaction-presentation.js.map +1 -1
  99. package/dist/daemon-command.d.ts +10 -0
  100. package/dist/daemon-command.d.ts.map +1 -0
  101. package/dist/daemon-command.js +163 -0
  102. package/dist/daemon-command.js.map +1 -0
  103. package/dist/daemon-entrypoint.d.ts +5 -0
  104. package/dist/daemon-entrypoint.d.ts.map +1 -0
  105. package/dist/daemon-entrypoint.js +17 -0
  106. package/dist/daemon-entrypoint.js.map +1 -0
  107. package/dist/daemon-host.d.ts +2 -0
  108. package/dist/daemon-host.d.ts.map +1 -0
  109. package/dist/daemon-host.js +18 -0
  110. package/dist/daemon-host.js.map +1 -0
  111. package/dist/dependency-onboarding.js +3 -3
  112. package/dist/dependency-onboarding.js.map +1 -1
  113. package/dist/execution-completion.d.ts +3 -0
  114. package/dist/execution-completion.d.ts.map +1 -0
  115. package/dist/execution-completion.js +2 -0
  116. package/dist/execution-completion.js.map +1 -0
  117. package/dist/headless.d.ts +39 -0
  118. package/dist/headless.d.ts.map +1 -0
  119. package/dist/headless.js +315 -0
  120. package/dist/headless.js.map +1 -0
  121. package/dist/host.json +55 -0
  122. package/dist/index.d.ts +9 -19
  123. package/dist/index.d.ts.map +1 -1
  124. package/dist/index.js +4 -10
  125. package/dist/index.js.map +1 -1
  126. package/dist/memory/{history-view.d.ts → history-renderer.d.ts} +13 -6
  127. package/dist/memory/history-renderer.d.ts.map +1 -0
  128. package/dist/memory/{history-view.js → history-renderer.js} +34 -30
  129. package/dist/memory/history-renderer.js.map +1 -0
  130. package/dist/memory/history.d.ts +1 -31
  131. package/dist/memory/history.d.ts.map +1 -1
  132. package/dist/memory/history.js +1 -306
  133. package/dist/memory/history.js.map +1 -1
  134. package/dist/memory/ui.d.ts +5 -0
  135. package/dist/memory/ui.d.ts.map +1 -0
  136. package/dist/memory/ui.js +2 -0
  137. package/dist/memory/ui.js.map +1 -0
  138. package/dist/process-restart.d.ts +4 -6
  139. package/dist/process-restart.d.ts.map +1 -1
  140. package/dist/process-restart.js +17 -96
  141. package/dist/process-restart.js.map +1 -1
  142. package/dist/{browser → providers/browser}/authorization-host.d.ts +2 -1
  143. package/dist/providers/browser/authorization-host.d.ts.map +1 -0
  144. package/dist/{browser → providers/browser}/authorization-host.js +9 -22
  145. package/dist/providers/browser/authorization-host.js.map +1 -0
  146. package/dist/providers/browser/chrome-devtools.d.ts.map +1 -0
  147. package/dist/providers/browser/chrome-devtools.js.map +1 -0
  148. package/dist/providers/browser/connection-lease.d.ts.map +1 -0
  149. package/dist/providers/browser/connection-lease.js.map +1 -0
  150. package/dist/providers/browser-authorization.d.ts +6 -0
  151. package/dist/providers/browser-authorization.d.ts.map +1 -0
  152. package/dist/providers/browser-authorization.js +30 -0
  153. package/dist/providers/browser-authorization.js.map +1 -0
  154. package/dist/providers/classifier.d.ts.map +1 -0
  155. package/dist/providers/classifier.js.map +1 -0
  156. package/dist/providers/codemode.d.ts.map +1 -0
  157. package/dist/providers/codemode.js.map +1 -0
  158. package/dist/providers/configuration.d.ts +23 -0
  159. package/dist/providers/configuration.d.ts.map +1 -0
  160. package/dist/providers/configuration.js +154 -0
  161. package/dist/providers/configuration.js.map +1 -0
  162. package/dist/providers/credential-storage.d.ts +10 -0
  163. package/dist/providers/credential-storage.d.ts.map +1 -0
  164. package/dist/providers/credential-storage.js +57 -0
  165. package/dist/providers/credential-storage.js.map +1 -0
  166. package/dist/providers/dependencies.d.ts +3 -0
  167. package/dist/providers/dependencies.d.ts.map +1 -0
  168. package/dist/providers/dependencies.js +31 -0
  169. package/dist/providers/dependencies.js.map +1 -0
  170. package/dist/providers/execution-binding.d.ts +7 -0
  171. package/dist/providers/execution-binding.d.ts.map +1 -0
  172. package/dist/providers/execution-binding.js +180 -0
  173. package/dist/providers/execution-binding.js.map +1 -0
  174. package/dist/providers/execution-services.d.ts +24 -0
  175. package/dist/providers/execution-services.d.ts.map +1 -0
  176. package/dist/providers/execution-services.js +91 -0
  177. package/dist/providers/execution-services.js.map +1 -0
  178. package/dist/providers/extension-catalog.d.ts +30 -0
  179. package/dist/providers/extension-catalog.d.ts.map +1 -0
  180. package/dist/providers/extension-catalog.js +39 -0
  181. package/dist/providers/extension-catalog.js.map +1 -0
  182. package/dist/providers/extension-services.d.ts +14 -0
  183. package/dist/providers/extension-services.d.ts.map +1 -0
  184. package/dist/providers/extension-services.js +2 -0
  185. package/dist/providers/extension-services.js.map +1 -0
  186. package/dist/providers/extensions.d.ts +7 -0
  187. package/dist/providers/extensions.d.ts.map +1 -0
  188. package/dist/providers/extensions.js +32 -0
  189. package/dist/providers/extensions.js.map +1 -0
  190. package/dist/providers/felan-platform.d.ts +6 -0
  191. package/dist/providers/felan-platform.d.ts.map +1 -0
  192. package/dist/providers/felan-platform.js +11 -0
  193. package/dist/providers/felan-platform.js.map +1 -0
  194. package/dist/providers/global-settings.d.ts +46 -0
  195. package/dist/providers/global-settings.d.ts.map +1 -0
  196. package/dist/providers/global-settings.js +187 -0
  197. package/dist/providers/global-settings.js.map +1 -0
  198. package/dist/providers/llama/extension.d.ts +10 -0
  199. package/dist/providers/llama/extension.d.ts.map +1 -0
  200. package/dist/providers/llama/extension.js +34 -0
  201. package/dist/providers/llama/extension.js.map +1 -0
  202. package/dist/providers/llama/management.d.ts +5 -0
  203. package/dist/providers/llama/management.d.ts.map +1 -0
  204. package/dist/providers/llama/management.js +176 -0
  205. package/dist/providers/llama/management.js.map +1 -0
  206. package/dist/providers/llama/presentation.d.ts +32 -0
  207. package/dist/providers/llama/presentation.d.ts.map +1 -0
  208. package/dist/providers/llama/presentation.js +141 -0
  209. package/dist/providers/llama/presentation.js.map +1 -0
  210. package/dist/providers/llama/sdk.d.ts +71 -0
  211. package/dist/providers/llama/sdk.d.ts.map +1 -0
  212. package/dist/providers/llama/sdk.js +25 -0
  213. package/dist/providers/llama/sdk.js.map +1 -0
  214. package/dist/providers/local-model-runtime.d.ts +4 -0
  215. package/dist/providers/local-model-runtime.d.ts.map +1 -0
  216. package/dist/providers/local-model-runtime.js +11 -0
  217. package/dist/providers/local-model-runtime.js.map +1 -0
  218. package/dist/providers/local-resources.d.ts +6 -0
  219. package/dist/providers/local-resources.d.ts.map +1 -0
  220. package/dist/providers/local-resources.js +13 -0
  221. package/dist/providers/local-resources.js.map +1 -0
  222. package/dist/providers/mcp/callback-server.d.ts +3 -0
  223. package/dist/providers/mcp/callback-server.d.ts.map +1 -0
  224. package/dist/{mcp → providers/mcp}/callback-server.js +5 -1
  225. package/dist/providers/mcp/callback-server.js.map +1 -0
  226. package/dist/providers/mcp-callback.d.ts +6 -0
  227. package/dist/providers/mcp-callback.d.ts.map +1 -0
  228. package/dist/providers/mcp-callback.js +67 -0
  229. package/dist/providers/mcp-callback.js.map +1 -0
  230. package/dist/providers/model-defaults.d.ts.map +1 -0
  231. package/dist/providers/model-defaults.js.map +1 -0
  232. package/dist/providers/models-subscription.d.ts +14 -0
  233. package/dist/providers/models-subscription.d.ts.map +1 -0
  234. package/dist/{powerline.js → providers/models-subscription.js} +28 -83
  235. package/dist/providers/models-subscription.js.map +1 -0
  236. package/dist/providers/models.d.ts +18 -0
  237. package/dist/providers/models.d.ts.map +1 -0
  238. package/dist/providers/models.js +371 -0
  239. package/dist/providers/models.js.map +1 -0
  240. package/dist/providers/pi-lock.d.ts.map +1 -0
  241. package/dist/{pi-lock.js → providers/pi-lock.js} +1 -1
  242. package/dist/providers/pi-lock.js.map +1 -0
  243. package/dist/providers/platform.d.ts +3 -0
  244. package/dist/providers/platform.d.ts.map +1 -0
  245. package/dist/providers/platform.js +14 -0
  246. package/dist/providers/platform.js.map +1 -0
  247. package/dist/providers/process-adapter.d.ts +3 -0
  248. package/dist/providers/process-adapter.d.ts.map +1 -0
  249. package/dist/providers/process-adapter.js +46 -0
  250. package/dist/providers/process-adapter.js.map +1 -0
  251. package/dist/providers/process-bootstrap.d.ts +17 -0
  252. package/dist/providers/process-bootstrap.d.ts.map +1 -0
  253. package/dist/providers/process-bootstrap.js +87 -0
  254. package/dist/providers/process-bootstrap.js.map +1 -0
  255. package/dist/providers/project-trust.d.ts +8 -0
  256. package/dist/providers/project-trust.d.ts.map +1 -0
  257. package/dist/providers/project-trust.js +112 -0
  258. package/dist/providers/project-trust.js.map +1 -0
  259. package/dist/providers/runtime-dependencies.d.ts +6 -0
  260. package/dist/providers/runtime-dependencies.d.ts.map +1 -0
  261. package/dist/providers/runtime-dependencies.js +31 -0
  262. package/dist/providers/runtime-dependencies.js.map +1 -0
  263. package/dist/providers/runtime.d.ts +6 -0
  264. package/dist/providers/runtime.d.ts.map +1 -0
  265. package/dist/providers/runtime.js +15 -0
  266. package/dist/providers/runtime.js.map +1 -0
  267. package/dist/{savings.d.ts → providers/savings.d.ts} +7 -0
  268. package/dist/providers/savings.d.ts.map +1 -0
  269. package/dist/{savings.js → providers/savings.js} +46 -1
  270. package/dist/providers/savings.js.map +1 -0
  271. package/dist/providers/secrets.d.ts +15 -0
  272. package/dist/providers/secrets.d.ts.map +1 -0
  273. package/dist/providers/secrets.js +233 -0
  274. package/dist/providers/secrets.js.map +1 -0
  275. package/dist/providers/session-runtime.d.ts +16 -0
  276. package/dist/providers/session-runtime.d.ts.map +1 -0
  277. package/dist/providers/session-runtime.js +193 -0
  278. package/dist/providers/session-runtime.js.map +1 -0
  279. package/dist/providers/sessions.d.ts +6 -0
  280. package/dist/providers/sessions.d.ts.map +1 -0
  281. package/dist/providers/sessions.js +97 -0
  282. package/dist/providers/sessions.js.map +1 -0
  283. package/dist/providers/settings-store.d.ts +4 -0
  284. package/dist/providers/settings-store.d.ts.map +1 -0
  285. package/dist/providers/settings-store.js +70 -0
  286. package/dist/providers/settings-store.js.map +1 -0
  287. package/dist/{settings.d.ts → providers/settings.d.ts} +7 -24
  288. package/dist/providers/settings.d.ts.map +1 -0
  289. package/dist/providers/settings.js +170 -0
  290. package/dist/providers/settings.js.map +1 -0
  291. package/dist/providers/setup/auth-driver.d.ts +16 -0
  292. package/dist/providers/setup/auth-driver.d.ts.map +1 -0
  293. package/dist/providers/setup/auth-driver.js +92 -0
  294. package/dist/providers/setup/auth-driver.js.map +1 -0
  295. package/dist/providers/setup/auth-wire.d.ts +51 -0
  296. package/dist/providers/setup/auth-wire.d.ts.map +1 -0
  297. package/dist/providers/setup/auth-wire.js +17 -0
  298. package/dist/providers/setup/auth-wire.js.map +1 -0
  299. package/dist/providers/setup/auth-worker.d.ts +14 -0
  300. package/dist/providers/setup/auth-worker.d.ts.map +1 -0
  301. package/dist/providers/setup/auth-worker.js +187 -0
  302. package/dist/providers/setup/auth-worker.js.map +1 -0
  303. package/dist/providers/setup/manager.d.ts +45 -0
  304. package/dist/providers/setup/manager.d.ts.map +1 -0
  305. package/dist/providers/setup/manager.js +283 -0
  306. package/dist/providers/setup/manager.js.map +1 -0
  307. package/dist/providers/setup/parent-guard.d.ts +3 -0
  308. package/dist/providers/setup/parent-guard.d.ts.map +1 -0
  309. package/dist/providers/setup/parent-guard.js +14 -0
  310. package/dist/providers/setup/parent-guard.js.map +1 -0
  311. package/dist/providers/setup-open.d.ts +9 -0
  312. package/dist/providers/setup-open.d.ts.map +1 -0
  313. package/dist/providers/setup-open.js +32 -0
  314. package/dist/providers/setup-open.js.map +1 -0
  315. package/dist/providers/system-prompt.d.ts.map +1 -0
  316. package/dist/providers/system-prompt.js.map +1 -0
  317. package/dist/providers/tool-policy.d.ts +2 -0
  318. package/dist/providers/tool-policy.d.ts.map +1 -0
  319. package/dist/providers/tool-policy.js +14 -0
  320. package/dist/providers/tool-policy.js.map +1 -0
  321. package/dist/providers/ui/extension-ui.d.ts +7 -0
  322. package/dist/providers/ui/extension-ui.d.ts.map +1 -0
  323. package/dist/providers/ui/extension-ui.js +42 -0
  324. package/dist/providers/ui/extension-ui.js.map +1 -0
  325. package/dist/providers/ui/port.d.ts +24 -0
  326. package/dist/providers/ui/port.d.ts.map +1 -0
  327. package/dist/providers/ui/port.js +2 -0
  328. package/dist/providers/ui/port.js.map +1 -0
  329. package/dist/savings-command.d.ts +1 -1
  330. package/dist/savings-command.d.ts.map +1 -1
  331. package/dist/savings-command.js +1 -1
  332. package/dist/savings-command.js.map +1 -1
  333. package/dist/session-picker.d.ts +13 -12
  334. package/dist/session-picker.d.ts.map +1 -1
  335. package/dist/session-picker.js +13 -23
  336. package/dist/session-picker.js.map +1 -1
  337. package/dist/subagents/agent-navigator.d.ts +24 -11
  338. package/dist/subagents/agent-navigator.d.ts.map +1 -1
  339. package/dist/subagents/agent-navigator.js +154 -86
  340. package/dist/subagents/agent-navigator.js.map +1 -1
  341. package/dist/subagents/agent-transcript.d.ts +8 -2
  342. package/dist/subagents/agent-transcript.d.ts.map +1 -1
  343. package/dist/subagents/agent-transcript.js +312 -29
  344. package/dist/subagents/agent-transcript.js.map +1 -1
  345. package/dist/subagents/completion-presentation.d.ts +13 -0
  346. package/dist/subagents/completion-presentation.d.ts.map +1 -1
  347. package/dist/subagents/completion-presentation.js +15 -42
  348. package/dist/subagents/completion-presentation.js.map +1 -1
  349. package/dist/subagents/transcript-components.d.ts +107 -0
  350. package/dist/subagents/transcript-components.d.ts.map +1 -0
  351. package/dist/subagents/transcript-components.js +306 -0
  352. package/dist/subagents/transcript-components.js.map +1 -0
  353. package/dist/subagents/types.d.ts +77 -0
  354. package/dist/subagents/types.d.ts.map +1 -0
  355. package/dist/subagents/types.js +2 -0
  356. package/dist/subagents/types.js.map +1 -0
  357. package/dist/themes/felan-dark.json +1 -1
  358. package/dist/tool-activity/mode.d.ts +5 -0
  359. package/dist/tool-activity/mode.d.ts.map +1 -0
  360. package/dist/tool-activity/mode.js +17 -0
  361. package/dist/tool-activity/mode.js.map +1 -0
  362. package/dist/tool-activity/presentation.d.ts.map +1 -1
  363. package/dist/tool-activity/presentation.js +104 -28
  364. package/dist/tool-activity/presentation.js.map +1 -1
  365. package/dist/tool-activity/state.d.ts +9 -2
  366. package/dist/tool-activity/state.d.ts.map +1 -1
  367. package/dist/tool-activity/state.js +43 -3
  368. package/dist/tool-activity/state.js.map +1 -1
  369. package/dist/tui/ask-user-preferences.d.ts +9 -0
  370. package/dist/tui/ask-user-preferences.d.ts.map +1 -0
  371. package/dist/tui/ask-user-preferences.js +16 -0
  372. package/dist/tui/ask-user-preferences.js.map +1 -0
  373. package/dist/tui/command-help.d.ts +13 -0
  374. package/dist/tui/command-help.d.ts.map +1 -0
  375. package/dist/tui/command-help.js +57 -0
  376. package/dist/tui/command-help.js.map +1 -0
  377. package/dist/tui/commands.d.ts +22 -0
  378. package/dist/tui/commands.d.ts.map +1 -0
  379. package/dist/tui/commands.js +404 -0
  380. package/dist/tui/commands.js.map +1 -0
  381. package/dist/tui/completion-text.d.ts +9 -0
  382. package/dist/tui/completion-text.d.ts.map +1 -0
  383. package/dist/tui/completion-text.js +33 -0
  384. package/dist/tui/completion-text.js.map +1 -0
  385. package/dist/tui/controller.d.ts +110 -0
  386. package/dist/tui/controller.d.ts.map +1 -0
  387. package/dist/tui/controller.js +579 -0
  388. package/dist/tui/controller.js.map +1 -0
  389. package/dist/tui/dialogs.d.ts +57 -0
  390. package/dist/tui/dialogs.d.ts.map +1 -0
  391. package/dist/tui/dialogs.js +242 -0
  392. package/dist/tui/dialogs.js.map +1 -0
  393. package/dist/tui/generic-ui.d.ts +4 -0
  394. package/dist/tui/generic-ui.d.ts.map +1 -0
  395. package/dist/tui/generic-ui.js +132 -0
  396. package/dist/tui/generic-ui.js.map +1 -0
  397. package/dist/tui/herdr.d.ts +56 -0
  398. package/dist/tui/herdr.d.ts.map +1 -0
  399. package/dist/tui/herdr.js +219 -0
  400. package/dist/tui/herdr.js.map +1 -0
  401. package/dist/tui/interactions.d.ts +36 -0
  402. package/dist/tui/interactions.d.ts.map +1 -0
  403. package/dist/tui/interactions.js +253 -0
  404. package/dist/tui/interactions.js.map +1 -0
  405. package/dist/tui/keybindings.d.ts +15 -0
  406. package/dist/tui/keybindings.d.ts.map +1 -0
  407. package/dist/tui/keybindings.js +101 -0
  408. package/dist/tui/keybindings.js.map +1 -0
  409. package/dist/tui/markdown.d.ts +4 -0
  410. package/dist/tui/markdown.d.ts.map +1 -0
  411. package/dist/tui/markdown.js +6 -0
  412. package/dist/tui/markdown.js.map +1 -0
  413. package/dist/tui/preferences-schema.d.ts +121 -0
  414. package/dist/tui/preferences-schema.d.ts.map +1 -0
  415. package/dist/tui/preferences-schema.js +42 -0
  416. package/dist/tui/preferences-schema.js.map +1 -0
  417. package/dist/tui/preferences-store.d.ts +22 -0
  418. package/dist/tui/preferences-store.d.ts.map +1 -0
  419. package/dist/tui/preferences-store.js +240 -0
  420. package/dist/tui/preferences-store.js.map +1 -0
  421. package/dist/tui/preferences.d.ts +42 -0
  422. package/dist/tui/preferences.d.ts.map +1 -0
  423. package/dist/tui/preferences.js +246 -0
  424. package/dist/tui/preferences.js.map +1 -0
  425. package/dist/tui/presentation-preferences.d.ts +11 -0
  426. package/dist/tui/presentation-preferences.d.ts.map +1 -0
  427. package/dist/tui/presentation-preferences.js +29 -0
  428. package/dist/tui/presentation-preferences.js.map +1 -0
  429. package/dist/tui/presentation-ui.d.ts +7 -0
  430. package/dist/tui/presentation-ui.d.ts.map +1 -0
  431. package/dist/tui/presentation-ui.js +17 -0
  432. package/dist/tui/presentation-ui.js.map +1 -0
  433. package/dist/tui/presenters.d.ts +18 -0
  434. package/dist/tui/presenters.d.ts.map +1 -0
  435. package/dist/tui/presenters.js +118 -0
  436. package/dist/tui/presenters.js.map +1 -0
  437. package/dist/tui/remote.d.ts +7 -0
  438. package/dist/tui/remote.d.ts.map +1 -0
  439. package/dist/tui/remote.js +139 -0
  440. package/dist/tui/remote.js.map +1 -0
  441. package/dist/tui/renderers/ask-user/single-select-layout.d.ts +20 -0
  442. package/dist/tui/renderers/ask-user/single-select-layout.d.ts.map +1 -0
  443. package/dist/tui/renderers/ask-user/single-select-layout.js +111 -0
  444. package/dist/tui/renderers/ask-user/single-select-layout.js.map +1 -0
  445. package/dist/tui/renderers/ask-user.d.ts +21 -0
  446. package/dist/tui/renderers/ask-user.d.ts.map +1 -0
  447. package/dist/tui/renderers/ask-user.js +1348 -0
  448. package/dist/tui/renderers/ask-user.js.map +1 -0
  449. package/dist/tui/renderers/codebase-memory.d.ts +3 -0
  450. package/dist/tui/renderers/codebase-memory.d.ts.map +1 -0
  451. package/dist/tui/renderers/codebase-memory.js +38 -0
  452. package/dist/tui/renderers/codebase-memory.js.map +1 -0
  453. package/dist/tui/renderers/codex.d.ts +5 -0
  454. package/dist/tui/renderers/codex.d.ts.map +1 -0
  455. package/dist/tui/renderers/codex.js +9 -0
  456. package/dist/tui/renderers/codex.js.map +1 -0
  457. package/dist/tui/renderers/context-view.d.ts +3 -0
  458. package/dist/tui/renderers/context-view.d.ts.map +1 -0
  459. package/dist/tui/renderers/context-view.js +69 -0
  460. package/dist/tui/renderers/context-view.js.map +1 -0
  461. package/dist/{fusion → tui/renderers/fusion}/model-picker.d.ts +2 -1
  462. package/dist/tui/renderers/fusion/model-picker.d.ts.map +1 -0
  463. package/dist/{fusion → tui/renderers/fusion}/model-picker.js +1 -0
  464. package/dist/tui/renderers/fusion/model-picker.js.map +1 -0
  465. package/dist/tui/renderers/fusion.d.ts +7 -0
  466. package/dist/tui/renderers/fusion.d.ts.map +1 -0
  467. package/dist/tui/renderers/fusion.js +266 -0
  468. package/dist/tui/renderers/fusion.js.map +1 -0
  469. package/dist/tui/renderers/insights/charts.d.ts +14 -0
  470. package/dist/tui/renderers/insights/charts.d.ts.map +1 -0
  471. package/dist/tui/renderers/insights/charts.js +77 -0
  472. package/dist/tui/renderers/insights/charts.js.map +1 -0
  473. package/dist/tui/renderers/insights/panel.d.ts +55 -0
  474. package/dist/tui/renderers/insights/panel.d.ts.map +1 -0
  475. package/dist/tui/renderers/insights/panel.js +310 -0
  476. package/dist/tui/renderers/insights/panel.js.map +1 -0
  477. package/dist/tui/renderers/insights.d.ts +4 -0
  478. package/dist/tui/renderers/insights.d.ts.map +1 -0
  479. package/dist/tui/renderers/insights.js +51 -0
  480. package/dist/tui/renderers/insights.js.map +1 -0
  481. package/dist/tui/renderers/memory.d.ts +5 -0
  482. package/dist/tui/renderers/memory.d.ts.map +1 -0
  483. package/dist/tui/renderers/memory.js +99 -0
  484. package/dist/tui/renderers/memory.js.map +1 -0
  485. package/dist/tui/renderers/navigation.d.ts +7 -0
  486. package/dist/tui/renderers/navigation.d.ts.map +1 -0
  487. package/dist/tui/renderers/navigation.js +14 -0
  488. package/dist/tui/renderers/navigation.js.map +1 -0
  489. package/dist/tui/renderers/powerline/colors.d.ts +18 -0
  490. package/dist/tui/renderers/powerline/colors.d.ts.map +1 -0
  491. package/dist/tui/renderers/powerline/colors.js +42 -0
  492. package/dist/tui/renderers/powerline/colors.js.map +1 -0
  493. package/dist/tui/renderers/powerline/config.d.ts +44 -0
  494. package/dist/tui/renderers/powerline/config.d.ts.map +1 -0
  495. package/dist/tui/renderers/powerline/config.js +123 -0
  496. package/dist/tui/renderers/powerline/config.js.map +1 -0
  497. package/dist/tui/renderers/powerline/footer-renderer.d.ts +7 -0
  498. package/dist/tui/renderers/powerline/footer-renderer.d.ts.map +1 -0
  499. package/dist/tui/renderers/powerline/footer-renderer.js +74 -0
  500. package/dist/tui/renderers/powerline/footer-renderer.js.map +1 -0
  501. package/dist/tui/renderers/powerline/projected-footer.d.ts +24 -0
  502. package/dist/tui/renderers/powerline/projected-footer.d.ts.map +1 -0
  503. package/dist/tui/renderers/powerline/projected-footer.js +33 -0
  504. package/dist/tui/renderers/powerline/projected-footer.js.map +1 -0
  505. package/dist/tui/renderers/powerline/segments.d.ts +18 -0
  506. package/dist/tui/renderers/powerline/segments.d.ts.map +1 -0
  507. package/dist/tui/renderers/powerline/segments.js +331 -0
  508. package/dist/tui/renderers/powerline/segments.js.map +1 -0
  509. package/dist/tui/renderers/powerline/symbols.d.ts +27 -0
  510. package/dist/tui/renderers/powerline/symbols.d.ts.map +1 -0
  511. package/dist/tui/renderers/powerline/symbols.js +17 -0
  512. package/dist/tui/renderers/powerline/symbols.js.map +1 -0
  513. package/dist/tui/renderers/powerline.d.ts +4 -0
  514. package/dist/tui/renderers/powerline.d.ts.map +1 -0
  515. package/dist/tui/renderers/powerline.js +4 -0
  516. package/dist/tui/renderers/powerline.js.map +1 -0
  517. package/dist/tui/renderers/prewalk/plan-review.d.ts +28 -0
  518. package/dist/tui/renderers/prewalk/plan-review.d.ts.map +1 -0
  519. package/dist/tui/renderers/prewalk/plan-review.js +414 -0
  520. package/dist/tui/renderers/prewalk/plan-review.js.map +1 -0
  521. package/dist/tui/renderers/prewalk.d.ts +5 -0
  522. package/dist/tui/renderers/prewalk.d.ts.map +1 -0
  523. package/dist/tui/renderers/prewalk.js +43 -0
  524. package/dist/tui/renderers/prewalk.js.map +1 -0
  525. package/dist/tui/renderers/processes/background-bash-view.d.ts +45 -0
  526. package/dist/tui/renderers/processes/background-bash-view.d.ts.map +1 -0
  527. package/dist/tui/renderers/processes/background-bash-view.js +405 -0
  528. package/dist/tui/renderers/processes/background-bash-view.js.map +1 -0
  529. package/dist/tui/renderers/processes/completion-message.d.ts +26 -0
  530. package/dist/tui/renderers/processes/completion-message.d.ts.map +1 -0
  531. package/dist/tui/renderers/processes/completion-message.js +97 -0
  532. package/dist/tui/renderers/processes/completion-message.js.map +1 -0
  533. package/dist/tui/renderers/processes/process-view.d.ts +40 -0
  534. package/dist/tui/renderers/processes/process-view.d.ts.map +1 -0
  535. package/dist/tui/renderers/processes/process-view.js +250 -0
  536. package/dist/tui/renderers/processes/process-view.js.map +1 -0
  537. package/dist/tui/renderers/processes.d.ts +12 -0
  538. package/dist/tui/renderers/processes.d.ts.map +1 -0
  539. package/dist/tui/renderers/processes.js +80 -0
  540. package/dist/tui/renderers/processes.js.map +1 -0
  541. package/dist/tui/renderers/prompt-history/picker.d.ts +64 -0
  542. package/dist/tui/renderers/prompt-history/picker.d.ts.map +1 -0
  543. package/dist/tui/renderers/prompt-history/picker.js +430 -0
  544. package/dist/tui/renderers/prompt-history/picker.js.map +1 -0
  545. package/dist/tui/renderers/prompt-history.d.ts +16 -0
  546. package/dist/tui/renderers/prompt-history.d.ts.map +1 -0
  547. package/dist/tui/renderers/prompt-history.js +113 -0
  548. package/dist/tui/renderers/prompt-history.js.map +1 -0
  549. package/dist/tui/renderers/tasks/tasks-overlay.d.ts +37 -0
  550. package/dist/tui/renderers/tasks/tasks-overlay.d.ts.map +1 -0
  551. package/dist/tui/renderers/tasks/tasks-overlay.js +461 -0
  552. package/dist/tui/renderers/tasks/tasks-overlay.js.map +1 -0
  553. package/dist/tui/renderers/tasks.d.ts +18 -0
  554. package/dist/tui/renderers/tasks.d.ts.map +1 -0
  555. package/dist/tui/renderers/tasks.js +97 -0
  556. package/dist/tui/renderers/tasks.js.map +1 -0
  557. package/dist/tui/run.d.ts +22 -0
  558. package/dist/tui/run.d.ts.map +1 -0
  559. package/dist/tui/run.js +249 -0
  560. package/dist/tui/run.js.map +1 -0
  561. package/dist/tui/screen.d.ts +73 -0
  562. package/dist/tui/screen.d.ts.map +1 -0
  563. package/dist/tui/screen.js +371 -0
  564. package/dist/tui/screen.js.map +1 -0
  565. package/dist/tui/session-navigator.d.ts +53 -0
  566. package/dist/tui/session-navigator.d.ts.map +1 -0
  567. package/dist/tui/session-navigator.js +256 -0
  568. package/dist/tui/session-navigator.js.map +1 -0
  569. package/dist/tui/settings-menu.d.ts +31 -0
  570. package/dist/tui/settings-menu.d.ts.map +1 -0
  571. package/dist/tui/settings-menu.js +78 -0
  572. package/dist/tui/settings-menu.js.map +1 -0
  573. package/dist/tui/setup-ui.d.ts +14 -0
  574. package/dist/tui/setup-ui.d.ts.map +1 -0
  575. package/dist/tui/setup-ui.js +122 -0
  576. package/dist/tui/setup-ui.js.map +1 -0
  577. package/dist/tui/setup.d.ts +29 -0
  578. package/dist/tui/setup.d.ts.map +1 -0
  579. package/dist/tui/setup.js +414 -0
  580. package/dist/tui/setup.js.map +1 -0
  581. package/dist/tui/shell-execution.d.ts +20 -0
  582. package/dist/tui/shell-execution.d.ts.map +1 -0
  583. package/dist/tui/shell-execution.js +64 -0
  584. package/dist/tui/shell-execution.js.map +1 -0
  585. package/dist/tui/startup-header.d.ts +4 -0
  586. package/dist/tui/startup-header.d.ts.map +1 -0
  587. package/dist/tui/startup-header.js +19 -0
  588. package/dist/tui/startup-header.js.map +1 -0
  589. package/dist/tui/streaming-markdown.d.ts +21 -0
  590. package/dist/tui/streaming-markdown.d.ts.map +1 -0
  591. package/dist/tui/streaming-markdown.js +118 -0
  592. package/dist/tui/streaming-markdown.js.map +1 -0
  593. package/dist/tui/theme-config.d.ts +26 -0
  594. package/dist/tui/theme-config.d.ts.map +1 -0
  595. package/dist/tui/theme-config.js +87 -0
  596. package/dist/tui/theme-config.js.map +1 -0
  597. package/dist/tui/theme-picker.d.ts +23 -0
  598. package/dist/tui/theme-picker.d.ts.map +1 -0
  599. package/dist/tui/theme-picker.js +91 -0
  600. package/dist/tui/theme-picker.js.map +1 -0
  601. package/dist/tui/theme.d.ts +15 -0
  602. package/dist/tui/theme.d.ts.map +1 -0
  603. package/dist/tui/theme.js +216 -0
  604. package/dist/tui/theme.js.map +1 -0
  605. package/dist/tui/tool-inspector.d.ts +24 -0
  606. package/dist/tui/tool-inspector.d.ts.map +1 -0
  607. package/dist/tui/tool-inspector.js +81 -0
  608. package/dist/tui/tool-inspector.js.map +1 -0
  609. package/dist/tui/tool-presentation.d.ts +3 -0
  610. package/dist/tui/tool-presentation.d.ts.map +1 -0
  611. package/dist/tui/tool-presentation.js +22 -0
  612. package/dist/tui/tool-presentation.js.map +1 -0
  613. package/dist/tui/transcript.d.ts +6 -0
  614. package/dist/tui/transcript.d.ts.map +1 -0
  615. package/dist/tui/transcript.js +78 -0
  616. package/dist/tui/transcript.js.map +1 -0
  617. package/dist/tui/tree-navigator.d.ts +71 -0
  618. package/dist/tui/tree-navigator.d.ts.map +1 -0
  619. package/dist/tui/tree-navigator.js +522 -0
  620. package/dist/tui/tree-navigator.js.map +1 -0
  621. package/npm-shrinkwrap.json +598 -116
  622. package/package.json +79 -30
  623. package/dist/acp/interactions.d.ts +0 -22
  624. package/dist/acp/interactions.d.ts.map +0 -1
  625. package/dist/acp/interactions.js +0 -353
  626. package/dist/acp/interactions.js.map +0 -1
  627. package/dist/application.d.ts +0 -23
  628. package/dist/application.d.ts.map +0 -1
  629. package/dist/application.js +0 -267
  630. package/dist/application.js.map +0 -1
  631. package/dist/browser/authorization-host.d.ts.map +0 -1
  632. package/dist/browser/authorization-host.js.map +0 -1
  633. package/dist/browser/chrome-devtools.d.ts.map +0 -1
  634. package/dist/browser/chrome-devtools.js.map +0 -1
  635. package/dist/browser/connection-lease.d.ts.map +0 -1
  636. package/dist/browser/connection-lease.js.map +0 -1
  637. package/dist/classifier-settings.d.ts +0 -10
  638. package/dist/classifier-settings.d.ts.map +0 -1
  639. package/dist/classifier-settings.js +0 -98
  640. package/dist/classifier-settings.js.map +0 -1
  641. package/dist/classifier.d.ts.map +0 -1
  642. package/dist/classifier.js.map +0 -1
  643. package/dist/codemode.d.ts.map +0 -1
  644. package/dist/codemode.js.map +0 -1
  645. package/dist/codex.d.ts +0 -3
  646. package/dist/codex.d.ts.map +0 -1
  647. package/dist/codex.js +0 -8
  648. package/dist/codex.js.map +0 -1
  649. package/dist/command-autocomplete.d.ts +0 -3
  650. package/dist/command-autocomplete.d.ts.map +0 -1
  651. package/dist/command-autocomplete.js +0 -10
  652. package/dist/command-autocomplete.js.map +0 -1
  653. package/dist/cwd-command.d.ts +0 -13
  654. package/dist/cwd-command.d.ts.map +0 -1
  655. package/dist/cwd-command.js +0 -176
  656. package/dist/cwd-command.js.map +0 -1
  657. package/dist/dependencies.d.ts +0 -37
  658. package/dist/dependencies.d.ts.map +0 -1
  659. package/dist/dependencies.js +0 -372
  660. package/dist/dependencies.js.map +0 -1
  661. package/dist/extension-settings.d.ts +0 -12
  662. package/dist/extension-settings.d.ts.map +0 -1
  663. package/dist/extension-settings.js +0 -241
  664. package/dist/extension-settings.js.map +0 -1
  665. package/dist/extensions.d.ts +0 -62
  666. package/dist/extensions.d.ts.map +0 -1
  667. package/dist/extensions.js +0 -265
  668. package/dist/extensions.js.map +0 -1
  669. package/dist/fusion/host.d.ts +0 -3
  670. package/dist/fusion/host.d.ts.map +0 -1
  671. package/dist/fusion/host.js +0 -333
  672. package/dist/fusion/host.js.map +0 -1
  673. package/dist/fusion/model-picker.d.ts.map +0 -1
  674. package/dist/fusion/model-picker.js.map +0 -1
  675. package/dist/herdr.d.ts +0 -29
  676. package/dist/herdr.d.ts.map +0 -1
  677. package/dist/herdr.js +0 -247
  678. package/dist/herdr.js.map +0 -1
  679. package/dist/insights.d.ts +0 -5
  680. package/dist/insights.d.ts.map +0 -1
  681. package/dist/insights.js +0 -140
  682. package/dist/insights.js.map +0 -1
  683. package/dist/lock.d.ts +0 -27
  684. package/dist/lock.d.ts.map +0 -1
  685. package/dist/lock.js +0 -432
  686. package/dist/lock.js.map +0 -1
  687. package/dist/logger.d.ts +0 -7
  688. package/dist/logger.d.ts.map +0 -1
  689. package/dist/logger.js +0 -48
  690. package/dist/logger.js.map +0 -1
  691. package/dist/mcp/callback-server.d.ts +0 -11
  692. package/dist/mcp/callback-server.d.ts.map +0 -1
  693. package/dist/mcp/callback-server.js.map +0 -1
  694. package/dist/mcp/config.d.ts +0 -20
  695. package/dist/mcp/config.d.ts.map +0 -1
  696. package/dist/mcp/config.js +0 -352
  697. package/dist/mcp/config.js.map +0 -1
  698. package/dist/mcp/index.d.ts +0 -3
  699. package/dist/mcp/index.d.ts.map +0 -1
  700. package/dist/mcp/index.js +0 -25
  701. package/dist/mcp/index.js.map +0 -1
  702. package/dist/mcp/oauth-host.d.ts +0 -42
  703. package/dist/mcp/oauth-host.d.ts.map +0 -1
  704. package/dist/mcp/oauth-host.js +0 -524
  705. package/dist/mcp/oauth-host.js.map +0 -1
  706. package/dist/mcp/oauth-store.d.ts +0 -27
  707. package/dist/mcp/oauth-store.d.ts.map +0 -1
  708. package/dist/mcp/oauth-store.js +0 -138
  709. package/dist/mcp/oauth-store.js.map +0 -1
  710. package/dist/memory/control.d.ts +0 -8
  711. package/dist/memory/control.d.ts.map +0 -1
  712. package/dist/memory/control.js +0 -167
  713. package/dist/memory/control.js.map +0 -1
  714. package/dist/memory/coordinator.d.ts +0 -53
  715. package/dist/memory/coordinator.d.ts.map +0 -1
  716. package/dist/memory/coordinator.js +0 -807
  717. package/dist/memory/coordinator.js.map +0 -1
  718. package/dist/memory/dreamer.d.ts +0 -50
  719. package/dist/memory/dreamer.d.ts.map +0 -1
  720. package/dist/memory/dreamer.js +0 -527
  721. package/dist/memory/dreamer.js.map +0 -1
  722. package/dist/memory/history-view.d.ts.map +0 -1
  723. package/dist/memory/history-view.js.map +0 -1
  724. package/dist/memory/lease.d.ts +0 -13
  725. package/dist/memory/lease.d.ts.map +0 -1
  726. package/dist/memory/lease.js +0 -188
  727. package/dist/memory/lease.js.map +0 -1
  728. package/dist/memory/project.d.ts +0 -7
  729. package/dist/memory/project.d.ts.map +0 -1
  730. package/dist/memory/project.js +0 -41
  731. package/dist/memory/project.js.map +0 -1
  732. package/dist/memory/run-retention.d.ts +0 -12
  733. package/dist/memory/run-retention.d.ts.map +0 -1
  734. package/dist/memory/run-retention.js +0 -294
  735. package/dist/memory/run-retention.js.map +0 -1
  736. package/dist/memory/run.d.ts +0 -79
  737. package/dist/memory/run.d.ts.map +0 -1
  738. package/dist/memory/run.js +0 -417
  739. package/dist/memory/run.js.map +0 -1
  740. package/dist/memory/store.d.ts +0 -116
  741. package/dist/memory/store.d.ts.map +0 -1
  742. package/dist/memory/store.js +0 -751
  743. package/dist/memory/store.js.map +0 -1
  744. package/dist/model-defaults.d.ts.map +0 -1
  745. package/dist/model-defaults.js.map +0 -1
  746. package/dist/model-selector.d.ts +0 -5
  747. package/dist/model-selector.d.ts.map +0 -1
  748. package/dist/model-selector.js +0 -87
  749. package/dist/model-selector.js.map +0 -1
  750. package/dist/output-style-instructions.d.ts +0 -6
  751. package/dist/output-style-instructions.d.ts.map +0 -1
  752. package/dist/output-style-instructions.js +0 -53
  753. package/dist/output-style-instructions.js.map +0 -1
  754. package/dist/overlay-images.d.ts +0 -9
  755. package/dist/overlay-images.d.ts.map +0 -1
  756. package/dist/overlay-images.js +0 -99
  757. package/dist/overlay-images.js.map +0 -1
  758. package/dist/pi-extensions.d.ts +0 -28
  759. package/dist/pi-extensions.d.ts.map +0 -1
  760. package/dist/pi-extensions.js +0 -141
  761. package/dist/pi-extensions.js.map +0 -1
  762. package/dist/pi-llama.d.ts +0 -2
  763. package/dist/pi-llama.d.ts.map +0 -1
  764. package/dist/pi-llama.js +0 -15
  765. package/dist/pi-llama.js.map +0 -1
  766. package/dist/pi-lock.d.ts.map +0 -1
  767. package/dist/pi-lock.js.map +0 -1
  768. package/dist/powerline.d.ts +0 -12
  769. package/dist/powerline.d.ts.map +0 -1
  770. package/dist/powerline.js.map +0 -1
  771. package/dist/project-trust-prompt.d.ts +0 -30
  772. package/dist/project-trust-prompt.d.ts.map +0 -1
  773. package/dist/project-trust-prompt.js +0 -122
  774. package/dist/project-trust-prompt.js.map +0 -1
  775. package/dist/project-trust.d.ts +0 -8
  776. package/dist/project-trust.d.ts.map +0 -1
  777. package/dist/project-trust.js +0 -36
  778. package/dist/project-trust.js.map +0 -1
  779. package/dist/prompt-history.d.ts +0 -11
  780. package/dist/prompt-history.d.ts.map +0 -1
  781. package/dist/prompt-history.js +0 -96
  782. package/dist/prompt-history.js.map +0 -1
  783. package/dist/restart-command.d.ts +0 -9
  784. package/dist/restart-command.d.ts.map +0 -1
  785. package/dist/restart-command.js +0 -94
  786. package/dist/restart-command.js.map +0 -1
  787. package/dist/resume.d.ts +0 -5
  788. package/dist/resume.d.ts.map +0 -1
  789. package/dist/resume.js +0 -46
  790. package/dist/resume.js.map +0 -1
  791. package/dist/runtime-factory.d.ts +0 -12
  792. package/dist/runtime-factory.d.ts.map +0 -1
  793. package/dist/runtime-factory.js +0 -12
  794. package/dist/runtime-factory.js.map +0 -1
  795. package/dist/runtime.d.ts +0 -59
  796. package/dist/runtime.d.ts.map +0 -1
  797. package/dist/runtime.js +0 -534
  798. package/dist/runtime.js.map +0 -1
  799. package/dist/savings.d.ts.map +0 -1
  800. package/dist/savings.js.map +0 -1
  801. package/dist/settings.d.ts.map +0 -1
  802. package/dist/settings.js +0 -359
  803. package/dist/settings.js.map +0 -1
  804. package/dist/startup-header.d.ts +0 -9
  805. package/dist/startup-header.d.ts.map +0 -1
  806. package/dist/startup-header.js +0 -151
  807. package/dist/startup-header.js.map +0 -1
  808. package/dist/subagents/catalog.d.ts +0 -8
  809. package/dist/subagents/catalog.d.ts.map +0 -1
  810. package/dist/subagents/catalog.js +0 -136
  811. package/dist/subagents/catalog.js.map +0 -1
  812. package/dist/subagents/host.d.ts +0 -133
  813. package/dist/subagents/host.d.ts.map +0 -1
  814. package/dist/subagents/host.js +0 -1420
  815. package/dist/subagents/host.js.map +0 -1
  816. package/dist/subagents/store.d.ts +0 -25
  817. package/dist/subagents/store.d.ts.map +0 -1
  818. package/dist/subagents/store.js +0 -35
  819. package/dist/subagents/store.js.map +0 -1
  820. package/dist/system-prompt.d.ts.map +0 -1
  821. package/dist/system-prompt.js.map +0 -1
  822. package/dist/tui-compatibility.d.ts +0 -4
  823. package/dist/tui-compatibility.d.ts.map +0 -1
  824. package/dist/tui-compatibility.js +0 -244
  825. package/dist/tui-compatibility.js.map +0 -1
  826. package/dist/update-notification.d.ts +0 -3
  827. package/dist/update-notification.d.ts.map +0 -1
  828. package/dist/update-notification.js +0 -50
  829. package/dist/update-notification.js.map +0 -1
  830. /package/dist/{browser → providers/browser}/chrome-devtools.d.ts +0 -0
  831. /package/dist/{browser → providers/browser}/chrome-devtools.js +0 -0
  832. /package/dist/{browser → providers/browser}/connection-lease.d.ts +0 -0
  833. /package/dist/{browser → providers/browser}/connection-lease.js +0 -0
  834. /package/dist/{classifier.d.ts → providers/classifier.d.ts} +0 -0
  835. /package/dist/{classifier.js → providers/classifier.js} +0 -0
  836. /package/dist/{codemode.d.ts → providers/codemode.d.ts} +0 -0
  837. /package/dist/{codemode.js → providers/codemode.js} +0 -0
  838. /package/dist/{model-defaults.d.ts → providers/model-defaults.d.ts} +0 -0
  839. /package/dist/{model-defaults.js → providers/model-defaults.js} +0 -0
  840. /package/dist/{pi-lock.d.ts → providers/pi-lock.d.ts} +0 -0
  841. /package/dist/{system-prompt.d.ts → providers/system-prompt.d.ts} +0 -0
  842. /package/dist/{system-prompt.js → providers/system-prompt.js} +0 -0
@@ -1,807 +0,0 @@
1
- import { join } from 'node:path';
2
- import { mkdir, rm } from 'node:fs/promises';
3
- import { createMemorySnapshot, createMemoryProjectionSnapshot, createSessionCheckpoint, extractSourceIds, hydrateMemoryDirectory, readMemoryDirectory, } from '@felan-ai/ext-memory';
4
- import { ModelRuntime, SessionManager, } from '@felan-ai/agent-core';
5
- import { acquireLocalMemoryLease, } from './lease.js';
6
- import { resolveLocalMemoryProject } from './project.js';
7
- import { createDefaultLocalMemoryDreamRunner, MemoryModelUnavailableError, materializeMemoryInput, } from './dreamer.js';
8
- import { LocalMemoryStore, LocalMemoryControlError, } from './store.js';
9
- import { LocalMemoryRun, sanitizeMemoryDiagnostic } from './run.js';
10
- const MEMORY_INPUT_BLOCKED_MESSAGE = 'Some memory checkpoints could not be materialized; evidence remains pending';
11
- const MEMORY_AUTOMATIC_UPDATE_THRESHOLD = 5;
12
- const MEMORY_AUTOMATIC_INTERVAL_MS = 24 * 60 * 60 * 1_000;
13
- const MEMORY_DREAM_INPUT_MAX_BYTES = 10 * 1024 * 1024;
14
- const MEMORY_MAX_BATCH_SESSIONS = 8;
15
- export class LocalMemoryCoordinator {
16
- #options;
17
- #contexts = new Map();
18
- #projections = new Map();
19
- #statusListeners = new Set();
20
- #dreamRunner;
21
- #batchSize;
22
- #enabled;
23
- #selectedModel;
24
- #scopedModels;
25
- #classifier;
26
- #disposed = false;
27
- #monitor;
28
- #monitoring;
29
- #enableVersion = 0;
30
- constructor(options) {
31
- this.#options = options;
32
- this.#batchSize = boundedMemoryBatchSize(options.batchSize);
33
- this.#enabled = options.enabled !== false;
34
- this.#selectedModel = options.selectedModel;
35
- this.#scopedModels = options.scopedModels === undefined ? undefined : [...options.scopedModels];
36
- this.#classifier = options.classifier;
37
- this.#dreamRunner = options.dreamRunner ?? createDefaultLocalMemoryDreamRunner();
38
- if (this.#enabled)
39
- this.#startMonitor();
40
- }
41
- createSessionHost(options) {
42
- return new LocalMemorySessionHost(this, options);
43
- }
44
- isEnabled() {
45
- return this.#enabled;
46
- }
47
- subscribeStatusChanges(listener) {
48
- if (this.#disposed)
49
- return () => { };
50
- this.#statusListeners.add(listener);
51
- return () => this.#statusListeners.delete(listener);
52
- }
53
- setModelSelection(model, scopedModels, classifier) {
54
- this.#scopedModels = scopedModels === undefined ? undefined : [...scopedModels];
55
- this.#classifier = classifier;
56
- this.setSelectedModel(model);
57
- }
58
- setSelectedModel(model) {
59
- this.#selectedModel = model;
60
- for (const context of this.#contexts.values()) {
61
- context.blocked.clear();
62
- if (context.initialized)
63
- void this.#trackScheduleIfPending(context);
64
- }
65
- }
66
- setEnabled(enabled) {
67
- this.#enableVersion += 1;
68
- this.#enabled = enabled;
69
- if (enabled)
70
- this.#startMonitor();
71
- else if (this.#monitor) {
72
- clearInterval(this.#monitor);
73
- this.#monitor = undefined;
74
- }
75
- for (const context of this.#contexts.values()) {
76
- if (!enabled)
77
- this.#cancelScheduledRun(context);
78
- if (!enabled)
79
- this.#cancelContext(context, 'Memory processing was disabled', true);
80
- if (enabled) {
81
- context.storageBlocked = false;
82
- context.writerBlocked = false;
83
- context.blocked.clear();
84
- if (context.initialized)
85
- this.#startRecovery(context);
86
- }
87
- context.state = enabled ? 'idle' : 'disabled';
88
- }
89
- if (enabled) {
90
- for (const context of this.#contexts.values()) {
91
- if (context.initialized)
92
- void this.#trackScheduleIfPending(context);
93
- }
94
- }
95
- this.#emitStatusChange();
96
- }
97
- async status(cwd) {
98
- try {
99
- const context = await this.#context(cwd);
100
- const state = await context.store.status();
101
- const control = await context.store.readControl();
102
- const processed = Object.values(state.processed);
103
- const lastProcessedAt = processed
104
- .map((entry) => entry.processedAt)
105
- .sort()
106
- .at(-1);
107
- return {
108
- enabled: this.#enabled && !control.autoDisabled,
109
- state: !this.#enabled || control.autoDisabled ? 'disabled'
110
- : control.nextRetryAt && Date.parse(control.nextRetryAt) > this.#now() ? 'scheduled'
111
- : context.state === 'error' ? 'error'
112
- : control.activeAttempt ? 'processing' : context.state,
113
- pendingCheckpoints: Object.keys(state.pending).length,
114
- memoryFingerprint: state.memoryFingerprint,
115
- ...(lastProcessedAt === undefined ? {} : { lastProcessedAt }),
116
- ...(context.message === undefined ? {} : { message: context.message }),
117
- consecutiveFailures: control.consecutiveFailures,
118
- ...(control.nextRetryAt ? { nextRetryAt: control.nextRetryAt } : {}),
119
- ...(control.autoDisabled ? { autoDisabled: control.autoDisabled } : {}),
120
- ...(control.activeAttempt || control.lastOutcome ? {
121
- lastRunId: control.activeAttempt?.runId ?? control.lastOutcome.runId,
122
- } : {}),
123
- };
124
- }
125
- catch (error) {
126
- return {
127
- enabled: this.#enabled,
128
- state: this.#enabled ? 'error' : 'disabled',
129
- pendingCheckpoints: 0,
130
- message: error instanceof LocalMemoryControlError ? error.message : 'Local memory storage is unavailable',
131
- };
132
- }
133
- }
134
- async readCurrent(cwd, sessionStorageRoot) {
135
- const context = await this.#context(cwd);
136
- const snapshot = await context.store.readCurrent();
137
- const projectionKey = `${context.project.key}:${sessionStorageRoot}`;
138
- const memoryPath = join(sessionStorageRoot, context.store.projectionName);
139
- if (this.#projections.get(projectionKey) !== snapshot.fingerprint) {
140
- const projection = await context.store.projectTo(sessionStorageRoot, snapshot);
141
- this.#projections.set(projectionKey, snapshot.fingerprint);
142
- return projection;
143
- }
144
- return createMemoryProjectionSnapshot(snapshot, memoryPath);
145
- }
146
- async recordCheckpoint(cwd, checkpoint) {
147
- const context = await this.#context(cwd);
148
- if (await context.store.recordCheckpoint(checkpoint)) {
149
- context.blocked.delete(checkpoint.sessionId);
150
- await this.#trackScheduleIfPending(context);
151
- this.#emitStatusChange();
152
- }
153
- }
154
- async runNow(cwd) {
155
- if (!this.#enabled)
156
- return this.status(cwd);
157
- const context = await this.#context(cwd);
158
- this.#cancelScheduledRun(context);
159
- while (context.run || context.followUps.size > 0) {
160
- await Promise.allSettled([
161
- ...(context.run ? [context.run] : []),
162
- ...context.followUps,
163
- ]);
164
- this.#cancelScheduledRun(context);
165
- }
166
- context.blocked.clear();
167
- const run = this.#run(context, true);
168
- context.run = run;
169
- try {
170
- await run;
171
- }
172
- finally {
173
- if (context.run === run)
174
- context.run = undefined;
175
- await this.#trackScheduleIfPending(context);
176
- }
177
- return this.status(cwd);
178
- }
179
- async retryProject(cwd) {
180
- if (!this.#enabled)
181
- return this.status(cwd);
182
- const context = await this.#context(cwd);
183
- if (!this.#enabled || this.#disposed)
184
- return this.status(cwd);
185
- const enableVersion = this.#enableVersion;
186
- this.#cancelScheduledRun(context);
187
- try {
188
- await context.store.resetProjectControl(this.#now(), () => this.#enabled && !this.#disposed && this.#enableVersion === enableVersion);
189
- }
190
- catch (error) {
191
- throw error;
192
- }
193
- context.abort?.abort(new Error('Memory processing was explicitly retried'));
194
- if (context.run)
195
- await context.run;
196
- context.blocked.clear();
197
- context.storageBlocked = false;
198
- context.message = undefined;
199
- await this.runNow(cwd);
200
- return this.status(cwd);
201
- }
202
- async canonicalDirectory(cwd) {
203
- const context = await this.#context(cwd);
204
- return context.store.currentDirectory;
205
- }
206
- async dispose() {
207
- if (this.#disposed)
208
- return;
209
- this.#disposed = true;
210
- if (this.#monitor)
211
- clearInterval(this.#monitor);
212
- this.#monitor = undefined;
213
- for (const context of this.#contexts.values()) {
214
- this.#cancelScheduledRun(context);
215
- this.#cancelContext(context, 'Memory processing was cancelled during shutdown', false);
216
- }
217
- while (true) {
218
- const work = [...this.#contexts.values()].flatMap((context) => [
219
- ...(context.run ? [context.run] : []),
220
- ...(context.ready ? [context.ready] : []),
221
- ...(context.recovery ? [context.recovery] : []),
222
- ...context.followUps,
223
- ]);
224
- if (this.#monitoring)
225
- work.push(this.#monitoring);
226
- if (work.length === 0)
227
- break;
228
- await Promise.allSettled(work);
229
- }
230
- this.#statusListeners.clear();
231
- }
232
- async #context(cwd) {
233
- if (this.#disposed)
234
- throw new Error('Local memory coordinator is closed');
235
- const project = await resolveLocalMemoryProject(cwd);
236
- if (this.#disposed)
237
- throw new Error('Local memory coordinator is closed');
238
- const existing = this.#contexts.get(project.key);
239
- if (existing) {
240
- await this.#initialize(existing);
241
- return existing;
242
- }
243
- const store = new LocalMemoryStore(this.#options.agentDir, project, {
244
- ...(this.#options.retryDelaysMs ? { retryDelaysMs: this.#options.retryDelaysMs } : {}),
245
- });
246
- const context = {
247
- project,
248
- cwd,
249
- ...(this.#options.sessionDir === undefined ? {} : { sessionDir: this.#options.sessionDir }),
250
- store,
251
- ready: undefined,
252
- initialized: false,
253
- recovery: undefined,
254
- recoveryCompleted: false,
255
- diagnosticsReconciled: false,
256
- timer: undefined,
257
- timerDueAt: undefined,
258
- run: undefined,
259
- followUps: new Set(),
260
- abort: undefined,
261
- attempt: undefined,
262
- storageBlocked: false,
263
- writerBlocked: false,
264
- statusSignature: undefined,
265
- blocked: new Map(),
266
- state: this.#enabled ? 'idle' : 'disabled',
267
- message: undefined,
268
- };
269
- this.#contexts.set(project.key, context);
270
- await this.#initialize(context);
271
- return context;
272
- }
273
- async #initialize(context) {
274
- if (context.ready) {
275
- await context.ready;
276
- return;
277
- }
278
- if (context.initialized && context.diagnosticsReconciled) {
279
- this.#startRecovery(context);
280
- return;
281
- }
282
- const ready = this.#initializeContext(context).finally(() => {
283
- if (context.ready === ready)
284
- context.ready = undefined;
285
- });
286
- context.ready = ready;
287
- await ready;
288
- }
289
- async #initializeContext(context) {
290
- if (!context.initialized) {
291
- await context.store.initialize(this.#now()).then(() => {
292
- context.initialized = true;
293
- context.state = this.#enabled ? 'idle' : 'disabled';
294
- context.message = undefined;
295
- }).catch(async (error) => {
296
- if (!(error instanceof LocalMemoryControlError))
297
- throw error;
298
- const current = await context.store.readCurrent();
299
- if (current.fingerprint !== (await context.store.status()).memoryFingerprint)
300
- throw error;
301
- context.message = error.message;
302
- });
303
- }
304
- if (!context.initialized)
305
- return;
306
- if (!context.diagnosticsReconciled) {
307
- try {
308
- const lease = await acquireLocalMemoryLease(context.store.projectDirectory, this.#options.leaseOptions);
309
- if (lease) {
310
- try {
311
- await this.#reconcileRunDiagnostics(context, lease);
312
- context.diagnosticsReconciled = true;
313
- }
314
- finally {
315
- await lease.release();
316
- }
317
- }
318
- }
319
- catch (error) {
320
- context.diagnosticsReconciled = true;
321
- context.storageBlocked = true;
322
- context.message = `Memory diagnostics recovery is blocked: ${sanitizeMemoryDiagnostic(error)}`;
323
- }
324
- }
325
- if (this.#disposed)
326
- return;
327
- if (this.#enabled)
328
- void this.#trackScheduleIfPending(context);
329
- this.#startRecovery(context);
330
- }
331
- #startRecovery(context) {
332
- if (this.#disposed || !this.#enabled || this.#options.recover === false
333
- || context.recoveryCompleted || context.recovery)
334
- return;
335
- const recovery = this.#recover(context).then((completed) => {
336
- if (completed)
337
- context.recoveryCompleted = true;
338
- }).catch(() => {
339
- context.message = 'Memory startup recovery could not complete';
340
- }).finally(() => {
341
- if (context.recovery === recovery)
342
- context.recovery = undefined;
343
- });
344
- context.recovery = recovery;
345
- }
346
- #now() { return this.#options.now?.() ?? Date.now(); }
347
- #startMonitor() {
348
- if (this.#disposed || this.#monitor)
349
- return;
350
- const interval = this.#options.monitorIntervalMs ?? 2_000;
351
- if (!Number.isFinite(interval) || interval < 1)
352
- throw new Error('Memory monitor interval must be positive');
353
- this.#monitor = setInterval(() => {
354
- if (this.#monitoring)
355
- return;
356
- this.#monitoring = this.#refresh().catch(() => { }).finally(() => { this.#monitoring = undefined; });
357
- }, interval);
358
- this.#monitor.unref?.();
359
- }
360
- async #refresh() {
361
- if (this.#disposed)
362
- return;
363
- for (const context of this.#contexts.values()) {
364
- try {
365
- await this.#initialize(context);
366
- const observedAttempt = context.attempt;
367
- const control = await context.store.readControl();
368
- if (observedAttempt && context.attempt === observedAttempt && (!this.#enabled || control.autoDisabled
369
- || control.activeAttempt?.runId !== observedAttempt.runId
370
- || control.activeAttempt?.generation !== observedAttempt.generation)) {
371
- this.#cancelContext(context, 'Memory processing was cancelled by another session', true);
372
- }
373
- context.writerBlocked = false;
374
- if (context.initialized)
375
- await this.#trackScheduleIfPending(context);
376
- const signature = JSON.stringify([this.#enabled, context.state, context.message, control.updatedAt]);
377
- if (signature !== context.statusSignature) {
378
- context.statusSignature = signature;
379
- this.#emitStatusChange();
380
- }
381
- }
382
- catch (error) {
383
- context.state = 'error';
384
- context.message = sanitizeMemoryDiagnostic(error);
385
- context.abort?.abort(error);
386
- this.#emitStatusChange();
387
- }
388
- }
389
- }
390
- #cancelContext(context, reason, cancelPersisted) {
391
- const alreadyAborted = context.abort?.signal.aborted ?? false;
392
- context.abort?.abort(new Error(reason));
393
- if (alreadyAborted || !context.initialized || (!cancelPersisted && !context.attempt))
394
- return;
395
- const cancellation = cancelPersisted
396
- ? context.store.cancelActiveAttempt(this.#now())
397
- : context.store.finishAttempt(undefined, context.attempt, { status: 'cancelled', reason }, this.#now());
398
- const followUp = cancellation
399
- .then(() => { })
400
- .catch(() => { })
401
- .finally(() => { context.followUps.delete(followUp); });
402
- context.followUps.add(followUp);
403
- }
404
- async #schedule(context, dueAt) {
405
- if (this.#disposed || !this.#enabled || context.run || context.storageBlocked)
406
- return;
407
- if (context.timer && context.timerDueAt === dueAt)
408
- return;
409
- this.#cancelScheduledRun(context);
410
- context.state = 'scheduled';
411
- const delay = Math.max(0, dueAt - this.#now());
412
- const timer = setTimeout(() => {
413
- if (context.timer !== timer)
414
- return;
415
- context.timer = undefined;
416
- context.timerDueAt = undefined;
417
- const run = this.#run(context).catch((error) => {
418
- context.state = 'error';
419
- context.storageBlocked = true;
420
- context.message = sanitizeMemoryDiagnostic(error);
421
- this.#emitStatusChange();
422
- }).finally(async () => {
423
- context.run = undefined;
424
- await this.#trackScheduleIfPending(context);
425
- });
426
- context.run = run;
427
- }, delay);
428
- context.timer = timer;
429
- context.timerDueAt = dueAt;
430
- timer.unref?.();
431
- }
432
- async #scheduleIfPending(context) {
433
- if (!this.#enabled || this.#disposed)
434
- return;
435
- try {
436
- const control = await context.store.readControl();
437
- if (control.autoDisabled) {
438
- this.#cancelScheduledRun(context);
439
- context.state = 'disabled';
440
- return;
441
- }
442
- if (context.storageBlocked)
443
- return;
444
- if (context.writerBlocked)
445
- return;
446
- const state = await context.store.status();
447
- const pending = Object.values(state.pending);
448
- if (control.activeAttempt) {
449
- this.#cancelScheduledRun(context);
450
- }
451
- else if (pending.some(({ checkpoint }) => !isBlockedCheckpoint(context, checkpoint))) {
452
- const acceptedUpdates = await context.store.pendingAcceptedUpdates((checkpoint) => !isBlockedCheckpoint(context, checkpoint));
453
- if (acceptedUpdates < MEMORY_AUTOMATIC_UPDATE_THRESHOLD) {
454
- this.#cancelScheduledRun(context);
455
- if (context.state === 'scheduled')
456
- context.state = 'idle';
457
- return;
458
- }
459
- const processedAt = Object.values(state.processed)
460
- .map(({ processedAt }) => Date.parse(processedAt))
461
- .filter(Number.isFinite)
462
- .reduce((latest, at) => Math.max(latest, at), 0);
463
- const dueAt = control.nextRetryAt
464
- ? Date.parse(control.nextRetryAt)
465
- : processedAt === 0
466
- ? this.#now()
467
- : processedAt + (this.#options.debounceMs ?? MEMORY_AUTOMATIC_INTERVAL_MS);
468
- await this.#schedule(context, dueAt);
469
- }
470
- else if (pending.length > 0) {
471
- this.#cancelScheduledRun(context);
472
- const message = context.state === 'blocked' ? context.message : undefined;
473
- context.state = 'blocked';
474
- context.message = message ?? MEMORY_INPUT_BLOCKED_MESSAGE;
475
- }
476
- else {
477
- this.#cancelScheduledRun(context);
478
- if (context.state === 'scheduled')
479
- context.state = 'idle';
480
- }
481
- }
482
- catch {
483
- context.state = 'error';
484
- context.message = 'Local memory storage is unavailable';
485
- }
486
- }
487
- #trackScheduleIfPending(context) {
488
- const followUp = this.#scheduleIfPending(context).finally(() => {
489
- context.followUps.delete(followUp);
490
- });
491
- context.followUps.add(followUp);
492
- return followUp;
493
- }
494
- async #run(context, bypassRetryAt = false) {
495
- if (this.#disposed || !this.#enabled || context.storageBlocked)
496
- return;
497
- context.state = 'processing';
498
- context.message = undefined;
499
- let lease;
500
- try {
501
- lease = await acquireLocalMemoryLease(context.store.projectDirectory, this.#options.leaseOptions);
502
- }
503
- catch (error) {
504
- context.writerBlocked = true;
505
- context.state = 'error';
506
- context.message = safeProcessingMessage(error);
507
- return;
508
- }
509
- if (!lease) {
510
- context.writerBlocked = true;
511
- context.state = 'blocked';
512
- context.message = 'Another Felan Code process owns the memory writer';
513
- return;
514
- }
515
- context.writerBlocked = false;
516
- const abort = new AbortController();
517
- context.abort = abort;
518
- const abortOnLeaseCompromise = () => {
519
- abort.abort(new Error('Memory writer lease was lost'));
520
- };
521
- lease.compromised.addEventListener('abort', abortOnLeaseCompromise, { once: true });
522
- let staging;
523
- let retainedRun;
524
- let published = false;
525
- let attempt;
526
- try {
527
- const control = await this.#reconcileRunDiagnostics(context, lease);
528
- if (control.autoDisabled) {
529
- context.state = 'disabled';
530
- return;
531
- }
532
- if (!bypassRetryAt && control.nextRetryAt && Date.parse(control.nextRetryAt) > this.#now()) {
533
- context.state = 'scheduled';
534
- return;
535
- }
536
- const snapshot = await context.store.processingSnapshot(this.#batchSize, (checkpoint) => !isBlockedCheckpoint(context, checkpoint));
537
- if (snapshot.checkpoints.length === 0) {
538
- context.state = 'idle';
539
- return;
540
- }
541
- retainedRun = await LocalMemoryRun.create({
542
- projectDirectory: context.store.projectDirectory,
543
- sessionDirectory: join(this.#options.sessionDir ?? join(this.#options.agentDir, 'sessions'), 'memory'),
544
- projectKey: context.project.key,
545
- projectRoot: context.project.canonicalRoot,
546
- checkpoints: snapshot.checkpoints.map(({ checkpoint }) => checkpoint),
547
- baseFingerprint: snapshot.fingerprint,
548
- ...(control.lastDisabledRunId ? { protectedRunIds: [control.lastDisabledRunId] } : {}),
549
- });
550
- staging = retainedRun.workspace;
551
- const memoryDirectory = join(staging, '.memory');
552
- await hydrateMemoryDirectory(snapshot.artifact, memoryDirectory, { memoryPath: '.memory', mode: 'read' });
553
- const manifest = await materializeMemoryInput({
554
- stagingDirectory: staging,
555
- checkpoints: snapshot.checkpoints.map(({ checkpoint }) => checkpoint),
556
- previousCheckpoints: Object.fromEntries(Object.entries(snapshot.state.processed).map(([sessionId, entry]) => [sessionId, entry.checkpoint])),
557
- baseSnapshot: createMemorySnapshot(snapshot.artifact, '.memory', { mode: 'read' }),
558
- maxInputBytes: this.#options.maxInputBytes ?? MEMORY_DREAM_INPUT_MAX_BYTES,
559
- ...(this.#options.maxTranscriptBytes === undefined
560
- ? {}
561
- : { maxTranscriptBytes: this.#options.maxTranscriptBytes }),
562
- signal: abort.signal,
563
- });
564
- for (const failure of manifest.failures) {
565
- context.blocked.set(failure.checkpoint.sessionId, {
566
- leafId: failure.checkpoint.leafId,
567
- transcriptDigest: failure.checkpoint.transcriptDigest,
568
- });
569
- }
570
- const processedCheckpoints = snapshot.checkpoints.filter(({ checkpoint }) => manifest.sessions.some((session) => session.checkpoint.sessionId === checkpoint.sessionId
571
- && sameCheckpointCursor(session.checkpoint, checkpoint)));
572
- if (processedCheckpoints.length === 0) {
573
- context.state = 'blocked';
574
- context.message = MEMORY_INPUT_BLOCKED_MESSAGE;
575
- await retainedRun.finish('blocked', MEMORY_INPUT_BLOCKED_MESSAGE);
576
- return;
577
- }
578
- await retainedRun.record({ phase: 'model', checkpoints: processedCheckpoints.map(({ checkpoint }) => checkpoint) });
579
- if (abort.signal.aborted || !this.#enabled || this.#disposed)
580
- throw new Error('Memory processing was cancelled');
581
- attempt = await context.store.beginAttempt(lease, {
582
- runId: retainedRun.metadata.sessionId,
583
- baseFingerprint: snapshot.fingerprint,
584
- checkpoints: processedCheckpoints,
585
- ...(bypassRetryAt ? { bypassRetryAt: true } : {}),
586
- }, this.#now());
587
- if (!attempt) {
588
- await retainedRun.finish('cancelled', 'Memory inputs or processing policy changed before the attempt started');
589
- return;
590
- }
591
- context.attempt = attempt;
592
- this.#emitStatusChange();
593
- const result = await this.#dreamRunner({
594
- stagingDirectory: staging,
595
- memoryDirectory,
596
- inputDirectory: join(staging, '.dreaming', 'input'),
597
- baseSnapshot: createMemorySnapshot(snapshot.artifact, '.memory', { mode: 'read' }),
598
- manifest,
599
- modelRuntime: this.#options.modelRuntime,
600
- ...(this.#selectedModel === undefined ? {} : { selectedModel: this.#selectedModel }),
601
- ...(this.#scopedModels === undefined ? {} : { scopedModels: this.#scopedModels }),
602
- ...(this.#classifier === undefined ? {} : { classifier: this.#classifier }),
603
- sessionDirectory: join(this.#options.sessionDir ?? join(this.#options.agentDir, 'sessions'), 'memory'),
604
- run: retainedRun,
605
- signal: abort.signal,
606
- });
607
- if (abort.signal.aborted || !this.#enabled || this.#disposed)
608
- throw new Error('Memory processing was cancelled');
609
- if (result)
610
- await hydrateMemoryDirectory(result, memoryDirectory, { replace: true, memoryPath: '.memory' });
611
- await retainedRun.record({ phase: 'validate' });
612
- const artifact = await readMemoryDirectory(memoryDirectory, {
613
- memoryPath: '.memory',
614
- sourceSessionIds: allowedSourceIds(snapshot, manifest),
615
- requireSources: true,
616
- });
617
- await retainedRun.record({
618
- phase: 'publish',
619
- outputFingerprint: createMemorySnapshot(artifact, '.memory').fingerprint,
620
- });
621
- await context.store.commit(lease, snapshot.fingerprint, artifact, processedCheckpoints, attempt);
622
- published = true;
623
- await context.store.finishAttempt(lease, attempt, { status: 'success' }, this.#now());
624
- await retainedRun.finish('completed');
625
- if (manifest.failures.length > 0) {
626
- context.state = 'blocked';
627
- context.message = MEMORY_INPUT_BLOCKED_MESSAGE;
628
- }
629
- else {
630
- context.state = 'idle';
631
- }
632
- this.#emitStatusChange();
633
- }
634
- catch (error) {
635
- const leaseValid = await lease.verify();
636
- const explicitlyCancelled = !this.#enabled || this.#disposed
637
- || (abort.signal.aborted && !lease.compromised.aborted);
638
- const unavailableModel = error instanceof MemoryModelUnavailableError;
639
- const blockedBeforeInference = retainedRun !== undefined && attempt === undefined && !explicitlyCancelled;
640
- if (attempt && (leaseValid || explicitlyCancelled)) {
641
- try {
642
- const control = await context.store.finishAttempt(explicitlyCancelled || unavailableModel ? undefined : lease, attempt, explicitlyCancelled || unavailableModel ? { status: 'cancelled' }
643
- : { status: 'failure', reason: sanitizeMemoryDiagnostic(error) }, this.#now());
644
- published ||= control.lastOutcome?.runId === attempt.runId && control.lastOutcome.status === 'success';
645
- }
646
- catch {
647
- context.storageBlocked = true;
648
- }
649
- }
650
- if (published) {
651
- context.state = 'idle';
652
- context.message = 'Memory was published, but its diagnostics could not be fully saved';
653
- this.#emitStatusChange();
654
- return;
655
- }
656
- context.state = 'error';
657
- context.message = !leaseValid
658
- ? safeProcessingMessage(new Error('Memory writer lease was lost'))
659
- : safeProcessingMessage(error);
660
- if (unavailableModel || blockedBeforeInference) {
661
- context.state = 'blocked';
662
- for (const checkpoint of retainedRun?.metadata.checkpoints ?? []) {
663
- context.blocked.set(checkpoint.sessionId, checkpoint);
664
- }
665
- }
666
- if (!retainedRun) {
667
- context.storageBlocked = true;
668
- context.message = `Memory processing is paused: ${sanitizeMemoryDiagnostic(error)}`;
669
- }
670
- await retainedRun?.finish(explicitlyCancelled ? 'cancelled'
671
- : unavailableModel || blockedBeforeInference ? 'blocked'
672
- : !leaseValid ? 'interrupted' : 'failed', error).catch(() => {
673
- context.storageBlocked = true;
674
- context.message = 'Memory diagnostics could not be saved; evidence remains pending';
675
- });
676
- this.#emitStatusChange();
677
- }
678
- finally {
679
- lease.compromised.removeEventListener('abort', abortOnLeaseCompromise);
680
- context.abort = undefined;
681
- context.attempt = undefined;
682
- if (staging)
683
- await rm(join(staging, '.pi-memory-runtime'), { recursive: true, force: true }).catch(() => { });
684
- await lease.release();
685
- }
686
- }
687
- async #reconcileRunDiagnostics(context, lease) {
688
- let control = await context.store.readControl();
689
- control = await context.store.reconcileAbandonedAttempt(lease, this.#now());
690
- const options = {
691
- projectDirectory: context.store.projectDirectory,
692
- projectKey: context.project.key,
693
- sessionDirectory: join(this.#options.sessionDir ?? join(this.#options.agentDir, 'sessions'), 'memory'),
694
- ...(control.lastDisabledRunId ? { protectedRunIds: [control.lastDisabledRunId] } : {}),
695
- };
696
- if (control.lastOutcome)
697
- await LocalMemoryRun.reconcile(options, control.lastOutcome);
698
- await LocalMemoryRun.reconcileAbandoned(options, [
699
- ...(control.activeAttempt ? [control.activeAttempt.runId] : []),
700
- ...(control.lastOutcome ? [control.lastOutcome.runId] : []),
701
- ], this.#now());
702
- return control;
703
- }
704
- async #recover(context) {
705
- const sessionDir = context.sessionDir ?? join(this.#options.agentDir, 'sessions');
706
- let sessions;
707
- try {
708
- sessions = await SessionManager.list(context.cwd, sessionDir);
709
- }
710
- catch {
711
- context.message = 'Memory startup recovery could not inspect sessions';
712
- return true;
713
- }
714
- if (this.#disposed || !this.#enabled)
715
- return false;
716
- let recovered = false;
717
- const stableAfter = this.#options.recoveryStableMs ?? 30_000;
718
- for (const info of sessions) {
719
- if (this.#disposed || !this.#enabled)
720
- return false;
721
- if (info.parentSessionPath || this.#now() - info.modified.getTime() < stableAfter)
722
- continue;
723
- try {
724
- const manager = SessionManager.open(info.path, sessionDir, context.cwd);
725
- const checkpoint = createSessionCheckpoint(manager);
726
- if (!checkpoint)
727
- continue;
728
- if (this.#disposed || !this.#enabled)
729
- return false;
730
- recovered = (await context.store.recordCheckpoint(checkpoint)) || recovered;
731
- }
732
- catch { }
733
- }
734
- if (recovered && !this.#disposed && this.#enabled) {
735
- await this.#trackScheduleIfPending(context);
736
- this.#emitStatusChange();
737
- }
738
- return true;
739
- }
740
- #emitStatusChange() {
741
- for (const listener of [...this.#statusListeners]) {
742
- try {
743
- listener();
744
- }
745
- catch { }
746
- }
747
- }
748
- #cancelScheduledRun(context) {
749
- if (context.timer)
750
- clearTimeout(context.timer);
751
- context.timer = undefined;
752
- context.timerDueAt = undefined;
753
- }
754
- }
755
- class LocalMemorySessionHost {
756
- #coordinator;
757
- #cwd;
758
- #sessionStorageRoot;
759
- constructor(coordinator, options) {
760
- this.#coordinator = coordinator;
761
- this.#cwd = options.cwd;
762
- this.#sessionStorageRoot = options.sessionStorageRoot;
763
- }
764
- readCurrent() {
765
- return this.#coordinator.readCurrent(this.#cwd, this.#sessionStorageRoot);
766
- }
767
- async recordCheckpoint(checkpoint) {
768
- await this.#coordinator.recordCheckpoint(this.#cwd, checkpoint);
769
- }
770
- status() {
771
- return this.#coordinator.status(this.#cwd);
772
- }
773
- }
774
- function isBlockedCheckpoint(context, checkpoint) {
775
- const blocked = context.blocked.get(checkpoint.sessionId);
776
- return blocked !== undefined && sameCheckpointCursor(blocked, checkpoint);
777
- }
778
- function boundedMemoryBatchSize(requested) {
779
- if (requested === undefined)
780
- return MEMORY_MAX_BATCH_SESSIONS;
781
- if (!Number.isSafeInteger(requested) || requested <= 0) {
782
- throw new Error('Memory batch size must be a positive safe integer');
783
- }
784
- return Math.min(requested, MEMORY_MAX_BATCH_SESSIONS);
785
- }
786
- function sameCheckpointCursor(left, right) {
787
- return left.leafId === right.leafId && left.transcriptDigest === right.transcriptDigest;
788
- }
789
- function allowedSourceIds(snapshot, manifest) {
790
- return [...new Set([
791
- ...snapshot.artifact.files.flatMap(({ content }) => extractSourceIds(content)),
792
- ...manifest.sessions.map(({ checkpoint }) => checkpoint.sessionId),
793
- ])];
794
- }
795
- function safeProcessingMessage(error) {
796
- if (error instanceof MemoryModelUnavailableError) {
797
- return 'Low-tier memory model is unavailable; evidence remains pending';
798
- }
799
- if (error instanceof Error && error.message.includes('cancel'))
800
- return 'Memory processing was cancelled';
801
- if (error instanceof Error && error.message.includes('writer lease'))
802
- return 'Memory writer lease was lost; evidence remains pending';
803
- if (error instanceof Error && error.message.includes('changed'))
804
- return 'Memory changed during processing; evidence remains pending';
805
- return 'Memory processing failed; evidence remains pending';
806
- }
807
- //# sourceMappingURL=coordinator.js.map