@undefineds.co/linx 0.3.26 → 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 -3191
  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,146 @@
1
+ import { RemoteChatRequestError, } from './chat-api.js';
2
+ import { formatLinxCloudTransientMessage } from './linx-cloud-errors.js';
3
+ import { getDefaultPodDataSession, } from './pod-data-session.js';
4
+ import { isLinxRuntimeManagedAuthKey } from './linx-runtime-auth.js';
5
+ const DEFAULT_LINX_CLOUD_COMPLETION_TIMEOUT_MS = 10 * 60 * 1000;
6
+ export const LINX_CLOUD_LOGIN_REQUIRED_MESSAGE = 'No LinX cloud login found. Interactive TUI supports /login in-app. For non-interactive --print mode, run `linx login` first.';
7
+ export function createLinxBearerAuthFetch(apiKey) {
8
+ return async (url, init) => {
9
+ const headers = new Headers(init?.headers);
10
+ headers.set('Authorization', `Bearer ${apiKey}`);
11
+ return fetch(url, { ...init, headers });
12
+ };
13
+ }
14
+ export function resolveRuntimeAuthFetchFromApiKey(apiKey) {
15
+ const trimmed = apiKey?.trim();
16
+ if (!trimmed || isLinxRuntimeManagedAuthKey(trimmed)) {
17
+ return null;
18
+ }
19
+ return createLinxBearerAuthFetch(trimmed);
20
+ }
21
+ export async function resolveLinxCloudRuntimeAuthFetch(options) {
22
+ if (options.getPodDataSession) {
23
+ return createPodDataSessionAuthFetch(options.getPodDataSession);
24
+ }
25
+ const session = await getDefaultPodDataSession();
26
+ if (session) {
27
+ return withLinxCloudCompletionTimeout(session.runtimeFetch);
28
+ }
29
+ throw new Error(LINX_CLOUD_LOGIN_REQUIRED_MESSAGE);
30
+ }
31
+ function createPodDataSessionAuthFetch(getPodDataSession) {
32
+ if (getPodDataSession !== getDefaultPodDataSession) {
33
+ return withLinxCloudCompletionTimeout(async (url, init) => {
34
+ const session = await getPodDataSession();
35
+ if (session) {
36
+ try {
37
+ return await session.runtimeFetch(url, init);
38
+ }
39
+ finally {
40
+ await session.close().catch(() => undefined);
41
+ }
42
+ }
43
+ throw new Error(LINX_CLOUD_LOGIN_REQUIRED_MESSAGE);
44
+ });
45
+ }
46
+ let cachedSession = null;
47
+ let cachedSessionPromise = null;
48
+ const getCachedSession = async () => {
49
+ if (cachedSession) {
50
+ return cachedSession;
51
+ }
52
+ if (!cachedSessionPromise) {
53
+ cachedSessionPromise = getPodDataSession().then((session) => {
54
+ cachedSession = session;
55
+ return session;
56
+ }).finally(() => {
57
+ cachedSessionPromise = null;
58
+ });
59
+ }
60
+ return cachedSessionPromise;
61
+ };
62
+ return withLinxCloudCompletionTimeout(async (url, init) => {
63
+ const session = await getCachedSession();
64
+ if (session) {
65
+ return await session.runtimeFetch(url, init);
66
+ }
67
+ throw new Error(LINX_CLOUD_LOGIN_REQUIRED_MESSAGE);
68
+ });
69
+ }
70
+ export function withLinxCloudCompletionTimeout(fetcher) {
71
+ return async (url, init) => {
72
+ if (!isChatCompletionRuntimeUrl(String(url))) {
73
+ return fetcher(url, init);
74
+ }
75
+ const timeoutMs = resolveLinxCloudCompletionTimeoutMs();
76
+ const controller = new AbortController();
77
+ const signal = init?.signal
78
+ ? combineAbortSignals(init.signal, controller.signal)
79
+ : controller.signal;
80
+ let timedOut = false;
81
+ const timer = setTimeout(() => {
82
+ timedOut = true;
83
+ controller.abort();
84
+ }, timeoutMs);
85
+ try {
86
+ return await Promise.race([
87
+ fetcher(url, { ...init, signal }),
88
+ new Promise((_resolve, reject) => {
89
+ controller.signal.addEventListener('abort', () => {
90
+ if (timedOut) {
91
+ reject(new RemoteChatRequestError(formatLinxCloudTransientMessage(`Request exceeded ${formatTimeoutSeconds(timeoutMs)}s.`), 0, `Timed out waiting for POST ${url}`));
92
+ }
93
+ }, { once: true });
94
+ }),
95
+ ]);
96
+ }
97
+ catch (error) {
98
+ if (timedOut) {
99
+ throw new RemoteChatRequestError(formatLinxCloudTransientMessage(`Request exceeded ${formatTimeoutSeconds(timeoutMs)}s.`), 0, error instanceof Error ? error.message : String(error));
100
+ }
101
+ throw error;
102
+ }
103
+ finally {
104
+ clearTimeout(timer);
105
+ }
106
+ };
107
+ }
108
+ function resolveLinxCloudCompletionTimeoutMs() {
109
+ const raw = process.env.LINX_CHAT_TIMEOUT_MS;
110
+ if (!raw) {
111
+ return DEFAULT_LINX_CLOUD_COMPLETION_TIMEOUT_MS;
112
+ }
113
+ const parsed = Number(raw);
114
+ return Number.isFinite(parsed) && parsed > 0 ? parsed : DEFAULT_LINX_CLOUD_COMPLETION_TIMEOUT_MS;
115
+ }
116
+ function formatTimeoutSeconds(timeoutMs) {
117
+ return Math.max(1, Math.round(timeoutMs / 1000));
118
+ }
119
+ function isChatCompletionRuntimeUrl(value) {
120
+ try {
121
+ const target = new URL(value);
122
+ const segments = target.pathname.split('/').filter(Boolean);
123
+ return segments.length >= 3
124
+ && /^v\d+$/.test(segments.at(-3) ?? '')
125
+ && segments.at(-2) === 'chat'
126
+ && segments.at(-1) === 'completions';
127
+ }
128
+ catch {
129
+ return false;
130
+ }
131
+ }
132
+ function combineAbortSignals(left, right) {
133
+ if (typeof AbortSignal.any === 'function') {
134
+ return AbortSignal.any([left, right]);
135
+ }
136
+ const controller = new AbortController();
137
+ const abort = () => controller.abort();
138
+ if (left.aborted || right.aborted) {
139
+ abort();
140
+ return controller.signal;
141
+ }
142
+ left.addEventListener('abort', abort, { once: true });
143
+ right.addEventListener('abort', abort, { once: true });
144
+ return controller.signal;
145
+ }
146
+ //# sourceMappingURL=linx-cloud-runtime-auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linx-cloud-runtime-auth.js","sourceRoot":"","sources":["../../src/lib/linx-cloud-runtime-auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,102 @@
1
+ import { DEFAULT_LINX_CLOUD_MODEL_ID, resolvePreferredLinxCloudModelId } from './default-model.js';
2
+ import { isRemoteAuthExpiredError } from './chat-api.js';
3
+ import { loadCredentials } from './credentials-store.js';
4
+ import { clearDefaultPodDataSession } from './pod-data-session.js';
5
+ import { resolveLinxCloudRuntimeAuthFetch } from './linx-cloud-runtime-auth.js';
6
+ import { buildFallbackLinxCloudProviderModels, buildLinxCloudProviderModel, mergeLinxCloudProviderModels, } from './linx-cloud-models.js';
7
+ export function createLinxCloudRuntimeCoordinator(options) {
8
+ let activeModelId = options.requestedModel ?? DEFAULT_LINX_CLOUD_MODEL_ID;
9
+ let shouldPromptLogin = false;
10
+ const providerModels = buildFallbackLinxCloudProviderModels(activeModelId);
11
+ return {
12
+ providerModels,
13
+ getActiveModelId() {
14
+ return activeModelId;
15
+ },
16
+ shouldPromptLoginOnStart() {
17
+ return shouldPromptLogin;
18
+ },
19
+ async syncProviderModels(authSession, recoveryOptions = {}) {
20
+ if (!options.listRemoteModels) {
21
+ return;
22
+ }
23
+ const remoteModels = await listRemoteModelsWithAuthRecovery(authSession.runtimeFetch, recoveryOptions);
24
+ if (remoteModels.length === 0) {
25
+ return;
26
+ }
27
+ const mergedModels = mergeLinxCloudProviderModels(remoteModels.map((entry) => ({
28
+ id: entry.id,
29
+ contextWindow: entry.contextWindow,
30
+ })), activeModelId);
31
+ const nextModels = mergedModels.map((entry) => buildLinxCloudProviderModel(entry));
32
+ providerModels.splice(0, providerModels.length, ...nextModels);
33
+ if (!options.requestedModel) {
34
+ activeModelId = resolvePreferredLinxCloudModelId(nextModels, activeModelId);
35
+ }
36
+ },
37
+ async completeWithAuthRecovery(authFetch, request) {
38
+ if (!options.createRemoteCompletion) {
39
+ throw new Error('Cloud LinX runtime backend requires createRemoteCompletion');
40
+ }
41
+ try {
42
+ return await options.createRemoteCompletion({
43
+ ...request,
44
+ authFetch,
45
+ });
46
+ }
47
+ catch (error) {
48
+ if (!isRemoteAuthExpiredError(error)) {
49
+ throw error;
50
+ }
51
+ const refreshedAuthFetch = await resolveRefreshedLinxCloudAuthFetch();
52
+ if (!refreshedAuthFetch) {
53
+ throw error;
54
+ }
55
+ return options.createRemoteCompletion({
56
+ ...request,
57
+ authFetch: refreshedAuthFetch,
58
+ });
59
+ }
60
+ },
61
+ };
62
+ async function listRemoteModelsWithAuthRecovery(authFetch, recoveryOptions) {
63
+ try {
64
+ return await options.listRemoteModels(authFetch, options.runtimeUrl, { fallback: false, timeoutMs: 5000 });
65
+ }
66
+ catch (error) {
67
+ if (!isRemoteAuthExpiredError(error)) {
68
+ return [];
69
+ }
70
+ if (recoveryOptions.refreshOnAuthExpired) {
71
+ try {
72
+ const refreshedAuthFetch = await resolveRefreshedLinxCloudAuthFetch();
73
+ if (refreshedAuthFetch) {
74
+ return await options.listRemoteModels(refreshedAuthFetch, options.runtimeUrl, { fallback: false, timeoutMs: 5000 });
75
+ }
76
+ }
77
+ catch (retryError) {
78
+ if (!isRemoteAuthExpiredError(retryError)) {
79
+ return [];
80
+ }
81
+ }
82
+ }
83
+ shouldPromptLogin = true;
84
+ if (recoveryOptions.throwAuthExpired) {
85
+ throw error;
86
+ }
87
+ return [];
88
+ }
89
+ }
90
+ async function resolveRefreshedLinxCloudAuthFetch() {
91
+ clearDefaultPodDataSession();
92
+ const storedCredentials = loadCredentials();
93
+ if (storedCredentials || options.getPodDataSession) {
94
+ return resolveLinxCloudRuntimeAuthFetch({
95
+ issuerUrl: options.issuerUrl,
96
+ getPodDataSession: options.getPodDataSession,
97
+ });
98
+ }
99
+ return null;
100
+ }
101
+ }
102
+ //# sourceMappingURL=linx-cloud-runtime-coordinator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linx-cloud-runtime-coordinator.js","sourceRoot":"","sources":["../../src/lib/linx-cloud-runtime-coordinator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import { createCodexNativeProxy } from './codex-plugin/codex-native-proxy.js';
2
+ import { createSymphonyCodexMcpServer } from './codex-plugin/symphony-mcp.js';
3
+ export const symphonyCodexMcpCommand = {
4
+ command: 'symphony-codex-mcp',
5
+ describe: false,
6
+ builder(command) {
7
+ return command;
8
+ },
9
+ async handler() {
10
+ const server = createSymphonyCodexMcpServer();
11
+ const exitCode = await server.run();
12
+ process.exit(exitCode);
13
+ },
14
+ };
15
+ export const codexNativeProxyCommand = {
16
+ command: 'codex-native-proxy',
17
+ describe: false,
18
+ builder(command) {
19
+ return command
20
+ .option('cwd', {
21
+ type: 'string',
22
+ describe: 'Workspace path exposed to the native Codex shell',
23
+ })
24
+ .option('model', {
25
+ type: 'string',
26
+ describe: 'Model override forwarded to the native proxy session metadata',
27
+ })
28
+ .option('port', {
29
+ type: 'number',
30
+ default: 8787,
31
+ describe: 'Local websocket listen port for codex --remote',
32
+ });
33
+ },
34
+ async handler(argv) {
35
+ const proxy = createCodexNativeProxy({
36
+ cwd: argv.cwd || process.cwd(),
37
+ model: argv.model,
38
+ listenPort: argv.port,
39
+ });
40
+ await proxy.start();
41
+ process.stdout.write(`[linx] native codex proxy ready\n`);
42
+ process.stdout.write(`[linx] connect with: codex --remote ${proxy.remoteUrl} -C ${proxy.record.cwd}\n`);
43
+ const shutdown = async () => {
44
+ await proxy.close();
45
+ process.exit(0);
46
+ };
47
+ process.on('SIGINT', () => {
48
+ void shutdown();
49
+ });
50
+ process.on('SIGTERM', () => {
51
+ void shutdown();
52
+ });
53
+ await new Promise(() => { });
54
+ },
55
+ };
56
+ //# sourceMappingURL=linx-codex-plugin-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linx-codex-plugin-command.js","sourceRoot":"","sources":["../../src/lib/linx-codex-plugin-command.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAA;AAC7E,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAA;AAQ7E,MAAM,CAAC,MAAM,uBAAuB,GAAkC;IACpE,OAAO,EAAE,oBAAoB;IAC7B,QAAQ,EAAE,KAAK;IACf,OAAO,CAAC,OAAO;QACb,OAAO,OAAO,CAAA;IAChB,CAAC;IACD,KAAK,CAAC,OAAO;QACX,MAAM,MAAM,GAAG,4BAA4B,EAAE,CAAA;QAC7C,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,EAAE,CAAA;QACnC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACxB,CAAC;CACF,CAAA;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAuD;IACzF,OAAO,EAAE,oBAAoB;IAC7B,QAAQ,EAAE,KAAK;IACf,OAAO,CAAC,OAAO;QACb,OAAO,OAAO;aACX,MAAM,CAAC,KAAK,EAAE;YACb,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,kDAAkD;SAC7D,CAAC;aACD,MAAM,CAAC,OAAO,EAAE;YACf,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,+DAA+D;SAC1E,CAAC;aACD,MAAM,CAAC,MAAM,EAAE;YACd,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,gDAAgD;SAC3D,CAAsC,CAAA;IAC3C,CAAC;IACD,KAAK,CAAC,OAAO,CAAC,IAAI;QAChB,MAAM,KAAK,GAAG,sBAAsB,CAAC;YACnC,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE;YAC9B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,UAAU,EAAE,IAAI,CAAC,IAAI;SACtB,CAAC,CAAA;QAEF,MAAM,KAAK,CAAC,KAAK,EAAE,CAAA;QACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAA;QACzD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,KAAK,CAAC,SAAS,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAA;QAEvG,MAAM,QAAQ,GAAG,KAAK,IAAmB,EAAE;YACzC,MAAM,KAAK,CAAC,KAAK,EAAE,CAAA;YACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC,CAAA;QAED,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;YACxB,KAAK,QAAQ,EAAE,CAAA;QACjB,CAAC,CAAC,CAAA;QACF,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;YACzB,KAAK,QAAQ,EAAE,CAAA;QACjB,CAAC,CAAC,CAAA;QAEF,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IAC7B,CAAC;CACF,CAAA"}
@@ -0,0 +1,123 @@
1
+ import { getAIConfigProviderCatalog } from './models.js';
2
+ import { installLinxInteractiveAutocompleteCommands } from './linx-interactive-autocomplete-host.js';
3
+ export function installSymphonyAutocomplete(interactive) {
4
+ installLinxCommandAutocomplete(interactive);
5
+ }
6
+ export function installLinxCommandAutocomplete(interactive) {
7
+ installLinxInteractiveAutocompleteCommands(interactive, LINX_INTERACTIVE_SLASH_COMMANDS, getAutocompleteCommandName);
8
+ }
9
+ const LINX_INTERACTIVE_SLASH_COMMANDS = [
10
+ {
11
+ name: 'auto',
12
+ argumentHint: 'on|off|status',
13
+ description: 'toggle AI Secretary driving for this session',
14
+ getArgumentCompletions: (prefix) => completeStaticArguments(prefix, [
15
+ { value: 'on', description: 'Secretary drives the session and asks when blocked' },
16
+ { value: 'off', description: 'User drives the session directly' },
17
+ { value: 'status', description: 'Show whether Secretary driving is enabled' },
18
+ ]),
19
+ },
20
+ {
21
+ name: 'cd',
22
+ argumentHint: '<dir>',
23
+ description: 'change workspace for this LinX session',
24
+ },
25
+ {
26
+ name: 'goal',
27
+ argumentHint: '<peer-command>',
28
+ description: 'send a goal command to the current chat peer',
29
+ },
30
+ {
31
+ name: 'rewind',
32
+ description: 'select a user message and rewind the active branch before it',
33
+ },
34
+ {
35
+ name: 'statusline',
36
+ argumentHint: 'set|colors|tokens|reset',
37
+ description: 'configure which items appear in the status line',
38
+ getArgumentCompletions: (prefix) => completeStaticArguments(prefix, [
39
+ { value: 'set', description: 'Set status line tokens' },
40
+ { value: 'colors', description: 'Enable or disable status line colors' },
41
+ { value: 'tokens', description: 'List available status line tokens' },
42
+ { value: 'reset', description: 'Restore default status line tokens' },
43
+ ]),
44
+ },
45
+ {
46
+ name: 'update',
47
+ description: 'check for a LinX CLI update and install from the TUI',
48
+ },
49
+ {
50
+ name: 'ai',
51
+ argumentHint: 'connect <provider>',
52
+ description: 'connect AI provider credentials to LinX Pod settings',
53
+ getArgumentCompletions: completeAiArguments,
54
+ },
55
+ {
56
+ name: 'symphony',
57
+ argumentHint: 'on|off|status',
58
+ description: 'turn Secretary task handoff on/off, or show status',
59
+ getArgumentCompletions: (prefix) => completeStaticArguments(prefix, [
60
+ { value: 'on', description: 'Secretary can plan and hand off larger tasks' },
61
+ { value: 'off', description: 'Return to direct chat' },
62
+ { value: 'status', description: 'Show whether Symphony task handoff is enabled' },
63
+ ]),
64
+ },
65
+ ];
66
+ function completeStaticArguments(prefix, options) {
67
+ const normalized = prefix.trimStart().toLowerCase();
68
+ const matches = options.filter((option) => option.value.startsWith(normalized));
69
+ if (matches.length === 0) {
70
+ return null;
71
+ }
72
+ return matches.map((option) => ({
73
+ value: option.value,
74
+ label: option.value,
75
+ description: option.description,
76
+ }));
77
+ }
78
+ function completeAiArguments(prefix) {
79
+ const input = prefix.trimStart().toLowerCase();
80
+ if (!input || 'connect'.startsWith(input)) {
81
+ return [{
82
+ value: 'connect ',
83
+ label: 'connect',
84
+ description: 'Connect an AI provider key to LinX Pod AI settings',
85
+ }];
86
+ }
87
+ const connectPrefix = 'connect ';
88
+ if (!input.startsWith(connectPrefix)) {
89
+ return null;
90
+ }
91
+ const providerPrefix = input.slice(connectPrefix.length);
92
+ const providers = getAiConnectCompletionProviders();
93
+ const matches = providers.filter((provider) => provider.startsWith(providerPrefix));
94
+ if (matches.length === 0) {
95
+ return null;
96
+ }
97
+ return matches.map((provider) => ({
98
+ value: `connect ${provider}`,
99
+ label: provider,
100
+ description: `Connect ${provider} credentials`,
101
+ }));
102
+ }
103
+ function getAiConnectCompletionProviders() {
104
+ const providerIds = [];
105
+ const aliases = [];
106
+ for (const entry of getAIConfigProviderCatalog()) {
107
+ providerIds.push(entry.id);
108
+ aliases.push(...(entry.aliases ?? []));
109
+ }
110
+ return Array.from(new Set([...providerIds, ...aliases]));
111
+ }
112
+ function getAutocompleteCommandName(command) {
113
+ if (!command || typeof command !== 'object') {
114
+ return undefined;
115
+ }
116
+ const value = 'name' in command
117
+ ? command.name
118
+ : 'value' in command
119
+ ? command.value
120
+ : undefined;
121
+ return typeof value === 'string' ? value : undefined;
122
+ }
123
+ //# sourceMappingURL=linx-command-autocomplete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linx-command-autocomplete.js","sourceRoot":"","sources":["../../src/lib/linx-command-autocomplete.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=linx-completion-backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linx-completion-backend.js","sourceRoot":"","sources":["../../src/lib/linx-completion-backend.ts"],"names":[],"mappings":""}
@@ -0,0 +1,12 @@
1
+ import { statusLineConfigCommand } from './linx-status-line-config-command.js';
2
+ export const configCommand = {
3
+ command: 'config <section>',
4
+ describe: 'Show or configure LinX local settings',
5
+ builder: (yargs) => yargs
6
+ .command(statusLineConfigCommand)
7
+ .demandCommand(1, 'Specify a config section. Try `linx config status-line --help`.')
8
+ .strict()
9
+ .help(),
10
+ handler() { },
11
+ };
12
+ //# sourceMappingURL=linx-config-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linx-config-command.js","sourceRoot":"","sources":["../../src/lib/linx-config-command.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAA;AAE9E,MAAM,CAAC,MAAM,aAAa,GAAkC;IAC1D,OAAO,EAAE,kBAAkB;IAC3B,QAAQ,EAAE,uCAAuC;IACjD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,KAAK;SACF,OAAO,CAAC,uBAAuB,CAAC;SAChC,aAAa,CAAC,CAAC,EAAE,iEAAiE,CAAC;SACnF,MAAM,EAAE;SACR,IAAI,EAAE;IACX,OAAO,KAAU,CAAC;CACnB,CAAA"}
@@ -0,0 +1,83 @@
1
+ import { LoginDialogComponent } from '@earendil-works/pi-coding-agent';
2
+ const LINX_EDITOR_COMPONENT_ROUTER = Symbol.for('linx.tui.editorComponentRouter');
3
+ export function registerLinxEditorComponentRebindHandler(interactive, entry) {
4
+ const state = getLinxEditorComponentRouterState(interactive);
5
+ if (state.handlers.some((existing) => existing.name === entry.name)) {
6
+ return;
7
+ }
8
+ state.handlers.push(entry);
9
+ state.handlers.sort((left, right) => (left.priority ?? 0) - (right.priority ?? 0));
10
+ installLinxEditorComponentRouter(interactive, state);
11
+ }
12
+ function getLinxEditorComponentRouterState(interactive) {
13
+ if (!interactive || typeof interactive !== 'object') {
14
+ return { installed: true, handlers: [] };
15
+ }
16
+ const existing = interactive[LINX_EDITOR_COMPONENT_ROUTER];
17
+ if (existing && typeof existing === 'object' && Array.isArray(existing.handlers)) {
18
+ return existing;
19
+ }
20
+ const state = {
21
+ installed: false,
22
+ handlers: [],
23
+ };
24
+ interactive[LINX_EDITOR_COMPONENT_ROUTER] = state;
25
+ return state;
26
+ }
27
+ function installLinxEditorComponentRouter(interactive, state) {
28
+ if (state.installed) {
29
+ return;
30
+ }
31
+ const originalSetCustomEditorComponent = interactive?.setCustomEditorComponent?.bind(interactive);
32
+ if (typeof originalSetCustomEditorComponent !== 'function') {
33
+ return;
34
+ }
35
+ interactive.setCustomEditorComponent = function patchedLinxEditorComponentRouter(...args) {
36
+ const result = originalSetCustomEditorComponent(...args);
37
+ const context = { interactive: this, args, result };
38
+ for (const entry of state.handlers) {
39
+ entry.handler(context);
40
+ }
41
+ return result;
42
+ };
43
+ state.installed = true;
44
+ }
45
+ export function canMountLinxEditorComponent(interactive) {
46
+ return Boolean(interactive?.ui
47
+ && interactive?.editor
48
+ && typeof interactive?.editorContainer?.clear === 'function'
49
+ && typeof interactive?.editorContainer?.addChild === 'function'
50
+ && typeof interactive?.ui?.setFocus === 'function'
51
+ && typeof interactive?.ui?.requestRender === 'function');
52
+ }
53
+ export function mountLinxEditorComponent(interactive, component) {
54
+ interactive.editorContainer.clear();
55
+ interactive.editorContainer.addChild(component);
56
+ interactive.ui?.setFocus?.(component);
57
+ interactive.ui?.requestRender?.();
58
+ return () => restoreLinxEditorComponent(interactive);
59
+ }
60
+ export function createLinxLoginDialogComponent(interactive, providerId, providerLabel, title) {
61
+ return new LoginDialogComponent(interactive.ui, providerId, () => undefined, providerLabel, title);
62
+ }
63
+ export function forEachLinxInteractiveEditorComponent(interactive, callback) {
64
+ const editors = [getLinxInteractiveDefaultEditorComponent(interactive), interactive?.editor];
65
+ const seen = new Set();
66
+ for (const editor of editors) {
67
+ if (!editor || seen.has(editor)) {
68
+ continue;
69
+ }
70
+ seen.add(editor);
71
+ callback(editor);
72
+ }
73
+ }
74
+ export function getLinxInteractiveDefaultEditorComponent(interactive) {
75
+ return interactive?.defaultEditor;
76
+ }
77
+ function restoreLinxEditorComponent(interactive) {
78
+ interactive.editorContainer.clear();
79
+ interactive.editorContainer.addChild(interactive.editor);
80
+ interactive.ui?.setFocus?.(interactive.editor);
81
+ interactive.ui?.requestRender?.();
82
+ }
83
+ //# sourceMappingURL=linx-editor-component-router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linx-editor-component-router.js","sourceRoot":"","sources":["../../src/lib/linx-editor-component-router.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ const LINX_EXTENSION_UI_CONTEXT_ROUTER = Symbol.for('linx.tui.extensionUiContextRouter');
2
+ export function registerLinxExtensionUiContextHandler(interactive, entry) {
3
+ const state = getLinxExtensionUiContextRouterState(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
+ installLinxExtensionUiContextRouter(interactive, state);
10
+ }
11
+ function getLinxExtensionUiContextRouterState(interactive) {
12
+ if (!interactive || typeof interactive !== 'object') {
13
+ return { installed: true, handlers: [] };
14
+ }
15
+ const existing = interactive[LINX_EXTENSION_UI_CONTEXT_ROUTER];
16
+ if (existing && typeof existing === 'object' && Array.isArray(existing.handlers)) {
17
+ return existing;
18
+ }
19
+ const state = {
20
+ installed: false,
21
+ handlers: [],
22
+ };
23
+ interactive[LINX_EXTENSION_UI_CONTEXT_ROUTER] = state;
24
+ return state;
25
+ }
26
+ function installLinxExtensionUiContextRouter(interactive, state) {
27
+ if (state.installed) {
28
+ return;
29
+ }
30
+ const originalCreateExtensionUiContext = interactive?.createExtensionUIContext?.bind(interactive);
31
+ if (typeof originalCreateExtensionUiContext !== 'function') {
32
+ return;
33
+ }
34
+ interactive.createExtensionUIContext = function patchedLinxExtensionUiContextRouter(...args) {
35
+ let ui = originalCreateExtensionUiContext(...args);
36
+ for (const entry of state.handlers) {
37
+ ui = entry.handler({ interactive: this, args, ui });
38
+ }
39
+ return ui;
40
+ };
41
+ state.installed = true;
42
+ }
43
+ //# sourceMappingURL=linx-extension-ui-context-router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linx-extension-ui-context-router.js","sourceRoot":"","sources":["../../src/lib/linx-extension-ui-context-router.ts"],"names":[],"mappings":"AAqBA,MAAM,gCAAgC,GAAG,MAAM,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAA;AAExF,MAAM,UAAU,qCAAqC,CACnD,WAAgB,EAChB,KAAyC;IAEzC,MAAM,KAAK,GAAG,oCAAoC,CAAC,WAAW,CAAC,CAAA;IAC/D,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,mCAAmC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;AACzD,CAAC;AAED,SAAS,oCAAoC,CAAC,WAAgB;IAC5D,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,gCAAgC,CAAC,CAAA;IAC9D,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjF,OAAO,QAA6C,CAAA;IACtD,CAAC;IAED,MAAM,KAAK,GAAsC;QAC/C,SAAS,EAAE,KAAK;QAChB,QAAQ,EAAE,EAAE;KACb,CAAA;IACD,WAAW,CAAC,gCAAgC,CAAC,GAAG,KAAK,CAAA;IACrD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,mCAAmC,CAC1C,WAAgB,EAChB,KAAwC;IAExC,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACpB,OAAM;IACR,CAAC;IAED,MAAM,gCAAgC,GAAG,WAAW,EAAE,wBAAwB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;IACjG,IAAI,OAAO,gCAAgC,KAAK,UAAU,EAAE,CAAC;QAC3D,OAAM;IACR,CAAC;IAED,WAAW,CAAC,wBAAwB,GAAG,SAAS,mCAAmC,CAAC,GAAG,IAAe;QACpG,IAAI,EAAE,GAAG,gCAAgC,CAAC,GAAG,IAAI,CAAC,CAAA;QAClD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnC,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAA;QACrD,CAAC;QACD,OAAO,EAAE,CAAA;IACX,CAAC,CAAA;IACD,KAAK,CAAC,SAAS,GAAG,IAAI,CAAA;AACxB,CAAC"}
@@ -0,0 +1,8 @@
1
+ export function openLinxInteractiveExternalUrl(interactive, url) {
2
+ if (typeof interactive?.openExternal !== 'function') {
3
+ return false;
4
+ }
5
+ interactive.openExternal(url);
6
+ return true;
7
+ }
8
+ //# sourceMappingURL=linx-external-open-host.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linx-external-open-host.js","sourceRoot":"","sources":["../../src/lib/linx-external-open-host.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,8BAA8B,CAAC,WAAgB,EAAE,GAAW;IAC1E,IAAI,OAAO,WAAW,EAAE,YAAY,KAAK,UAAU,EAAE,CAAC;QACpD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;IAC7B,OAAO,IAAI,CAAA;AACb,CAAC"}