@jini-ai/agent-runtime 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (399) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +43 -0
  3. package/dist/acp-model-probe.d.ts +48 -0
  4. package/dist/acp-model-probe.d.ts.map +1 -0
  5. package/dist/acp-model-probe.js +15 -0
  6. package/dist/acp-model-probe.js.map +1 -0
  7. package/dist/agent-protocol/acp/account-failure.d.ts +54 -0
  8. package/dist/agent-protocol/acp/account-failure.d.ts.map +1 -0
  9. package/dist/agent-protocol/acp/account-failure.js +37 -0
  10. package/dist/agent-protocol/acp/account-failure.js.map +1 -0
  11. package/dist/agent-protocol/acp/constants.d.ts +26 -0
  12. package/dist/agent-protocol/acp/constants.d.ts.map +1 -0
  13. package/dist/agent-protocol/acp/constants.js +39 -0
  14. package/dist/agent-protocol/acp/constants.js.map +1 -0
  15. package/dist/agent-protocol/acp/index.d.ts +14 -0
  16. package/dist/agent-protocol/acp/index.d.ts.map +1 -0
  17. package/dist/agent-protocol/acp/index.js +14 -0
  18. package/dist/agent-protocol/acp/index.js.map +1 -0
  19. package/dist/agent-protocol/acp/json.d.ts +82 -0
  20. package/dist/agent-protocol/acp/json.d.ts.map +1 -0
  21. package/dist/agent-protocol/acp/json.js +144 -0
  22. package/dist/agent-protocol/acp/json.js.map +1 -0
  23. package/dist/agent-protocol/acp/models.d.ts +112 -0
  24. package/dist/agent-protocol/acp/models.d.ts.map +1 -0
  25. package/dist/agent-protocol/acp/models.js +293 -0
  26. package/dist/agent-protocol/acp/models.js.map +1 -0
  27. package/dist/agent-protocol/acp/rpc.d.ts +107 -0
  28. package/dist/agent-protocol/acp/rpc.d.ts.map +1 -0
  29. package/dist/agent-protocol/acp/rpc.js +162 -0
  30. package/dist/agent-protocol/acp/rpc.js.map +1 -0
  31. package/dist/agent-protocol/acp/session-params.d.ts +55 -0
  32. package/dist/agent-protocol/acp/session-params.d.ts.map +1 -0
  33. package/dist/agent-protocol/acp/session-params.js +81 -0
  34. package/dist/agent-protocol/acp/session-params.js.map +1 -0
  35. package/dist/agent-protocol/acp/session.d.ts +101 -0
  36. package/dist/agent-protocol/acp/session.d.ts.map +1 -0
  37. package/dist/agent-protocol/acp/session.js +832 -0
  38. package/dist/agent-protocol/acp/session.js.map +1 -0
  39. package/dist/agent-protocol/acp/text-suppression.d.ts +73 -0
  40. package/dist/agent-protocol/acp/text-suppression.d.ts.map +1 -0
  41. package/dist/agent-protocol/acp/text-suppression.js +229 -0
  42. package/dist/agent-protocol/acp/text-suppression.js.map +1 -0
  43. package/dist/agent-protocol/acp/types.d.ts +27 -0
  44. package/dist/agent-protocol/acp/types.d.ts.map +1 -0
  45. package/dist/agent-protocol/acp/types.js +2 -0
  46. package/dist/agent-protocol/acp/types.js.map +1 -0
  47. package/dist/agent-protocol/acp/updates.d.ts +166 -0
  48. package/dist/agent-protocol/acp/updates.d.ts.map +1 -0
  49. package/dist/agent-protocol/acp/updates.js +268 -0
  50. package/dist/agent-protocol/acp/updates.js.map +1 -0
  51. package/dist/agent-protocol/core/index.d.ts +6 -0
  52. package/dist/agent-protocol/core/index.d.ts.map +1 -0
  53. package/dist/agent-protocol/core/index.js +6 -0
  54. package/dist/agent-protocol/core/index.js.map +1 -0
  55. package/dist/agent-protocol/core/json-line-stream.d.ts +42 -0
  56. package/dist/agent-protocol/core/json-line-stream.d.ts.map +1 -0
  57. package/dist/agent-protocol/core/json-line-stream.js +333 -0
  58. package/dist/agent-protocol/core/json-line-stream.js.map +1 -0
  59. package/dist/agent-protocol/index.d.ts +8 -0
  60. package/dist/agent-protocol/index.d.ts.map +1 -0
  61. package/dist/agent-protocol/index.js +8 -0
  62. package/dist/agent-protocol/index.js.map +1 -0
  63. package/dist/agent-protocol/pi-rpc/events.d.ts +26 -0
  64. package/dist/agent-protocol/pi-rpc/events.d.ts.map +1 -0
  65. package/dist/agent-protocol/pi-rpc/events.js +167 -0
  66. package/dist/agent-protocol/pi-rpc/events.js.map +1 -0
  67. package/dist/agent-protocol/pi-rpc/index.d.ts +11 -0
  68. package/dist/agent-protocol/pi-rpc/index.d.ts.map +1 -0
  69. package/dist/agent-protocol/pi-rpc/index.js +11 -0
  70. package/dist/agent-protocol/pi-rpc/index.js.map +1 -0
  71. package/dist/agent-protocol/pi-rpc/internal.d.ts +45 -0
  72. package/dist/agent-protocol/pi-rpc/internal.d.ts.map +1 -0
  73. package/dist/agent-protocol/pi-rpc/internal.js +41 -0
  74. package/dist/agent-protocol/pi-rpc/internal.js.map +1 -0
  75. package/dist/agent-protocol/pi-rpc/models.d.ts +21 -0
  76. package/dist/agent-protocol/pi-rpc/models.d.ts.map +1 -0
  77. package/dist/agent-protocol/pi-rpc/models.js +48 -0
  78. package/dist/agent-protocol/pi-rpc/models.js.map +1 -0
  79. package/dist/agent-protocol/pi-rpc/session.d.ts +106 -0
  80. package/dist/agent-protocol/pi-rpc/session.d.ts.map +1 -0
  81. package/dist/agent-protocol/pi-rpc/session.js +371 -0
  82. package/dist/agent-protocol/pi-rpc/session.js.map +1 -0
  83. package/dist/amr-model-cache.d.ts +40 -0
  84. package/dist/amr-model-cache.d.ts.map +1 -0
  85. package/dist/amr-model-cache.js +79 -0
  86. package/dist/amr-model-cache.js.map +1 -0
  87. package/dist/amr-profile-resolver.d.ts +21 -0
  88. package/dist/amr-profile-resolver.d.ts.map +1 -0
  89. package/dist/amr-profile-resolver.js +4 -0
  90. package/dist/amr-profile-resolver.js.map +1 -0
  91. package/dist/artifact-taxonomy.d.ts +27 -0
  92. package/dist/artifact-taxonomy.d.ts.map +1 -0
  93. package/dist/artifact-taxonomy.js +5 -0
  94. package/dist/artifact-taxonomy.js.map +1 -0
  95. package/dist/auth.d.ts +25 -0
  96. package/dist/auth.d.ts.map +1 -0
  97. package/dist/auth.js +332 -0
  98. package/dist/auth.js.map +1 -0
  99. package/dist/capabilities.d.ts +9 -0
  100. package/dist/capabilities.d.ts.map +1 -0
  101. package/dist/capabilities.js +2 -0
  102. package/dist/capabilities.js.map +1 -0
  103. package/dist/claude-stream.d.ts +37 -0
  104. package/dist/claude-stream.d.ts.map +1 -0
  105. package/dist/claude-stream.js +660 -0
  106. package/dist/claude-stream.js.map +1 -0
  107. package/dist/copilot-stream.d.ts +37 -0
  108. package/dist/copilot-stream.d.ts.map +1 -0
  109. package/dist/copilot-stream.js +136 -0
  110. package/dist/copilot-stream.js.map +1 -0
  111. package/dist/defs/aider.d.ts +13 -0
  112. package/dist/defs/aider.d.ts.map +1 -0
  113. package/dist/defs/aider.js +63 -0
  114. package/dist/defs/aider.js.map +1 -0
  115. package/dist/defs/amp.d.ts +12 -0
  116. package/dist/defs/amp.d.ts.map +1 -0
  117. package/dist/defs/amp.js +56 -0
  118. package/dist/defs/amp.js.map +1 -0
  119. package/dist/defs/amr.d.ts +37 -0
  120. package/dist/defs/amr.d.ts.map +1 -0
  121. package/dist/defs/amr.js +303 -0
  122. package/dist/defs/amr.js.map +1 -0
  123. package/dist/defs/antigravity.d.ts +25 -0
  124. package/dist/defs/antigravity.d.ts.map +1 -0
  125. package/dist/defs/antigravity.js +213 -0
  126. package/dist/defs/antigravity.js.map +1 -0
  127. package/dist/defs/claude.d.ts +30 -0
  128. package/dist/defs/claude.d.ts.map +1 -0
  129. package/dist/defs/claude.js +130 -0
  130. package/dist/defs/claude.js.map +1 -0
  131. package/dist/defs/codebuddy.d.ts +26 -0
  132. package/dist/defs/codebuddy.d.ts.map +1 -0
  133. package/dist/defs/codebuddy.js +124 -0
  134. package/dist/defs/codebuddy.js.map +1 -0
  135. package/dist/defs/codex.d.ts +30 -0
  136. package/dist/defs/codex.d.ts.map +1 -0
  137. package/dist/defs/codex.js +196 -0
  138. package/dist/defs/codex.js.map +1 -0
  139. package/dist/defs/copilot.d.ts +12 -0
  140. package/dist/defs/copilot.d.ts.map +1 -0
  141. package/dist/defs/copilot.js +88 -0
  142. package/dist/defs/copilot.js.map +1 -0
  143. package/dist/defs/cursor-agent.d.ts +27 -0
  144. package/dist/defs/cursor-agent.d.ts.map +1 -0
  145. package/dist/defs/cursor-agent.js +93 -0
  146. package/dist/defs/cursor-agent.js.map +1 -0
  147. package/dist/defs/deepseek.d.ts +12 -0
  148. package/dist/defs/deepseek.d.ts.map +1 -0
  149. package/dist/defs/deepseek.js +53 -0
  150. package/dist/defs/deepseek.js.map +1 -0
  151. package/dist/defs/devin.d.ts +12 -0
  152. package/dist/defs/devin.d.ts.map +1 -0
  153. package/dist/defs/devin.js +45 -0
  154. package/dist/defs/devin.js.map +1 -0
  155. package/dist/defs/grok-build.d.ts +26 -0
  156. package/dist/defs/grok-build.d.ts.map +1 -0
  157. package/dist/defs/grok-build.js +105 -0
  158. package/dist/defs/grok-build.js.map +1 -0
  159. package/dist/defs/hermes.d.ts +13 -0
  160. package/dist/defs/hermes.d.ts.map +1 -0
  161. package/dist/defs/hermes.js +51 -0
  162. package/dist/defs/hermes.js.map +1 -0
  163. package/dist/defs/index.d.ts +33 -0
  164. package/dist/defs/index.d.ts.map +1 -0
  165. package/dist/defs/index.js +33 -0
  166. package/dist/defs/index.js.map +1 -0
  167. package/dist/defs/kilo.d.ts +12 -0
  168. package/dist/defs/kilo.d.ts.map +1 -0
  169. package/dist/defs/kilo.js +20 -0
  170. package/dist/defs/kilo.js.map +1 -0
  171. package/dist/defs/kimi.d.ts +13 -0
  172. package/dist/defs/kimi.d.ts.map +1 -0
  173. package/dist/defs/kimi.js +26 -0
  174. package/dist/defs/kimi.js.map +1 -0
  175. package/dist/defs/kiro.d.ts +12 -0
  176. package/dist/defs/kiro.d.ts.map +1 -0
  177. package/dist/defs/kiro.js +20 -0
  178. package/dist/defs/kiro.js.map +1 -0
  179. package/dist/defs/mimo.d.ts +13 -0
  180. package/dist/defs/mimo.d.ts.map +1 -0
  181. package/dist/defs/mimo.js +26 -0
  182. package/dist/defs/mimo.js.map +1 -0
  183. package/dist/defs/opencode.d.ts +27 -0
  184. package/dist/defs/opencode.d.ts.map +1 -0
  185. package/dist/defs/opencode.js +89 -0
  186. package/dist/defs/opencode.js.map +1 -0
  187. package/dist/defs/pi.d.ts +18 -0
  188. package/dist/defs/pi.d.ts.map +1 -0
  189. package/dist/defs/pi.js +94 -0
  190. package/dist/defs/pi.js.map +1 -0
  191. package/dist/defs/qoder.d.ts +11 -0
  192. package/dist/defs/qoder.d.ts.map +1 -0
  193. package/dist/defs/qoder.js +50 -0
  194. package/dist/defs/qoder.js.map +1 -0
  195. package/dist/defs/qwen.d.ts +11 -0
  196. package/dist/defs/qwen.d.ts.map +1 -0
  197. package/dist/defs/qwen.js +28 -0
  198. package/dist/defs/qwen.js.map +1 -0
  199. package/dist/defs/reasonix.d.ts +20 -0
  200. package/dist/defs/reasonix.d.ts.map +1 -0
  201. package/dist/defs/reasonix.js +60 -0
  202. package/dist/defs/reasonix.js.map +1 -0
  203. package/dist/defs/shared.d.ts +23 -0
  204. package/dist/defs/shared.d.ts.map +1 -0
  205. package/dist/defs/shared.js +58 -0
  206. package/dist/defs/shared.js.map +1 -0
  207. package/dist/defs/trae-cli.d.ts +14 -0
  208. package/dist/defs/trae-cli.d.ts.map +1 -0
  209. package/dist/defs/trae-cli.js +22 -0
  210. package/dist/defs/trae-cli.js.map +1 -0
  211. package/dist/defs/vibe.d.ts +12 -0
  212. package/dist/defs/vibe.d.ts.map +1 -0
  213. package/dist/defs/vibe.js +20 -0
  214. package/dist/defs/vibe.js.map +1 -0
  215. package/dist/detection.d.ts +14 -0
  216. package/dist/detection.d.ts.map +1 -0
  217. package/dist/detection.js +266 -0
  218. package/dist/detection.js.map +1 -0
  219. package/dist/diagnostics.d.ts +8 -0
  220. package/dist/diagnostics.d.ts.map +1 -0
  221. package/dist/diagnostics.js +95 -0
  222. package/dist/diagnostics.js.map +1 -0
  223. package/dist/env.d.ts +19 -0
  224. package/dist/env.d.ts.map +1 -0
  225. package/dist/env.js +95 -0
  226. package/dist/env.js.map +1 -0
  227. package/dist/executables.d.ts +24 -0
  228. package/dist/executables.d.ts.map +1 -0
  229. package/dist/executables.js +349 -0
  230. package/dist/executables.js.map +1 -0
  231. package/dist/index.d.ts +74 -0
  232. package/dist/index.d.ts.map +1 -0
  233. package/dist/index.js +102 -0
  234. package/dist/index.js.map +1 -0
  235. package/dist/invocation.d.ts +6 -0
  236. package/dist/invocation.d.ts.map +1 -0
  237. package/dist/invocation.js +47 -0
  238. package/dist/invocation.js.map +1 -0
  239. package/dist/json-event-stream.d.ts +9 -0
  240. package/dist/json-event-stream.d.ts.map +1 -0
  241. package/dist/json-event-stream.js +856 -0
  242. package/dist/json-event-stream.js.map +1 -0
  243. package/dist/launch.d.ts +12 -0
  244. package/dist/launch.d.ts.map +1 -0
  245. package/dist/launch.js +221 -0
  246. package/dist/launch.js.map +1 -0
  247. package/dist/mcp.d.ts +44 -0
  248. package/dist/mcp.d.ts.map +1 -0
  249. package/dist/mcp.js +12 -0
  250. package/dist/mcp.js.map +1 -0
  251. package/dist/metadata.d.ts +24 -0
  252. package/dist/metadata.d.ts.map +1 -0
  253. package/dist/metadata.js +100 -0
  254. package/dist/metadata.js.map +1 -0
  255. package/dist/mmd-routes.d.ts +12 -0
  256. package/dist/mmd-routes.d.ts.map +1 -0
  257. package/dist/mmd-routes.js +146 -0
  258. package/dist/mmd-routes.js.map +1 -0
  259. package/dist/model-registry.d.ts +120 -0
  260. package/dist/model-registry.d.ts.map +1 -0
  261. package/dist/model-registry.js +77 -0
  262. package/dist/model-registry.js.map +1 -0
  263. package/dist/models.d.ts +16 -0
  264. package/dist/models.d.ts.map +1 -0
  265. package/dist/models.js +93 -0
  266. package/dist/models.js.map +1 -0
  267. package/dist/opencode-log.d.ts +16 -0
  268. package/dist/opencode-log.d.ts.map +1 -0
  269. package/dist/opencode-log.js +163 -0
  270. package/dist/opencode-log.js.map +1 -0
  271. package/dist/paths.d.ts +3 -0
  272. package/dist/paths.d.ts.map +1 -0
  273. package/dist/paths.js +29 -0
  274. package/dist/paths.js.map +1 -0
  275. package/dist/pi-models.d.ts +13 -0
  276. package/dist/pi-models.d.ts.map +1 -0
  277. package/dist/pi-models.js +36 -0
  278. package/dist/pi-models.js.map +1 -0
  279. package/dist/prompt-augmenter.d.ts +60 -0
  280. package/dist/prompt-augmenter.d.ts.map +1 -0
  281. package/dist/prompt-augmenter.js +26 -0
  282. package/dist/prompt-augmenter.js.map +1 -0
  283. package/dist/prompt-budget.d.ts +20 -0
  284. package/dist/prompt-budget.d.ts.map +1 -0
  285. package/dist/prompt-budget.js +226 -0
  286. package/dist/prompt-budget.js.map +1 -0
  287. package/dist/prompt-file.d.ts +7 -0
  288. package/dist/prompt-file.d.ts.map +1 -0
  289. package/dist/prompt-file.js +27 -0
  290. package/dist/prompt-file.js.map +1 -0
  291. package/dist/providers/aihubmix.d.ts +99 -0
  292. package/dist/providers/aihubmix.d.ts.map +1 -0
  293. package/dist/providers/aihubmix.js +239 -0
  294. package/dist/providers/aihubmix.js.map +1 -0
  295. package/dist/providers/anthropic-messages.d.ts +116 -0
  296. package/dist/providers/anthropic-messages.d.ts.map +1 -0
  297. package/dist/providers/anthropic-messages.js +313 -0
  298. package/dist/providers/anthropic-messages.js.map +1 -0
  299. package/dist/providers/azure-chat.d.ts +99 -0
  300. package/dist/providers/azure-chat.d.ts.map +1 -0
  301. package/dist/providers/azure-chat.js +164 -0
  302. package/dist/providers/azure-chat.js.map +1 -0
  303. package/dist/providers/connection-guard.d.ts +67 -0
  304. package/dist/providers/connection-guard.d.ts.map +1 -0
  305. package/dist/providers/connection-guard.js +211 -0
  306. package/dist/providers/connection-guard.js.map +1 -0
  307. package/dist/providers/elevenlabs.d.ts +28 -0
  308. package/dist/providers/elevenlabs.d.ts.map +1 -0
  309. package/dist/providers/elevenlabs.js +138 -0
  310. package/dist/providers/elevenlabs.js.map +1 -0
  311. package/dist/providers/google-messages.d.ts +108 -0
  312. package/dist/providers/google-messages.d.ts.map +1 -0
  313. package/dist/providers/google-messages.js +284 -0
  314. package/dist/providers/google-messages.js.map +1 -0
  315. package/dist/providers/google.d.ts +20 -0
  316. package/dist/providers/google.d.ts.map +1 -0
  317. package/dist/providers/google.js +42 -0
  318. package/dist/providers/google.js.map +1 -0
  319. package/dist/providers/index.d.ts +39 -0
  320. package/dist/providers/index.d.ts.map +1 -0
  321. package/dist/providers/index.js +39 -0
  322. package/dist/providers/index.js.map +1 -0
  323. package/dist/providers/model-catalog.d.ts +32 -0
  324. package/dist/providers/model-catalog.d.ts.map +1 -0
  325. package/dist/providers/model-catalog.js +394 -0
  326. package/dist/providers/model-catalog.js.map +1 -0
  327. package/dist/providers/oauth-callback-server.d.ts +35 -0
  328. package/dist/providers/oauth-callback-server.d.ts.map +1 -0
  329. package/dist/providers/oauth-callback-server.js +217 -0
  330. package/dist/providers/oauth-callback-server.js.map +1 -0
  331. package/dist/providers/oauth-credentials.d.ts +29 -0
  332. package/dist/providers/oauth-credentials.d.ts.map +1 -0
  333. package/dist/providers/oauth-credentials.js +70 -0
  334. package/dist/providers/oauth-credentials.js.map +1 -0
  335. package/dist/providers/oauth-provider.d.ts +95 -0
  336. package/dist/providers/oauth-provider.d.ts.map +1 -0
  337. package/dist/providers/oauth-provider.js +130 -0
  338. package/dist/providers/oauth-provider.js.map +1 -0
  339. package/dist/providers/oauth-tokens.d.ts +35 -0
  340. package/dist/providers/oauth-tokens.d.ts.map +1 -0
  341. package/dist/providers/oauth-tokens.js +136 -0
  342. package/dist/providers/oauth-tokens.js.map +1 -0
  343. package/dist/providers/ollama-chat.d.ts +106 -0
  344. package/dist/providers/ollama-chat.d.ts.map +1 -0
  345. package/dist/providers/ollama-chat.js +292 -0
  346. package/dist/providers/ollama-chat.js.map +1 -0
  347. package/dist/providers/openai-chat.d.ts +147 -0
  348. package/dist/providers/openai-chat.d.ts.map +1 -0
  349. package/dist/providers/openai-chat.js +302 -0
  350. package/dist/providers/openai-chat.js.map +1 -0
  351. package/dist/providers/pkce.d.ts +81 -0
  352. package/dist/providers/pkce.d.ts.map +1 -0
  353. package/dist/providers/pkce.js +176 -0
  354. package/dist/providers/pkce.js.map +1 -0
  355. package/dist/providers/sse-decode.d.ts +47 -0
  356. package/dist/providers/sse-decode.d.ts.map +1 -0
  357. package/dist/providers/sse-decode.js +109 -0
  358. package/dist/providers/sse-decode.js.map +1 -0
  359. package/dist/providers/token-params.d.ts +29 -0
  360. package/dist/providers/token-params.d.ts.map +1 -0
  361. package/dist/providers/token-params.js +41 -0
  362. package/dist/providers/token-params.js.map +1 -0
  363. package/dist/providers/turn-end-guard.d.ts +37 -0
  364. package/dist/providers/turn-end-guard.d.ts.map +1 -0
  365. package/dist/providers/turn-end-guard.js +42 -0
  366. package/dist/providers/turn-end-guard.js.map +1 -0
  367. package/dist/providers/types.d.ts +36 -0
  368. package/dist/providers/types.d.ts.map +1 -0
  369. package/dist/providers/types.js +13 -0
  370. package/dist/providers/types.js.map +1 -0
  371. package/dist/qoder-stream.d.ts +19 -0
  372. package/dist/qoder-stream.d.ts.map +1 -0
  373. package/dist/qoder-stream.js +167 -0
  374. package/dist/qoder-stream.js.map +1 -0
  375. package/dist/registry.d.ts +5 -0
  376. package/dist/registry.d.ts.map +1 -0
  377. package/dist/registry.js +58 -0
  378. package/dist/registry.js.map +1 -0
  379. package/dist/resolution.d.ts +2 -0
  380. package/dist/resolution.d.ts.map +1 -0
  381. package/dist/resolution.js +19 -0
  382. package/dist/resolution.js.map +1 -0
  383. package/dist/role-marker-guard.d.ts +53 -0
  384. package/dist/role-marker-guard.d.ts.map +1 -0
  385. package/dist/role-marker-guard.js +280 -0
  386. package/dist/role-marker-guard.js.map +1 -0
  387. package/dist/telemetry-sink.d.ts +35 -0
  388. package/dist/telemetry-sink.d.ts.map +1 -0
  389. package/dist/telemetry-sink.js +5 -0
  390. package/dist/telemetry-sink.js.map +1 -0
  391. package/dist/terminal-launch.d.ts +11 -0
  392. package/dist/terminal-launch.d.ts.map +1 -0
  393. package/dist/terminal-launch.js +123 -0
  394. package/dist/terminal-launch.js.map +1 -0
  395. package/dist/types.d.ts +185 -0
  396. package/dist/types.d.ts.map +1 -0
  397. package/dist/types.js +2 -0
  398. package/dist/types.js.map +1 -0
  399. package/package.json +47 -0
