@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,49 @@
1
+ const LINX_TERMINAL_TITLE_ROUTER = Symbol.for('linx.tui.terminalTitleRouter');
2
+ export function registerLinxTerminalTitleHandler(interactive, entry) {
3
+ const state = getLinxTerminalTitleRouterState(interactive);
4
+ if (state.handlers.some((existing) => existing.name === entry.name)) {
5
+ return;
6
+ }
7
+ state.handlers.push(entry);
8
+ state.handlers.sort((left, right) => (left.priority ?? 0) - (right.priority ?? 0));
9
+ installLinxTerminalTitleRouter(interactive, state);
10
+ }
11
+ export function setLinxTerminalTitle(interactive, title) {
12
+ interactive?.ui?.terminal?.setTitle?.(title);
13
+ }
14
+ export function requestLinxTerminalTitleRefresh(interactive) {
15
+ interactive?.updateTerminalTitle?.();
16
+ }
17
+ function getLinxTerminalTitleRouterState(interactive) {
18
+ if (!interactive || typeof interactive !== 'object') {
19
+ return { installed: true, handlers: [] };
20
+ }
21
+ const existing = interactive[LINX_TERMINAL_TITLE_ROUTER];
22
+ if (existing && typeof existing === 'object' && Array.isArray(existing.handlers)) {
23
+ return existing;
24
+ }
25
+ const state = {
26
+ installed: false,
27
+ handlers: [],
28
+ };
29
+ interactive[LINX_TERMINAL_TITLE_ROUTER] = state;
30
+ return state;
31
+ }
32
+ function installLinxTerminalTitleRouter(interactive, state) {
33
+ if (state.installed) {
34
+ return;
35
+ }
36
+ const originalUpdateTerminalTitle = typeof interactive?.updateTerminalTitle === 'function'
37
+ ? interactive.updateTerminalTitle.bind(interactive)
38
+ : undefined;
39
+ interactive.updateTerminalTitle = function patchedLinxTerminalTitleRouter(...args) {
40
+ const result = originalUpdateTerminalTitle?.(...args);
41
+ const context = { interactive: this, args };
42
+ for (const entry of state.handlers) {
43
+ entry.handler(context);
44
+ }
45
+ return result;
46
+ };
47
+ state.installed = true;
48
+ }
49
+ //# sourceMappingURL=linx-terminal-title-router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linx-terminal-title-router.js","sourceRoot":"","sources":["../../src/lib/linx-terminal-title-router.ts"],"names":[],"mappings":"AAoBA,MAAM,0BAA0B,GAAG,MAAM,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAA;AAE7E,MAAM,UAAU,gCAAgC,CAC9C,WAAgB,EAChB,KAAoC;IAEpC,MAAM,KAAK,GAAG,+BAA+B,CAAC,WAAW,CAAC,CAAA;IAC1D,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACpE,OAAM;IACR,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC1B,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAA;IAClF,8BAA8B,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;AACpD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,WAAgB,EAAE,KAAa;IAClE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAA;AAC9C,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,WAAgB;IAC9D,WAAW,EAAE,mBAAmB,EAAE,EAAE,CAAA;AACtC,CAAC;AAED,SAAS,+BAA+B,CAAC,WAAgB;IACvD,IAAI,CAAC,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;QACpD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;IAC1C,CAAC;IAED,MAAM,QAAQ,GAAG,WAAW,CAAC,0BAA0B,CAAC,CAAA;IACxD,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjF,OAAO,QAAwC,CAAA;IACjD,CAAC;IAED,MAAM,KAAK,GAAiC;QAC1C,SAAS,EAAE,KAAK;QAChB,QAAQ,EAAE,EAAE;KACb,CAAA;IACD,WAAW,CAAC,0BAA0B,CAAC,GAAG,KAAK,CAAA;IAC/C,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,8BAA8B,CACrC,WAAgB,EAChB,KAAmC;IAEnC,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACpB,OAAM;IACR,CAAC;IAED,MAAM,2BAA2B,GAAG,OAAO,WAAW,EAAE,mBAAmB,KAAK,UAAU;QACxF,CAAC,CAAC,WAAW,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC;QACnD,CAAC,CAAC,SAAS,CAAA;IAEb,WAAW,CAAC,mBAAmB,GAAG,SAAS,8BAA8B,CAAC,GAAG,IAAe;QAC1F,MAAM,MAAM,GAAG,2BAA2B,EAAE,CAAC,GAAG,IAAI,CAAC,CAAA;QACrD,MAAM,OAAO,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;QAC3C,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QACxB,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;IACD,KAAK,CAAC,SAAS,GAAG,IAAI,CAAA;AACxB,CAAC"}
@@ -74,11 +74,11 @@ const LINX_THEME = {
74
74
  bashMode: 'green',
75
75
  },
