@undefineds.co/linx 0.3.25 → 0.3.27

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 (362) hide show
  1. package/README.md +4 -3
  2. package/dist/index.js +3 -832
  3. package/dist/index.js.map +1 -1
  4. package/dist/lib/agent-stream-bridge-contract.js +2 -0
  5. package/dist/lib/agent-stream-bridge-contract.js.map +1 -0
  6. package/dist/lib/auto-mode/auth.js +100 -2
  7. package/dist/lib/auto-mode/auth.js.map +1 -1
  8. package/dist/lib/auto-mode/backend-kind.js +13 -0
  9. package/dist/lib/auto-mode/backend-kind.js.map +1 -0
  10. package/dist/lib/auto-mode/display.js +1 -1
  11. package/dist/lib/auto-mode/display.js.map +1 -1
  12. package/dist/lib/auto-mode/format.js +1 -1
  13. package/dist/lib/auto-mode/format.js.map +1 -1
  14. package/dist/lib/auto-mode/hooks/{index.js → registry.js} +1 -1
  15. package/dist/lib/auto-mode/hooks/registry.js.map +1 -0
  16. package/dist/lib/auto-mode/pod-ai.js +1 -14
  17. package/dist/lib/auto-mode/pod-ai.js.map +1 -1
  18. package/dist/lib/auto-mode/pod-approval-store.js +596 -0
  19. package/dist/lib/auto-mode/pod-approval-store.js.map +1 -0
  20. package/dist/lib/auto-mode/pod-approval.js +4 -607
  21. package/dist/lib/auto-mode/pod-approval.js.map +1 -1
  22. package/dist/lib/auto-mode/pod-persistence-builders.js +266 -0
  23. package/dist/lib/auto-mode/pod-persistence-builders.js.map +1 -0
  24. package/dist/lib/auto-mode/pod-persistence.js +1 -281
  25. package/dist/lib/auto-mode/pod-persistence.js.map +1 -1
  26. package/dist/lib/auto-mode/runner.js +41 -378
  27. package/dist/lib/auto-mode/runner.js.map +1 -1
  28. package/dist/lib/auto-mode/runtime.js +25 -0
  29. package/dist/lib/auto-mode/runtime.js.map +1 -0
  30. package/dist/lib/auto-mode/secretary-reaction-window.js +12 -0
  31. package/dist/lib/auto-mode/secretary-reaction-window.js.map +1 -0
  32. package/dist/lib/auto-mode/secretary-runtime-config.js +66 -0
  33. package/dist/lib/auto-mode/secretary-runtime-config.js.map +1 -0
  34. package/dist/lib/auto-mode/secretary.js +2 -64
  35. package/dist/lib/auto-mode/secretary.js.map +1 -1
  36. package/dist/lib/auto-mode/session-log.js +25 -0
  37. package/dist/lib/auto-mode/session-log.js.map +1 -0
  38. package/dist/lib/auto-mode/shell-command.js +172 -0
  39. package/dist/lib/auto-mode/shell-command.js.map +1 -0
  40. package/dist/lib/auto-mode-command.js +2 -1
  41. package/dist/lib/auto-mode-command.js.map +1 -1
  42. package/dist/lib/backend-command-router-contract.js +2 -0
  43. package/dist/lib/backend-command-router-contract.js.map +1 -0
  44. package/dist/lib/{pi-adapter/backend-credentials.js → backend-credentials.js} +8 -8
  45. package/dist/lib/backend-credentials.js.map +1 -0
  46. package/dist/lib/linx-ai-connect-command.js +201 -0
  47. package/dist/lib/linx-ai-connect-command.js.map +1 -0
  48. package/dist/lib/linx-assistant-message-rendering.js +33 -0
  49. package/dist/lib/linx-assistant-message-rendering.js.map +1 -0
  50. package/dist/lib/linx-auto-command-routing.js +53 -0
  51. package/dist/lib/linx-auto-command-routing.js.map +1 -0
  52. package/dist/lib/linx-auto-editor-indicator-host.js +15 -0
  53. package/dist/lib/linx-auto-editor-indicator-host.js.map +1 -0
  54. package/dist/lib/linx-auto-editor-indicator.js +56 -0
  55. package/dist/lib/linx-auto-editor-indicator.js.map +1 -0
  56. package/dist/lib/linx-auto-mode-cli-admission.js +16 -0
  57. package/dist/lib/linx-auto-mode-cli-admission.js.map +1 -0
  58. package/dist/lib/linx-backend-command-router.js +64 -0
  59. package/dist/lib/linx-backend-command-router.js.map +1 -0
  60. package/dist/lib/linx-backend-event-source.js +32 -0
  61. package/dist/lib/linx-backend-event-source.js.map +1 -0
  62. package/dist/lib/linx-chat-completion-projection.js +276 -0
  63. package/dist/lib/linx-chat-completion-projection.js.map +1 -0
  64. package/dist/lib/linx-cloud-errors.js +1 -0
  65. package/dist/lib/linx-cloud-errors.js.map +1 -1
  66. package/dist/lib/linx-cloud-models.js +75 -0
  67. package/dist/lib/linx-cloud-models.js.map +1 -0
  68. package/dist/lib/linx-cloud-runtime-auth.js +146 -0
  69. package/dist/lib/linx-cloud-runtime-auth.js.map +1 -0
  70. package/dist/lib/linx-cloud-runtime-coordinator.js +102 -0
  71. package/dist/lib/linx-cloud-runtime-coordinator.js.map +1 -0
  72. package/dist/lib/linx-codex-plugin-command.js +56 -0
  73. package/dist/lib/linx-codex-plugin-command.js.map +1 -0
  74. package/dist/lib/linx-command-autocomplete.js +123 -0
  75. package/dist/lib/linx-command-autocomplete.js.map +1 -0
  76. package/dist/lib/linx-completion-backend.js +2 -0
  77. package/dist/lib/linx-completion-backend.js.map +1 -0
  78. package/dist/lib/linx-config-command.js +12 -0
  79. package/dist/lib/linx-config-command.js.map +1 -0
  80. package/dist/lib/linx-editor-component-router.js +83 -0
  81. package/dist/lib/linx-editor-component-router.js.map +1 -0
  82. package/dist/lib/linx-extension-ui-context-router.js +43 -0
  83. package/dist/lib/linx-extension-ui-context-router.js.map +1 -0
  84. package/dist/lib/linx-external-open-host.js +8 -0
  85. package/dist/lib/linx-external-open-host.js.map +1 -0
  86. package/dist/lib/linx-external-url.js +16 -0
  87. package/dist/lib/linx-external-url.js.map +1 -0
  88. package/dist/lib/linx-footer-patch.js +52 -0
  89. package/dist/lib/linx-footer-patch.js.map +1 -0
  90. package/dist/lib/linx-input-command-routing.js +65 -0
  91. package/dist/lib/linx-input-command-routing.js.map +1 -0
  92. package/dist/lib/linx-interactive-auth-state-host.js +50 -0
  93. package/dist/lib/linx-interactive-auth-state-host.js.map +1 -0
  94. package/dist/lib/linx-interactive-autocomplete-host.js +32 -0
  95. package/dist/lib/linx-interactive-autocomplete-host.js.map +1 -0
  96. package/dist/lib/linx-interactive-bootstrap.js +66 -0
  97. package/dist/lib/linx-interactive-bootstrap.js.map +1 -0
  98. package/dist/lib/linx-interactive-branding.js +24 -0
  99. package/dist/lib/linx-interactive-branding.js.map +1 -0
  100. package/dist/lib/linx-interactive-chat-text-host.js +16 -0
  101. package/dist/lib/linx-interactive-chat-text-host.js.map +1 -0
  102. package/dist/lib/linx-interactive-command-routing-host.js +31 -0
  103. package/dist/lib/linx-interactive-command-routing-host.js.map +1 -0
  104. package/dist/lib/linx-interactive-command-routing.js +75 -0
  105. package/dist/lib/linx-interactive-command-routing.js.map +1 -0
  106. package/dist/lib/linx-interactive-command-surface.js +16 -0
  107. package/dist/lib/linx-interactive-command-surface.js.map +1 -0
  108. package/dist/lib/linx-interactive-editor-text-host.js +16 -0
  109. package/dist/lib/linx-interactive-editor-text-host.js.map +1 -0
  110. package/dist/lib/linx-interactive-error-display.js +8 -0
  111. package/dist/lib/linx-interactive-error-display.js.map +1 -0
  112. package/dist/lib/linx-interactive-event-router.js +91 -0
  113. package/dist/lib/linx-interactive-event-router.js.map +1 -0
  114. package/dist/lib/linx-interactive-extension-input-host.js +7 -0
  115. package/dist/lib/linx-interactive-extension-input-host.js.map +1 -0
  116. package/dist/lib/linx-interactive-extension-selector-host.js +12 -0
  117. package/dist/lib/linx-interactive-extension-selector-host.js.map +1 -0
  118. package/dist/lib/linx-interactive-header-host.js +14 -0
  119. package/dist/lib/linx-interactive-header-host.js.map +1 -0
  120. package/dist/lib/linx-interactive-lifecycle-host.js +4 -0
  121. package/dist/lib/linx-interactive-lifecycle-host.js.map +1 -0
  122. package/dist/lib/linx-interactive-login-ui-router.js +81 -0
  123. package/dist/lib/linx-interactive-login-ui-router.js.map +1 -0
  124. package/dist/lib/linx-interactive-model-registry-host.js +14 -0
  125. package/dist/lib/linx-interactive-model-registry-host.js.map +1 -0
  126. package/dist/lib/linx-interactive-post-init.js +60 -0
  127. package/dist/lib/linx-interactive-post-init.js.map +1 -0
  128. package/dist/lib/linx-interactive-provider-count-host.js +4 -0
  129. package/dist/lib/linx-interactive-provider-count-host.js.map +1 -0
  130. package/dist/lib/linx-interactive-run-router.js +43 -0
  131. package/dist/lib/linx-interactive-run-router.js.map +1 -0
  132. package/dist/lib/linx-interactive-runtime-host.js +113 -0
  133. package/dist/lib/linx-interactive-runtime-host.js.map +1 -0
  134. package/dist/lib/linx-interactive-selector-host.js +12 -0
  135. package/dist/lib/linx-interactive-selector-host.js.map +1 -0
  136. package/dist/lib/linx-interactive-shell-state.js +215 -0
  137. package/dist/lib/linx-interactive-shell-state.js.map +1 -0
  138. package/dist/lib/linx-interactive-status-display.js +9 -0
  139. package/dist/lib/linx-interactive-status-display.js.map +1 -0
  140. package/dist/lib/linx-interactive-stop-router.js +85 -0
  141. package/dist/lib/linx-interactive-stop-router.js.map +1 -0
  142. package/dist/lib/linx-interactive-streaming-message-host.js +11 -0
  143. package/dist/lib/linx-interactive-streaming-message-host.js.map +1 -0
  144. package/dist/lib/linx-interactive-submit-router.js +63 -0
  145. package/dist/lib/linx-interactive-submit-router.js.map +1 -0
  146. package/dist/lib/linx-interactive-update-router.js +78 -0
  147. package/dist/lib/linx-interactive-update-router.js.map +1 -0
  148. package/dist/lib/linx-interactive-update-state-host.js +43 -0
  149. package/dist/lib/linx-interactive-update-state-host.js.map +1 -0
  150. package/dist/lib/linx-interactive-warning-display.js +4 -0
  151. package/dist/lib/linx-interactive-warning-display.js.map +1 -0
  152. package/dist/lib/linx-interrupt-control-host.js +22 -0
  153. package/dist/lib/linx-interrupt-control-host.js.map +1 -0
  154. package/dist/lib/linx-interrupt-control.js +96 -0
  155. package/dist/lib/linx-interrupt-control.js.map +1 -0
  156. package/dist/lib/linx-login-flow.js +566 -0
  157. package/dist/lib/linx-login-flow.js.map +1 -0
  158. package/dist/lib/linx-models-command.js +71 -0
  159. package/dist/lib/linx-models-command.js.map +1 -0
  160. package/dist/lib/linx-package-command.js +117 -0
  161. package/dist/lib/linx-package-command.js.map +1 -0
  162. package/dist/lib/linx-peer-command-routing.js +20 -0
  163. package/dist/lib/linx-peer-command-routing.js.map +1 -0
  164. package/dist/lib/linx-pi-cli-command.js +121 -0
  165. package/dist/lib/linx-pi-cli-command.js.map +1 -0
  166. package/dist/lib/linx-pi-completion-events.js +101 -0
  167. package/dist/lib/linx-pi-completion-events.js.map +1 -0
  168. package/dist/lib/linx-pi-normalized-event-stream.js +41 -0
  169. package/dist/lib/linx-pi-normalized-event-stream.js.map +1 -0
  170. package/dist/lib/linx-pi-resume-cli-admission.js +21 -0
  171. package/dist/lib/linx-pi-resume-cli-admission.js.map +1 -0
  172. package/dist/lib/linx-pi-runtime-execution.js +67 -0
  173. package/dist/lib/linx-pi-runtime-execution.js.map +1 -0
  174. package/dist/lib/linx-pi-startup-control.js +49 -0
  175. package/dist/lib/linx-pi-startup-control.js.map +1 -0
  176. package/dist/lib/linx-pi-startup-plan.js +103 -0
  177. package/dist/lib/linx-pi-startup-plan.js.map +1 -0
  178. package/dist/lib/linx-pi-stream-errors.js +10 -0
  179. package/dist/lib/linx-pi-stream-errors.js.map +1 -0
  180. package/dist/lib/linx-pod-backed-extension-ui.js +29 -0
  181. package/dist/lib/linx-pod-backed-extension-ui.js.map +1 -0
  182. package/dist/lib/linx-pod-data-session-factory.js +19 -0
  183. package/dist/lib/linx-pod-data-session-factory.js.map +1 -0
  184. package/dist/lib/linx-pod-mirror-runtime-host.js +50 -0
  185. package/dist/lib/linx-pod-mirror-runtime-host.js.map +1 -0
  186. package/dist/lib/linx-pod-mirror-sync-cli-admission.js +18 -0
  187. package/dist/lib/linx-pod-mirror-sync-cli-admission.js.map +1 -0
  188. package/dist/lib/linx-pod-mirror-sync-command.js +30 -0
  189. package/dist/lib/linx-pod-mirror-sync-command.js.map +1 -0
  190. package/dist/lib/{pi-adapter/sync-recovery.js → linx-pod-mirror-sync-recovery.js} +13 -13
  191. package/dist/lib/linx-pod-mirror-sync-recovery.js.map +1 -0
  192. package/dist/lib/{pi-adapter/pod-mirror.js → linx-pod-mirror.js} +63 -40
  193. package/dist/lib/linx-pod-mirror.js.map +1 -0
  194. package/dist/lib/linx-restored-auto-startup.js +21 -0
  195. package/dist/lib/linx-restored-auto-startup.js.map +1 -0
  196. package/dist/lib/linx-resume-output.js +209 -0
  197. package/dist/lib/linx-resume-output.js.map +1 -0
  198. package/dist/lib/linx-retired-command.js +22 -0
  199. package/dist/lib/linx-retired-command.js.map +1 -0
  200. package/dist/lib/linx-rewind-command.js +209 -0
  201. package/dist/lib/linx-rewind-command.js.map +1 -0
  202. package/dist/lib/linx-runtime-adapter-contract.js +2 -0
  203. package/dist/lib/linx-runtime-adapter-contract.js.map +1 -0
  204. package/dist/lib/linx-runtime-adapter-defaults.js +17 -0
  205. package/dist/lib/linx-runtime-adapter-defaults.js.map +1 -0
  206. package/dist/lib/linx-runtime-adapter-dependencies.js +2 -0
  207. package/dist/lib/linx-runtime-adapter-dependencies.js.map +1 -0
  208. package/dist/lib/linx-runtime-agent-session.js +130 -0
  209. package/dist/lib/linx-runtime-agent-session.js.map +1 -0
  210. package/dist/lib/linx-runtime-auth.js +5 -0
  211. package/dist/lib/linx-runtime-auth.js.map +1 -0
  212. package/dist/lib/linx-runtime-backend-composition.js +73 -0
  213. package/dist/lib/linx-runtime-backend-composition.js.map +1 -0
  214. package/dist/lib/linx-runtime-coding-tools.js +58 -0
  215. package/dist/lib/linx-runtime-coding-tools.js.map +1 -0
  216. package/dist/lib/linx-runtime-completion-backend.js +27 -0
  217. package/dist/lib/linx-runtime-completion-backend.js.map +1 -0
  218. package/dist/lib/linx-runtime-oauth-provider.js +57 -0
  219. package/dist/lib/linx-runtime-oauth-provider.js.map +1 -0
  220. package/dist/lib/linx-runtime-provider-registration.js +33 -0
  221. package/dist/lib/linx-runtime-provider-registration.js.map +1 -0
  222. package/dist/lib/linx-runtime-resources.js +167 -0
  223. package/dist/lib/linx-runtime-resources.js.map +1 -0
  224. package/dist/lib/linx-runtime-system-prompt.js +27 -0
  225. package/dist/lib/linx-runtime-system-prompt.js.map +1 -0
  226. package/dist/lib/linx-runtime-thinking.js +21 -0
  227. package/dist/lib/linx-runtime-thinking.js.map +1 -0
  228. package/dist/lib/linx-selector-choice.js +38 -0
  229. package/dist/lib/linx-selector-choice.js.map +1 -0
  230. package/dist/lib/linx-self-update.js +113 -0
  231. package/dist/lib/linx-self-update.js.map +1 -0
  232. package/dist/lib/linx-session-command-routing-host.js +24 -0
  233. package/dist/lib/linx-session-command-routing-host.js.map +1 -0
  234. package/dist/lib/linx-session-command-routing.js +68 -0
  235. package/dist/lib/linx-session-command-routing.js.map +1 -0
  236. package/dist/lib/linx-session-cwd-router.js +15 -0
  237. package/dist/lib/linx-session-cwd-router.js.map +1 -0
  238. package/dist/lib/linx-session-history.js +388 -0
  239. package/dist/lib/linx-session-history.js.map +1 -0
  240. package/dist/lib/{pi-adapter/session.js → linx-session-manager.js} +94 -46
  241. package/dist/lib/linx-session-manager.js.map +1 -0
  242. package/dist/lib/linx-session-metadata.js +55 -0
  243. package/dist/lib/linx-session-metadata.js.map +1 -0
  244. package/dist/lib/linx-session-selector-ui.js +32 -0
  245. package/dist/lib/linx-session-selector-ui.js.map +1 -0
  246. package/dist/lib/linx-session-thinking-capability-router.js +55 -0
  247. package/dist/lib/linx-session-thinking-capability-router.js.map +1 -0
  248. package/dist/lib/linx-session-work-control.js +163 -0
  249. package/dist/lib/linx-session-work-control.js.map +1 -0
  250. package/dist/lib/linx-shell-command-executor.js +41 -0
  251. package/dist/lib/linx-shell-command-executor.js.map +1 -0
  252. package/dist/lib/linx-shell-command-router.js +151 -0
  253. package/dist/lib/linx-shell-command-router.js.map +1 -0
  254. package/dist/lib/{pi-adapter/control-state.js → linx-startup-control-state.js} +6 -6
  255. package/dist/lib/linx-startup-control-state.js.map +1 -0
  256. package/dist/lib/linx-startup-login-policy.js +48 -0
  257. package/dist/lib/linx-startup-login-policy.js.map +1 -0
  258. package/dist/lib/linx-status-line-command.js +382 -0
  259. package/dist/lib/linx-status-line-command.js.map +1 -0
  260. package/dist/lib/{status-line-command.js → linx-status-line-config-command.js} +2 -12
  261. package/dist/lib/linx-status-line-config-command.js.map +1 -0
  262. package/dist/lib/linx-status-line.js +12 -4
  263. package/dist/lib/linx-status-line.js.map +1 -1
  264. package/dist/lib/linx-stream-abort.js +12 -0
  265. package/dist/lib/linx-stream-abort.js.map +1 -0
  266. package/dist/lib/linx-stream-error-formatting.js +54 -0
  267. package/dist/lib/linx-stream-error-formatting.js.map +1 -0
  268. package/dist/lib/linx-submitted-user-message-recording.js +16 -0
  269. package/dist/lib/linx-submitted-user-message-recording.js.map +1 -0
  270. package/dist/lib/linx-symphony-interactive-command.js +493 -0
  271. package/dist/lib/linx-symphony-interactive-command.js.map +1 -0
  272. package/dist/lib/linx-terminal-title-router.js +49 -0
  273. package/dist/lib/linx-terminal-title-router.js.map +1 -0
  274. package/dist/lib/{pi-adapter/theme.js → linx-theme.js} +2 -2
  275. package/dist/lib/linx-theme.js.map +1 -0
  276. package/dist/lib/linx-top-level-command-admission.js +27 -0
  277. package/dist/lib/linx-top-level-command-admission.js.map +1 -0
  278. package/dist/lib/linx-update-notification.js +176 -0
  279. package/dist/lib/linx-update-notification.js.map +1 -0
  280. package/dist/lib/linx-welcome-header.js +148 -0
  281. package/dist/lib/linx-welcome-header.js.map +1 -0
  282. package/dist/lib/linx-workspace-command.js +45 -0
  283. package/dist/lib/linx-workspace-command.js.map +1 -0
  284. package/dist/lib/native-backend-command-router.js +25 -0
  285. package/dist/lib/native-backend-command-router.js.map +1 -0
  286. package/dist/lib/native-backend-proxy.js +2 -0
  287. package/dist/lib/native-backend-proxy.js.map +1 -0
  288. package/dist/lib/native-backend-stream-backend.js +15 -0
  289. package/dist/lib/native-backend-stream-backend.js.map +1 -0
  290. package/dist/lib/oidc-auth.js +2 -4
  291. package/dist/lib/oidc-auth.js.map +1 -1
  292. package/dist/lib/pi-adapter/runtime.js +32 -841
  293. package/dist/lib/pi-adapter/runtime.js.map +1 -1
  294. package/dist/lib/pi-adapter/stream.js +17 -516
  295. package/dist/lib/pi-adapter/stream.js.map +1 -1
  296. package/dist/lib/{pi-adapter/pod-approval.js → pod-backed-extension-ui-context.js} +2 -2
  297. package/dist/lib/pod-backed-extension-ui-context.js.map +1 -0
  298. package/dist/lib/pod-chat-store-runtime.js +38 -0
  299. package/dist/lib/pod-chat-store-runtime.js.map +1 -0
  300. package/dist/lib/pod-chat-store.js +15 -65
  301. package/dist/lib/pod-chat-store.js.map +1 -1
  302. package/dist/lib/{pi-adapter/pod-mirror-mapping.js → pod-mirror-mapping.js} +8 -18
  303. package/dist/lib/pod-mirror-mapping.js.map +1 -0
  304. package/dist/lib/{pi-adapter/pod-native.js → pod-native.js} +1 -1
  305. package/dist/lib/pod-native.js.map +1 -0
  306. package/dist/lib/pod-status-output.js.map +1 -0
  307. package/dist/lib/{pi-adapter/auto-input-controller.js → secretary-auto-input-controller.js} +62 -77
  308. package/dist/lib/secretary-auto-input-controller.js.map +1 -0
  309. package/dist/lib/{pi-adapter/session-control.js → session-control.js} +80 -29
  310. package/dist/lib/session-control.js.map +1 -0
  311. package/dist/lib/shell-lifecycle.js +179 -0
  312. package/dist/lib/shell-lifecycle.js.map +1 -0
  313. package/dist/lib/solid-local-store.js +3 -3
  314. package/dist/lib/solid-local-store.js.map +1 -1
  315. package/dist/lib/symphony/pod-projection.js +1 -31
  316. package/dist/lib/symphony/pod-projection.js.map +1 -1
  317. package/dist/lib/{symphony-command.js → symphony/run.js} +11 -16
  318. package/dist/lib/symphony/run.js.map +1 -0
  319. package/dist/lib/symphony/runtime.js +30 -0
  320. package/dist/lib/symphony/runtime.js.map +1 -0
  321. package/dist/lib/symphony/status.js +242 -0
  322. package/dist/lib/symphony/status.js.map +1 -0
  323. package/dist/linx-cli-app.js +70 -0
  324. package/dist/linx-cli-app.js.map +1 -0
  325. package/dist/linx-cli-runtime-adapter-factory.js +12 -0
  326. package/dist/linx-cli-runtime-adapter-factory.js.map +1 -0
  327. package/dist/plugins/linx-symphony-codex/.codex-plugin/plugin.json +1 -1
  328. package/package.json +1 -1
  329. package/dist/lib/auto-mode/hooks/index.js.map +0 -1
  330. package/dist/lib/auto-mode/index.js +0 -10
  331. package/dist/lib/auto-mode/index.js.map +0 -1
  332. package/dist/lib/codex-plugin/index.js +0 -5
  333. package/dist/lib/codex-plugin/index.js.map +0 -1
  334. package/dist/lib/pi-adapter/auth.js +0 -68
  335. package/dist/lib/pi-adapter/auth.js.map +0 -1
  336. package/dist/lib/pi-adapter/auto-input-controller.js.map +0 -1
  337. package/dist/lib/pi-adapter/backend-command.js +0 -2
  338. package/dist/lib/pi-adapter/backend-command.js.map +0 -1
  339. package/dist/lib/pi-adapter/backend-credentials.js.map +0 -1
  340. package/dist/lib/pi-adapter/branding.js +0 -1188
  341. package/dist/lib/pi-adapter/branding.js.map +0 -1
  342. package/dist/lib/pi-adapter/control-state.js.map +0 -1
  343. package/dist/lib/pi-adapter/index.js +0 -4
  344. package/dist/lib/pi-adapter/index.js.map +0 -1
  345. package/dist/lib/pi-adapter/interactive.js +0 -3186
  346. package/dist/lib/pi-adapter/interactive.js.map +0 -1
  347. package/dist/lib/pi-adapter/pod-approval.js.map +0 -1
  348. package/dist/lib/pi-adapter/pod-mirror-mapping.js.map +0 -1
  349. package/dist/lib/pi-adapter/pod-mirror.js.map +0 -1
  350. package/dist/lib/pi-adapter/pod-native.js.map +0 -1
  351. package/dist/lib/pi-adapter/pod-status-output.js.map +0 -1
  352. package/dist/lib/pi-adapter/pod-tools.js +0 -140
  353. package/dist/lib/pi-adapter/pod-tools.js.map +0 -1
  354. package/dist/lib/pi-adapter/session-control.js.map +0 -1
  355. package/dist/lib/pi-adapter/session.js.map +0 -1
  356. package/dist/lib/pi-adapter/sync-recovery.js.map +0 -1
  357. package/dist/lib/pi-adapter/theme.js.map +0 -1
  358. package/dist/lib/pi-adapter/web-fetch.js +0 -170
  359. package/dist/lib/pi-adapter/web-fetch.js.map +0 -1
  360. package/dist/lib/status-line-command.js.map +0 -1
  361. package/dist/lib/symphony-command.js.map +0 -1
  362. /package/dist/lib/{pi-adapter/pod-status-output.js → pod-status-output.js} +0 -0
