pulseed 0.5.3 → 0.5.4

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 (512) hide show
  1. package/dist/base/state/state-manager-goal-state.d.ts +40 -0
  2. package/dist/base/state/state-manager-goal-state.d.ts.map +1 -0
  3. package/dist/base/state/state-manager-goal-state.js +235 -0
  4. package/dist/base/state/state-manager-goal-state.js.map +1 -0
  5. package/dist/base/state/state-manager.d.ts +0 -5
  6. package/dist/base/state/state-manager.d.ts.map +1 -1
  7. package/dist/base/state/state-manager.js +27 -273
  8. package/dist/base/state/state-manager.js.map +1 -1
  9. package/dist/base/types/goal-activation.d.ts +25 -0
  10. package/dist/base/types/goal-activation.d.ts.map +1 -0
  11. package/dist/base/types/goal-activation.js +9 -0
  12. package/dist/base/types/goal-activation.js.map +1 -0
  13. package/dist/interface/chat/chat-history.d.ts +129 -0
  14. package/dist/interface/chat/chat-history.d.ts.map +1 -1
  15. package/dist/interface/chat/chat-history.js +135 -0
  16. package/dist/interface/chat/chat-history.js.map +1 -1
  17. package/dist/interface/chat/chat-runner-command-helpers.d.ts +50 -0
  18. package/dist/interface/chat/chat-runner-command-helpers.d.ts.map +1 -0
  19. package/dist/interface/chat/chat-runner-command-helpers.js +189 -0
  20. package/dist/interface/chat/chat-runner-command-helpers.js.map +1 -0
  21. package/dist/interface/chat/chat-runner-commands.d.ts +76 -0
  22. package/dist/interface/chat/chat-runner-commands.d.ts.map +1 -0
  23. package/dist/interface/chat/chat-runner-commands.js +814 -0
  24. package/dist/interface/chat/chat-runner-commands.js.map +1 -0
  25. package/dist/interface/chat/chat-runner-event-bridge.d.ts +53 -0
  26. package/dist/interface/chat/chat-runner-event-bridge.d.ts.map +1 -0
  27. package/dist/interface/chat/chat-runner-event-bridge.js +311 -0
  28. package/dist/interface/chat/chat-runner-event-bridge.js.map +1 -0
  29. package/dist/interface/chat/chat-runner-routes.d.ts +67 -0
  30. package/dist/interface/chat/chat-runner-routes.d.ts.map +1 -0
  31. package/dist/interface/chat/chat-runner-routes.js +594 -0
  32. package/dist/interface/chat/chat-runner-routes.js.map +1 -0
  33. package/dist/interface/chat/chat-runner-runtime.d.ts +37 -0
  34. package/dist/interface/chat/chat-runner-runtime.d.ts.map +1 -0
  35. package/dist/interface/chat/chat-runner-runtime.js +236 -0
  36. package/dist/interface/chat/chat-runner-runtime.js.map +1 -0
  37. package/dist/interface/chat/chat-runner-state.d.ts +20 -0
  38. package/dist/interface/chat/chat-runner-state.d.ts.map +1 -0
  39. package/dist/interface/chat/chat-runner-state.js +157 -0
  40. package/dist/interface/chat/chat-runner-state.js.map +1 -0
  41. package/dist/interface/chat/chat-runner-support.d.ts +15 -0
  42. package/dist/interface/chat/chat-runner-support.d.ts.map +1 -0
  43. package/dist/interface/chat/chat-runner-support.js +116 -0
  44. package/dist/interface/chat/chat-runner-support.js.map +1 -0
  45. package/dist/interface/chat/chat-runner.d.ts +10 -153
  46. package/dist/interface/chat/chat-runner.d.ts.map +1 -1
  47. package/dist/interface/chat/chat-runner.js +299 -2642
  48. package/dist/interface/chat/chat-runner.js.map +1 -1
  49. package/dist/interface/chat/chat-session-store.d.ts +32 -0
  50. package/dist/interface/chat/chat-session-store.d.ts.map +1 -1
  51. package/dist/interface/chat/chat-session-store.js +100 -10
  52. package/dist/interface/chat/chat-session-store.js.map +1 -1
  53. package/dist/interface/chat/cross-platform-session.d.ts.map +1 -1
  54. package/dist/interface/chat/cross-platform-session.js +2 -5
  55. package/dist/interface/chat/cross-platform-session.js.map +1 -1
  56. package/dist/interface/chat/event-subscriber.d.ts.map +1 -1
  57. package/dist/interface/chat/event-subscriber.js +41 -0
  58. package/dist/interface/chat/event-subscriber.js.map +1 -1
  59. package/dist/interface/chat/ingress-router.d.ts +0 -25
  60. package/dist/interface/chat/ingress-router.d.ts.map +1 -1
  61. package/dist/interface/chat/ingress-router.js +12 -85
  62. package/dist/interface/chat/ingress-router.js.map +1 -1
  63. package/dist/interface/chat/tend-command.d.ts.map +1 -1
  64. package/dist/interface/chat/tend-command.js +2 -0
  65. package/dist/interface/chat/tend-command.js.map +1 -1
  66. package/dist/interface/cli/commands/daemon-shared.d.ts +32 -0
  67. package/dist/interface/cli/commands/daemon-shared.d.ts.map +1 -0
  68. package/dist/interface/cli/commands/daemon-shared.js +120 -0
  69. package/dist/interface/cli/commands/daemon-shared.js.map +1 -0
  70. package/dist/interface/cli/commands/daemon.d.ts +2 -2
  71. package/dist/interface/cli/commands/daemon.d.ts.map +1 -1
  72. package/dist/interface/cli/commands/daemon.js +4 -120
  73. package/dist/interface/cli/commands/daemon.js.map +1 -1
  74. package/dist/interface/cli/commands/schedule/history.d.ts.map +1 -1
  75. package/dist/interface/cli/commands/schedule/history.js +5 -1
  76. package/dist/interface/cli/commands/schedule/history.js.map +1 -1
  77. package/dist/interface/cli/commands/schedule.js +34 -4
  78. package/dist/interface/cli/commands/schedule.js.map +1 -1
  79. package/dist/interface/tui/app.d.ts.map +1 -1
  80. package/dist/interface/tui/app.js +14 -1
  81. package/dist/interface/tui/app.js.map +1 -1
  82. package/dist/interface/tui/chat/suggestions.d.ts.map +1 -1
  83. package/dist/interface/tui/chat/suggestions.js +118 -4
  84. package/dist/interface/tui/chat/suggestions.js.map +1 -1
  85. package/dist/interface/tui/entry-approval.d.ts +8 -0
  86. package/dist/interface/tui/entry-approval.d.ts.map +1 -0
  87. package/dist/interface/tui/entry-approval.js +59 -0
  88. package/dist/interface/tui/entry-approval.js.map +1 -0
  89. package/dist/interface/tui/entry-daemon.d.ts +12 -0
  90. package/dist/interface/tui/entry-daemon.d.ts.map +1 -0
  91. package/dist/interface/tui/entry-daemon.js +74 -0
  92. package/dist/interface/tui/entry-daemon.js.map +1 -0
  93. package/dist/interface/tui/entry-deps.d.ts +22 -0
  94. package/dist/interface/tui/entry-deps.d.ts.map +1 -0
  95. package/dist/interface/tui/entry-deps.js +409 -0
  96. package/dist/interface/tui/entry-deps.js.map +1 -0
  97. package/dist/interface/tui/entry.d.ts +2 -4
  98. package/dist/interface/tui/entry.d.ts.map +1 -1
  99. package/dist/interface/tui/entry.js +10 -557
  100. package/dist/interface/tui/entry.js.map +1 -1
  101. package/dist/interface/tui/fullscreen-chat-render.d.ts +127 -0
  102. package/dist/interface/tui/fullscreen-chat-render.d.ts.map +1 -0
  103. package/dist/interface/tui/fullscreen-chat-render.js +667 -0
  104. package/dist/interface/tui/fullscreen-chat-render.js.map +1 -0
  105. package/dist/interface/tui/fullscreen-chat.d.ts +2 -111
  106. package/dist/interface/tui/fullscreen-chat.d.ts.map +1 -1
  107. package/dist/interface/tui/fullscreen-chat.js +4 -663
  108. package/dist/interface/tui/fullscreen-chat.js.map +1 -1
  109. package/dist/interface/tui/help-overlay.d.ts.map +1 -1
  110. package/dist/interface/tui/help-overlay.js +1 -1
  111. package/dist/interface/tui/help-overlay.js.map +1 -1
  112. package/dist/interface/tui/intent-recognizer.js +2 -2
  113. package/dist/interface/tui/intent-recognizer.js.map +1 -1
  114. package/dist/orchestrator/execution/agent-loop/agent-loop-default-profile.d.ts.map +1 -1
  115. package/dist/orchestrator/execution/agent-loop/agent-loop-default-profile.js +8 -0
  116. package/dist/orchestrator/execution/agent-loop/agent-loop-default-profile.js.map +1 -1
  117. package/dist/orchestrator/execution/agent-loop/agent-loop-tool-router.d.ts.map +1 -1
  118. package/dist/orchestrator/execution/agent-loop/agent-loop-tool-router.js +2 -1
  119. package/dist/orchestrator/execution/agent-loop/agent-loop-tool-router.js.map +1 -1
  120. package/dist/orchestrator/execution/agent-loop/agent-loop-tool-runtime.d.ts +2 -0
  121. package/dist/orchestrator/execution/agent-loop/agent-loop-tool-runtime.d.ts.map +1 -1
  122. package/dist/orchestrator/execution/agent-loop/agent-loop-tool-runtime.js +31 -0
  123. package/dist/orchestrator/execution/agent-loop/agent-loop-tool-runtime.js.map +1 -1
  124. package/dist/orchestrator/execution/agent-loop/agent-loop-turn-context.d.ts +1 -0
  125. package/dist/orchestrator/execution/agent-loop/agent-loop-turn-context.d.ts.map +1 -1
  126. package/dist/orchestrator/execution/agent-loop/agent-loop-turn-context.js.map +1 -1
  127. package/dist/orchestrator/execution/agent-loop/bounded-agent-loop-runner.d.ts +1 -0
  128. package/dist/orchestrator/execution/agent-loop/bounded-agent-loop-runner.d.ts.map +1 -1
  129. package/dist/orchestrator/execution/agent-loop/bounded-agent-loop-runner.js +36 -2
  130. package/dist/orchestrator/execution/agent-loop/bounded-agent-loop-runner.js.map +1 -1
  131. package/dist/orchestrator/execution/agent-loop/chat-agent-loop-runner.d.ts.map +1 -1
  132. package/dist/orchestrator/execution/agent-loop/chat-agent-loop-runner.js +2 -1
  133. package/dist/orchestrator/execution/agent-loop/chat-agent-loop-runner.js.map +1 -1
  134. package/dist/orchestrator/execution/agent-loop/core-loop-control-tools.d.ts +19 -0
  135. package/dist/orchestrator/execution/agent-loop/core-loop-control-tools.d.ts.map +1 -1
  136. package/dist/orchestrator/execution/agent-loop/core-loop-control-tools.js +164 -14
  137. package/dist/orchestrator/execution/agent-loop/core-loop-control-tools.js.map +1 -1
  138. package/dist/orchestrator/execution/reflection-generator.d.ts +1 -0
  139. package/dist/orchestrator/execution/reflection-generator.d.ts.map +1 -1
  140. package/dist/orchestrator/execution/reflection-generator.js +10 -1
  141. package/dist/orchestrator/execution/reflection-generator.js.map +1 -1
  142. package/dist/orchestrator/execution/task/task-context-enricher.d.ts +2 -0
  143. package/dist/orchestrator/execution/task/task-context-enricher.d.ts.map +1 -1
  144. package/dist/orchestrator/execution/task/task-context-enricher.js +9 -4
  145. package/dist/orchestrator/execution/task/task-context-enricher.js.map +1 -1
  146. package/dist/orchestrator/execution/task/task-execution-helpers-internal.d.ts +5 -0
  147. package/dist/orchestrator/execution/task/task-execution-helpers-internal.d.ts.map +1 -0
  148. package/dist/orchestrator/execution/task/task-execution-helpers-internal.js +6 -0
  149. package/dist/orchestrator/execution/task/task-execution-helpers-internal.js.map +1 -0
  150. package/dist/orchestrator/execution/task/task-generation.d.ts.map +1 -1
  151. package/dist/orchestrator/execution/task/task-generation.js +8 -3
  152. package/dist/orchestrator/execution/task/task-generation.js.map +1 -1
  153. package/dist/orchestrator/execution/task/task-lifecycle-runner.d.ts +73 -0
  154. package/dist/orchestrator/execution/task/task-lifecycle-runner.d.ts.map +1 -0
  155. package/dist/orchestrator/execution/task/task-lifecycle-runner.js +184 -0
  156. package/dist/orchestrator/execution/task/task-lifecycle-runner.js.map +1 -0
  157. package/dist/orchestrator/execution/task/task-lifecycle.d.ts +7 -7
  158. package/dist/orchestrator/execution/task/task-lifecycle.d.ts.map +1 -1
  159. package/dist/orchestrator/execution/task/task-lifecycle.js +37 -181
  160. package/dist/orchestrator/execution/task/task-lifecycle.js.map +1 -1
  161. package/dist/orchestrator/execution/task/task-verifier-internal.d.ts +2 -0
  162. package/dist/orchestrator/execution/task/task-verifier-internal.d.ts.map +1 -0
  163. package/dist/orchestrator/execution/task/task-verifier-internal.js +2 -0
  164. package/dist/orchestrator/execution/task/task-verifier-internal.js.map +1 -0
  165. package/dist/orchestrator/goal/goal-negotiator.d.ts.map +1 -1
  166. package/dist/orchestrator/goal/goal-negotiator.js +23 -3
  167. package/dist/orchestrator/goal/goal-negotiator.js.map +1 -1
  168. package/dist/orchestrator/loop/core-loop/contracts.d.ts +1 -0
  169. package/dist/orchestrator/loop/core-loop/contracts.d.ts.map +1 -1
  170. package/dist/orchestrator/loop/core-loop/contracts.js.map +1 -1
  171. package/dist/orchestrator/loop/core-loop/iteration-kernel-knowledge.d.ts +7 -0
  172. package/dist/orchestrator/loop/core-loop/iteration-kernel-knowledge.d.ts.map +1 -0
  173. package/dist/orchestrator/loop/core-loop/iteration-kernel-knowledge.js +43 -0
  174. package/dist/orchestrator/loop/core-loop/iteration-kernel-knowledge.js.map +1 -0
  175. package/dist/orchestrator/loop/core-loop/iteration-kernel-wait.d.ts +14 -0
  176. package/dist/orchestrator/loop/core-loop/iteration-kernel-wait.d.ts.map +1 -0
  177. package/dist/orchestrator/loop/core-loop/iteration-kernel-wait.js +41 -0
  178. package/dist/orchestrator/loop/core-loop/iteration-kernel-wait.js.map +1 -0
  179. package/dist/orchestrator/loop/core-loop/iteration-kernel.d.ts +3 -2
  180. package/dist/orchestrator/loop/core-loop/iteration-kernel.d.ts.map +1 -1
  181. package/dist/orchestrator/loop/core-loop/iteration-kernel.js +16 -87
  182. package/dist/orchestrator/loop/core-loop/iteration-kernel.js.map +1 -1
  183. package/dist/orchestrator/loop/core-loop/phase-policy.js +5 -5
  184. package/dist/orchestrator/loop/core-loop/task-cycle-stall.d.ts +9 -0
  185. package/dist/orchestrator/loop/core-loop/task-cycle-stall.d.ts.map +1 -0
  186. package/dist/orchestrator/loop/core-loop/task-cycle-stall.js +297 -0
  187. package/dist/orchestrator/loop/core-loop/task-cycle-stall.js.map +1 -0
  188. package/dist/orchestrator/loop/core-loop/task-cycle-wait.d.ts +11 -0
  189. package/dist/orchestrator/loop/core-loop/task-cycle-wait.d.ts.map +1 -0
  190. package/dist/orchestrator/loop/core-loop/task-cycle-wait.js +176 -0
  191. package/dist/orchestrator/loop/core-loop/task-cycle-wait.js.map +1 -0
  192. package/dist/orchestrator/loop/core-loop/task-cycle.d.ts +3 -15
  193. package/dist/orchestrator/loop/core-loop/task-cycle.d.ts.map +1 -1
  194. package/dist/orchestrator/loop/core-loop/task-cycle.js +10 -444
  195. package/dist/orchestrator/loop/core-loop/task-cycle.js.map +1 -1
  196. package/dist/orchestrator/loop/core-loop.d.ts +3 -0
  197. package/dist/orchestrator/loop/core-loop.d.ts.map +1 -1
  198. package/dist/orchestrator/loop/core-loop.js +4 -0
  199. package/dist/orchestrator/loop/core-loop.js.map +1 -1
  200. package/dist/orchestrator/strategy/portfolio-manager.d.ts +3 -2
  201. package/dist/orchestrator/strategy/portfolio-manager.d.ts.map +1 -1
  202. package/dist/orchestrator/strategy/portfolio-manager.js +16 -11
  203. package/dist/orchestrator/strategy/portfolio-manager.js.map +1 -1
  204. package/dist/orchestrator/strategy/portfolio-rebalance.d.ts +1 -1
  205. package/dist/orchestrator/strategy/portfolio-rebalance.d.ts.map +1 -1
  206. package/dist/orchestrator/strategy/portfolio-rebalance.js +31 -9
  207. package/dist/orchestrator/strategy/portfolio-rebalance.js.map +1 -1
  208. package/dist/orchestrator/strategy/strategy-manager-base.d.ts +12 -2
  209. package/dist/orchestrator/strategy/strategy-manager-base.d.ts.map +1 -1
  210. package/dist/orchestrator/strategy/strategy-manager-base.js +23 -7
  211. package/dist/orchestrator/strategy/strategy-manager-base.js.map +1 -1
  212. package/dist/orchestrator/strategy/strategy-manager.d.ts +1 -11
  213. package/dist/orchestrator/strategy/strategy-manager.d.ts.map +1 -1
  214. package/dist/orchestrator/strategy/strategy-manager.js +78 -19
  215. package/dist/orchestrator/strategy/strategy-manager.js.map +1 -1
  216. package/dist/platform/dream/dream-consolidator/fs-metrics.d.ts +18 -0
  217. package/dist/platform/dream/dream-consolidator/fs-metrics.d.ts.map +1 -0
  218. package/dist/platform/dream/dream-consolidator/fs-metrics.js +130 -0
  219. package/dist/platform/dream/dream-consolidator/fs-metrics.js.map +1 -0
  220. package/dist/platform/dream/dream-consolidator.d.ts +4 -14
  221. package/dist/platform/dream/dream-consolidator.d.ts.map +1 -1
  222. package/dist/platform/dream/dream-consolidator.js +46 -166
  223. package/dist/platform/dream/dream-consolidator.js.map +1 -1
  224. package/dist/platform/dream/dream-soil-sync.d.ts +1 -0
  225. package/dist/platform/dream/dream-soil-sync.d.ts.map +1 -1
  226. package/dist/platform/dream/dream-soil-sync.js +8 -1
  227. package/dist/platform/dream/dream-soil-sync.js.map +1 -1
  228. package/dist/platform/dream/dream-types.d.ts +5 -0
  229. package/dist/platform/dream/dream-types.d.ts.map +1 -1
  230. package/dist/platform/dream/dream-types.js +1 -0
  231. package/dist/platform/dream/dream-types.js.map +1 -1
  232. package/dist/platform/dream/playbook-memory.d.ts +4 -4
  233. package/dist/platform/drive/stall-detector/analysis.d.ts +5 -0
  234. package/dist/platform/drive/stall-detector/analysis.d.ts.map +1 -0
  235. package/dist/platform/drive/stall-detector/analysis.js +55 -0
  236. package/dist/platform/drive/stall-detector/analysis.js.map +1 -0
  237. package/dist/platform/drive/stall-detector/repetitive.d.ts +3 -0
  238. package/dist/platform/drive/stall-detector/repetitive.d.ts.map +1 -0
  239. package/dist/platform/drive/stall-detector/repetitive.js +72 -0
  240. package/dist/platform/drive/stall-detector/repetitive.js.map +1 -0
  241. package/dist/platform/drive/stall-detector/thresholds.d.ts +10 -0
  242. package/dist/platform/drive/stall-detector/thresholds.d.ts.map +1 -0
  243. package/dist/platform/drive/stall-detector/thresholds.js +61 -0
  244. package/dist/platform/drive/stall-detector/thresholds.js.map +1 -0
  245. package/dist/platform/drive/stall-detector.d.ts +2 -20
  246. package/dist/platform/drive/stall-detector.d.ts.map +1 -1
  247. package/dist/platform/drive/stall-detector.js +9 -202
  248. package/dist/platform/drive/stall-detector.js.map +1 -1
  249. package/dist/platform/knowledge/knowledge-manager-agent-memory.d.ts +55 -0
  250. package/dist/platform/knowledge/knowledge-manager-agent-memory.d.ts.map +1 -0
  251. package/dist/platform/knowledge/knowledge-manager-agent-memory.js +232 -0
  252. package/dist/platform/knowledge/knowledge-manager-agent-memory.js.map +1 -0
  253. package/dist/platform/knowledge/knowledge-manager-internals.d.ts +10 -0
  254. package/dist/platform/knowledge/knowledge-manager-internals.d.ts.map +1 -0
  255. package/dist/platform/knowledge/knowledge-manager-internals.js +43 -0
  256. package/dist/platform/knowledge/knowledge-manager-internals.js.map +1 -0
  257. package/dist/platform/knowledge/knowledge-manager-store.d.ts +13 -0
  258. package/dist/platform/knowledge/knowledge-manager-store.d.ts.map +1 -0
  259. package/dist/platform/knowledge/knowledge-manager-store.js +67 -0
  260. package/dist/platform/knowledge/knowledge-manager-store.js.map +1 -0
  261. package/dist/platform/knowledge/knowledge-manager.d.ts +6 -2
  262. package/dist/platform/knowledge/knowledge-manager.d.ts.map +1 -1
  263. package/dist/platform/knowledge/knowledge-manager.js +43 -344
  264. package/dist/platform/knowledge/knowledge-manager.js.map +1 -1
  265. package/dist/platform/knowledge/memory/memory-lifecycle-storage.d.ts +4 -0
  266. package/dist/platform/knowledge/memory/memory-lifecycle-storage.d.ts.map +1 -0
  267. package/dist/platform/knowledge/memory/memory-lifecycle-storage.js +106 -0
  268. package/dist/platform/knowledge/memory/memory-lifecycle-storage.js.map +1 -0
  269. package/dist/platform/knowledge/memory/memory-lifecycle.d.ts.map +1 -1
  270. package/dist/platform/knowledge/memory/memory-lifecycle.js +6 -112
  271. package/dist/platform/knowledge/memory/memory-lifecycle.js.map +1 -1
  272. package/dist/platform/observation/capability-detector/prompts.d.ts +18 -0
  273. package/dist/platform/observation/capability-detector/prompts.d.ts.map +1 -0
  274. package/dist/platform/observation/capability-detector/prompts.js +80 -0
  275. package/dist/platform/observation/capability-detector/prompts.js.map +1 -0
  276. package/dist/platform/observation/capability-detector/recommendations.d.ts +5 -0
  277. package/dist/platform/observation/capability-detector/recommendations.d.ts.map +1 -0
  278. package/dist/platform/observation/capability-detector/recommendations.js +76 -0
  279. package/dist/platform/observation/capability-detector/recommendations.js.map +1 -0
  280. package/dist/platform/observation/capability-detector/types.d.ts +112 -0
  281. package/dist/platform/observation/capability-detector/types.d.ts.map +1 -0
  282. package/dist/platform/observation/capability-detector/types.js +75 -0
  283. package/dist/platform/observation/capability-detector/types.js.map +1 -0
  284. package/dist/platform/observation/capability-detector.d.ts +4 -9
  285. package/dist/platform/observation/capability-detector.d.ts.map +1 -1
  286. package/dist/platform/observation/capability-detector.js +12 -212
  287. package/dist/platform/observation/capability-detector.js.map +1 -1
  288. package/dist/platform/observation/context-provider/collector.d.ts +13 -0
  289. package/dist/platform/observation/context-provider/collector.d.ts.map +1 -0
  290. package/dist/platform/observation/context-provider/collector.js +259 -0
  291. package/dist/platform/observation/context-provider/collector.js.map +1 -0
  292. package/dist/platform/observation/context-provider/search-terms.d.ts +2 -0
  293. package/dist/platform/observation/context-provider/search-terms.d.ts.map +1 -0
  294. package/dist/platform/observation/context-provider/search-terms.js +24 -0
  295. package/dist/platform/observation/context-provider/search-terms.js.map +1 -0
  296. package/dist/platform/observation/context-provider/shared.d.ts +17 -0
  297. package/dist/platform/observation/context-provider/shared.d.ts.map +1 -0
  298. package/dist/platform/observation/context-provider/shared.js +87 -0
  299. package/dist/platform/observation/context-provider/shared.js.map +1 -0
  300. package/dist/platform/observation/context-provider.d.ts +3 -28
  301. package/dist/platform/observation/context-provider.d.ts.map +1 -1
  302. package/dist/platform/observation/context-provider.js +7 -395
  303. package/dist/platform/observation/context-provider.js.map +1 -1
  304. package/dist/platform/soil/compiled-memory-projections.d.ts +2 -0
  305. package/dist/platform/soil/compiled-memory-projections.d.ts.map +1 -1
  306. package/dist/platform/soil/compiled-memory-projections.js +59 -0
  307. package/dist/platform/soil/compiled-memory-projections.js.map +1 -1
  308. package/dist/platform/soil/contracts.d.ts +2 -2
  309. package/dist/platform/soil/retriever.d.ts +25 -0
  310. package/dist/platform/soil/retriever.d.ts.map +1 -1
  311. package/dist/platform/soil/retriever.js +94 -5
  312. package/dist/platform/soil/retriever.js.map +1 -1
  313. package/dist/platform/soil/sqlite-repository-helpers.d.ts +80 -0
  314. package/dist/platform/soil/sqlite-repository-helpers.d.ts.map +1 -0
  315. package/dist/platform/soil/sqlite-repository-helpers.js +143 -0
  316. package/dist/platform/soil/sqlite-repository-helpers.js.map +1 -0
  317. package/dist/platform/soil/sqlite-repository-search.d.ts +8 -0
  318. package/dist/platform/soil/sqlite-repository-search.d.ts.map +1 -0
  319. package/dist/platform/soil/sqlite-repository-search.js +367 -0
  320. package/dist/platform/soil/sqlite-repository-search.js.map +1 -0
  321. package/dist/platform/soil/sqlite-repository-storage.d.ts +8 -0
  322. package/dist/platform/soil/sqlite-repository-storage.d.ts.map +1 -0
  323. package/dist/platform/soil/sqlite-repository-storage.js +278 -0
  324. package/dist/platform/soil/sqlite-repository-storage.js.map +1 -0
  325. package/dist/platform/soil/sqlite-repository.d.ts +1 -4
  326. package/dist/platform/soil/sqlite-repository.d.ts.map +1 -1
  327. package/dist/platform/soil/sqlite-repository.js +26 -820
  328. package/dist/platform/soil/sqlite-repository.js.map +1 -1
  329. package/dist/runtime/daemon/index.d.ts +1 -1
  330. package/dist/runtime/daemon/index.d.ts.map +1 -1
  331. package/dist/runtime/daemon/index.js +1 -1
  332. package/dist/runtime/daemon/index.js.map +1 -1
  333. package/dist/runtime/daemon/maintenance.d.ts +2 -10
  334. package/dist/runtime/daemon/maintenance.d.ts.map +1 -1
  335. package/dist/runtime/daemon/maintenance.js +14 -45
  336. package/dist/runtime/daemon/maintenance.js.map +1 -1
  337. package/dist/runtime/daemon/runner-bootstrap.d.ts +25 -0
  338. package/dist/runtime/daemon/runner-bootstrap.d.ts.map +1 -0
  339. package/dist/runtime/daemon/runner-bootstrap.js +77 -0
  340. package/dist/runtime/daemon/runner-bootstrap.js.map +1 -0
  341. package/dist/runtime/daemon/runner-commands.d.ts +7 -7
  342. package/dist/runtime/daemon/runner-commands.d.ts.map +1 -1
  343. package/dist/runtime/daemon/runner-commands.js +35 -20
  344. package/dist/runtime/daemon/runner-commands.js.map +1 -1
  345. package/dist/runtime/daemon/runner-goal-cycle.d.ts.map +1 -1
  346. package/dist/runtime/daemon/runner-goal-cycle.js +3 -5
  347. package/dist/runtime/daemon/runner-goal-cycle.js.map +1 -1
  348. package/dist/runtime/daemon/runner-resident-curiosity.d.ts +12 -0
  349. package/dist/runtime/daemon/runner-resident-curiosity.d.ts.map +1 -0
  350. package/dist/runtime/daemon/runner-resident-curiosity.js +155 -0
  351. package/dist/runtime/daemon/runner-resident-curiosity.js.map +1 -0
  352. package/dist/runtime/daemon/runner-resident-dream.d.ts +20 -0
  353. package/dist/runtime/daemon/runner-resident-dream.d.ts.map +1 -0
  354. package/dist/runtime/daemon/runner-resident-dream.js +148 -0
  355. package/dist/runtime/daemon/runner-resident-dream.js.map +1 -0
  356. package/dist/runtime/daemon/runner-resident-proactive.d.ts +4 -0
  357. package/dist/runtime/daemon/runner-resident-proactive.d.ts.map +1 -0
  358. package/dist/runtime/daemon/runner-resident-proactive.js +113 -0
  359. package/dist/runtime/daemon/runner-resident-proactive.js.map +1 -0
  360. package/dist/runtime/daemon/runner-resident-shared.d.ts +40 -0
  361. package/dist/runtime/daemon/runner-resident-shared.d.ts.map +1 -0
  362. package/dist/runtime/daemon/runner-resident-shared.js +101 -0
  363. package/dist/runtime/daemon/runner-resident-shared.js.map +1 -0
  364. package/dist/runtime/daemon/runner-resident.d.ts +4 -68
  365. package/dist/runtime/daemon/runner-resident.d.ts.map +1 -1
  366. package/dist/runtime/daemon/runner-resident.js +4 -506
  367. package/dist/runtime/daemon/runner-resident.js.map +1 -1
  368. package/dist/runtime/daemon/runner-runtime.d.ts +12 -0
  369. package/dist/runtime/daemon/runner-runtime.d.ts.map +1 -0
  370. package/dist/runtime/daemon/runner-runtime.js +43 -0
  371. package/dist/runtime/daemon/runner-runtime.js.map +1 -0
  372. package/dist/runtime/daemon/runner-startup.js +3 -4
  373. package/dist/runtime/daemon/runner-startup.js.map +1 -1
  374. package/dist/runtime/daemon/runner.d.ts +10 -23
  375. package/dist/runtime/daemon/runner.d.ts.map +1 -1
  376. package/dist/runtime/daemon/runner.js +27 -110
  377. package/dist/runtime/daemon/runner.js.map +1 -1
  378. package/dist/runtime/daemon/wait-deadline-resolver.d.ts +5 -2
  379. package/dist/runtime/daemon/wait-deadline-resolver.d.ts.map +1 -1
  380. package/dist/runtime/daemon/wait-deadline-resolver.js +55 -35
  381. package/dist/runtime/daemon/wait-deadline-resolver.js.map +1 -1
  382. package/dist/runtime/event/dispatcher.d.ts +0 -2
  383. package/dist/runtime/event/dispatcher.d.ts.map +1 -1
  384. package/dist/runtime/event/dispatcher.js +0 -4
  385. package/dist/runtime/event/dispatcher.js.map +1 -1
  386. package/dist/runtime/executor/goal-worker.d.ts +2 -1
  387. package/dist/runtime/executor/goal-worker.d.ts.map +1 -1
  388. package/dist/runtime/executor/goal-worker.js +2 -1
  389. package/dist/runtime/executor/goal-worker.js.map +1 -1
  390. package/dist/runtime/executor/loop-supervisor.d.ts +3 -0
  391. package/dist/runtime/executor/loop-supervisor.d.ts.map +1 -1
  392. package/dist/runtime/executor/loop-supervisor.js +37 -11
  393. package/dist/runtime/executor/loop-supervisor.js.map +1 -1
  394. package/dist/runtime/schedule/engine-cron-reflection.d.ts +31 -0
  395. package/dist/runtime/schedule/engine-cron-reflection.d.ts.map +1 -0
  396. package/dist/runtime/schedule/engine-cron-reflection.js +229 -0
  397. package/dist/runtime/schedule/engine-cron-reflection.js.map +1 -0
  398. package/dist/runtime/schedule/engine-execution.d.ts +47 -0
  399. package/dist/runtime/schedule/engine-execution.d.ts.map +1 -0
  400. package/dist/runtime/schedule/engine-execution.js +424 -0
  401. package/dist/runtime/schedule/engine-execution.js.map +1 -0
  402. package/dist/runtime/schedule/engine-heartbeat.d.ts +5 -0
  403. package/dist/runtime/schedule/engine-heartbeat.d.ts.map +1 -0
  404. package/dist/runtime/schedule/engine-heartbeat.js +104 -0
  405. package/dist/runtime/schedule/engine-heartbeat.js.map +1 -0
  406. package/dist/runtime/schedule/engine-layers.d.ts +2 -0
  407. package/dist/runtime/schedule/engine-layers.d.ts.map +1 -1
  408. package/dist/runtime/schedule/engine-layers.js +12 -228
  409. package/dist/runtime/schedule/engine-layers.js.map +1 -1
  410. package/dist/runtime/schedule/engine-mutations.d.ts +37 -0
  411. package/dist/runtime/schedule/engine-mutations.d.ts.map +1 -0
  412. package/dist/runtime/schedule/engine-mutations.js +263 -0
  413. package/dist/runtime/schedule/engine-mutations.js.map +1 -0
  414. package/dist/runtime/schedule/engine.d.ts +11 -38
  415. package/dist/runtime/schedule/engine.d.ts.map +1 -1
  416. package/dist/runtime/schedule/engine.js +65 -810
  417. package/dist/runtime/schedule/engine.js.map +1 -1
  418. package/dist/runtime/schedule/history.d.ts +16 -0
  419. package/dist/runtime/schedule/history.d.ts.map +1 -1
  420. package/dist/runtime/schedule/history.js +8 -0
  421. package/dist/runtime/schedule/history.js.map +1 -1
  422. package/dist/runtime/schedule/index.d.ts +1 -0
  423. package/dist/runtime/schedule/index.d.ts.map +1 -1
  424. package/dist/runtime/schedule/index.js +1 -0
  425. package/dist/runtime/schedule/index.js.map +1 -1
  426. package/dist/runtime/schedule/legacy-cron-migration.d.ts +9 -0
  427. package/dist/runtime/schedule/legacy-cron-migration.d.ts.map +1 -0
  428. package/dist/runtime/schedule/legacy-cron-migration.js +89 -0
  429. package/dist/runtime/schedule/legacy-cron-migration.js.map +1 -0
  430. package/dist/runtime/schedule/wait-projection.d.ts +6 -0
  431. package/dist/runtime/schedule/wait-projection.d.ts.map +1 -0
  432. package/dist/runtime/schedule/wait-projection.js +102 -0
  433. package/dist/runtime/schedule/wait-projection.js.map +1 -0
  434. package/dist/runtime/session-registry/registry-helpers.d.ts +34 -0
  435. package/dist/runtime/session-registry/registry-helpers.d.ts.map +1 -0
  436. package/dist/runtime/session-registry/registry-helpers.js +241 -0
  437. package/dist/runtime/session-registry/registry-helpers.js.map +1 -0
  438. package/dist/runtime/session-registry/registry.d.ts.map +1 -1
  439. package/dist/runtime/session-registry/registry.js +14 -243
  440. package/dist/runtime/session-registry/registry.js.map +1 -1
  441. package/dist/runtime/session-registry/types.d.ts +36 -36
  442. package/dist/runtime/store/runtime-operation-schemas.d.ts +36 -36
  443. package/dist/runtime/store/runtime-schemas.d.ts +2 -2
  444. package/dist/runtime/types/daemon.d.ts +10 -0
  445. package/dist/runtime/types/daemon.d.ts.map +1 -1
  446. package/dist/runtime/types/daemon.js +2 -0
  447. package/dist/runtime/types/daemon.js.map +1 -1
  448. package/dist/runtime/types/schedule.d.ts +65 -0
  449. package/dist/runtime/types/schedule.d.ts.map +1 -1
  450. package/dist/runtime/types/schedule.js +5 -0
  451. package/dist/runtime/types/schedule.js.map +1 -1
  452. package/dist/tools/builtin/exports.d.ts +1 -0
  453. package/dist/tools/builtin/exports.d.ts.map +1 -1
  454. package/dist/tools/builtin/exports.js +1 -0
  455. package/dist/tools/builtin/exports.js.map +1 -1
  456. package/dist/tools/builtin/factory.d.ts +2 -0
  457. package/dist/tools/builtin/factory.d.ts.map +1 -1
  458. package/dist/tools/builtin/factory.js +8 -1
  459. package/dist/tools/builtin/factory.js.map +1 -1
  460. package/dist/tools/fs/FileValidationTool/protected-path-policy.d.ts +1 -0
  461. package/dist/tools/fs/FileValidationTool/protected-path-policy.d.ts.map +1 -1
  462. package/dist/tools/fs/FileValidationTool/protected-path-policy.js +17 -4
  463. package/dist/tools/fs/FileValidationTool/protected-path-policy.js.map +1 -1
  464. package/dist/tools/fs/ListDirTool/ListDirTool.js +1 -1
  465. package/dist/tools/fs/ListDirTool/ListDirTool.js.map +1 -1
  466. package/dist/tools/kaggle/paths.d.ts.map +1 -1
  467. package/dist/tools/kaggle/paths.js +6 -0
  468. package/dist/tools/kaggle/paths.js.map +1 -1
  469. package/dist/tools/query/CodeSearchRepairTool/CodeSearchRepairTool.d.ts.map +1 -1
  470. package/dist/tools/query/CodeSearchRepairTool/CodeSearchRepairTool.js +23 -2
  471. package/dist/tools/query/CodeSearchRepairTool/CodeSearchRepairTool.js.map +1 -1
  472. package/dist/tools/query/CodeSearchTool/CodeSearchTool.d.ts.map +1 -1
  473. package/dist/tools/query/CodeSearchTool/CodeSearchTool.js +24 -2
  474. package/dist/tools/query/CodeSearchTool/CodeSearchTool.js.map +1 -1
  475. package/dist/tools/query/SoilQueryTool/SoilQueryTool.d.ts.map +1 -1
  476. package/dist/tools/query/SoilQueryTool/SoilQueryTool.js +43 -9
  477. package/dist/tools/query/SoilQueryTool/SoilQueryTool.js.map +1 -1
  478. package/dist/tools/query/code-search-root.d.ts +8 -0
  479. package/dist/tools/query/code-search-root.d.ts.map +1 -0
  480. package/dist/tools/query/code-search-root.js +41 -0
  481. package/dist/tools/query/code-search-root.js.map +1 -0
  482. package/dist/tools/query/runtime-session-tools.d.ts +560 -0
  483. package/dist/tools/query/runtime-session-tools.d.ts.map +1 -0
  484. package/dist/tools/query/runtime-session-tools.js +1015 -0
  485. package/dist/tools/query/runtime-session-tools.js.map +1 -0
  486. package/dist/tools/runtime/LongRunningRuntimeTools.d.ts +821 -0
  487. package/dist/tools/runtime/LongRunningRuntimeTools.d.ts.map +1 -0
  488. package/dist/tools/runtime/LongRunningRuntimeTools.js +845 -0
  489. package/dist/tools/runtime/LongRunningRuntimeTools.js.map +1 -0
  490. package/dist/tools/system/ProcessSessionTool/ProcessSessionTool.d.ts +1 -0
  491. package/dist/tools/system/ProcessSessionTool/ProcessSessionTool.d.ts.map +1 -1
  492. package/dist/tools/system/ProcessSessionTool/ProcessSessionTool.js +11 -0
  493. package/dist/tools/system/ProcessSessionTool/ProcessSessionTool.js.map +1 -1
  494. package/dist/tools/system/ShellTool/ShellTool.d.ts.map +1 -1
  495. package/dist/tools/system/ShellTool/ShellTool.js +2 -1
  496. package/dist/tools/system/ShellTool/ShellTool.js.map +1 -1
  497. package/dist/tools/types.d.ts +2 -0
  498. package/dist/tools/types.d.ts.map +1 -1
  499. package/dist/tools/types.js.map +1 -1
  500. package/package.json +1 -1
  501. package/dist/base/types/cron.d.ts +0 -2
  502. package/dist/base/types/cron.d.ts.map +0 -1
  503. package/dist/base/types/cron.js +0 -3
  504. package/dist/base/types/cron.js.map +0 -1
  505. package/dist/runtime/cron-scheduler.d.ts +0 -13
  506. package/dist/runtime/cron-scheduler.d.ts.map +0 -1
  507. package/dist/runtime/cron-scheduler.js +0 -90
  508. package/dist/runtime/cron-scheduler.js.map +0 -1
  509. package/dist/runtime/types/cron.d.ts +0 -59
  510. package/dist/runtime/types/cron.d.ts.map +0 -1
  511. package/dist/runtime/types/cron.js +0 -13
  512. package/dist/runtime/types/cron.js.map +0 -1