76
76
  };
77
- export function ensureLinxPiTheme(agentDir) {
77
+ export function ensureLinxTheme(agentDir) {
78
78
  const themesDir = join(agentDir, 'themes');
79
79
  mkdirSync(themesDir, { recursive: true });
80
80
  const themePath = join(themesDir, 'linx.json');
81
81
  writeFileSync(themePath, `${JSON.stringify(LINX_THEME, null, 2)}\n`);
82
82
  return themePath;
83
83
  }
84
- //# sourceMappingURL=theme.js.map
84
+ //# sourceMappingURL=linx-theme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linx-theme.js","sourceRoot":"","sources":["../../src/lib/linx-theme.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,MAAM,UAAU,GAAG;IACjB,OAAO,EAAE,6HAA6H;IACtI,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,SAAS;QACd,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,SAAS;QAClB,QAAQ,EAAE,SAAS;QACnB,MAAM,EAAE,SAAS;QACjB,UAAU,EAAE,SAAS;QACrB,SAAS,EAAE,SAAS;QACpB,aAAa,EAAE,SAAS;QACxB,aAAa,EAAE,SAAS;QACxB,WAAW,EAAE,SAAS;QACtB,WAAW,EAAE,SAAS;KACvB;IACD,MAAM,EAAE;QACN,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,MAAM;QACd,YAAY,EAAE,MAAM;QACpB,WAAW,EAAE,UAAU;QACvB,OAAO,EAAE,OAAO;QAChB,KAAK,EAAE,KAAK;QACZ,OAAO,EAAE,QAAQ;QACjB,KAAK,EAAE,MAAM;QACb,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,EAAE;QACR,YAAY,EAAE,MAAM;QACpB,UAAU,EAAE,YAAY;QACxB,aAAa,EAAE,WAAW;QAC1B,eAAe,EAAE,SAAS;QAC1B,eAAe,EAAE,aAAa;QAC9B,iBAAiB,EAAE,EAAE;QACrB,kBAAkB,EAAE,SAAS;QAC7B,aAAa,EAAE,eAAe;QAC9B,aAAa,EAAE,eAAe;QAC9B,WAAW,EAAE,aAAa;QAC1B,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,MAAM;QAClB,SAAS,EAAE,SAAS;QACpB,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,SAAS;QACpB,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,OAAO;QACpB,iBAAiB,EAAE,MAAM;QACzB,OAAO,EAAE,MAAM;QACf,aAAa,EAAE,MAAM;QACrB,IAAI,EAAE,MAAM;QACZ,YAAY,EAAE,QAAQ;QACtB,aAAa,EAAE,OAAO;QACtB,eAAe,EAAE,KAAK;QACtB,eAAe,EAAE,MAAM;QACvB,aAAa,EAAE,SAAS;QACxB,aAAa,EAAE,SAAS;QACxB,cAAc,EAAE,SAAS;QACzB,cAAc,EAAE,SAAS;QACzB,YAAY,EAAE,SAAS;QACvB,YAAY,EAAE,SAAS;QACvB,UAAU,EAAE,SAAS;QACrB,cAAc,EAAE,SAAS;QACzB,iBAAiB,EAAE,SAAS;QAC5B,WAAW,EAAE,UAAU;QACvB,eAAe,EAAE,SAAS;QAC1B,WAAW,EAAE,SAAS;QACtB,cAAc,EAAE,SAAS;QACzB,YAAY,EAAE,SAAS;QACvB,aAAa,EAAE,SAAS;QACxB,QAAQ,EAAE,OAAO;KAClB;CACF,CAAA;AAED,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAC1C,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACzC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;IAC9C,aAAa,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAA;IACpE,OAAO,SAAS,CAAA;AAClB,CAAC"}
@@ -0,0 +1,27 @@
1
+ export const RESERVED_NON_TOP_LEVEL_COMMANDS = new Set([
2
+ 'automode',
3
+ 'chat',
4
+ 'footer',
5
+ 'fork',
6
+ 'help',
7
+ 'model',
8
+ 'new',
9
+ 'pi',
10
+ 'pi-frontend',
11
+ 'resume',
12
+ 'session',
13
+ 'sessions',
14
+ 'status-line',
15
+ 'statusline',
16
+ 'watch',
17
+ ]);
18
+ export function assertDefaultStartupPromptTokenIsAllowed(argv, options = {}) {
19
+ if (!options.rejectReservedPromptCommands || argv.print || argv.backend) {
20
+ return;
21
+ }
22
+ const firstPromptToken = Array.isArray(argv.prompt) ? argv.prompt[0] : undefined;
23
+ if (firstPromptToken && RESERVED_NON_TOP_LEVEL_COMMANDS.has(firstPromptToken)) {
24
+ throw new Error(`Unknown command: ${firstPromptToken}`);
25
+ }
26
+ }
27
+ //# sourceMappingURL=linx-top-level-command-admission.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linx-top-level-command-admission.js","sourceRoot":"","sources":["../../src/lib/linx-top-level-command-admission.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,+BAA+B,GAAG,IAAI,GAAG,CAAC;IACrD,UAAU;IACV,MAAM;IACN,QAAQ;IACR,MAAM;IACN,MAAM;IACN,OAAO;IACP,KAAK;IACL,IAAI;IACJ,aAAa;IACb,QAAQ;IACR,SAAS;IACT,UAAU;IACV,aAAa;IACb,YAAY;IACZ,OAAO;CACR,CAAC,CAAA;AAYF,MAAM,UAAU,wCAAwC,CACtD,IAAsC,EACtC,UAA+C,EAAE;IAEjD,IAAI,CAAC,OAAO,CAAC,4BAA4B,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACxE,OAAM;IACR,CAAC;IAED,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAChF,IAAI,gBAAgB,IAAI,+BAA+B,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAC9E,MAAM,IAAI,KAAK,CAAC,oBAAoB,gBAAgB,EAAE,CAAC,CAAA;IACzD,CAAC;AACH,CAAC"}
@@ -0,0 +1,176 @@
1
+ import { checkForNewLinxVersion, installLinxSelfUpdateAndRestart, LINX_CHANGELOG_URL, LINX_CLI_VERSION, LINX_UPDATE_PACKAGE_NAME, } from './linx-self-update.js';
2
+ import { openExternalUrl } from './linx-external-url.js';
3
+ import { canChooseLinxInteractiveExtensionSelectorOption, chooseLinxInteractiveExtensionSelectorOption, } from './linx-interactive-extension-selector-host.js';
4
+ import { normalizeSelectorChoice } from './linx-selector-choice.js';
5
+ import { registerLinxInteractiveRunHandler } from './linx-interactive-run-router.js';
6
+ import { registerLinxInteractiveUpdateNotificationHandler, registerLinxInteractiveVersionCheckHandler, } from './linx-interactive-update-router.js';
7
+ import { appendLinxInteractiveChatText } from './linx-interactive-chat-text-host.js';
8
+ import { showLinxInteractiveStatus } from './linx-interactive-status-display.js';
9
+ import { getLinxInteractiveUpdateState } from './linx-interactive-update-state-host.js';
10
+ const UPDATE_OPTION_INSTALL = 'Install update and restart';
11
+ const UPDATE_OPTION_CHANGELOG = 'Open changelog';
12
+ const UPDATE_OPTION_LATER = 'Later';
13
+ export function installLinxUpdateNotification(interactive, options = {}) {
14
+ patchVersionCheck(interactive);
15
+ patchUpdateNotification(interactive, options);
16
+ }
17
+ export async function checkAndShowLinxUpdate(interactive, options = {}) {
18
+ const latest = await checkForNewLinxVersion();
19
+ if (!latest) {
20
+ if (options.manual) {
21
+ showLinxInteractiveStatus(interactive, `LinX ${LINX_CLI_VERSION} is up to date.`);
22
+ }
23
+ return;
24
+ }
25
+ requestLinxUpdateNotification(interactive, latest, {
26
+ ...options,
27
+ force: options.manual === true,
28
+ });
29
+ }
30
+ export function replayDeferredLinxUpdateNotification(interactive, options = {}) {
31
+ const updateState = getLinxInteractiveUpdateState(interactive);
32
+ const version = normalizeLinxUpdateVersion(updateState.deferredUpdateVersion);
33
+ if (!version || shouldDeferLinxUpdateNotification(options)) {
34
+ return;
35
+ }
36
+ updateState.deferredUpdateVersion = undefined;
37
+ void showLinxUpdateSelector(interactive, version);
38
+ }
39
+ function patchVersionCheck(interactive) {
40
+ installLinxUpstreamPiUpdateSuppression(interactive);
41
+ registerLinxInteractiveVersionCheckHandler(interactive, {
42
+ name: 'linx-update-notification:check-linx-version',
43
+ priority: 0,
44
+ async handler() {
45
+ const version = await checkForNewLinxVersion();
46
+ return version ? { handled: true, version } : { handled: true };
47
+ },
48
+ });
49
+ }
50
+ function installLinxUpstreamPiUpdateSuppression(interactive) {
51
+ registerLinxInteractiveRunHandler(interactive, {
52
+ name: 'linx-update-notification:suppress-upstream-pi-update',
53
+ priority: 0,
54
+ handler({ interactive: runInteractive }) {
55
+ getLinxInteractiveUpdateState(runInteractive).suppressUpstreamPiUpdate = true;
56
+ },
57
+ });
58
+ }
59
+ function patchUpdateNotification(interactive, options) {
60
+ registerLinxInteractiveUpdateNotificationHandler(interactive, {
61
+ name: 'linx-update-notification:show-linx-update',
62
+ priority: 0,
63
+ handler({ interactive: target, newVersion }) {
64
+ if (getLinxInteractiveUpdateState(target).suppressUpstreamPiUpdate) {
65
+ return true;
66
+ }
67
+ const normalizedVersion = normalizeLinxUpdateVersion(newVersion);
68
+ if (!normalizedVersion) {
69
+ return true;
70
+ }
71
+ requestLinxUpdateNotification(target, normalizedVersion, options);
72
+ return true;
73
+ },
74
+ });
75
+ }
76
+ export function scheduleLinxVersionCheckAfterInit(interactive, options = {}) {
77
+ const updateState = getLinxInteractiveUpdateState(interactive);
78
+ if (updateState.updateCheckScheduled) {
79
+ return;
80
+ }
81
+ updateState.updateCheckScheduled = true;
82
+ queueMicrotask(() => {
83
+ void checkForNewLinxVersion()
84
+ .then((latest) => {
85
+ if (!latest) {
86
+ return;
87
+ }
88
+ requestLinxUpdateNotification(interactive, latest, options);
89
+ })
90
+ .catch(() => undefined);
91
+ });
92
+ }
93
+ async function showLinxUpdateSelector(interactive, newVersion) {
94
+ const updateState = getLinxInteractiveUpdateState(interactive);
95
+ if (updateState.updateInProgress) {
96
+ return;
97
+ }
98
+ updateState.updateInProgress = true;
99
+ try {
100
+ const title = [
101
+ 'LinX update available',
102
+ `Current ${LINX_CLI_VERSION} -> latest ${newVersion}`,
103
+ 'Choose how to handle this update.',
104
+ ].join('\n');
105
+ const options = [UPDATE_OPTION_LATER, UPDATE_OPTION_INSTALL, UPDATE_OPTION_CHANGELOG];
106
+ const rawSelected = canChooseLinxInteractiveExtensionSelectorOption(interactive)
107
+ ? await chooseLinxInteractiveExtensionSelectorOption(interactive, title, options)
108
+ : undefined;
109
+ const selected = normalizeSelectorChoice(rawSelected, options);
110
+ if (selected === UPDATE_OPTION_INSTALL) {
111
+ await installLinxSelfUpdateAndRestart(interactive, newVersion);
112
+ return;
113
+ }
114
+ if (selected === UPDATE_OPTION_CHANGELOG) {
115
+ openExternalUrl(LINX_CHANGELOG_URL, interactive);
116
+ showLinxInteractiveStatus(interactive, `Opened LinX changelog for ${newVersion}.`, { render: false });
117
+ return;
118
+ }
119
+ if (!selected) {
120
+ showLinxUpdateFallback(interactive, newVersion);
121
+ return;
122
+ }
123
+ showLinxInteractiveStatus(interactive, `Skipped LinX ${newVersion} for now.`, { render: false });
124
+ }
125
+ finally {
126
+ updateState.updateInProgress = false;
127
+ }
128
+ }
129
+ function requestLinxUpdateNotification(interactive, newVersion, options = {}) {
130
+ const updateState = getLinxInteractiveUpdateState(interactive);
131
+ if (!options.force && shouldDeferLinxUpdateNotification(options)) {
132
+ updateState.deferredUpdateVersion = newVersion;
133
+ return;
134
+ }
135
+ updateState.deferredUpdateVersion = undefined;
136
+ void showLinxUpdateSelector(interactive, newVersion);
137
+ }
138
+ function shouldDeferLinxUpdateNotification(options) {
139
+ return options.shouldDefer?.() === true;
140
+ }
141
+ function normalizeLinxUpdateVersion(value) {
142
+ const direct = normalizeNonEmptyString(value);
143
+ if (direct) {
144
+ return direct;
145
+ }
146
+ if (!isRecord(value)) {
147
+ return undefined;
148
+ }
149
+ for (const key of ['version', 'latest', 'latestVersion', 'packageVersion', 'newVersion']) {
150
+ const nested = normalizeNonEmptyString(value[key]);
151
+ if (nested) {
152
+ return nested;
153
+ }
154
+ }
155
+ return undefined;
156
+ }
157
+ function showLinxUpdateFallback(interactive, newVersion) {
158
+ const lines = [
159
+ '\x1b[1m\x1b[33mLinX update available\x1b[39m\x1b[22m',
160
+ `\x1b[2mCurrent ${LINX_CLI_VERSION} -> latest ${newVersion}\x1b[22m`,
161
+ `\x1b[2mRun \x1b[22m\x1b[36mnpm install -g ${LINX_UPDATE_PACKAGE_NAME}@latest\x1b[39m\x1b[2m if this terminal cannot show the update selector.\x1b[22m`,
162
+ `\x1b[2mChangelog: \x1b[22m\x1b[36m${LINX_CHANGELOG_URL}\x1b[39m`,
163
+ ];
164
+ appendLinxInteractiveChatText(interactive, lines.join('\n'));
165
+ }
166
+ function normalizeNonEmptyString(value) {
167
+ if (typeof value !== 'string') {
168
+ return undefined;
169
+ }
170
+ const normalized = value.trim();
171
+ return normalized || undefined;
172
+ }
173
+ function isRecord(value) {
174
+ return typeof value === 'object' && value !== null;
175
+ }
176
+ //# sourceMappingURL=linx-update-notification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linx-update-notification.js","sourceRoot":"","sources":["../../src/lib/linx-update-notification.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,148 @@
1
+ import { basename } from 'node:path';
2
+ import { keyHint, rawKeyHint } from '@earendil-works/pi-coding-agent';
3
+ import { truncateToWidth, visibleWidth, wrapTextWithAnsi } from '@earendil-works/pi-tui';
4
+ import { LINX_TUI_KEYMAP_COMMAND, LINX_TUI_KEYMAP_LABEL, LINX_TUI_LOGIN_COMMAND } from './linx-tui-contract.js';
5
+ import { loadCredentials } from './credentials-store.js';
6
+ import { extractUsernameFromWebId, resolveProfileDisplayName } from './profile-identity.js';
7
+ import { suppressPodStatusOutput } from './pod-status-output.js';
8
+ import { LINX_CLI_VERSION } from './linx-self-update.js';
9
+ import { resolveLinxInteractiveRuntimeProviderLabel } from './linx-interactive-runtime-host.js';
10
+ import { registerLinxTerminalTitleHandler, requestLinxTerminalTitleRefresh, setLinxTerminalTitle } from './linx-terminal-title-router.js';
11
+ import { invalidateLinxInteractiveHeader, replaceLinxInteractiveHeader } from './linx-interactive-header-host.js';
12
+ import { resolveLinxSessionCwd, resolveLinxSessionId, resolveLinxSessionModelId, resolveLinxSessionName } from './linx-session-metadata.js';
13
+ export function installLinxWelcomeHeader(interactive) {
14
+ registerLinxTerminalTitleHandler(interactive, {
15
+ name: 'linx-welcome-header:terminal-title',
16
+ priority: 0,
17
+ handler({ interactive: titleInteractive }) {
18
+ setLinxWelcomeTerminalTitle(titleInteractive);
19
+ },
20
+ });
21
+ }
22
+ function setLinxWelcomeTerminalTitle(interactive) {
23
+ const cwd = resolveLinxSessionCwd({ interactive }, process.cwd());
24
+ const sessionName = resolveLinxSessionName({ interactive });
25
+ const suffix = sessionName ? `${sessionName} - ${basename(cwd)}` : basename(cwd);
26
+ setLinxTerminalTitle(interactive, `LinX - ${suffix}`);
27
+ }
28
+ export function renderLinxWelcomeHeaderAfterInit(interactive) {
29
+ const quietStartup = interactive?.options?.verbose ? false : interactive?.settingsManager?.getQuietStartup?.();
30
+ if (quietStartup) {
31
+ return;
32
+ }
33
+ let profileDisplayName = null;
34
+ const replacement = new LinxWelcomeCard(() => buildLinxWelcomeCardState(interactive, profileDisplayName));
35
+ replaceLinxInteractiveHeader(interactive, replacement);
36
+ requestLinxTerminalTitleRefresh(interactive);
37
+ void suppressPodStatusOutput(() => resolveProfileDisplayName())
38
+ .then((displayName) => {
39
+ if (!displayName || displayName === profileDisplayName) {
40
+ return;
41
+ }
42
+ profileDisplayName = displayName;
43
+ invalidateLinxInteractiveHeader(interactive, replacement);
44
+ })
45
+ .catch(() => undefined);
46
+ }
47
+ class LinxWelcomeCard {
48
+ getState;
49
+ constructor(getState) {
50
+ this.getState = getState;
51
+ }
52
+ invalidate() { }
53
+ render(width) {
54
+ const innerWidth = Math.max(20, width - 4);
55
+ const state = this.getState();
56
+ const titleBlock = [
57
+ `\x1b[1mLinX\x1b[22m \x1b[2mv${LINX_CLI_VERSION}\x1b[22m`,
58
+ `\x1b[1mWelcome back, ${state.username}\x1b[22m`,
59
+ ];
60
+ const rows = [
61
+ renderField('WebID', state.webId, innerWidth),
62
+ renderField('Provider', state.provider, innerWidth),
63
+ renderField('Model', state.model, innerWidth),
64
+ renderField('Workspace', state.workspace, innerWidth),
65
+ renderField('Session', state.session, innerWidth),
66
+ '',
67
+ truncateToWidth(`\x1b[2mNext\x1b[22m ${state.next}`, innerWidth),
68
+ ];
69
+ const headerLines = titleBlock.map((line) => truncateToWidth(line, innerWidth));
70
+ const body = [
71
+ ...headerLines.map((line) => padLine(line, innerWidth)),
72
+ padLine('', innerWidth),
73
+ ...rows.flatMap((line) => wrapAndPad(line, innerWidth)),
74
+ ];
75
+ return [
76
+ `┌${'─'.repeat(innerWidth + 2)}┐`,
77
+ ...body.map((line) => `│ ${line} │`),
78
+ `└${'─'.repeat(innerWidth + 2)}┘`,
79
+ ];
80
+ }
81
+ }
82
+ export function buildLinxWelcomeCardState(interactive, profileDisplayName = null) {
83
+ const credentials = loadCredentials();
84
+ const webId = credentials?.webId ?? 'not logged in';
85
+ const workspace = resolveLinxSessionCwd({ interactive }, process.cwd());
86
+ const sessionId = resolveLinxSessionId({ interactive });
87
+ const sessionName = resolveLinxSessionName({ interactive });
88
+ const session = sessionName && sessionId ? `${sessionName} (${formatSessionId(sessionId)})` : formatSessionId(sessionId);
89
+ const model = resolveLinxSessionModelId({ interactive }) ?? 'unknown-model';
90
+ return {
91
+ webId,
92
+ username: profileDisplayName ?? extractUsernameFromWebId(webId),
93
+ provider: resolveLinxInteractiveRuntimeProviderLabel(interactive),
94
+ model,
95
+ workspace,
96
+ session,
97
+ next: [
98
+ safeKeyHint('tui.input.submit', 'send'),
99
+ safeKeyHint('app.model.select', 'model'),
100
+ safeRawKeyHint(LINX_TUI_LOGIN_COMMAND, 'auth'),
101
+ safeRawKeyHint(LINX_TUI_KEYMAP_COMMAND, LINX_TUI_KEYMAP_LABEL),
102
+ ].join(' \x1b[2m·\x1b[22m '),
103
+ };
104
+ }
105
+ function safeKeyHint(keybinding, description) {
106
+ try {
107
+ return keyHint(keybinding, description);
108
+ }
109
+ catch {
110
+ return `\x1b[2m${keybinding}\x1b[22m \x1b[2m${description}\x1b[22m`;
111
+ }
112
+ }
113
+ function safeRawKeyHint(key, description) {
114
+ try {
115
+ return rawKeyHint(key, description);
116
+ }
117
+ catch {
118
+ return `\x1b[2m${key}\x1b[22m \x1b[2m${description}\x1b[22m`;
119
+ }
120
+ }
121
+ function renderField(label, value, width) {
122
+ const prefix = `\x1b[2m${label}\x1b[22m`;
123
+ const paddedPrefix = prefix + ' '.repeat(Math.max(1, 10 - visibleWidth(prefix)));
124
+ return truncateToWidth(`${paddedPrefix} ${value}`, width);
125
+ }
126
+ function wrapAndPad(line, width) {
127
+ if (!line) {
128
+ return [padLine('', width)];
129
+ }
130
+ const wrapped = wrapTextWithAnsi(line, width);
131
+ return wrapped.length > 0
132
+ ? wrapped.map((entry) => padLine(entry, width))
133
+ : [padLine('', width)];
134
+ }
135
+ function formatSessionId(sessionId) {
136
+ if (typeof sessionId !== 'string' || !sessionId.trim()) {
137
+ return 'new session';
138
+ }
139
+ return sessionId.trim();
140
+ }
141
+ function padLine(line, width) {
142
+ const visible = visibleWidth(line);
143
+ if (visible >= width) {
144
+ return truncateToWidth(line, width);
145
+ }
146
+ return `${line}${' '.repeat(width - visible)}`;
147
+ }
148
+ //# sourceMappingURL=linx-welcome-header.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linx-welcome-header.js","sourceRoot":"","sources":["../../src/lib/linx-welcome-header.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import { existsSync, statSync } from 'node:fs';
2
+ import { resolve } from 'node:path';
3
+ import { showLinxInteractiveError } from './linx-interactive-error-display.js';
4
+ import { showLinxInteractiveStatus } from './linx-interactive-status-display.js';
5
+ import { setLinxShellRuntimeCwd } from './linx-session-cwd-router.js';
6
+ import { resolveLinxSessionCwd } from './linx-session-metadata.js';
7
+ export async function changeInteractiveCwd(interactive, runtime, target) {
8
+ if (!target) {
9
+ showLinxInteractiveStatus(interactive, `Current workspace: ${resolveInteractiveCwd(interactive, runtime)}`);
10
+ return;
11
+ }
12
+ const nextCwd = resolve(resolveInteractiveCwd(interactive, runtime), target);
13
+ if (!existsSync(nextCwd)) {
14
+ showLinxInteractiveError(interactive, `Workspace not found: ${nextCwd}`);
15
+ showLinxInteractiveStatus(interactive, undefined);
16
+ return;
17
+ }
18
+ if (!statSync(nextCwd).isDirectory()) {
19
+ showLinxInteractiveError(interactive, `Workspace is not a directory: ${nextCwd}`);
20
+ showLinxInteractiveStatus(interactive, undefined);
21
+ return;
22
+ }
23
+ process.chdir(nextCwd);
24
+ setRuntimeCwd(interactive, runtime, nextCwd);
25
+ await runtime?.backendCommandRouter?.setCwd?.(nextCwd);
26
+ showLinxInteractiveStatus(interactive, `Workspace changed to ${nextCwd}. Session history stays in the current thread.`);
27
+ }
28
+ export function resolveInteractiveCwd(interactive, runtime) {
29
+ return resolveLinxSessionCwd({ interactive, runtime }, process.cwd());
30
+ }
31
+ export function setRuntimeCwd(interactive, runtime, cwd) {
32
+ setLinxShellRuntimeCwd(interactive, runtime, cwd);
33
+ }
34
+ export function scheduleLinxCwdStartupNotice(interactive, sessionCwd) {
35
+ const storedCwd = resolveLinxSessionCwd({ interactive }, sessionCwd);
36
+ const currentCwd = process.cwd();
37
+ if (currentCwd === storedCwd) {
38
+ return;
39
+ }
40
+ setTimeout(() => {
41
+ process.stdout.write(`\n\x1b[33m Session was at ${storedCwd}\x1b[0m\n` +
42
+ `\x1b[33m You're now at ${currentCwd}\x1b[0m\n`);
43
+ }, 300);
44
+ }
45
+ //# sourceMappingURL=linx-workspace-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linx-workspace-command.js","sourceRoot":"","sources":["../../src/lib/linx-workspace-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAA;AAC9E,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAA;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAElE,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,WAAgB,EAAE,OAAY,EAAE,MAA0B;IACnG,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,yBAAyB,CAAC,WAAW,EAAE,sBAAsB,qBAAqB,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;QAC3G,OAAM;IACR,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,qBAAqB,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,CAAA;IAC5E,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,wBAAwB,CAAC,WAAW,EAAE,wBAAwB,OAAO,EAAE,CAAC,CAAA;QACxE,yBAAyB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;QACjD,OAAM;IACR,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QACrC,wBAAwB,CAAC,WAAW,EAAE,iCAAiC,OAAO,EAAE,CAAC,CAAA;QACjF,yBAAyB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;QACjD,OAAM;IACR,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACtB,aAAa,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IAC5C,MAAM,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,CAAA;IACtD,yBAAyB,CAAC,WAAW,EAAE,wBAAwB,OAAO,gDAAgD,CAAC,CAAA;AACzH,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,WAAgB,EAAE,OAAY;IAClE,OAAO,qBAAqB,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;AACvE,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,WAAgB,EAAE,OAAY,EAAE,GAAW;IACvE,sBAAsB,CAAC,WAAW,EAAE,OAAO,EAAE,GAAG,CAAC,CAAA;AACnD,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,WAAgB,EAAE,UAAkB;IAC/E,MAAM,SAAS,GAAG,qBAAqB,CAAC,EAAE,WAAW,EAAE,EAAE,UAAU,CAAC,CAAA;IACpE,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;IAEhC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAM;IACR,CAAC;IAED,UAAU,CAAC,GAAG,EAAE;QACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,8BAA8B,SAAS,WAAW;YAClD,4BAA4B,UAAU,WAAW,CAClD,CAAA;IACH,CAAC,EAAE,GAAG,CAAC,CAAA;AACT,CAAC"}
@@ -0,0 +1,25 @@
1
+ export function createNativeBackendCommandRouter(proxy) {
2
+ const executeCommand = proxy?.executeCommand;
3
+ if (!proxy || typeof executeCommand !== 'function') {
4
+ return undefined;
5
+ }
6
+ const setCwd = proxy.setCwd;
7
+ const setSessionControl = proxy.setSessionControl;
8
+ const router = {
9
+ backend: proxy.record.backend,
10
+ execute(input) {
11
+ return executeCommand.call(proxy, input);
12
+ },
13
+ subscribe(listener) {
14
+ return proxy.subscribe(listener);
15
+ },
16
+ };
17
+ if (typeof setCwd === 'function') {
18
+ router.setCwd = (nextCwd) => setCwd.call(proxy, nextCwd);
19
+ }
20
+ if (typeof setSessionControl === 'function') {
21
+ router.setSessionControl = (control) => setSessionControl.call(proxy, control);
22
+ }
23
+ return router;
24
+ }
25
+ //# sourceMappingURL=native-backend-command-router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-backend-command-router.js","sourceRoot":"","sources":["../../src/lib/native-backend-command-router.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,gCAAgC,CAC9C,KAAmD;IAEnD,MAAM,cAAc,GAAG,KAAK,EAAE,cAAc,CAAA;IAC5C,IAAI,CAAC,KAAK,IAAI,OAAO,cAAc,KAAK,UAAU,EAAE,CAAC;QACnD,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;IAC3B,MAAM,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,CAAA;IACjD,MAAM,MAAM,GAAyB;QACnC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO;QAC7B,OAAO,CAAC,KAAK;YACX,OAAO,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QAC1C,CAAC;QACD,SAAS,CAAC,QAAQ;YAChB,OAAO,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;QAClC,CAAC;KACF,CAAA;IAED,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;QACjC,MAAM,CAAC,MAAM,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IAC1D,CAAC;IACD,IAAI,OAAO,iBAAiB,KAAK,UAAU,EAAE,CAAC;QAC5C,MAAM,CAAC,iBAAiB,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IAChF,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=native-backend-proxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-backend-proxy.js","sourceRoot":"","sources":["../../src/lib/native-backend-proxy.ts"],"names":[],"mappings":""}
@@ -0,0 +1,15 @@
1
+ export function createNativeBackendStreamBackend(proxy) {
2
+ if (!proxy) {
3
+ return undefined;
4
+ }
5
+ const sendTurn = proxy.sendTurn;
6
+ return {
7
+ sendTurn(input) {
8
+ return sendTurn.call(proxy, input);
9
+ },
10
+ subscribe(listener) {
11
+ return proxy.subscribe(listener);
12
+ },
13
+ };
14
+ }
15
+ //# sourceMappingURL=native-backend-stream-backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-backend-stream-backend.js","sourceRoot":"","sources":["../../src/lib/native-backend-stream-backend.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,gCAAgC,CAC9C,KAAkD;IAElD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAA;IAE/B,OAAO;QACL,QAAQ,CAAC,KAAK;YACZ,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QACpC,CAAC;QACD,SAAS,CAAC,QAAQ;YAChB,OAAO,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;QAClC,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -361,7 +361,7 @@ function renderCallbackPage(input) {
361
361
  </body>
362
362
  </html>`;
363
363
  }
364
- async function reuseExistingBrowserConsentLogin(options) {
364
+ export async function reuseExistingBrowserConsentLogin(options) {
365
365
  const stored = loadCredentials();
366
366
  if (!stored || stored.authType !== 'oidc_oauth') {
367
367
  return null;
@@ -608,7 +608,7 @@ export function isOidcTransientRemoteError(error) {
608
608
  return true;
609
609
  return resolveOidcTransientRemoteStatus(error) !== null;
610
610
  }
611
- function normalizeOidcSessionRefreshError(error) {
611
+ export function normalizeOidcSessionRefreshError(error) {
612
612
  if (isOidcTransientRemoteError(error)) {
613
613
  return new LinxOidcTransientRemoteError(error);
614
614
  }
@@ -667,6 +667,4 @@ function fallbackOidcTransientStatusMessage(status) {
667
667
  return 'Service Unavailable';
668
668
  }
669
669
  }
670
- export const __testReuseExistingBrowserConsentLogin = reuseExistingBrowserConsentLogin;
671
- export const __testNormalizeOidcSessionRefreshError = normalizeOidcSessionRefreshError;
672
670
  //# sourceMappingURL=oidc-auth.js.map