@@ -0,0 +1,388 @@
1
+ export function captureLinxSessionRetryTurn(source) {
2
+ const session = resolveLinxSessionHistorySession(source);
3
+ return captureLinxRetryTurnFromSessionManager(session?.sessionManager, session?.state?.messages);
4
+ }
5
+ export function restoreLinxSessionHistoryBranch(source, leafId) {
6
+ const session = resolveLinxSessionHistorySession(source);
7
+ restoreSessionHistoryBranchWithManager(session?.sessionManager, leafId, session);
8
+ }
9
+ function captureLinxRetryTurnFromSessionManager(sessionManager, fallbackMessages) {
10
+ const leafId = typeof sessionManager?.getLeafId === 'function'
11
+ ? sessionManager.getLeafId()
12
+ : undefined;
13
+ const leafEntry = leafId && typeof sessionManager?.getEntry === 'function'
14
+ ? sessionManager.getEntry(leafId)
15
+ : undefined;
16
+ const leafMessage = leafEntry?.type === 'message' ? leafEntry.message : undefined;
17
+ const userEntry = findLastUserMessageEntry(sessionManager, leafId);
18
+ const promptText = extractUserMessageText(userEntry?.message)
19
+ ?? extractUserMessageText(leafMessage)
20
+ ?? findLastUserMessageText(fallbackMessages);
21
+ return {
22
+ continueFromId: userEntry?.id ?? (leafMessage?.role === 'user' ? leafId : undefined),
23
+ promptText,
24
+ promptParentId: userEntry?.parentId ?? (leafMessage?.role === 'user' ? normalizeParentId(leafEntry.parentId) : undefined),
25
+ };
26
+ }
27
+ function restoreSessionHistoryBranchWithManager(sessionManager, leafId, session) {
28
+ if (!sessionManager) {
29
+ return;
30
+ }
31
+ if (typeof leafId === 'string' && leafId) {
32
+ sessionManager.branch?.(leafId);
33
+ }
34
+ else if (leafId === null) {
35
+ sessionManager.resetLeaf?.();
36
+ }
37
+ const context = sessionManager.buildSessionContext?.();
38
+ if (context?.messages && session?.agent?.state) {
39
+ session.agent.state.messages = context.messages;
40
+ }
41
+ }
42
+ function findLastUserMessageText(messages) {
43
+ if (!Array.isArray(messages)) {
44
+ return undefined;
45
+ }
46
+ for (let index = messages.length - 1; index >= 0; index -= 1) {
47
+ const text = extractUserMessageText(messages[index]);
48
+ if (text) {
49
+ return text;
50
+ }
51
+ }
52
+ return undefined;
53
+ }
54
+ function findLastUserMessageEntry(sessionManager, leafId) {
55
+ const branch = typeof sessionManager?.getBranch === 'function' && typeof leafId === 'string'
56
+ ? sessionManager.getBranch(leafId)
57
+ : undefined;
58
+ const entries = Array.isArray(branch) && branch.length > 0
59
+ ? branch
60
+ : typeof sessionManager?.getEntries === 'function'
61
+ ? sessionManager.getEntries()
62
+ : [];
63
+ if (!Array.isArray(entries)) {
64
+ return undefined;
65
+ }
66
+ for (let index = entries.length - 1; index >= 0; index -= 1) {
67
+ const entry = entries[index];
68
+ if (isRecord(entry)
69
+ && entry.type === 'message'
70
+ && typeof entry.id === 'string'
71
+ && isRecord(entry.message)
72
+ && entry.message.role === 'user') {
73
+ return {
74
+ id: entry.id,
75
+ parentId: normalizeParentId(entry.parentId),
76
+ message: entry.message,
77
+ };
78
+ }
79
+ }
80
+ return undefined;
81
+ }
82
+ function normalizeParentId(parentId) {
83
+ if (typeof parentId === 'string') {
84
+ return parentId;
85
+ }
86
+ if (parentId === null) {
87
+ return null;
88
+ }
89
+ return undefined;
90
+ }
91
+ function extractUserMessageText(message) {
92
+ if (!isRecord(message) || message.role !== 'user') {
93
+ return undefined;
94
+ }
95
+ const content = message.content;
96
+ if (typeof content === 'string') {
97
+ return content.trim() || undefined;
98
+ }
99
+ if (!Array.isArray(content)) {
100
+ return undefined;
101
+ }
102
+ const text = content
103
+ .filter((entry) => (isRecord(entry) && entry.type === 'text' && typeof entry.text === 'string'))
104
+ .map((entry) => entry.text)
105
+ .join('')
106
+ .trim();
107
+ return text || undefined;
108
+ }
109
+ function isRecord(value) {
110
+ return Boolean(value) && typeof value === 'object';
111
+ }
112
+ export function hasLinxSessionHistory(source) {
113
+ return Boolean(resolveLinxSessionHistoryManager(source));
114
+ }
115
+ export function getLinxActiveSessionHistoryEntries(source) {
116
+ const sessionManager = resolveLinxSessionHistoryManager(source);
117
+ return sessionManager ? getActiveSessionHistoryEntriesWithManager(sessionManager) : [];
118
+ }
119
+ export function getLinxActiveSessionAgentMessages(source) {
120
+ const messages = resolveLinxSessionHistorySession(source)?.agent?.state?.messages;
121
+ return Array.isArray(messages) ? messages : [];
122
+ }
123
+ export function collectLinxRewindUserMessages(source) {
124
+ const sessionManager = resolveLinxSessionHistoryManager(source);
125
+ return sessionManager ? collectRewindUserMessagesWithManager(sessionManager) : [];
126
+ }
127
+ export function assertLinxRewindUserEntryTarget(source, entryId) {
128
+ const sessionManager = resolveLinxSessionHistoryManager(source);
129
+ if (!sessionManager) {
130
+ throw new Error('Cannot rewind: selected message is not a user turn in the active branch.');
131
+ }
132
+ assertRewindUserEntryTargetWithManager(sessionManager, entryId);
133
+ }
134
+ function getActiveSessionHistoryEntriesWithManager(sessionManager) {
135
+ return getActiveSessionBranch(sessionManager);
136
+ }
137
+ function collectRewindUserMessagesWithManager(sessionManager) {
138
+ return getActiveSessionHistoryEntriesWithManager(sessionManager)
139
+ .filter((entry) => entry?.type === 'message' && entry.message?.role === 'user')
140
+ .map((entry) => ({
141
+ id: String(entry.id),
142
+ text: extractRewindMessageText(entry.message?.content) || '(empty user message)',
143
+ }));
144
+ }
145
+ function assertRewindUserEntryTargetWithManager(sessionManager, entryId) {
146
+ const entry = resolveRewindUserEntry(sessionManager, entryId);
147
+ if (!entry) {
148
+ throw new Error('Cannot rewind: selected message is not a user turn in the active branch.');
149
+ }
150
+ }
151
+ export function rewindLinxSessionHistoryByTurns(source, turns) {
152
+ const sessionManager = resolveLinxSessionHistoryManager(source);
153
+ return sessionManager
154
+ ? rewindSessionHistoryByTurnsWithManager(sessionManager, turns, resolveLinxSessionHistorySession(source))
155
+ : undefined;
156
+ }
157
+ export function rewindLinxSessionHistoryBeforeUserEntry(source, entryId) {
158
+ const sessionManager = resolveLinxSessionHistoryManager(source);
159
+ return sessionManager
160
+ ? rewindSessionHistoryBeforeUserEntryWithManager(sessionManager, entryId, resolveLinxSessionHistorySession(source))
161
+ : undefined;
162
+ }
163
+ function rewindSessionHistoryByTurnsWithManager(sessionManager, turns, session) {
164
+ const previousState = captureLinxRewindSessionState(sessionManager);
165
+ const previousBranch = getActiveSessionBranch(sessionManager);
166
+ const result = rewindSessionHistoryByTurns(sessionManager, turns);
167
+ if (result.rewound === 0) {
168
+ return undefined;
169
+ }
170
+ const cleanResult = materializeCleanRewindSession(sessionManager, result.targetLeafId, previousState);
171
+ syncAgentStateFromSessionManager(session, sessionManager);
172
+ return {
173
+ rewound: result.rewound,
174
+ targetLeafId: result.targetLeafId,
175
+ previousState,
176
+ cleanResult,
177
+ abandonedEntries: collectAbandonedRewindEntries(previousBranch, result.targetLeafId),
178
+ remainingMessages: countActiveAgentMessages(session),
179
+ };
180
+ }
181
+ function rewindSessionHistoryBeforeUserEntryWithManager(sessionManager, entryId, session) {
182
+ const entry = resolveRewindUserEntry(sessionManager, entryId);
183
+ if (!entry) {
184
+ throw new Error('Cannot rewind: selected message is not a user turn in the active branch.');
185
+ }
186
+ const previousState = captureLinxRewindSessionState(sessionManager);
187
+ const previousBranch = getActiveSessionBranch(sessionManager);
188
+ const targetLeafId = typeof entry.parentId === 'string' && entry.parentId ? entry.parentId : null;
189
+ moveSessionManagerLeaf(sessionManager, targetLeafId);
190
+ const cleanResult = materializeCleanRewindSession(sessionManager, targetLeafId, previousState);
191
+ syncAgentStateFromSessionManager(session, sessionManager);
192
+ return {
193
+ rewound: 1,
194
+ targetLeafId,
195
+ previousState,
196
+ cleanResult,
197
+ abandonedEntries: collectAbandonedRewindEntries(previousBranch, targetLeafId),
198
+ remainingMessages: countActiveAgentMessages(session),
199
+ };
200
+ }
201
+ export function describeLinxRewindTarget(targetLeafId, cleanResult) {
202
+ const target = targetLeafId ? `leaf ${targetLeafId}` : 'session root';
203
+ if (!cleanResult.materialized) {
204
+ return target;
205
+ }
206
+ if (cleanResult.sessionChanged && cleanResult.id) {
207
+ return `${target} in clean session ${cleanResult.id}`;
208
+ }
209
+ return `${target} in clean session`;
210
+ }
211
+ function resolveLinxSessionHistorySession(source) {
212
+ return source.session ?? source.interactive?.session ?? source.runtime?.session;
213
+ }
214
+ function resolveLinxSessionHistoryManager(source) {
215
+ return source.session?.sessionManager
216
+ ?? source.interactive?.session?.sessionManager
217
+ ?? source.interactive?.sessionManager
218
+ ?? source.runtime?.session?.sessionManager
219
+ ?? source.runtime?.sessionManager;
220
+ }
221
+ function resolveRewindUserEntry(sessionManager, entryId) {
222
+ const entry = typeof sessionManager?.getEntry === 'function'
223
+ ? sessionManager.getEntry(entryId)
224
+ : getActiveSessionBranch(sessionManager).find((candidate) => candidate?.id === entryId);
225
+ return entry?.type === 'message' && entry.message?.role === 'user' ? entry : undefined;
226
+ }
227
+ function rewindSessionHistoryByTurns(sessionManager, turns) {
228
+ let rewound = 0;
229
+ let targetLeafId = resolveSessionManagerLeafId(sessionManager);
230
+ for (; rewound < turns; rewound += 1) {
231
+ const branch = getActiveSessionBranch(sessionManager);
232
+ const latestUserEntry = findLatestUserMessageEntry(branch);
233
+ if (!latestUserEntry) {
234
+ break;
235
+ }
236
+ targetLeafId = typeof latestUserEntry.parentId === 'string' && latestUserEntry.parentId
237
+ ? latestUserEntry.parentId
238
+ : null;
239
+ moveSessionManagerLeaf(sessionManager, targetLeafId);
240
+ }
241
+ return { rewound, targetLeafId };
242
+ }
243
+ function resolveSessionManagerLeafId(sessionManager) {
244
+ return typeof sessionManager?.getLeafId === 'function'
245
+ ? sessionManager.getLeafId()
246
+ : null;
247
+ }
248
+ function getActiveSessionBranch(sessionManager) {
249
+ const hasLeafApi = typeof sessionManager?.getLeafId === 'function';
250
+ const leafId = hasLeafApi ? sessionManager.getLeafId() : undefined;
251
+ if (hasLeafApi && leafId === null) {
252
+ return [];
253
+ }
254
+ if (typeof sessionManager?.getBranch === 'function') {
255
+ const branch = hasLeafApi ? sessionManager.getBranch(leafId) : sessionManager.getBranch();
256
+ return Array.isArray(branch) ? branch : [];
257
+ }
258
+ const entries = typeof sessionManager?.getEntries === 'function' ? sessionManager.getEntries() : [];
259
+ return Array.isArray(entries) ? entries : [];
260
+ }
261
+ function findLatestUserMessageEntry(branch) {
262
+ for (let index = branch.length - 1; index >= 0; index -= 1) {
263
+ const entry = branch[index];
264
+ if (entry?.type === 'message' && entry.message?.role === 'user') {
265
+ return entry;
266
+ }
267
+ }
268
+ return null;
269
+ }
270
+ function moveSessionManagerLeaf(sessionManager, leafId) {
271
+ if (leafId) {
272
+ sessionManager.branch?.(leafId);
273
+ return;
274
+ }
275
+ sessionManager.resetLeaf?.();
276
+ }
277
+ function captureLinxRewindSessionState(sessionManager) {
278
+ return {
279
+ id: normalizeRewindString(sessionManager?.getSessionId?.()),
280
+ file: normalizeRewindString(sessionManager?.getSessionFile?.()),
281
+ createdAt: resolveRewindSessionCreatedAt(sessionManager),
282
+ };
283
+ }
284
+ function materializeCleanRewindSession(sessionManager, targetLeafId, previousState) {
285
+ const beforeId = previousState.id;
286
+ let materialized = false;
287
+ let warning;
288
+ try {
289
+ if (targetLeafId && typeof sessionManager?.createBranchedSession === 'function') {
290
+ sessionManager.createBranchedSession(targetLeafId);
291
+ materialized = true;
292
+ }
293
+ else if (!targetLeafId && typeof sessionManager?.newSession === 'function') {
294
+ sessionManager.newSession(previousState.file ? { parentSession: previousState.file } : undefined);
295
+ materialized = true;
296
+ }
297
+ }
298
+ catch (error) {
299
+ warning = error instanceof Error ? error.message : String(error);
300
+ }
301
+ const id = normalizeRewindString(sessionManager?.getSessionId?.());
302
+ const file = normalizeRewindString(sessionManager?.getSessionFile?.());
303
+ return {
304
+ materialized,
305
+ sessionChanged: Boolean(beforeId && id && beforeId !== id),
306
+ id,
307
+ file,
308
+ ...(warning ? { warning } : {}),
309
+ };
310
+ }
311
+ function collectAbandonedRewindEntries(previousBranch, targetLeafId) {
312
+ if (!Array.isArray(previousBranch) || previousBranch.length === 0) {
313
+ return [];
314
+ }
315
+ if (!targetLeafId) {
316
+ return previousBranch;
317
+ }
318
+ const targetIndex = previousBranch.findIndex((entry) => entry?.id === targetLeafId);
319
+ return targetIndex >= 0 ? previousBranch.slice(targetIndex + 1) : previousBranch;
320
+ }
321
+ function resolveRewindSessionCreatedAt(sessionManager) {
322
+ const headerTimestamp = normalizeRewindString(sessionManager?.getHeader?.()?.timestamp);
323
+ const headerDate = toValidRewindDate(headerTimestamp);
324
+ if (headerDate) {
325
+ return headerDate;
326
+ }
327
+ const entries = Array.isArray(sessionManager?.getEntries?.()) ? sessionManager.getEntries() : [];
328
+ for (const entry of entries) {
329
+ const timestamp = normalizeRewindString(entry?.timestamp);
330
+ const date = toValidRewindDate(timestamp);
331
+ if (date) {
332
+ return date;
333
+ }
334
+ }
335
+ const sessionId = normalizeRewindString(sessionManager?.getSessionId?.());
336
+ return sessionId ? parseRewindDateFromSessionId(sessionId) ?? undefined : undefined;
337
+ }
338
+ function parseRewindDateFromSessionId(sessionId) {
339
+ const prefix = sessionId.replace(/-/g, '').slice(0, 12);
340
+ if (!/^[\da-f]{12}$/i.test(prefix)) {
341
+ return null;
342
+ }
343
+ const millis = Number.parseInt(prefix, 16);
344
+ if (!Number.isFinite(millis) || millis <= 0) {
345
+ return null;
346
+ }
347
+ return toValidRewindDate(millis);
348
+ }
349
+ function toValidRewindDate(value) {
350
+ if (value instanceof Date) {
351
+ return Number.isNaN(value.getTime()) ? null : value;
352
+ }
353
+ if (typeof value === 'number' || typeof value === 'string') {
354
+ const date = new Date(value);
355
+ return Number.isNaN(date.getTime()) ? null : date;
356
+ }
357
+ return null;
358
+ }
359
+ function normalizeRewindString(value) {
360
+ return typeof value === 'string' && value.trim() ? value.trim() : undefined;
361
+ }
362
+ function syncAgentStateFromSessionManager(session, sessionManager) {
363
+ const context = sessionManager.buildSessionContext?.();
364
+ if (!context || !session?.agent?.state) {
365
+ return;
366
+ }
367
+ if (Array.isArray(context.messages)) {
368
+ session.agent.state.messages = context.messages;
369
+ }
370
+ }
371
+ function countActiveAgentMessages(session) {
372
+ return Array.isArray(session?.agent?.state?.messages)
373
+ ? session.agent.state.messages.length
374
+ : undefined;
375
+ }
376
+ function extractRewindMessageText(content) {
377
+ if (typeof content === 'string') {
378
+ return content;
379
+ }
380
+ if (!Array.isArray(content)) {
381
+ return '';
382
+ }
383
+ return content
384
+ .filter((part) => typeof part === 'object' && part !== null && part.type === 'text')
385
+ .map((part) => typeof part.text === 'string' ? part.text : '')
386
+ .join('');
387
+ }
388
+ //# sourceMappingURL=linx-session-history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linx-session-history.js","sourceRoot":"","sources":["../../src/lib/linx-session-history.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  import { existsSync, mkdirSync, statSync, writeFileSync } from 'node:fs';
2
2
  import { basename, join, resolve } from 'node:path';