@@ -7,54 +7,19 @@ import path from "path";
7
7
  import { Box, Text, useInput } from "ink";
8
8
  import { copyToClipboard, getClipboardContent } from "./clipboard.js";
9
9
  import { logTuiDebug } from "./debug-log.js";
10
- import { theme } from "./theme.js";
11
10
  import { pickSpinnerVerb } from "./spinner-verbs.js";
12
- import { buildHiddenCursorEscapeFromPosition, CARET_MARKER, PROTECTED_ROW_MARKER, setActiveCursorEscape, } from "./cursor-tracker.js";
13
- import { measureCharWidth, measureTextWidth } from "./text-width.js";
11
+ import { buildHiddenCursorEscapeFromPosition, PROTECTED_ROW_MARKER, setActiveCursorEscape, } from "./cursor-tracker.js";
14
12
  import { isBashModeInput } from "./bash-mode.js";
15
13
  import { buildChatViewport } from "./chat/viewport.js";
16
14
  import { getScrollLineStep, getScrollRequest, normalizeTerminalInputChunk, parseMouseEvent, } from "./chat/scroll.js";
17
- import { getMatchingSuggestions } from "./chat/suggestions.js";
18
15
  import { writeTrustedTuiControl } from "./terminal-output.js";
19
16
  import { CURSOR_HOME, ENTER_ALT_SCREEN, ERASE_SCREEN, EXIT_ALT_SCREEN, HIDE_CURSOR, SHOW_CURSOR, } from "./flicker/dec.js";