@@ -0,0 +1,95 @@
1
+ /**
2
+ * @module diagnostics
3
+ *
4
+ * Builds the `AgentDiagnostic` explaining why a CLI isn't invocable, for
5
+ * the three failure classes detection distinguishes: not resolvable at
6
+ * all, resolved but not invocable, and invocable but not authenticated.
7
+ *
8
+ * Ported verbatim from OD's
9
+ * `apps/daemon/src/runtimes/detection/diagnostics.ts`, with `AgentDiagnostic`
10
+ * / `AgentFixIntent` now imported from this package's own `types.ts`
11
+ * (vendored from OD's contracts workspace package, not a dependency on it).
12
+ */
13
+ import { agentBinEnvKey, agentSearchDirs } from './executables.js';
14
+ // Cap on how many searched dirs we attach to a `not-on-path` diagnostic.
15
+ // The resolver walks PATH + the user-toolchain whitelist, which can run to
16
+ // dozens of entries; the UI only needs enough to make "we looked here"
17
+ // land without ballooning the response payload.
18
+ const MAX_SEARCHED_DIRS = 24;
19
+ function setEnvIntent(agentId) {
20
+ const envKey = agentBinEnvKey(agentId);
21
+ return envKey ? [{ kind: 'setEnv', envKey }] : [];
22
+ }
23
+ // The agent is not resolvable at all: either nothing matched on PATH, or a
24
+ // user-supplied `*_BIN` override points at a missing/invalid file. The two
25
+ // cases get different copy + fix affordances because the remedy differs
26
+ // (install / point us at the binary vs. fix or clear the override).
27
+ export function buildExecutableDiagnostic(def, configuredEnv = {}) {
28
+ const envKey = agentBinEnvKey(def.id);
29
+ const overrideRaw = envKey ? configuredEnv?.[envKey]?.trim() : '';
30
+ if (envKey && overrideRaw) {
31
+ return {
32
+ reason: 'configured-bin-invalid',
33
+ severity: 'error',
34
+ message: `${def.name}'s configured binary (${envKey}) was not found or is not executable.`,
35
+ detail: overrideRaw,
36
+ fixActions: [{ kind: 'setEnv', envKey }, { kind: 'clearEnv', envKey }, { kind: 'rescan' }],
37
+ };
38
+ }
39
+ return {
40
+ reason: 'not-on-path',
41
+ severity: 'error',
42
+ message: `${def.name} (\`${def.bin}\`) was not found on your PATH.`,
43
+ searchedDirs: agentSearchDirs().slice(0, MAX_SEARCHED_DIRS),
44
+ fixActions: [{ kind: 'openInstall' }, ...setEnvIntent(def.id), { kind: 'rescan' }],
45
+ };
46
+ }
47
+ // A file matched but `--version` could not spawn it. Permission failures
48
+ // are real binaries that need their executable bit restored; missing-target
49
+ // failures are usually leftover npm/nvm/mise shims whose underlying target
50
+ // was uninstalled.
51
+ export function buildNotInvocableDiagnostic(def, launch, cause) {
52
+ if (cause === 'not-executable') {
53
+ return {
54
+ reason: 'not-executable',
55
+ severity: 'error',
56
+ message: `${def.name} was found but is not executable. Restore its execute permission or choose a different binary, then rescan.`,
57
+ ...(launch.launchPath ? { detail: launch.launchPath } : {}),
58
+ fixActions: [...setEnvIntent(def.id), { kind: 'rescan' }],
59
+ };
60
+ }
61
+ return {
62
+ reason: 'shim-broken',
63
+ severity: 'error',
64
+ message: `${def.name} was found but could not be launched — its wrapper or shim points at a missing target.`,
65
+ ...(launch.launchPath ? { detail: launch.launchPath } : {}),
66
+ fixActions: [...setEnvIntent(def.id), { kind: 'openDocs' }, { kind: 'rescan' }],
67
+ };
68
+ }
69
+ // The agent is installed and invocable but its auth probe reported a
70
+ // missing / unverifiable credential. Detection only reaches this helper
71
+ // for adapters that declare a cheap, side-effect-free authProbe; until an
72
+ // adapter also declares a spawn-safe OAuth producer, diagnostics point at
73
+ // docs.
74
+ export function buildAuthDiagnostic(def, auth) {
75
+ if (auth.status === 'ok')
76
+ return null;
77
+ const signInIntent = { kind: 'openDocs' };
78
+ if (auth.status === 'missing') {
79
+ return {
80
+ reason: 'auth-missing',
81
+ severity: 'error',
82
+ message: auth.message || `${def.name} is installed but not authenticated.`,
83
+ ...(auth.stderrTail ? { detail: auth.stderrTail } : {}),
84
+ fixActions: [signInIntent, { kind: 'rescan' }],
85
+ };
86
+ }
87
+ return {
88
+ reason: 'auth-unknown',
89
+ severity: 'warning',
90
+ message: auth.message || `${def.name} authentication status could not be verified.`,
91
+ ...(auth.stderrTail ? { detail: auth.stderrTail } : {}),
92
+ fixActions: [signInIntent, { kind: 'rescan' }],
93
+ };
94
+ }
95
+ //# sourceMappingURL=diagnostics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../src/diagnostics.ts"],"names":[],"mappings":"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"}
package/dist/env.d.ts ADDED
@@ -0,0 +1,19 @@
1
+ type RuntimeEnvMap = NodeJS.ProcessEnv | Record<string, string>;
2
+ export interface SpawnEnvHooks {
3
+ /**
4
+ * Per-agent env customization (e.g. vela/AMR profile forwarding,
5
+ * analytics identity, a routed model's endpoint override). Called after
6
+ * the proxy-aware merge, before the built-in OpenCode/MiMo housekeeping.
7
+ * Return a partial env to merge in, or nothing to leave `env` as-is
8
+ * (mutating `env` directly is also fine — it's a live object).
9
+ */
10
+ perAgentEnv?: (agentId: string, env: NodeJS.ProcessEnv) => NodeJS.ProcessEnv | void;
11
+ /**
12
+ * Applied last, after all other env composition. A host with a
13
+ * sandboxed/jailed spawn mode plugs its own env constraints in here.
14
+ */
15
+ sandboxOverlay?: (env: NodeJS.ProcessEnv) => NodeJS.ProcessEnv;
16
+ }
17
+ export declare function spawnEnvForAgent(agentId: string, baseEnv: RuntimeEnvMap, configuredEnv?: unknown, systemProxyEnv?: RuntimeEnvMap, hooks?: SpawnEnvHooks): NodeJS.ProcessEnv;
18
+ export {};
19
+ //# sourceMappingURL=env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAuCA,KAAK,aAAa,GAAG,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEhE,MAAM,WAAW,aAAa;IAC5B;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,KAAK,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;IACpF;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,KAAK,MAAM,CAAC,UAAU,CAAC;CAChE;AASD,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,EACtB,aAAa,GAAE,OAAY,EAC3B,cAAc,GAAE,aAAuC,EACvD,KAAK,GAAE,aAAkB,GACxB,MAAM,CAAC,UAAU,CAkDnB"}
package/dist/env.js ADDED
@@ -0,0 +1,95 @@
1
+ /**
2
+ * @module env
3
+ *
4
+ * Builds the environment passed to `spawn()` for a given agent adapter:
5
+ * proxy-aware merge of the inherited launch env with per-agent configured
6
+ * overrides, plus a couple of per-CLI housekeeping tweaks (OpenCode/MiMo
7
+ * project-config-discovery, which would otherwise walk up from cwd and run
8
+ * an install step that can corrupt a pnpm workspace it's spawned inside).
9
+ *
10
+ * Heavily de-branded from OD's `apps/daemon/src/runtimes/env/env.ts`. The
11
+ * origin file was far more coupled than r1b's "supporting generic file"
12
+ * classification anticipated — it read OD's own app-config subsystem, OD's
13
+ * sandbox-mode subsystem, and vela/AMR-specific env forwarding including a
14
+ * literal product-name identity value and two product-prefixed env var
15
+ * names (see `source-map.md` for the exact originals). None of that is
16
+ * ported:
17
+ *
18
+ * - `mergeProxyAwareEnv` / `resolveSystemProxyEnv` now come from
19
+ * `@jini-ai/platform` (the same functions, already verbatim-lifted there).
20
+ * - AMR/vela-specific env injection and OD's app-config-driven analytics
21
+ * identity env are replaced by an optional `perAgentEnv` hook — a plain
22
+ * `(agentId, env) => NodeJS.ProcessEnv | void` the host can supply to add
23
+ * its own per-agent env logic (vela profile forwarding, analytics ids,
24
+ * …) without this package needing to know about vela or app-config.
25
+ * - Sandbox-mode env application is replaced by an optional
26
+ * `sandboxOverlay` hook with the same shape, for the same reason.
27
+ * - OD's AMR trace-env helper (emitting a product-prefixed run-id/attempt/
28
+ * session-id triad) is dropped entirely — it is OD/vela-adapter-owned
29
+ * trace-correlation env, not a generic runtime concern, and its own name
30
+ * was itself product-branded. A host that needs equivalent trace
31
+ * correlation can build it as a `perAgentEnv` hook.
32
+ *
33
+ * See `source-map.md` for the full accounting.
34
+ */
35
+ import os from 'node:os';
36
+ import { mergeProxyAwareEnv, resolveSystemProxyEnv } from '@jini-ai/platform';
37
+ import { expandConfiguredEnv } from './paths.js';
38
+ import { resolveAmrOpenCodeExecutable } from './executables.js';
39
+ function stripKeysCaseInsensitive(env, keysToStrip) {
40
+ const keysUpper = new Set(keysToStrip.map((key) => key.toUpperCase()));
41
+ for (const key of Object.keys(env)) {
42
+ if (keysUpper.has(key.toUpperCase()))
43
+ delete env[key];
44
+ }
45
+ }
46
+ export function spawnEnvForAgent(agentId, baseEnv, configuredEnv = {}, systemProxyEnv = resolveSystemProxyEnv(), hooks = {}) {
47
+ const expandedConfiguredEnv = expandConfiguredEnv(configuredEnv);
48
+ const env = mergeProxyAwareEnv(process.platform, systemProxyEnv, baseEnv, expandedConfiguredEnv);
49
+ if (agentId === 'amr') {
50
+ // `execAgentFile` REPLACES the child environment (execFile with `env`
51
+ // set), so anything missing here is genuinely absent for the AMR CLI.
52
+ // `vela model list` resolves its config home up front and exits
53
+ // non-zero with "$HOME is not defined" when HOME is unset. Backfill
54
+ // HOME from the OS so the authoritative catalog call is never silently
55
+ // decapitated by a missing home dir.
56
+ if (!env.HOME?.trim()) {
57
+ const home = os.homedir();
58
+ if (home)
59
+ env.HOME = home;
60
+ }
61
+ if (!env.VELA_OPENCODE_BIN?.trim()) {
62
+ const opencodeBin = resolveAmrOpenCodeExecutable(env);
63
+ if (opencodeBin)
64
+ env.VELA_OPENCODE_BIN = opencodeBin;
65
+ }
66
+ }
67
+ if (agentId === 'opencode') {
68
+ stripKeysCaseInsensitive(env, ['OPENCODE', 'OPENCODE_PID', 'OPENCODE_RUN_ID', 'OPENCODE_SERVER_PASSWORD']);
69
+ // OpenCode is bun-based and, left to its defaults, walks up from its
70
+ // cwd to the nearest project root and runs `bun install` there at
71
+ // startup to set up local plugins. When that root is a pnpm workspace
72
+ // (the host's own repo, or a project nested inside it), the install
73
+ // replaces the pnpm `.pnpm` store with a bun `node_modules/.bun` +
74
+ // `bun.lock` and breaks the workspace. Disable project-config
75
+ // discovery (and its install) so OpenCode only honors the config
76
+ // injected via `OPENCODE_CONFIG_CONTENT`.
77
+ if (!env.OPENCODE_DISABLE_PROJECT_CONFIG?.trim()) {
78
+ env.OPENCODE_DISABLE_PROJECT_CONFIG = 'true';
79
+ }
80
+ }
81
+ if (agentId === 'mimo') {
82
+ stripKeysCaseInsensitive(env, ['MIMOCODE', 'MIMOCODE_PID', 'MIMOCODE_RUN_ID', 'MIMOCODE_SERVER_PASSWORD']);
83
+ // MiMo builds on the same toolchain as OpenCode and has the same
84
+ // workspace-corruption risk. Disable project-config discovery so MiMo
85
+ // only honors the config injected through `MIMOCODE_CONFIG_CONTENT`.
86
+ if (!env.MIMOCODE_DISABLE_PROJECT_CONFIG?.trim()) {
87
+ env.MIMOCODE_DISABLE_PROJECT_CONFIG = 'true';
88
+ }
89
+ }
90
+ const perAgentOverrides = hooks.perAgentEnv?.(agentId, env);
91
+ if (perAgentOverrides)
92
+ Object.assign(env, perAgentOverrides);
93
+ return hooks.sandboxOverlay ? hooks.sandboxOverlay(env) : env;
94
+ }
95
+ //# sourceMappingURL=env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { RuntimeAgentDef } from './types.js';
2
+ /**
3
+ * Override the env var names `resolveDetectionHome` / the packaged-binary
4
+ * lookup read. The host application (e.g. the OD adapter) calls this once
5
+ * at startup if it wants its own namespaced env vars instead of the
6
+ * generic defaults.
7
+ */
8
+ export declare function configureExecutableResolutionEnv(overrides: {
9
+ agentHomeEnvVar?: string;
10
+ resourceRootEnvVar?: string;
11
+ }): void;
12
+ export declare function userToolchainBinDirs(): string[];
13
+ export declare function agentSearchDirs(): string[];
14
+ export declare function agentBinEnvKey(agentId: string | undefined): string | null;
15
+ export declare function resolveOnPath(bin: string): string | null;
16
+ export declare function resolveAmrOpenCodeExecutable(env?: Record<string, string | undefined>): string | null;
17
+ export declare function codexAppBundleCandidates(): string[];
18
+ export declare function resolveAgentExecutable(def: RuntimeAgentDef, configuredEnv?: Record<string, string>): string | null;
19
+ export declare function inspectAgentExecutableResolution(def: RuntimeAgentDef, configuredEnv?: Record<string, string>): {
20
+ configuredOverridePath: string | null;
21
+ pathResolvedPath: string | null;
22
+ selectedPath: string | null;
23
+ };
24
+ //# sourceMappingURL=executables.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executables.d.ts","sourceRoot":"","sources":["../src/executables.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAgClD;;;;;GAKG;AACH,wBAAgB,gCAAgC,CAAC,SAAS,EAAE;IAC1D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,GAAG,IAAI,CAGP;AAkDD,wBAAgB,oBAAoB,IAAI,MAAM,EAAE,CAE/C;AAuBD,wBAAgB,eAAe,IAAI,MAAM,EAAE,CAE1C;AAKD,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAGzE;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAaxD;AA0CD,wBAAgB,4BAA4B,CAC1C,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACpD,MAAM,GAAG,IAAI,CAuBf;AAkFD,wBAAgB,wBAAwB,IAAI,MAAM,EAAE,CAgBnD;AAED,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,eAAe,EACpB,aAAa,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GACzC,MAAM,GAAG,IAAI,CAEf;AAED,wBAAgB,gCAAgC,CAC9C,GAAG,EAAE,eAAe,EACpB,aAAa,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GACzC;IACD,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,CA6BA"}
@@ -0,0 +1,349 @@
1
+ /**
2
+ * @module executables
3
+ *
4
+ * Resolves an agent's executable path: `*_BIN` env overrides, PATH search
5
+ * (including user-toolchain bin dirs), a resource-root-relative packaged
6
+ * binary, and (macOS only) a well-known app-bundle install.
7
+ *
8
+ * Ported from OD's `apps/daemon/src/runtimes/core/executables.ts` with two
9
+ * changes:
10
+ *
11
+ * 1. `wellKnownUserToolchainBins` now comes from `@jini-ai/platform` instead of
12
+ * the OD workspace package it originally shipped from (same function,
13
+ * already verbatim-lifted — see `@jini-ai/platform`'s own `source-map.md`).
14
+ * 2. De-branded: the origin's product-prefixed agent-home / resource-root
15
+ * env var names and its sandbox-runtime-config integration (an
16
+ * OD-daemon-level subsystem out of this package's charter) are replaced
17
+ * by `configureExecutableResolutionEnv()` — an injectable pair of
18
+ * env-var names, defaulting to `AGENT_RUNTIME_HOME` /
19
+ * `AGENT_RUNTIME_RESOURCE_ROOT`, with no sandbox dependency. See
20
+ * `source-map.md` for the exact original names.
21
+ */
22
+ import { accessSync, constants, existsSync, statSync } from 'node:fs';
23
+ import { delimiter } from 'node:path';
24
+ import path from 'node:path';
25
+ import { homedir } from 'node:os';
26
+ import { wellKnownUserToolchainBins } from '@jini-ai/platform';
27
+ import { expandHomePath } from './paths.js';
28
+ const AGENT_BIN_ENV_KEYS = new Map([
29
+ ['amr', 'VELA_BIN'],
30
+ ['aider', 'AIDER_BIN'],
31
+ ['claude', 'CLAUDE_BIN'],
32
+ ['codebuddy', 'CODEBUDDY_BIN'],
33
+ ['codex', 'CODEX_BIN'],
34
+ ['copilot', 'COPILOT_BIN'],
35
+ ['cursor-agent', 'CURSOR_AGENT_BIN'],
36
+ ['deepseek', 'DEEPSEEK_BIN'],
37
+ ['devin', 'DEVIN_BIN'],
38
+ ['hermes', 'HERMES_BIN'],
39
+ ['kimi', 'KIMI_BIN'],
40
+ ['kiro', 'KIRO_BIN'],
41
+ ['kilo', 'KILO_BIN'],
42
+ ['mimo', 'MIMO_BIN'],
43
+ ['opencode', 'OPENCODE_BIN'],
44
+ ['pi', 'PI_BIN'],
45
+ ['qoder', 'QODER_BIN'],
46
+ ['qwen', 'QWEN_BIN'],
47
+ ['reasonix', 'REASONIX_BIN'],
48
+ ['trae-cli', 'TRAE_CLI_BIN'],
49
+ ['vibe', 'VIBE_BIN'],
50
+ ]);
51
+ /** Env var names consulted by detection-home/resource-root resolution. Overridable via `configureExecutableResolutionEnv`. */
52
+ const executableResolutionEnv = {
53
+ agentHomeEnvVar: 'AGENT_RUNTIME_HOME',
54
+ resourceRootEnvVar: 'AGENT_RUNTIME_RESOURCE_ROOT',
55
+ };
56
+ /**
57
+ * Override the env var names `resolveDetectionHome` / the packaged-binary
58
+ * lookup read. The host application (e.g. the OD adapter) calls this once
59
+ * at startup if it wants its own namespaced env vars instead of the
60
+ * generic defaults.
61
+ */
62
+ export function configureExecutableResolutionEnv(overrides) {
63
+ if (overrides.agentHomeEnvVar)
64
+ executableResolutionEnv.agentHomeEnvVar = overrides.agentHomeEnvVar;
65
+ if (overrides.resourceRootEnvVar)
66
+ executableResolutionEnv.resourceRootEnvVar = overrides.resourceRootEnvVar;
67
+ }
68
+ const TOOLCHAIN_DIR_CACHE_TTL_MS = 5000;
69
+ let cachedToolchainHome = null;
70
+ let cachedToolchainDirs = null;
71
+ let cachedToolchainDirsAt = 0;
72
+ // Resolve the home directory detection should search, honoring the
73
+ // configured agent-home override env var. `hasOverride` lets callers scope
74
+ // strictly to the override home (skipping real-machine system locations) so
75
+ // sandboxed detection runs and tests stay deterministic instead of
76
+ // reaching the host.
77
+ function resolveDetectionHome() {
78
+ const homeOverride = process.env[executableResolutionEnv.agentHomeEnvVar];
79
+ return { home: homeOverride || homedir(), hasOverride: Boolean(homeOverride) };
80
+ }
81
+ function userToolchainDirs() {
82
+ const { home, hasOverride } = resolveDetectionHome();
83
+ const homeOverride = hasOverride ? home : undefined;
84
+ const now = Date.now();
85
+ if (cachedToolchainHome === home &&
86
+ cachedToolchainDirs &&
87
+ now - cachedToolchainDirsAt < TOOLCHAIN_DIR_CACHE_TTL_MS) {
88
+ return cachedToolchainDirs;
89
+ }
90
+ cachedToolchainHome = home;
91
+ cachedToolchainDirsAt = now;
92
+ // When the agent-home override is set, scope the search strictly to the
93
+ // override home: skip Homebrew / /usr/local *and* pass an empty env so
94
+ // that a developer or CI runner with NPM_CONFIG_PREFIX /
95
+ // npm_config_prefix exported can't leak the real machine's <prefix>/bin
96
+ // into a sandboxed detection run. Without this, tests that build a tmp
97
+ // home would be machine-environment-dependent.
98
+ cachedToolchainDirs = wellKnownUserToolchainBins({
99
+ home,
100
+ includeSystemBins: process.platform !== 'win32' && !homeOverride,
101
+ env: homeOverride ? {} : process.env,
102
+ });
103
+ return cachedToolchainDirs;
104
+ }
105
+ // The user-level toolchain bin directories (Homebrew, ~/.local/bin, ~/.bun/bin,
106
+ // version-manager node dirs, npm prefixes, …) that binary *resolution* searches
107
+ // beyond process.env.PATH. Exposed so the spawn env can append the same dirs:
108
+ // a binary can resolve here yet fail to *execute* if its shebang interpreter
109
+ // (e.g. `#!/usr/bin/env bun`) lives in one of these dirs and the spawn PATH
110
+ // doesn't include it. Keeping resolution and spawn PATH symmetric fixes that.
111
+ export function userToolchainBinDirs() {
112
+ return userToolchainDirs();
113
+ }
114
+ function resolvePathDirs() {
115
+ const seen = new Set();
116
+ const dirs = [
117
+ ...(process.env.PATH || '').split(delimiter),
118
+ // GUI launchers (macOS .app bundles, Linux .desktop files) often start
119
+ // with a minimal PATH. Include common user-level CLI install locations
120
+ // so agent detection matches the user's shell-installed tools,
121
+ // especially Node version managers.
122
+ ...userToolchainDirs(),
123
+ ];
124
+ return dirs.filter((dir) => {
125
+ if (!dir || seen.has(dir))
126
+ return false;
127
+ seen.add(dir);
128
+ return true;
129
+ });
130
+ }
131
+ // The exact, de-duplicated directory list `resolveOnPath` walks. Surfaced so
132
+ // detection can attach it to a `not-on-path` diagnostic verbatim — the UI
133
+ // shows the user where we actually looked before asking them to set an
134
+ // explicit binary path, instead of recomputing PATH client-side.
135
+ export function agentSearchDirs() {
136
+ return resolvePathDirs();
137
+ }
138
+ // The `*_BIN` environment variable that overrides PATH detection for a given
139
+ // agent id (e.g. `cursor-agent` → `CURSOR_AGENT_BIN`), or null when the agent
140
+ // has no override key. Drives the `setEnv` / `clearEnv` fix intents.
141
+ export function agentBinEnvKey(agentId) {
142
+ if (!agentId)
143
+ return null;
144
+ return AGENT_BIN_ENV_KEYS.get(agentId) ?? null;
145
+ }
146
+ export function resolveOnPath(bin) {
147
+ const exts = process.platform === 'win32'
148
+ ? (process.env.PATHEXT || '.EXE;.CMD;.BAT').split(';')
149
+ : [''];
150
+ const dirs = resolvePathDirs();
151
+ for (const dir of dirs) {
152
+ for (const ext of exts) {
153
+ const full = path.join(dir, bin + ext);
154
+ if (full && existsSync(full))
155
+ return full;
156
+ }
157
+ }
158
+ return null;
159
+ }
160
+ function looksExecutableOnWindows(filePath) {
161
+ const ext = path.extname(filePath).trim().toUpperCase();
162
+ if (!ext)
163
+ return false;
164
+ const executableExts = (process.env.PATHEXT || '.EXE;.CMD;.BAT')
165
+ .split(';')
166
+ .map((value) => value.trim().toUpperCase())
167
+ .filter(Boolean);
168
+ return executableExts.includes(ext);
169
+ }
170
+ function executableFilePath(raw) {
171
+ if (typeof raw !== 'string' || raw.trim().length === 0)
172
+ return null;
173
+ const expanded = expandHomePath(raw.trim());
174
+ if (!path.isAbsolute(expanded))
175
+ return null;
176
+ try {
177
+ if (!statSync(expanded).isFile())
178
+ return null;
179
+ if (process.platform === 'win32') {
180
+ if (!looksExecutableOnWindows(expanded))
181
+ return null;
182
+ }
183
+ else {
184
+ accessSync(expanded, constants.X_OK);
185
+ }
186
+ return expanded;
187
+ }
188
+ catch {
189
+ return null;
190
+ }
191
+ }
192
+ // Resolve the first available binary for an agent definition. Tries
193
+ // `def.bin` first, then walks `def.fallbackBins` in order. Used for agents
194
+ // whose forks ship under a different binary name but speak the exact same
195
+ // CLI. Returns null when no candidate is on PATH.
196
+ function configuredExecutableOverride(def, configuredEnv = {}) {
197
+ const envKey = AGENT_BIN_ENV_KEYS.get(def?.id);
198
+ if (!envKey)
199
+ return null;
200
+ return executableFilePath(configuredEnv?.[envKey]);
201
+ }
202
+ export function resolveAmrOpenCodeExecutable(env = process.env) {
203
+ const configured = executableFilePath(env.VELA_OPENCODE_BIN);
204
+ if (configured)
205
+ return configured;
206
+ // In packaged builds prefer the bundled companion under
207
+ // `<resourceRoot>/bin/libexec/opencode/opencode` so a stale global
208
+ // `opencode` on the user's PATH can't override the known-good build that
209
+ // shipped with this app. PATH is only consulted as a last resort.
210
+ const resourceRoot = (env[executableResolutionEnv.resourceRootEnvVar] ?? process.env[executableResolutionEnv.resourceRootEnvVar])?.trim();
211
+ if (resourceRoot) {
212
+ const bundledDir = packagedVelaOpenCodeCompanionTree(resourceRoot);
213
+ if (bundledDir) {
214
+ const bundled = executableFilePath(path.join(bundledDir, process.platform === 'win32' ? 'opencode.exe' : 'opencode'));
215
+ if (bundled)
216
+ return bundled;
217
+ }
218
+ }
219
+ return resolveOnPath('opencode-cli') ?? resolveOnPath('opencode');
220
+ }
221
+ // The AMR (vela) OpenCode companion ships as a
222
+ // `<resourceRoot>/bin/libexec/opencode/opencode` *executable file*, not just
223
+ // the directory. Treating any directory there as a valid companion produces
224
+ // a false-positive availability path: `detectAgents()` would surface AMR as
225
+ // available even though the first real run can't launch. Verify the inner
226
+ // executable too.
227
+ function packagedVelaOpenCodeCompanionTree(resourceRoot) {
228
+ const candidate = path.join(resourceRoot, 'bin', 'libexec', 'opencode');
229
+ const exe = path.join(candidate, process.platform === 'win32' ? 'opencode.exe' : 'opencode');
230
+ try {
231
+ if (!statSync(candidate).isDirectory())
232
+ return null;
233
+ if (!statSync(exe).isFile())
234
+ return null;
235
+ if (process.platform === 'win32') {
236
+ if (!looksExecutableOnWindows(exe))
237
+ return null;
238
+ }
239
+ else {
240
+ accessSync(exe, constants.X_OK);
241
+ }
242
+ return candidate;
243
+ }
244
+ catch {
245
+ return null;
246
+ }
247
+ }
248
+ function packagedBuiltInExecutable(def, configuredEnv = {}) {
249
+ if (def.id !== 'amr')
250
+ return null;
251
+ const resourceRoot = process.env[executableResolutionEnv.resourceRootEnvVar]?.trim();
252
+ if (!resourceRoot)
253
+ return null;
254
+ if (!resolveAmrOpenCodeExecutable({ ...process.env, ...configuredEnv }) &&
255
+ !packagedVelaOpenCodeCompanionTree(resourceRoot)) {
256
+ return null;
257
+ }
258
+ const candidate = path.join(resourceRoot, 'bin', process.platform === 'win32' ? 'vela.exe' : 'vela');
259
+ try {
260
+ if (!statSync(candidate).isFile())
261
+ return null;
262
+ if (process.platform === 'win32') {
263
+ if (!looksExecutableOnWindows(candidate))
264
+ return null;
265
+ }
266
+ else {
267
+ accessSync(candidate, constants.X_OK);
268
+ }
269
+ return candidate;
270
+ }
271
+ catch {
272
+ return null;
273
+ }
274
+ }
275
+ // The official OpenAI Codex desktop app ships the `codex` CLI *inside* its
276
+ // macOS application bundle and does NOT add it to PATH unless the user
277
+ // explicitly runs the app's "Install command line tool" action. Users who
278
+ // installed Codex only through the app therefore see a "not installed"
279
+ // agent card even though a healthy native `codex` binary exists on disk,
280
+ // because neither PATH nor the user-toolchain search dirs cover the app
281
+ // bundle. Probe the well-known bundle locations so app-only installs are
282
+ // detected. This is a last-resort fallback that ranks below PATH, so an
283
+ // explicit `npm i -g` / Homebrew / version-manager install always wins.
284
+ function codexAppBundleExecutable(def) {
285
+ if (def?.id !== 'codex')
286
+ return null;
287
+ for (const candidate of codexAppBundleCandidates()) {
288
+ const resolved = executableFilePath(candidate);
289
+ if (resolved)
290
+ return resolved;
291
+ }
292
+ return null;
293
+ }
294
+ // Exported for tests: the no-override `/Applications` branch can't be
295
+ // exercised through `resolveAgentExecutable` deterministically (it would
296
+ // depend on the host actually having `/Applications/Codex.app`), so tests
297
+ // assert the built candidate list directly to catch a path typo or
298
+ // ordering regression in the common real-world install case.
299
+ export function codexAppBundleCandidates() {
300
+ // The Codex app bundle is a macOS-only concept; other platforms have no
301
+ // analogous standalone install of the `codex` CLI to probe for here.
302
+ if (process.platform !== 'darwin')
303
+ return [];
304
+ const { home, hasOverride } = resolveDetectionHome();
305
+ const bundleSuffix = ['Codex.app', 'Contents', 'Resources', 'codex'];
306
+ // User-scoped install (~/Applications). Honors the override home so
307
+ // sandboxed detection runs and tests stay deterministic.
308
+ const candidates = [path.join(home, 'Applications', ...bundleSuffix)];
309
+ // System-wide /Applications install. Skip it under an override home for
310
+ // the same isolation reason `userToolchainDirs` skips Homebrew/system
311
+ // bins.
312
+ if (!hasOverride) {
313
+ candidates.unshift(path.join('/Applications', ...bundleSuffix));
314
+ }
315
+ return candidates;
316
+ }
317
+ export function resolveAgentExecutable(def, configuredEnv = {}) {
318
+ return inspectAgentExecutableResolution(def, configuredEnv).selectedPath;
319
+ }
320
+ export function inspectAgentExecutableResolution(def, configuredEnv = {}) {
321
+ if (!def?.bin) {
322
+ return {
323
+ configuredOverridePath: null,
324
+ pathResolvedPath: null,
325
+ selectedPath: null,
326
+ };
327
+ }
328
+ const configuredOverridePath = configuredExecutableOverride(def, configuredEnv);
329
+ const candidates = [
330
+ def.bin,
331
+ ...(Array.isArray(def.fallbackBins) ? def.fallbackBins : []),
332
+ ];
333
+ let pathResolvedPath = null;
334
+ for (const bin of candidates) {
335
+ const resolved = resolveOnPath(bin);
336
+ if (resolved) {
337
+ pathResolvedPath = resolved;
338
+ break;
339
+ }
340
+ }
341
+ const builtInPath = packagedBuiltInExecutable(def, configuredEnv);
342
+ const appBundlePath = codexAppBundleExecutable(def);
343
+ return {
344
+ configuredOverridePath,
345
+ pathResolvedPath,
346
+ selectedPath: configuredOverridePath || builtInPath || pathResolvedPath || appBundlePath,
347
+ };
348
+ }
349
+ //# sourceMappingURL=executables.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executables.js","sourceRoot":"","sources":["../src/executables.ts"],"names":[],"mappings":"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"}