3
3
  import { CURRENT_SESSION_VERSION, SessionManager, } from '@earendil-works/pi-coding-agent';
4
- import { filterRuntimeSessionsForWorkspace } from '../../../vendor/agent-runtime/dist/workspace.js';
4
+ import { filterRuntimeSessionsForWorkspace } from '../../vendor/agent-runtime/dist/workspace.js';
5
5
  import { resolvePodBaseUrl } from '@undefineds.co/drizzle-solid';
6
- import { getDefaultPodDataSession, } from '../pod-data-session.js';
7
- import { chatResource, drizzle, eq, extractSessionIdFromSessionRef, messageResource, sessionResource, solidResources, } from '../models.js';
6
+ import { getDefaultPodDataSession, } from './pod-data-session.js';
7
+ import { chatResource, drizzle, eq, extractSessionIdFromSessionRef, messageResource, sessionResource, solidResources, } from './models.js';
8
8
  import { PI_CHAT_ID } from './pod-mirror-mapping.js';
9
- export function createNativeLinxPiPodSessionSource(context) {
9
+ export function createNativeLinxPodSessionSource(context) {
10
10
  const source = {
11
11
  async listSessions(_cwd) {
12
12
  return listPodSessionSnapshots(context);
@@ -26,46 +26,46 @@ export function createNativeLinxPiPodSessionSource(context) {
26
26
  };
27
27
  return source;
28
28
  }
29
- export async function createLinxPiSessionManager(options) {
30
- const sessionDir = getDefaultLinxPiSessionDir(options.cwd, options.agentDir);
29
+ export async function createLinxRuntimeSessionManager(options) {
30
+ assertLinxRuntimeSessionSelectorCompatibility(options);
31
+ const sessionDir = resolveLinxRuntimeSessionDir(options.cwd, options.agentDir, options.sessionDir);
32
+ const sessionId = normalizeLinxRuntimeSessionId(options.sessionId);
31
33
  if (options.session?.trim()) {
32
- const session = await resolveLinxPiSession(options.session.trim(), options.cwd, sessionDir, {
34
+ const session = await resolveLinxRuntimeSession(options.session.trim(), options.cwd, sessionDir, {
33
35
  podSessionSource: options.podSessionSource,
34
36
  });
35
- return openAndRepairLinxPiSession(session.path, sessionDir);
37
+ return openAndRepairLinxRuntimeSession(session.path, sessionDir);
36
38
  }
37
39
  if (options.last) {
38
- const sessions = await listLinxPiSessions(options.cwd, options.agentDir, {
40
+ const sessions = await listLinxRuntimeSessions(options.cwd, options.agentDir, {
41
+ sessionDir,
39
42
  podSessionSource: options.podSessionSource,
40
43
  });
41
44
  if (sessions[0]) {
42
- return openAndRepairLinxPiSession(sessions[0].path, sessionDir);
45
+ return openAndRepairLinxRuntimeSession(sessions[0].path, sessionDir);
43
46
  }
44
- return SessionManager.create(options.cwd, sessionDir);
47
+ return SessionManager.create(options.cwd, sessionDir, sessionId ? { id: sessionId } : undefined);
45
48
  }
46
- return SessionManager.create(options.cwd, sessionDir);
49
+ if (sessionId) {
50
+ const existing = await findExactLinxRuntimeSessionById(sessionId, options.cwd, sessionDir);
51
+ if (existing) {
52
+ return openAndRepairLinxRuntimeSession(existing.path, sessionDir);
53
+ }
54
+ }
55
+ return SessionManager.create(options.cwd, sessionDir, sessionId ? { id: sessionId } : undefined);
47
56
  }
48
- export async function listLinxPiSessions(cwd, agentDir, options = {}) {
49
- const sessionDir = getDefaultLinxPiSessionDir(cwd, agentDir);
57
+ export async function listLinxRuntimeSessions(cwd, agentDir, options = {}) {
58
+ const sessionDir = resolveLinxRuntimeSessionDir(cwd, agentDir, options.sessionDir);
50
59
  const localSessions = filterRuntimeSessionsForWorkspace(await SessionManager.list(cwd, sessionDir), cwd, { normalizeLocalPath: (value) => value?.trim() ? resolve(value) : '' });
51
60
  const podSessions = await hydratePodSessions(cwd, sessionDir, options.podSessionSource, localSessions);
52
61
  return sortSessionsByModified(mergeSessions(localSessions, podSessions));
53
62
  }
54
- export async function resolveLinxPiSession(input, cwd, sessionDir, options = {}) {
63
+ export async function resolveLinxRuntimeSession(input, cwd, sessionDir, options = {}) {
55
64
  const directPath = resolve(input);
56
65
  if (existsSync(directPath) && statSync(directPath).isFile()) {
57
66
  const manager = SessionManager.open(directPath);
58
67
  const header = manager.getHeader();
59
- return {
60
- path: directPath,
61
- id: manager.getSessionId(),
62
- cwd: manager.getCwd(),
63
- created: header?.timestamp ? new Date(header.timestamp) : new Date(0),
64
- modified: statSync(directPath).mtime,
65
- messageCount: manager.getEntries().filter((entry) => entry.type === 'message').length,
66
- firstMessage: '(session file)',
67
- allMessagesText: '',
68
- };
68
+ return buildSessionInfoFromArchiveSnapshot(getRuntimeSessionArchiveSnapshot(manager), directPath, header?.timestamp ? new Date(header.timestamp) : new Date(0), statSync(directPath).mtime, { firstMessage: '(session file)', allMessagesText: '' });
69
69
  }
70
70
  const localSessions = sessionDir
71
71
  ? await SessionManager.list(cwd, sessionDir)
@@ -98,13 +98,13 @@ export async function resolveLinxPiSession(input, cwd, sessionDir, options = {})
98
98
  if (byPrefix.length > 1 || byFilePrefix.length > 1) {
99
99
  const matches = sortSessionsByModified([...new Map([...byPrefix, ...byFilePrefix].map((session) => [session.path, session])).values()])
100
100
  .slice(0, 8)
101
- .map((session) => `- ${formatLinxPiSessionSummary(session)}`)
101
+ .map((session) => `- ${formatLinxRuntimeSessionSummary(session)}`)
102
102
  .join('\n');
103
103
  throw new Error(`Session id is ambiguous: ${input}\n${matches}`);
104
104
  }
105
105
  throw new Error(`No LinX session found for: ${input}`);
106
106
  }
107
- export function formatLinxPiSessionSummary(session) {
107
+ export function formatLinxRuntimeSessionSummary(session) {
108
108
  const label = session.name || session.firstMessage || '(no messages)';
109
109
  const cwd = session.cwd || '(unknown cwd)';
110
110
  return `${session.id.slice(0, 13)} ${label} ${cwd}`;
@@ -122,10 +122,48 @@ function mergeSessions(localSessions, podSessions) {
122
122
  }
123
123
  return [...merged.values()];
124
124
  }
125
- function getDefaultLinxPiSessionDir(_cwd, agentDir) {
125
+ export function assertLinxRuntimeSessionSelectorCompatibility(options) {
126
+ if (!options.sessionId?.trim()) {
127
+ return;
128
+ }
129
+ if (options.session?.trim()) {
130
+ throw new Error('--session-id cannot be combined with --session');
131
+ }
132
+ if (options.last) {
133
+ throw new Error('--session-id cannot be combined with --continue or --resume');
134
+ }
135
+ }
136
+ function resolveLinxRuntimeSessionDir(_cwd, agentDir, sessionDir) {
126
137
  // Sessions are stored flat, not bound to workspace directory.
127
138
  // Workspace (cwd) is tracked as session metadata, so `cd` doesn't break the session.
128
- return join(agentDir, 'sessions');
139
+ return sessionDir?.trim() ? resolve(expandHomePath(sessionDir.trim())) : join(agentDir, 'sessions');
140
+ }
141
+ async function findExactLinxRuntimeSessionById(sessionId, cwd, sessionDir) {
142
+ const sessions = await SessionManager.list(cwd, sessionDir);
143
+ return sessions.find((session) => session.id === sessionId) ?? null;
144
+ }
145
+ function normalizeLinxRuntimeSessionId(sessionId) {
146
+ const normalized = sessionId?.trim();
147
+ if (!normalized) {
148
+ return undefined;
149
+ }
150
+ if (!/^[A-Za-z0-9](?:[A-Za-z0-9._-]*[A-Za-z0-9])?$/.test(normalized)) {
151
+ throw new Error([
152
+ 'Session id must be non-empty, contain only alphanumeric characters,',
153
+ "'-', '_', and '.', and start and end with an alphanumeric character",
154
+ ].join(' '));
155
+ }
156
+ return normalized;
157
+ }
158
+ function expandHomePath(path) {
159
+ if (path === '~') {
160
+ return process.env.HOME ?? path;
161
+ }
162
+ if (path.startsWith('~/')) {
163
+ const home = process.env.HOME;
164
+ return home ? join(home, path.slice(2)) : path;
165
+ }
166
+ return path;
129
167
  }
130
168
  async function hydratePodSessions(cwd, sessionDir, source, localSessions) {
131
169
  const resolvedSource = await resolvePodSessionSource(source);
@@ -158,7 +196,7 @@ async function resolvePodSessionSource(source) {
158
196
  if (source !== undefined) {
159
197
  return source;
160
198
  }
161
- return createDefaultLinxPiPodSessionSource();
199
+ return createDefaultLinxPodSessionSource();
162
200
  }
163
201
  function materializePodSessionSnapshot(snapshot, fallbackCwd, sessionDir) {
164
202
  mkdirSync(sessionDir, { recursive: true });
@@ -176,16 +214,16 @@ function materializePodSessionSnapshot(snapshot, fallbackCwd, sessionDir) {
176
214
  };
177
215
  const lines = [header, ...entries].map((entry) => JSON.stringify(entry));
178
216
  writeFileSync(sessionFile, `${lines.join('\n')}\n`);
179
- const manager = openAndRepairLinxPiSession(sessionFile, sessionDir);
217
+ const manager = openAndRepairLinxRuntimeSession(sessionFile, sessionDir);
180
218
  const info = buildSessionInfoFromManager(manager, sessionFile, created, modified);
181
219
  return snapshot.name ? { ...info, name: snapshot.name } : info;
182
220
  }
183
- function openAndRepairLinxPiSession(path, sessionDir) {
221
+ function openAndRepairLinxRuntimeSession(path, sessionDir) {
184
222
  const manager = SessionManager.open(path, sessionDir);
185
- repairDanglingLinxPiToolCalls(manager);
223
+ repairDanglingLinxRuntimeToolCalls(manager);
186
224
  return manager;
187
225
  }
188
- export function repairDanglingLinxPiToolCalls(manager) {
226
+ export function repairDanglingLinxRuntimeToolCalls(manager) {
189
227
  let repaired = 0;
190
228
  const maxRepairs = 10;
191
229
  for (let index = 0; index < maxRepairs; index += 1) {
@@ -429,8 +467,18 @@ function getMaterializedSessionFile(snapshot, sessionDir, created) {
429
467
  return join(sessionDir, `${fileTimestamp}_${snapshot.id}.jsonl`);
430
468
  }
431
469
  function buildSessionInfoFromManager(manager, path, created, modified) {
432
- const entries = manager.getEntries();
433
- const messages = entries.filter((entry) => entry.type === 'message');
470
+ return buildSessionInfoFromArchiveSnapshot(getRuntimeSessionArchiveSnapshot(manager), path, created, modified);
471
+ }
472
+ function getRuntimeSessionArchiveSnapshot(manager) {
473
+ return {
474
+ id: manager.getSessionId(),
475
+ cwd: manager.getCwd(),
476
+ name: manager.getSessionName(),
477
+ entries: manager.getEntries(),
478
+ };
479
+ }
480
+ function buildSessionInfoFromArchiveSnapshot(snapshot, path, created, modified, overrides = {}) {
481
+ const messages = snapshot.entries.filter((entry) => entry.type === 'message');
434
482
  const allMessages = messages
435
483
  .map((entry) => extractMessageText(entry.message))
436
484
  .filter(Boolean);
@@ -440,16 +488,16 @@ function buildSessionInfoFromManager(manager, path, created, modified) {
440
488
  });
441
489
  return {
442
490
  path,
443
- id: manager.getSessionId(),
444
- cwd: manager.getCwd(),
445
- name: manager.getSessionName(),
491
+ id: snapshot.id,
492
+ cwd: snapshot.cwd,
493
+ name: snapshot.name,
446
494
  created,
447
495
  modified,
448
496
  messageCount: messages.length,
449
- firstMessage: firstUserMessage
497
+ firstMessage: overrides.firstMessage ?? (firstUserMessage
450
498
  ? extractMessageText(firstUserMessage.message) || '(no messages)'
451
- : '(no messages)',
452
- allMessagesText: allMessages.join(' '),
499
+ : '(no messages)'),
500
+ allMessagesText: overrides.allMessagesText ?? allMessages.join(' '),
453
501
  };
454
502
  }
455
503
  function extractMessageText(message) {
@@ -490,16 +538,16 @@ function toDate(value) {
490
538
  const POD_SESSION_LIST_LOOKBACK_DAYS = 90;
491
539
  const POD_SESSION_LIST_LIMIT = 200;
492
540
  const POD_CONTAINER_LIST_TIMEOUT_MS = 8_000;
493
- async function createDefaultLinxPiPodSessionSource() {
541
+ async function createDefaultLinxPodSessionSource() {
494
542
  const contextPromise = createDefaultPodSessionContext();
495
543
  return {
496
544
  async listSessions(cwd) {
497
545
  const context = await contextPromise;
498
- return context ? createNativeLinxPiPodSessionSource(context).listSessions(cwd) : [];
546
+ return context ? createNativeLinxPodSessionSource(context).listSessions(cwd) : [];
499
547
  },
500
548
  async findSession(input, cwd) {
501
549
  const context = await contextPromise;
502
- return context ? createNativeLinxPiPodSessionSource(context).findSession(input, cwd) : null;
550
+ return context ? createNativeLinxPodSessionSource(context).findSession(input, cwd) : null;
503
551
  },
504
552
  };
505
553
  }
@@ -857,4 +905,4 @@ function normalizeUnknownDate(value) {
857
905
  function isRecord(value) {
858
906
  return typeof value === 'object' && value !== null;
859
907
  }
860
- //# sourceMappingURL=session.js.map
908
+ //# sourceMappingURL=linx-session-manager.js.map