17
+ import { buildCollapsedPasteRange, buildComposerLines, buildFullscreenChatRenderLines, buildTranscriptRenderLines, buildTranscriptRows, copySelectedInputText, extractClickableTargetAt, formatCopyToast, formatTranscript, getCursorPositionFromComposerLayout, getMouseOffsetFromComposer, getMousePositionFromBody, getSelectedBodyText, getSelectedInputText, getSuggestions, normalizeBodySelection, normalizeSelection, shouldCollapsePastedText, } from "./fullscreen-chat-render.js";
18
+ export { buildComposerLines, buildFullscreenChatRenderLines, buildTranscriptRenderLines, buildCollapsedPasteRange, copySelectedInputText, extractClickableTargetAt, formatTranscript, getSelectedBodyText, getSelectedInputText, shouldCollapsePastedText, } from "./fullscreen-chat-render.js";
20
19
  const SCROLL_LINE_STEP = 1;
21
20
  const SCROLL_ANIMATION_INTERVAL_MS = 16;
22
- const DEFAULT_PROMPT = "◉";
23
- const BASH_PROMPT = "!";
24
- const SUGGESTION_HINT = " arrows to navigate, tab/enter to select, esc to dismiss";
25
- const INPUT_MARGIN = 4;
26
- const SELECTION_BACKGROUND = theme.text;
27
- const SELECTION_FOREGROUND = "#1F2329";
28
- const FAKE_CURSOR_GLYPH = "▌";
29
21
  const PROCESSING_SPINNER_FRAMES = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
30
22
  const PROCESSING_SPINNER_INTERVAL_MS = 80;
31
- const COLLAPSED_PASTE_MIN_CHARS = 120;
32
- const COLLAPSED_PASTE_MIN_MULTILINE_CHARS = 40;
33
- function charWidth(ch) {
34
- return measureCharWidth(ch);
35
- }
36
- function stringWidth(text) {
37
- return measureTextWidth(text);
38
- }
39
- function trimToWidth(text, width) {
40
- if (width <= 0)
41
- return "";
42
- let out = "";
43
- let used = 0;
44
- for (const ch of text) {
45
- const next = charWidth(ch);
46
- if (used + next > width)
47
- break;
48
- out += ch;
49
- used += next;
50
- }
51
- return out;
52
- }
53
- function padToWidth(text, width) {
54
- const trimmed = trimToWidth(text, width);
55
- const padding = Math.max(0, width - stringWidth(trimmed));
56
- return trimmed + " ".repeat(padding);
57
- }
58
23
  function getPreviousOffset(text, offset) {
59
24
  if (offset <= 0)
60
25
  return 0;
@@ -97,338 +62,6 @@ function isDeleteInput(inputChar, key) {
97
62
  function summarizeKey(key) {
98
63
  return Object.fromEntries(Object.entries(key).filter(([, value]) => value === true));
99
64
  }
100
- function getPromptLabel(bashMode) {
101
- return bashMode ? BASH_PROMPT : DEFAULT_PROMPT;
102
- }
103
- function getPlaceholder(bashMode) {
104
- return bashMode ? "! for bash mode" : "/ for commands";
105
- }
106
- function formatSuggestionLabel(suggestion) {
107
- return suggestion.type === "goal"
108
- ? ` ${suggestion.name} ${suggestion.description.padEnd(20)} [goal]`
109
- : ` ${suggestion.name.padEnd(20)}${suggestion.description}`;
110
- }
111
- function countTextLines(text) {
112
- return text.length === 0 ? 0 : text.split("\n").length;
113
- }
114
- export function shouldCollapsePastedText(rawInput, normalizedInput) {
115
- const isBracketedPaste = rawInput.includes("[200~") || rawInput.includes("\u001b[200~");
116
- if (normalizedInput.length >= COLLAPSED_PASTE_MIN_CHARS) {
117
- return true;
118
- }
119
- if (normalizedInput.includes("\n") && normalizedInput.length >= COLLAPSED_PASTE_MIN_MULTILINE_CHARS) {
120
- return true;
121
- }
122
- return isBracketedPaste && normalizedInput.length >= COLLAPSED_PASTE_MIN_MULTILINE_CHARS;
123
- }
124
- export function buildCollapsedPasteRange(text, start) {
125
- const lineCount = countTextLines(text);
126
- const charCount = Array.from(text).length;
127
- const label = lineCount > 1
128
- ? `[pasted ${lineCount} lines, ${charCount} chars]`
129
- : `[pasted ${charCount} chars]`;
130
- return {
131
- start,
132
- end: start + text.length,
133
- label,
134
- };
135
- }
136
- function normalizeSelection(selection) {
137
- if (!selection || selection.anchor === selection.focus) {
138
- return null;
139
- }
140
- return {
141
- start: Math.min(selection.anchor, selection.focus),
142
- end: Math.max(selection.anchor, selection.focus),
143
- };
144
- }
145
- export function getSelectedInputText(input, selection) {
146
- const range = normalizeSelection(selection);
147
- return range ? input.slice(range.start, range.end) : "";
148
- }
149
- export async function copySelectedInputText(input, selection, copy = copyToClipboard) {
150
- const selectedText = getSelectedInputText(input, selection);
151
- if (!selectedText) {
152
- return { ok: false };
153
- }
154
- return copy(selectedText);
155
- }
156
- function formatCopyToast(charCount, result) {
157
- const suffix = result.method ? ` via ${result.method}` : "";
158
- return `copied ${charCount} chars${suffix}`;
159
- }
160
- function pushSegment(segments, text, style = {}) {
161
- if (text.length === 0)
162
- return;
163
- const previous = segments[segments.length - 1];
164
- if (previous &&
165
- previous.color === style.color &&
166
- previous.backgroundColor === style.backgroundColor &&
167
- previous.bold === style.bold &&
168
- previous.dim === style.dim) {
169
- previous.text += text;
170
- return;
171
- }
172
- segments.push({ text, ...style });
173
- }
174
- function buildInputRows(input, cursorOffset, contentWidth, placeholder, selection, collapsedPaste) {
175
- if (contentWidth <= 0) {
176
- return {
177
- rows: [{
178
- cells: [{
179
- text: CARET_MARKER,
180
- width: 0,
181
- offsetBefore: cursorOffset,
182
- offsetAfter: cursorOffset,
183
- }],
184
- startOffset: cursorOffset,
185
- endOffset: cursorOffset,
186
- }],
187
- };
188
- }
189
- if (input.length === 0) {
190
- const cells = [{
191
- text: CARET_MARKER,
192
- width: 0,
193
- offsetBefore: 0,
194
- offsetAfter: 0,
195
- }];
196
- for (const ch of trimToWidth(placeholder, Math.max(0, contentWidth - 1))) {
197
- cells.push({
198
- text: ch,
199
- width: charWidth(ch),
200
- offsetBefore: 0,
201
- offsetAfter: 0,
202
- placeholder: true,
203
- });
204
- }
205
- return {
206
- rows: [{
207
- cells,
208
- startOffset: 0,
209
- endOffset: 0,
210
- }],
211
- };
212
- }
213
- const rows = [];
214
- let currentCells = [];
215
- let currentWidth = 0;
216
- let rowStartOffset = 0;
217
- let rowEndOffset = 0;
218
- const activeCollapsedPaste = collapsedPaste
219
- && !(cursorOffset > collapsedPaste.start && cursorOffset < collapsedPaste.end)
220
- && !(selection && selection.start < collapsedPaste.end && selection.end > collapsedPaste.start)
221
- ? collapsedPaste
222
- : null;
223
- const pushRow = () => {
224
- rows.push({
225
- cells: currentCells,
226
- startOffset: rowStartOffset,
227
- endOffset: rowEndOffset,
228
- });
229
- currentCells = [];
230
- currentWidth = 0;
231
- };
232
- let offset = 0;
233
- while (offset <= input.length) {
234
- if (offset === cursorOffset) {
235
- if (currentWidth >= contentWidth && currentCells.length > 0) {
236
- pushRow();
237
- rowStartOffset = offset;
238
- rowEndOffset = offset;
239
- }
240
- currentCells.push({
241
- text: CARET_MARKER,
242
- width: 0,
243
- offsetBefore: offset,
244
- offsetAfter: offset,
245
- });
246
- }
247
- if (offset === input.length) {
248
- break;
249
- }
250
- if (activeCollapsedPaste && offset === activeCollapsedPaste.start) {
251
- const label = stringWidth(activeCollapsedPaste.label) <= contentWidth
252
- ? activeCollapsedPaste.label
253
- : trimToWidth("[paste]", contentWidth);
254
- const labelWidth = stringWidth(label);
255
- if (currentWidth + labelWidth > contentWidth && currentCells.length > 0) {
256
- pushRow();
257
- rowStartOffset = offset;
258
- rowEndOffset = offset;
259
- }
260
- currentCells.push({
261
- text: label,
262
- width: labelWidth,
263
- offsetBefore: activeCollapsedPaste.start,
264
- offsetAfter: activeCollapsedPaste.end,
265
- dim: true,
266
- });
267
- currentWidth += labelWidth;
268
- rowEndOffset = activeCollapsedPaste.end;
269
- offset = activeCollapsedPaste.end;
270
- continue;
271
- }
272
- const codePoint = input.codePointAt(offset) ?? 0;
273
- const ch = String.fromCodePoint(codePoint);
274
- const nextOffset = offset + ch.length;
275
- if (ch === "\n") {
276
- pushRow();
277
- rowStartOffset = nextOffset;
278
- rowEndOffset = nextOffset;
279
- offset = nextOffset;
280
- continue;
281
- }
282
- const width = charWidth(ch);
283
- if (currentWidth + width > contentWidth && currentCells.length > 0) {
284
- pushRow();
285
- rowStartOffset = offset;
286
- rowEndOffset = offset;
287
- }
288
- currentCells.push({
289
- text: ch,
290
- width,
291
- offsetBefore: offset,
292
- offsetAfter: nextOffset,
293
- selected: selection !== null &&
294
- offset < selection.end &&
295
- nextOffset > selection.start,
296
- });
297
- currentWidth += width;
298
- rowEndOffset = nextOffset;
299
- offset = nextOffset;
300
- }
301
- rows.push({
302
- cells: currentCells,
303
- startOffset: rowStartOffset,
304
- endOffset: rowEndOffset,
305
- });
306
- return { rows };
307
- }
308
- function buildInputContentSegments(row, contentWidth, bashMode) {
309
- const segments = [];
310
- const defaultColor = bashMode ? theme.command : undefined;
311
- let usedWidth = 0;
312
- for (const cell of row.cells) {
313
- if (cell.text === CARET_MARKER) {
314
- pushSegment(segments, FAKE_CURSOR_GLYPH, {
315
- color: theme.text,
316
- bold: true,
317
- });
318
- usedWidth += 1;
319
- continue;
320
- }
321
- usedWidth += cell.width;
322
- if (cell.selected) {
323
- pushSegment(segments, cell.text, {
324
- color: SELECTION_FOREGROUND,
325
- backgroundColor: SELECTION_BACKGROUND,
326
- });
327
- continue;
328
- }
329
- pushSegment(segments, cell.text, {
330
- color: defaultColor,
331
- dim: cell.placeholder || cell.dim,
332
- });
333
- }
334
- if (usedWidth < contentWidth) {
335
- pushSegment(segments, " ".repeat(contentWidth - usedWidth), {
336
- color: defaultColor,
337
- });
338
- }
339
- return segments;
340
- }
341
- function compareBodySelectionPoints(a, b) {
342
- if (a.rowIndex !== b.rowIndex) {
343
- return a.rowIndex - b.rowIndex;
344
- }
345
- return a.offset - b.offset;
346
- }
347
- function normalizeBodySelection(selection) {
348
- if (!selection || compareBodySelectionPoints(selection.anchor, selection.focus) === 0) {
349
- return null;
350
- }
351
- return compareBodySelectionPoints(selection.anchor, selection.focus) <= 0
352
- ? { start: selection.anchor, end: selection.focus }
353
- : { start: selection.focus, end: selection.anchor };
354
- }
355
- function getBodySelectionForRow(selection, rowIndex, textLength) {
356
- if (!selection || rowIndex < selection.start.rowIndex || rowIndex > selection.end.rowIndex) {
357
- return null;
358
- }
359
- const start = rowIndex === selection.start.rowIndex ? selection.start.offset : 0;
360
- const end = rowIndex === selection.end.rowIndex ? selection.end.offset : textLength;
361
- if (start === end)
362
- return null;
363
- return { start: Math.max(0, start), end: Math.min(textLength, end) };
364
- }
365
- function getDisplayOffsetForText(text, col) {
366
- if (col <= 0)
367
- return 0;
368
- let usedWidth = 0;
369
- let offset = 0;
370
- for (const ch of text) {
371
- const width = charWidth(ch);
372
- const midpoint = usedWidth + width / 2;
373
- if (col <= midpoint)
374
- return offset;
375
- offset += ch.length;
376
- usedWidth += width;
377
- if (col <= usedWidth)
378
- return offset;
379
- }
380
- return text.length;
381
- }
382
- function applySelectionToTextSegments(text, selection, style) {
383
- if (!selection) {
384
- return [{ text, ...style }];
385
- }
386
- const segments = [];
387
- const before = text.slice(0, selection.start);
388
- const selected = text.slice(selection.start, selection.end);
389
- const after = text.slice(selection.end);
390
- pushSegment(segments, before, style);
391
- pushSegment(segments, selected, {
392
- ...style,
393
- color: SELECTION_FOREGROUND,
394
- backgroundColor: SELECTION_BACKGROUND,
395
- });
396
- pushSegment(segments, after, style);
397
- return segments;
398
- }
399
- export function getSelectedBodyText(rows, selection) {
400
- const range = normalizeBodySelection(selection);
401
- if (!range)
402
- return "";
403
- const selectedRows = [];
404
- for (let rowIndex = range.start.rowIndex; rowIndex <= range.end.rowIndex; rowIndex += 1) {
405
- const row = rows[rowIndex];
406
- if (!row || row.kind === "spacer")
407
- continue;
408
- const rowRange = getBodySelectionForRow(range, rowIndex, row.text.length);
409
- if (!rowRange)
410
- continue;
411
- selectedRows.push(row.text.slice(rowRange.start, rowRange.end).trimEnd());
412
- }
413
- return selectedRows.join("\n").trim();
414
- }
415
- export function extractClickableTargetAt(text, offset) {
416
- const patterns = [
417
- /https?:\/\/[^\s)>\]}]+/g,
418
- /(?:\.{1,2}\/|\/)[^\s:]+(?::\d+)?/g,
419
- ];
420
- for (const pattern of patterns) {
421
- for (const match of text.matchAll(pattern)) {
422
- const value = match[0];
423
- const start = match.index ?? 0;
424
- const end = start + value.length;
425
- if (offset >= start && offset <= end) {
426
- return value;
427
- }
428
- }
429
- }
430
- return null;
431
- }
432
65
  function openClickableTarget(target) {
433
66
  if (/^https?:\/\//.test(target)) {
434
67
  if (process.platform === "darwin") {
@@ -454,83 +87,6 @@ function openClickableTarget(target) {
454
87
  }
455
88
  return false;
456
89
  }
457
- export function formatTranscript(messages) {
458
- return messages
459
- .map((message) => {
460
- const label = message.role === "user" ? "User" : "PulSeed";
461
- return `${label}:\n${message.text.trimEnd()}`;
462
- })
463
- .join("\n\n");
464
- }
465
- function wrapPlainTextToRows(text, width) {
466
- const rows = [];
467
- for (const sourceLine of text.split("\n")) {
468
- if (sourceLine.length === 0) {
469
- rows.push("");
470
- continue;
471
- }
472
- let current = "";
473
- let currentWidth = 0;
474
- for (const ch of sourceLine) {
475
- const widthOfChar = charWidth(ch);
476
- if (currentWidth + widthOfChar > width && current.length > 0) {
477
- rows.push(current);
478
- current = "";
479
- currentWidth = 0;
480
- }
481
- current += ch;
482
- currentWidth += widthOfChar;
483
- }
484
- rows.push(current);
485
- }
486
- return rows;
487
- }
488
- function buildTranscriptRows(messages, cols) {
489
- const rows = [];
490
- for (const message of messages) {
491
- const label = message.role === "user" ? "User" : "PulSeed";
492
- rows.push(...wrapPlainTextToRows(`${label}:`, cols));
493
- rows.push(...wrapPlainTextToRows(message.text.trimEnd(), cols));
494
- rows.push("");
495
- }
496
- return rows;
497
- }
498
- export function buildTranscriptRenderLines(args) {
499
- const { messages, cols, rows, scrollOffset, searchQuery, searchMode, status } = args;
500
- const bodyRows = Math.max(1, rows - 2);
501
- const transcriptRows = buildTranscriptRows(messages, cols);
502
- const maxScrollOffset = Math.max(0, transcriptRows.length - bodyRows);
503
- const clampedOffset = Math.max(0, Math.min(maxScrollOffset, scrollOffset));
504
- const visibleRows = transcriptRows.slice(clampedOffset, clampedOffset + bodyRows);
505
- const lines = [{
506
- key: "transcript-header",
507
- text: padToWidth("transcript / search n/N next [ write scrollback v editor Esc return", cols),
508
- color: theme.command,
509
- }];
510
- visibleRows.forEach((row, index) => {
511
- lines.push({
512
- key: `transcript-${clampedOffset + index}`,
513
- text: padToWidth(row, cols),
514
- backgroundColor: searchQuery.length > 0 && row.toLowerCase().includes(searchQuery.toLowerCase())
515
- ? "#3A3A22"
516
- : undefined,
517
- });
518
- });
519
- while (lines.length < rows - 1) {
520
- lines.push({ key: `transcript-filler-${lines.length}`, text: " ".repeat(cols) });
521
- }
522
- lines.push({
523
- key: "transcript-footer",
524
- text: padToWidth(searchMode
525
- ? `/${searchQuery}`
526
- : status
527
- ? status
528
- : `${clampedOffset + 1}-${Math.min(clampedOffset + bodyRows, transcriptRows.length)} / ${transcriptRows.length}`, cols),
529
- dim: !searchMode && !status,
530
- color: searchMode ? theme.command : undefined,
531
- });
532
- return { lines: lines.slice(0, rows), totalRows: transcriptRows.length, maxScrollOffset };
533
- }
534
90
  function writeTranscriptToNativeScrollback(messages) {
535
91
  const transcript = formatTranscript(messages);
536
92
  writeTrustedTuiControl(SHOW_CURSOR +
@@ -554,221 +110,6 @@ function openTranscriptInEditor(messages) {
554
110
  writeTrustedTuiControl(ENTER_ALT_SCREEN + ERASE_SCREEN + CURSOR_HOME + HIDE_CURSOR);
555
111
  return result.status === 0 ? { ok: true, method: "osc52" } : { ok: false };
556
112
  }
557
- function getCursorPositionFromComposerLayout(layout) {
558
- for (let rowIndex = 0; rowIndex < layout.rows.length; rowIndex += 1) {
559
- const row = layout.rows[rowIndex];
560
- if (!row)
561
- continue;
562
- let colOffset = 0;
563
- for (const cell of row.cells) {
564
- if (cell.text === CARET_MARKER) {
565
- return {
566
- x: layout.contentStartCol + colOffset - 1,
567
- y: layout.startLine + rowIndex - 1,
568
- };
569
- }
570
- colOffset += cell.width;
571
- }
572
- }
573
- return null;
574
- }
575
- export function buildComposerLines(args) {
576
- const { cols, input, cursorOffset, bashMode, emptyHint, matches, selectedIdx, copyToast, selection, collapsedPaste, } = args;
577
- const lines = [];
578
- lines.push({
579
- key: "copy-toast",
580
- text: padToWidth(copyToast ?? "", cols),
581
- color: copyToast ? "cyan" : undefined,
582
- });
583
- const innerWidth = Math.max(1, cols - 2);
584
- const promptLabel = getPromptLabel(bashMode);
585
- const prompt = `${promptLabel} `;
586
- const promptWidth = stringWidth(prompt);
587
- const contentWidth = Math.max(1, innerWidth - INPUT_MARGIN - promptWidth);
588
- const inputRender = buildInputRows(input, cursorOffset, contentWidth, getPlaceholder(bashMode), selection, collapsedPaste);
589
- const inputRows = inputRender.rows;
590
- lines.push({
591
- key: "composer-top",
592
- text: padToWidth(`┌${"─".repeat(Math.max(0, cols - 2))}┐`, cols),
593
- color: bashMode ? theme.command : theme.border,
594
- });
595
- inputRows.forEach((row, index) => {
596
- const segments = [];
597
- const borderColor = bashMode ? theme.command : undefined;
598
- const promptColor = bashMode ? theme.command : theme.userPrompt;
599
- pushSegment(segments, "│ ", { color: borderColor });
600
- if (index === 0) {
601
- pushSegment(segments, promptLabel, { color: promptColor, bold: true });
602
- pushSegment(segments, " ", { color: promptColor, bold: true });
603
- }
604
- else {
605
- pushSegment(segments, " ".repeat(promptWidth), { color: borderColor });
606
- }
607
- segments.push(...buildInputContentSegments(row, contentWidth, bashMode));
608
- pushSegment(segments, " │", { color: borderColor });
609
- lines.push({
610
- key: `composer-row-${index}`,
611
- segments,
612
- protected: true,
613
- });
614
- });
615
- lines.push({
616
- key: "composer-bottom",
617
- text: padToWidth(`└${"─".repeat(Math.max(0, cols - 2))}┘`, cols),
618
- color: bashMode ? theme.command : theme.border,
619
- });
620
- if (bashMode) {
621
- lines.push({
622
- key: "bash-hint",
623
- text: padToWidth("! for bash mode", cols),
624
- color: theme.command,
625
- });
626
- }
627
- if (emptyHint) {
628
- lines.push({
629
- key: "empty-hint",
630
- text: padToWidth(" Type a message or /help for commands", cols),
631
- dim: true,
632
- });
633
- }
634
- if (matches.length > 0) {
635
- matches.forEach((suggestion, index) => {
636
- lines.push({
637
- key: `suggestion-${index}`,
638
- text: padToWidth(formatSuggestionLabel(suggestion), cols),
639
- color: index === selectedIdx ? theme.selected : undefined,
640
- bold: index === selectedIdx,
641
- dim: index !== selectedIdx,
642
- });
643
- });
644
- lines.push({
645
- key: "suggestion-hint",
646
- text: padToWidth(SUGGESTION_HINT, cols),
647
- dim: true,
648
- });
649
- }
650
- return {
651
- lines,
652
- inputRows,
653
- inputRowStartIndex: 2,
654
- contentStartCol: 3 + promptWidth,
655
- };
656
- }
657
- function renderMessageRow(row, cols, rowIndex, bodySelection) {
658
- if (row.kind === "spacer") {
659
- return { key: row.key, text: " ".repeat(cols) };
660
- }
661
- const selection = getBodySelectionForRow(bodySelection, rowIndex, row.text.length);
662
- if (selection) {
663
- const text = padToWidth(row.text, cols);
664
- return {
665
- key: row.key,
666
- segments: applySelectionToTextSegments(text, selection, {
667
- color: row.color,
668
- backgroundColor: row.backgroundColor,
669
- bold: row.bold,
670
- dim: row.dim,
671
- }),
672
- };
673
- }
674
- return {
675
- key: row.key,
676
- text: padToWidth(row.text, cols),
677
- color: row.color,
678
- backgroundColor: row.backgroundColor,
679
- bold: row.bold,
680
- dim: row.dim,
681
- };
682
- }
683
- export function buildFullscreenChatRenderLines({ availableCols, availableRows, viewport, composerLines, isProcessing, spinnerGlyph, spinnerVerb, bodySelection, transcriptStatus, }) {
684
- const lines = [];
685
- lines.push({
686
- key: "indicator-top",
687
- text: padToWidth(viewport.hiddenAboveRows > 0 ? `↑ ${viewport.hiddenAboveRows} earlier lines` : "", availableCols),
688
- dim: true,
689
- });
690
- const renderedRows = viewport.rows.map((row, index) => (renderMessageRow(row, availableCols, index, bodySelection ?? null)));
691
- const fillerCount = Math.max(0, viewport.maxVisibleRows - renderedRows.length);
692
- for (let index = 0; index < fillerCount; index += 1) {
693
- lines.push({ key: `filler-${index}`, text: " ".repeat(availableCols) });
694
- }
695
- lines.push(...renderedRows);
696
- lines.push({
697
- key: "indicator-bottom",
698
- text: padToWidth(viewport.hiddenBelowRows > 0 ? `↓ ${viewport.hiddenBelowRows} newer lines` : "", availableCols),
699
- dim: true,
700
- });
701
- lines.push({
702
- key: "processing",
703
- text: padToWidth(transcriptStatus ?? (isProcessing ? `${spinnerGlyph} ${spinnerVerb}...` : ""), availableCols),
704
- color: isProcessing ? theme.command : undefined,
705
- dim: !isProcessing && !transcriptStatus,
706
- });
707
- lines.push(...composerLines);
708
- while (lines.length < availableRows) {
709
- lines.push({
710
- key: `tail-filler-${lines.length}`,
711
- text: " ".repeat(availableCols),
712
- });
713
- }
714
- return lines.slice(0, availableRows);
715
- }
716
- function getMouseOffsetFromComposer(layout, x, y, clampOutside) {
717
- if (layout.rows.length === 0) {
718
- return null;
719
- }
720
- let rowIndex = y - layout.startLine;
721
- if (rowIndex < 0) {
722
- if (!clampOutside)
723
- return null;
724
- rowIndex = 0;
725
- }
726
- if (rowIndex >= layout.rows.length) {
727
- if (!clampOutside)
728
- return null;
729
- rowIndex = layout.rows.length - 1;
730
- }
731
- const row = layout.rows[rowIndex];
732
- if (!row) {
733
- return null;
734
- }
735
- if (row.startOffset === row.endOffset) {
736
- return row.startOffset;
737
- }
738
- const localCol = x - layout.contentStartCol;
739
- if (localCol <= 0) {
740
- return row.startOffset;
741
- }
742
- let usedWidth = 0;
743
- for (const cell of row.cells) {
744
- if (cell.placeholder || cell.width <= 0) {
745
- continue;
746
- }
747
- const midpoint = usedWidth + cell.width / 2;
748
- if (localCol <= midpoint) {
749
- return cell.offsetBefore;
750
- }
751
- usedWidth += cell.width;
752
- if (localCol <= usedWidth) {
753
- return cell.offsetAfter;
754
- }
755
- }
756
- return row.endOffset;
757
- }
758
- function getMousePositionFromBody(rows, x, y, fillerRows) {
759
- const rowIndex = y - 2 - fillerRows;
760
- if (rowIndex < 0 || rowIndex >= rows.length) {
761
- return null;
762
- }
763
- const row = rows[rowIndex];
764
- if (!row || row.kind === "spacer") {
765
- return null;
766
- }
767
- return {
768
- rowIndex,
769
- offset: getDisplayOffsetForText(row.text, x - 1),
770
- };
771
- }
772
113
  export function FullscreenChat({ messages, onSubmit, onClear, isProcessing, goalNames = [], availableRows, availableCols, cursorOriginX = 0, cursorOriginY = 0, }) {
773
114
  const [input, setInput] = useState("");
774
115
  const [cursorOffset, setCursorOffset] = useState(0);
@@ -889,7 +230,7 @@ export function FullscreenChat({ messages, onSubmit, onClear, isProcessing, goal
889
230
  setTimeout(() => setCopyToast(null), 2000);
890
231
  });
891
232
  }, [input]);
892
- const matches = justSelected.current ? [] : getMatchingSuggestions(input, goalNames);
233
+ const matches = justSelected.current ? [] : getSuggestions(input, goalNames);
893
234
  const hasMatches = matches.length > 0;
894
235
  const bashMode = isBashModeInput(input);
895
236
  const normalizedSelection = normalizeSelection(selection);