eve 0.44.4 → 0.45.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 (779) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/README.md +13 -12
  3. package/dist/src/acp/adapter.d.ts +1 -1
  4. package/dist/src/approval/definition.d.ts +84 -0
  5. package/dist/src/approval/definition.js +1 -0
  6. package/dist/src/{runtime/governance → channel}/auth/http-basic.d.ts +1 -1
  7. package/dist/src/{runtime/governance → channel}/auth/jwt-ecdsa.d.ts +1 -1
  8. package/dist/src/channel/auth/jwt-ecdsa.js +1 -0
  9. package/dist/src/{runtime/governance → channel}/auth/jwt-hmac.d.ts +1 -1
  10. package/dist/src/channel/auth/jwt-hmac.js +1 -0
  11. package/dist/src/{runtime/governance → channel}/auth/oidc.d.ts +1 -1
  12. package/dist/src/channel/auth/oidc.js +1 -0
  13. package/dist/src/{runtime/governance → channel}/auth/token-claims.d.ts +1 -1
  14. package/dist/src/{runtime/governance → channel}/auth/types.d.ts +1 -1
  15. package/dist/src/{runtime/governance → channel}/auth/vercel-oidc-project.d.ts +1 -1
  16. package/dist/src/channel/channel-operations.d.ts +1 -1
  17. package/dist/src/channel/channel-operations.js +1 -1
  18. package/dist/src/channel/instrumentation.d.ts +1 -0
  19. package/dist/src/channel/instrumentation.js +1 -1
  20. package/dist/src/channel/resolve-text.d.ts +1 -1
  21. package/dist/src/channel/routes.d.ts +1 -1
  22. package/dist/src/channel/session.d.ts +1 -1
  23. package/dist/src/channel/session.js +1 -1
  24. package/dist/src/channel/types.d.ts +2 -2
  25. package/dist/src/chunks/{use-eve-agent-BJwaMe5k.js → use-eve-agent-C46Kan_I.js} +385 -106
  26. package/dist/src/chunks/{use-eve-agent-BtsOXv3s.js → use-eve-agent-OtHRoxIS.js} +385 -106
  27. package/dist/src/cli/banner.js +1 -1
  28. package/dist/src/cli/commands/agent-instructions.js +2 -2
  29. package/dist/src/cli/commands/channel-add-conflicts.js +1 -1
  30. package/dist/src/cli/commands/extension-build.js +1 -1
  31. package/dist/src/cli/commands/extension-init.js +1 -1
  32. package/dist/src/cli/commands/info.js +1 -1
  33. package/dist/src/cli/commands/init.js +1 -1
  34. package/dist/src/cli/commands/trace.js +1 -1
  35. package/dist/src/cli/dev/tui/remote-auth.js +1 -1
  36. package/dist/src/cli/dev/tui/setup-selection-input.d.ts +3 -1
  37. package/dist/src/cli/dev/tui/setup-selection-input.js +2 -2
  38. package/dist/src/cli/dev/tui/terminal-renderer.js +2 -2
  39. package/dist/src/cli/dev/tui/traces/trace-conversation.d.ts +1 -1
  40. package/dist/src/cli/dev/tui/traces/trace-conversation.js +1 -1
  41. package/dist/src/cli/dev/tui/traces/trace-viewer-state.js +1 -1
  42. package/dist/src/cli/invoke/result.d.ts +1 -1
  43. package/dist/src/cli/ui/live-row.js +1 -1
  44. package/dist/src/cli/ui/output.js +1 -1
  45. package/dist/src/client/agent-info-schema.d.ts +1757 -302
  46. package/dist/src/client/agent-info-schema.js +1 -1
  47. package/dist/src/client/client.js +1 -1
  48. package/dist/src/client/eve-agent-store.d.ts +6 -5
  49. package/dist/src/client/eve-agent-store.js +1 -1
  50. package/dist/src/client/health-response-error.d.ts +5 -0
  51. package/dist/src/client/health-response-error.js +1 -0
  52. package/dist/src/client/health-schema.d.ts +7 -0
  53. package/dist/src/client/health-schema.js +1 -0
  54. package/dist/src/client/index.d.ts +6 -3
  55. package/dist/src/client/index.js +1 -1
  56. package/dist/src/client/message-action-parts.d.ts +2 -2
  57. package/dist/src/client/message-reducer-types.d.ts +1 -1
  58. package/dist/src/client/reducer.d.ts +1 -1
  59. package/dist/src/client/session-utils.d.ts +1 -1
  60. package/dist/src/client/session.d.ts +1 -1
  61. package/dist/src/client/session.js +1 -1
  62. package/dist/src/client/types.d.ts +3 -7
  63. package/dist/src/compiler/artifacts.d.ts +37 -11
  64. package/dist/src/compiler/artifacts.js +1 -1
  65. package/dist/src/compiler/channel-route-plan.d.ts +10 -0
  66. package/dist/src/compiler/channel-route-plan.js +1 -0
  67. package/dist/src/compiler/compile-agent.d.ts +2 -2
  68. package/dist/src/compiler/compile-agent.js +2 -2
  69. package/dist/src/compiler/compile-from-memory.d.ts +13 -52
  70. package/dist/src/compiler/compile-from-memory.js +1 -1
  71. package/dist/src/compiler/diagnostics.d.ts +38 -0
  72. package/dist/src/compiler/diagnostics.js +1 -0
  73. package/dist/src/compiler/extension-compatibility.d.ts +14 -11
  74. package/dist/src/compiler/extension-compatibility.js +1 -1
  75. package/dist/src/compiler/load-binding-namespace.d.ts +9 -0
  76. package/dist/src/compiler/load-binding-namespace.js +1 -0
  77. package/dist/src/compiler/manifest.d.ts +172 -51
  78. package/dist/src/compiler/manifest.js +1 -1
  79. package/dist/src/compiler/module-map.d.ts +12 -30
  80. package/dist/src/compiler/module-map.js +3 -3
  81. package/dist/src/compiler/node-source-state.d.ts +24 -0
  82. package/dist/src/compiler/node-source-state.js +1 -0
  83. package/dist/src/compiler/normalize-agent-config.d.ts +5 -1
  84. package/dist/src/compiler/normalize-agent-config.js +1 -1
  85. package/dist/src/compiler/normalize-channel.d.ts +8 -2
  86. package/dist/src/compiler/normalize-channel.js +1 -1
  87. package/dist/src/compiler/normalize-connection.d.ts +1 -1
  88. package/dist/src/compiler/normalize-connection.js +1 -1
  89. package/dist/src/compiler/normalize-helpers.d.ts +13 -4
  90. package/dist/src/compiler/normalize-helpers.js +1 -1
  91. package/dist/src/compiler/normalize-hook.d.ts +4 -11
  92. package/dist/src/compiler/normalize-hook.js +1 -1
  93. package/dist/src/compiler/normalize-instructions.d.ts +3 -3
  94. package/dist/src/compiler/normalize-instructions.js +1 -1
  95. package/dist/src/compiler/normalize-manifest-helpers.d.ts +29 -0
  96. package/dist/src/compiler/normalize-manifest-helpers.js +1 -0
  97. package/dist/src/compiler/normalize-manifest.d.ts +8 -4
  98. package/dist/src/compiler/normalize-manifest.js +1 -1
  99. package/dist/src/compiler/normalize-sandbox.d.ts +1 -1
  100. package/dist/src/compiler/normalize-sandbox.js +1 -1
  101. package/dist/src/compiler/normalize-schedule.d.ts +2 -2
  102. package/dist/src/compiler/normalize-schedule.js +1 -1
  103. package/dist/src/compiler/normalize-skill.d.ts +2 -2
  104. package/dist/src/compiler/normalize-skill.js +1 -1
  105. package/dist/src/compiler/normalize-subagent.d.ts +21 -39
  106. package/dist/src/compiler/normalize-subagent.js +1 -1
  107. package/dist/src/compiler/normalize-tool.d.ts +2 -1
  108. package/dist/src/compiler/normalize-tool.js +1 -1
  109. package/dist/src/compiler/project-sources.d.ts +71 -0
  110. package/dist/src/compiler/project-sources.js +1 -0
  111. package/dist/src/compiler/remote-agent-node.d.ts +8 -0
  112. package/dist/src/compiler/remote-agent-node.js +1 -1
  113. package/dist/src/compiler/source-graph.d.ts +153 -0
  114. package/dist/src/compiler/source-graph.js +1 -0
  115. package/dist/src/compiler/validate-artifact.d.ts +17 -0
  116. package/dist/src/compiler/validate-artifact.js +1 -0
  117. package/dist/src/compiler/workspace-resources.js +1 -1
  118. package/dist/src/connections/errors.d.ts +125 -0
  119. package/dist/src/connections/errors.js +1 -0
  120. package/dist/src/context/build-base-tool-context.d.ts +2 -2
  121. package/dist/src/context/build-callback-context.d.ts +1 -1
  122. package/dist/src/context/build-dynamic-tools.js +1 -1
  123. package/dist/src/context/dynamic-instruction-lifecycle.js +1 -1
  124. package/dist/src/context/dynamic-resolve-context.d.ts +1 -1
  125. package/dist/src/context/dynamic-skill-lifecycle.js +1 -1
  126. package/dist/src/context/dynamic-subagent-lifecycle.d.ts +0 -2
  127. package/dist/src/context/dynamic-subagent-lifecycle.js +1 -1
  128. package/dist/src/context/dynamic-tool-lifecycle.d.ts +2 -2
  129. package/dist/src/context/dynamic-tool-lifecycle.js +1 -1
  130. package/dist/src/context/key-names.d.ts +12 -0
  131. package/dist/src/context/key-names.js +1 -0
  132. package/dist/src/context/keys.d.ts +8 -1
  133. package/dist/src/context/keys.js +1 -1
  134. package/dist/src/context/providers/connection-key.d.ts +1 -1
  135. package/dist/src/context/providers/connection.d.ts +1 -1
  136. package/dist/src/context/session-context.d.ts +32 -0
  137. package/dist/src/discover/discover-agent.d.ts +0 -13
  138. package/dist/src/discover/discover-agent.js +1 -1
  139. package/dist/src/discover/discover-subagent.js +1 -1
  140. package/dist/src/discover/extensions.d.ts +0 -6
  141. package/dist/src/discover/extensions.js +1 -1
  142. package/dist/src/discover/manifest.d.ts +4 -1
  143. package/dist/src/discover/manifest.js +1 -1
  144. package/dist/src/dynamic/definition.d.ts +117 -0
  145. package/dist/src/dynamic/definition.js +1 -0
  146. package/dist/src/evals/autoevals-client.js +1 -1
  147. package/dist/src/evals/index.d.ts +1 -1
  148. package/dist/src/evals/match.d.ts +1 -1
  149. package/dist/src/evals/runner/reporters/console.js +1 -1
  150. package/dist/src/evals/session.d.ts +1 -1
  151. package/dist/src/evals/target.js +1 -1
  152. package/dist/src/evals/types.d.ts +1 -1
  153. package/dist/src/eve-channel/index.d.ts +12 -0
  154. package/dist/src/eve-channel/index.js +1 -0
  155. package/dist/src/eve-channel/request.d.ts +49 -0
  156. package/dist/src/eve-channel/request.js +3 -0
  157. package/dist/src/eve-channel/support.d.ts +34 -0
  158. package/dist/src/eve-channel/support.js +1 -0
  159. package/dist/src/eve-channel/types.d.ts +128 -0
  160. package/dist/src/eve-channel/types.js +1 -0
  161. package/dist/src/execution/agent-handle-dispatch.d.ts +1 -1
  162. package/dist/src/execution/agent-handle-dispatch.js +1 -1
  163. package/dist/src/execution/authorization-callback-match.d.ts +1 -1
  164. package/dist/src/execution/cancel-descendant-turns-step.js +1 -1
  165. package/dist/src/execution/compaction.js +1 -1
  166. package/dist/src/execution/connection-auth-tool-result.d.ts +1 -1
  167. package/dist/src/{runtime → execution}/connections/callback-route.d.ts +2 -20
  168. package/dist/src/execution/connections/callback-route.js +1 -0
  169. package/dist/src/execution/create-session-step.js +1 -1
  170. package/dist/src/execution/delegated-parent-notification.d.ts +2 -2
  171. package/dist/src/execution/delegated-parent-notification.js +1 -1
  172. package/dist/src/execution/delegated-parent-result.d.ts +1 -1
  173. package/dist/src/execution/delegated-parent-result.js +1 -1
  174. package/dist/src/execution/delegation-tool.d.ts +1 -1
  175. package/dist/src/execution/delegation-tool.js +1 -1
  176. package/dist/src/execution/dispatch-action-failures.d.ts +1 -1
  177. package/dist/src/execution/dispatch-runtime-actions-shared.d.ts +1 -2
  178. package/dist/src/execution/dispatch-runtime-actions-shared.js +1 -1
  179. package/dist/src/execution/dispatch-runtime-actions-step.js +1 -1
  180. package/dist/src/execution/dispatch-workflow-runtime-actions-step.d.ts +1 -1
  181. package/dist/src/execution/durable-session-migrations/turn-workflow.d.ts +1 -1
  182. package/dist/src/execution/durable-session-store.js +1 -1
  183. package/dist/src/execution/effective-output-schema.d.ts +2 -1
  184. package/dist/src/execution/eve-workflow-attributes.d.ts +6 -0
  185. package/dist/src/execution/eve-workflow-attributes.js +1 -1
  186. package/dist/src/execution/forward-turn-cancellation-step.js +1 -1
  187. package/dist/src/execution/node-step.js +1 -1
  188. package/dist/src/execution/remote-agent-dispatch.d.ts +10 -8
  189. package/dist/src/execution/remote-agent-dispatch.js +1 -1
  190. package/dist/src/execution/runtime-context.js +1 -1
  191. package/dist/src/execution/sandbox/{bash-tool.d.ts → bash.d.ts} +2 -2
  192. package/dist/src/execution/sandbox/bindings/vercel-credentials.js +1 -1
  193. package/dist/src/execution/sandbox/glob-tool.js +1 -1
  194. package/dist/src/execution/sandbox/grep-tool.js +1 -1
  195. package/dist/src/execution/sandbox/{read-file-tool.d.ts → read-file.d.ts} +2 -2
  196. package/dist/src/execution/sandbox/{read-file-tool.js → read-file.js} +1 -1
  197. package/dist/src/execution/sandbox/{write-file-tool.d.ts → write-file.d.ts} +2 -2
  198. package/dist/src/execution/sandbox/write-file.js +1 -0
  199. package/dist/src/execution/session-callback-route.d.ts +2 -0
  200. package/dist/src/execution/session-callback-route.js +1 -0
  201. package/dist/src/execution/session-callback-step.js +1 -1
  202. package/dist/src/execution/session-timeout-steps.js +1 -1
  203. package/dist/src/execution/settle-cancelled-turn-step.js +1 -1
  204. package/dist/src/execution/subagent-adapter.js +1 -1
  205. package/dist/src/execution/subagent-hitl-proxy.d.ts +1 -1
  206. package/dist/src/execution/subagent-invocation.d.ts +0 -3
  207. package/dist/src/execution/subagent-invocation.js +1 -1
  208. package/dist/src/execution/subagent-start-local.d.ts +1 -2
  209. package/dist/src/execution/subagent-start-local.js +1 -1
  210. package/dist/src/execution/subagent-start-remote.d.ts +1 -2
  211. package/dist/src/execution/subagent-start-remote.js +1 -1
  212. package/dist/src/execution/subagent-tool.d.ts +4 -8
  213. package/dist/src/execution/subagent-tool.js +1 -1
  214. package/dist/src/execution/subagent-usage-span.d.ts +1 -1
  215. package/dist/src/execution/task-input-response-route.d.ts +2 -0
  216. package/dist/src/execution/task-input-response-route.js +1 -0
  217. package/dist/src/execution/tasks/child/instructions.js +1 -1
  218. package/dist/src/execution/tasks/child/update.d.ts +1 -1
  219. package/dist/src/execution/tasks/child/update.js +1 -1
  220. package/dist/src/execution/tasks/parent/continuation-dispatch.d.ts +1 -1
  221. package/dist/src/execution/tasks/parent/control-shared.d.ts +1 -1
  222. package/dist/src/execution/tasks/parent/delegate.d.ts +2 -2
  223. package/dist/src/execution/tasks/parent/delegate.js +1 -1
  224. package/dist/src/execution/tasks/parent/dispatch-task-step.js +1 -1
  225. package/dist/src/execution/tasks/parent/dispatch.d.ts +3 -1
  226. package/dist/src/execution/tasks/parent/dispatch.js +1 -1
  227. package/dist/src/execution/tasks/parent/hitl-proxy-steps.js +1 -1
  228. package/dist/src/execution/tasks/parent/tool-execution.js +1 -1
  229. package/dist/src/execution/terminate-child-sessions-step.d.ts +4 -5
  230. package/dist/src/execution/terminate-child-sessions-step.js +1 -1
  231. package/dist/src/execution/tool-auth.d.ts +5 -6
  232. package/dist/src/execution/tool-auth.js +1 -1
  233. package/dist/src/execution/tools/connection-search.d.ts +1 -0
  234. package/dist/src/execution/tools/connection-search.js +2 -0
  235. package/dist/src/{runtime/framework-tools → execution/tools}/file-state.d.ts +2 -2
  236. package/dist/src/execution/tools/load-skill.d.ts +6 -0
  237. package/dist/src/execution/tools/load-skill.js +1 -0
  238. package/dist/src/{runtime/framework-tools → execution/tools}/subagent/local.d.ts +7 -7
  239. package/dist/src/execution/tools/subagent/local.js +1 -0
  240. package/dist/src/{runtime/framework-tools → execution/tools}/subagent/remote.d.ts +5 -5
  241. package/dist/src/execution/tools/subagent/remote.js +1 -0
  242. package/dist/src/execution/tools/tasks.d.ts +18 -0
  243. package/dist/src/execution/tools/tasks.js +1 -0
  244. package/dist/src/{runtime/framework-tools → execution/tools}/todo.d.ts +0 -2
  245. package/dist/src/{runtime/framework-tools → execution/tools}/todo.js +1 -2
  246. package/dist/src/execution/turn-control-protocol.js +1 -1
  247. package/dist/src/execution/web-fetch/request.js +1 -1
  248. package/dist/src/execution/wire/session-inbox-resume.js +1 -1
  249. package/dist/src/execution/wire/session-inbox-wire.v1.js +1 -1
  250. package/dist/src/execution/workflow-entry.js +1 -1
  251. package/dist/src/execution/workflow-runtime.js +1 -1
  252. package/dist/src/execution/workflow-steps.js +1 -1
  253. package/dist/src/execution/workflow-trace-context.js +1 -1
  254. package/dist/src/framework/host-inventory.d.ts +8 -0
  255. package/dist/src/framework/host-inventory.js +1 -0
  256. package/dist/src/framework/sources/modules/agent.d.ts +4 -0
  257. package/dist/src/framework/sources/modules/agent.js +1 -0
  258. package/dist/src/framework/sources/modules/eve-channel.d.ts +1 -0
  259. package/dist/src/framework/sources/modules/eve-channel.js +1 -0
  260. package/dist/src/framework/sources/modules/home-channel.d.ts +2 -0
  261. package/dist/src/framework/sources/modules/home-channel.js +1 -0
  262. package/dist/src/framework/sources/modules/sandbox.d.ts +2 -0
  263. package/dist/src/framework/sources/modules/sandbox.js +1 -0
  264. package/dist/src/framework/sources/registry.d.ts +5 -0
  265. package/dist/src/framework/sources/registry.js +1 -0
  266. package/dist/src/harness/action-result-helpers.d.ts +1 -1
  267. package/dist/src/harness/advertised-tools.js +1 -1
  268. package/dist/src/harness/authorization.d.ts +3 -3
  269. package/dist/src/harness/background-tools.d.ts +2 -2
  270. package/dist/src/harness/channel-delivery-instrumentation.js +1 -1
  271. package/dist/src/harness/compaction.js +1 -1
  272. package/dist/src/harness/execute-tool.d.ts +3 -3
  273. package/dist/src/{runtime/framework-tools → harness}/final-output.d.ts +1 -1
  274. package/dist/src/harness/final-output.js +1 -0
  275. package/dist/src/harness/handles/query.d.ts +1 -1
  276. package/dist/src/harness/handles/store.d.ts +8 -0
  277. package/dist/src/harness/handles/store.js +1 -1
  278. package/dist/src/harness/hitl/approval-input-requests.d.ts +1 -1
  279. package/dist/src/harness/hitl/approval-prompt.d.ts +1 -1
  280. package/dist/src/harness/hitl/pending-input-resolution.d.ts +2 -2
  281. package/dist/src/harness/hitl/question-input-requests.d.ts +1 -1
  282. package/dist/src/harness/input-extraction.d.ts +1 -1
  283. package/dist/src/harness/input-extraction.js +1 -1
  284. package/dist/src/harness/input-request-class.d.ts +1 -1
  285. package/dist/src/harness/input-request-resolution.d.ts +1 -1
  286. package/dist/src/harness/input-requests.d.ts +2 -2
  287. package/dist/src/harness/instrumentation/lifecycle.d.ts +3 -0
  288. package/dist/src/harness/instrumentation/providers.js +1 -1
  289. package/dist/src/harness/instrumentation/runtime.d.ts +2 -1
  290. package/dist/src/harness/pending-input-batches.d.ts +1 -1
  291. package/dist/src/harness/prepare-trace-context.d.ts +3 -0
  292. package/dist/src/harness/prepare-trace-context.js +1 -1
  293. package/dist/src/harness/provider-safety.d.ts +7 -0
  294. package/dist/src/harness/provider-safety.js +1 -0
  295. package/dist/src/{runtime/framework-tools/web-search.d.ts → harness/provider-tool-schemas.d.ts} +1 -9
  296. package/dist/src/harness/provider-tool-schemas.js +1 -0
  297. package/dist/src/harness/provider-tools.js +1 -1
  298. package/dist/src/harness/proxy-input-requests.d.ts +1 -1
  299. package/dist/src/harness/request-input-tool.d.ts +4 -0
  300. package/dist/src/harness/request-input-tool.js +1 -0
  301. package/dist/src/harness/runtime-actions.d.ts +1 -1
  302. package/dist/src/harness/session-limit-continuation.d.ts +1 -1
  303. package/dist/src/harness/step-hooks.d.ts +2 -0
  304. package/dist/src/harness/step-hooks.js +1 -1
  305. package/dist/src/harness/stream-actions.d.ts +1 -1
  306. package/dist/src/harness/subagent-depth.d.ts +1 -1
  307. package/dist/src/harness/tool-call-action.d.ts +1 -1
  308. package/dist/src/harness/tool-call-input-errors.d.ts +1 -1
  309. package/dist/src/harness/tool-loop.js +2 -2
  310. package/dist/src/harness/tool-model-output.d.ts +1 -1
  311. package/dist/src/harness/tools.d.ts +1 -1
  312. package/dist/src/harness/tools.js +1 -1
  313. package/dist/src/harness/types.d.ts +3 -9
  314. package/dist/src/harness/workflow-runtime-action-state.d.ts +1 -1
  315. package/dist/src/harness/workflow-subagent-limit.d.ts +1 -1
  316. package/dist/src/instrumentation/provider.d.ts +117 -0
  317. package/dist/src/instrumentation/provider.js +1 -0
  318. package/dist/src/internal/application/compiled-artifacts.js +5 -4
  319. package/dist/src/internal/application/package.js +1 -1
  320. package/dist/src/internal/authored-definition/approval.d.ts +1 -1
  321. package/dist/src/internal/authored-definition/connection.js +1 -1
  322. package/dist/src/internal/authored-definition/core.js +1 -1
  323. package/dist/src/internal/authored-definition/schema-backed.d.ts +6 -3
  324. package/dist/src/internal/authored-definition/schema-backed.js +1 -1
  325. package/dist/src/internal/authored-definition/source-identity.d.ts +17 -0
  326. package/dist/src/internal/authored-definition/source-identity.js +1 -0
  327. package/dist/src/internal/authored-module-map-loader.d.ts +1 -5
  328. package/dist/src/internal/authored-module-map-loader.js +1 -1
  329. package/dist/src/internal/helpers/markdown.js +1 -1
  330. package/dist/src/internal/invocation/agent-invocation.d.ts +2 -2
  331. package/dist/src/internal/invocation/workflow-execution.d.ts +1 -1
  332. package/dist/src/internal/invocation/workflow-execution.js +1 -1
  333. package/dist/src/internal/materialized-authored-modules.js +1 -1
  334. package/dist/src/internal/nitro/dev-runtime-artifacts.js +1 -1
  335. package/dist/src/internal/nitro/host/application-route-registry.d.ts +2 -41
  336. package/dist/src/internal/nitro/host/application-route-registry.js +1 -1
  337. package/dist/src/internal/nitro/host/build-extension.js +1 -1
  338. package/dist/src/internal/nitro/host/build-vercel-agent-summary.js +1 -1
  339. package/dist/src/internal/nitro/host/configure-nitro-routes.js +3 -4
  340. package/dist/src/internal/nitro/host/create-application-nitro.js +1 -1
  341. package/dist/src/internal/nitro/host/dev-host-fingerprint.js +1 -1
  342. package/dist/src/internal/nitro/host/extension-capability-requirements.d.ts +2 -0
  343. package/dist/src/internal/nitro/host/extension-capability-requirements.js +1 -1
  344. package/dist/src/internal/nitro/host/start-development-server.js +2 -2
  345. package/dist/src/internal/nitro/host/start-production-server.js +3 -3
  346. package/dist/src/internal/nitro/routes/agent-info/build-agent-info-response.d.ts +9 -215
  347. package/dist/src/internal/nitro/routes/agent-info/build-agent-info-response.js +1 -1
  348. package/dist/src/internal/nitro/routes/agent-info/load-agent-info-data.d.ts +2 -13
  349. package/dist/src/internal/nitro/routes/agent-info/load-agent-info-data.js +1 -1
  350. package/dist/src/internal/nitro/routes/channel-dispatch.js +1 -1
  351. package/dist/src/internal/nitro/routes/channel-route-context.d.ts +5 -0
  352. package/dist/src/internal/nitro/routes/channel-route-context.js +1 -1
  353. package/dist/src/internal/nitro/routes/index.d.ts +0 -9
  354. package/dist/src/internal/nitro/routes/index.js +1 -1
  355. package/dist/src/internal/nitro/routes/info.js +1 -1
  356. package/dist/src/internal/nitro/routes/runtime-stack.d.ts +5 -5
  357. package/dist/src/internal/nitro/routes/runtime-stack.js +1 -1
  358. package/dist/src/internal/programmatic-source-loader.d.ts +1 -0
  359. package/dist/src/internal/programmatic-source-loader.js +1 -0
  360. package/dist/src/internal/runtime-registry.d.ts +3 -4
  361. package/dist/src/protocol/message.d.ts +3 -3
  362. package/dist/src/protocol/routes.d.ts +2 -0
  363. package/dist/src/protocol/routes.js +1 -1
  364. package/dist/src/public/agents/auth.d.ts +10 -6
  365. package/dist/src/public/agents/auth.js +1 -1
  366. package/dist/src/public/channels/auth.d.ts +1 -1
  367. package/dist/src/public/channels/auth.js +1 -1
  368. package/dist/src/public/channels/discord/discordChannel.js +1 -1
  369. package/dist/src/public/channels/discord/hitl.d.ts +1 -1
  370. package/dist/src/public/channels/discord/hitl.js +1 -1
  371. package/dist/src/public/channels/discord/inbound.d.ts +1 -0
  372. package/dist/src/public/channels/discord/inbound.js +1 -1
  373. package/dist/src/public/channels/eve.d.ts +1 -139
  374. package/dist/src/public/channels/eve.js +1 -3
  375. package/dist/src/public/channels/github/dispatch.d.ts +5 -0
  376. package/dist/src/public/channels/github/dispatch.js +1 -1
  377. package/dist/src/public/channels/github/githubChannel.js +1 -1
  378. package/dist/src/public/channels/github/inbound.d.ts +2 -0
  379. package/dist/src/public/channels/github/inbound.js +1 -1
  380. package/dist/src/public/channels/index.d.ts +1 -1
  381. package/dist/src/public/channels/index.js +1 -1
  382. package/dist/src/public/channels/linear/hitl.d.ts +1 -1
  383. package/dist/src/public/channels/linear/inbound.js +1 -1
  384. package/dist/src/public/channels/mcp.js +1 -1
  385. package/dist/src/public/channels/slack/action-status.d.ts +1 -1
  386. package/dist/src/public/channels/slack/hitl.d.ts +1 -1
  387. package/dist/src/public/channels/slack/hitl.js +1 -1
  388. package/dist/src/public/channels/slack/inbound.d.ts +9 -0
  389. package/dist/src/public/channels/slack/inbound.js +1 -1
  390. package/dist/src/public/channels/slack/interactions.js +1 -1
  391. package/dist/src/public/channels/slack/model-context.d.ts +3 -1
  392. package/dist/src/public/channels/slack/model-context.js +2 -2
  393. package/dist/src/public/channels/slack/session-operations.d.ts +1 -1
  394. package/dist/src/public/channels/slack/slackChannel.d.ts +1 -1
  395. package/dist/src/public/channels/slack/slackChannel.js +1 -1
  396. package/dist/src/public/channels/teams/hitl.d.ts +1 -1
  397. package/dist/src/public/channels/teams/hitl.js +1 -1
  398. package/dist/src/public/channels/teams/inbound.d.ts +2 -0
  399. package/dist/src/public/channels/teams/inbound.js +1 -1
  400. package/dist/src/public/channels/teams/teamsChannel.js +1 -1
  401. package/dist/src/public/channels/teams/verify.js +1 -1
  402. package/dist/src/public/channels/telegram/api.d.ts +15 -0
  403. package/dist/src/public/channels/telegram/api.js +2 -2
  404. package/dist/src/public/channels/telegram/authorization-callback.d.ts +10 -0
  405. package/dist/src/public/channels/telegram/authorization-callback.js +1 -0
  406. package/dist/src/public/channels/telegram/authorization.d.ts +19 -0
  407. package/dist/src/public/channels/telegram/authorization.js +3 -0
  408. package/dist/src/public/channels/telegram/defaults.d.ts +1 -0
  409. package/dist/src/public/channels/telegram/defaults.js +3 -3
  410. package/dist/src/public/channels/telegram/hitl.d.ts +1 -1
  411. package/dist/src/public/channels/telegram/hitl.js +1 -1
  412. package/dist/src/public/channels/telegram/inbound.d.ts +1 -0
  413. package/dist/src/public/channels/telegram/inbound.js +1 -1
  414. package/dist/src/public/channels/telegram/index.d.ts +1 -1
  415. package/dist/src/public/channels/telegram/index.js +1 -1
  416. package/dist/src/public/channels/telegram/state.d.ts +6 -0
  417. package/dist/src/public/channels/telegram/state.js +1 -0
  418. package/dist/src/public/channels/telegram/telegramChannel.d.ts +11 -0
  419. package/dist/src/public/channels/telegram/telegramChannel.js +1 -1
  420. package/dist/src/public/connections/errors.d.ts +1 -125
  421. package/dist/src/public/connections/errors.js +1 -1
  422. package/dist/src/public/connections/index.d.ts +2 -2
  423. package/dist/src/public/connections/index.js +1 -1
  424. package/dist/src/public/definitions/agent.d.ts +1 -1
  425. package/dist/src/public/definitions/agent.js +1 -1
  426. package/dist/src/public/definitions/approval.d.ts +2 -84
  427. package/dist/src/public/definitions/approval.js +1 -1
  428. package/dist/src/public/definitions/callback-context.d.ts +1 -32
  429. package/dist/src/public/definitions/connections/mcp.d.ts +1 -1
  430. package/dist/src/public/definitions/connections/mcp.js +1 -1
  431. package/dist/src/public/definitions/connections/openapi.d.ts +1 -1
  432. package/dist/src/public/definitions/connections/openapi.js +1 -1
  433. package/dist/src/public/definitions/connections/protocol.d.ts +1 -1
  434. package/dist/src/public/definitions/instructions.d.ts +2 -2
  435. package/dist/src/public/definitions/instructions.js +1 -1
  436. package/dist/src/public/definitions/skill.js +1 -1
  437. package/dist/src/public/index.d.ts +1 -1
  438. package/dist/src/public/instructions/index.d.ts +1 -1
  439. package/dist/src/public/instrumentation/provider.d.ts +1 -117
  440. package/dist/src/public/instrumentation/provider.js +1 -1
  441. package/dist/src/public/models/openai/chatgpt/auth.js +1 -1
  442. package/dist/src/public/next/server.js +1 -1
  443. package/dist/src/public/nuxt/dev-server.js +1 -1
  444. package/dist/src/public/sandbox/backends/default.d.ts +1 -49
  445. package/dist/src/public/sandbox/backends/default.js +1 -1
  446. package/dist/src/public/sandbox/backends/docker.d.ts +1 -14
  447. package/dist/src/public/sandbox/backends/docker.js +1 -1
  448. package/dist/src/public/sandbox/backends/just-bash.d.ts +1 -17
  449. package/dist/src/public/sandbox/backends/just-bash.js +1 -1
  450. package/dist/src/public/sandbox/backends/microsandbox.d.ts +1 -17
  451. package/dist/src/public/sandbox/backends/microsandbox.js +1 -1
  452. package/dist/src/public/sandbox/backends/vercel.d.ts +1 -30
  453. package/dist/src/public/sandbox/backends/vercel.js +1 -1
  454. package/dist/src/public/skills/index.d.ts +3 -3
  455. package/dist/src/public/skills/index.js +1 -1
  456. package/dist/src/public/sveltekit/dev-server.js +1 -1
  457. package/dist/src/public/tools/approval/index.d.ts +2 -2
  458. package/dist/src/public/tools/approval/index.js +1 -1
  459. package/dist/src/public/tools/bash.d.ts +3 -0
  460. package/dist/src/public/tools/bash.js +1 -0
  461. package/dist/src/public/tools/glob.d.ts +3 -0
  462. package/dist/src/public/tools/glob.js +1 -0
  463. package/dist/src/public/tools/grep.d.ts +3 -0
  464. package/dist/src/public/tools/grep.js +1 -0
  465. package/dist/src/public/tools/index.d.ts +6 -11
  466. package/dist/src/public/tools/index.js +1 -1
  467. package/dist/src/public/tools/load-skill.d.ts +3 -0
  468. package/dist/src/public/tools/load-skill.js +1 -0
  469. package/dist/src/public/tools/read-file.d.ts +3 -0
  470. package/dist/src/public/tools/read-file.js +1 -0
  471. package/dist/src/public/{tool-result-narrowing.d.ts → tools/result.d.ts} +2 -28
  472. package/dist/src/public/tools/result.js +1 -0
  473. package/dist/src/public/tools/sleep.d.ts +1 -0
  474. package/dist/src/public/tools/sleep.js +1 -0
  475. package/dist/src/public/tools/todo.d.ts +3 -0
  476. package/dist/src/public/tools/todo.js +1 -0
  477. package/dist/src/public/tools/web-fetch.d.ts +3 -0
  478. package/dist/src/public/tools/web-fetch.js +1 -0
  479. package/dist/src/public/tools/web-search.d.ts +3 -36
  480. package/dist/src/public/tools/web-search.js +1 -1
  481. package/dist/src/public/tools/workflow.d.ts +4 -0
  482. package/dist/src/public/tools/workflow.js +1 -0
  483. package/dist/src/public/tools/write-file.d.ts +3 -0
  484. package/dist/src/public/tools/write-file.js +1 -0
  485. package/dist/src/public/types/json.d.ts +1 -28
  486. package/dist/src/react/use-eve-agent.d.ts +1 -0
  487. package/dist/src/react/use-eve-agent.js +1 -1
  488. package/dist/src/runtime/actions/keys.d.ts +1 -1
  489. package/dist/src/runtime/actions/results.d.ts +1 -1
  490. package/dist/src/runtime/agent/bootstrap.js +1 -1
  491. package/dist/src/runtime/agent/mock-model-adapter.js +1 -1
  492. package/dist/src/runtime/connections/authorization-tokens.d.ts +1 -1
  493. package/dist/src/runtime/connections/mcp-client.d.ts +1 -1
  494. package/dist/src/runtime/connections/mcp-client.js +1 -1
  495. package/dist/src/runtime/connections/openapi-client.d.ts +1 -1
  496. package/dist/src/runtime/connections/openapi-client.js +1 -1
  497. package/dist/src/runtime/connections/principal.d.ts +1 -1
  498. package/dist/src/runtime/connections/principal.js +1 -1
  499. package/dist/src/runtime/connections/registry-types.d.ts +11 -0
  500. package/dist/src/runtime/connections/registry.d.ts +3 -2
  501. package/dist/src/runtime/connections/resolve-authorization.d.ts +2 -2
  502. package/dist/src/runtime/connections/resolve-authorization.js +1 -1
  503. package/dist/src/runtime/connections/scoped-authorization.d.ts +2 -2
  504. package/dist/src/runtime/connections/scoped-authorization.js +1 -1
  505. package/dist/src/runtime/loaders/compile-metadata.js +1 -1
  506. package/dist/src/runtime/loaders/manifest.js +1 -1
  507. package/dist/src/runtime/prompt/compose.d.ts +0 -6
  508. package/dist/src/runtime/prompt/compose.js +1 -1
  509. package/dist/src/runtime/resolve-agent-graph.js +1 -1
  510. package/dist/src/runtime/resolve-agent.js +1 -1
  511. package/dist/src/runtime/resolve-connection.js +1 -1
  512. package/dist/src/runtime/resolve-dynamic-tool.js +1 -1
  513. package/dist/src/runtime/resolve-tool.d.ts +2 -1
  514. package/dist/src/runtime/resolve-tool.js +1 -1
  515. package/dist/src/runtime/sandbox/keys.js +1 -1
  516. package/dist/src/runtime/sandbox/registry.d.ts +4 -20
  517. package/dist/src/runtime/sandbox/registry.js +1 -1
  518. package/dist/src/runtime/sessions/compiled-agent-cache.js +1 -1
  519. package/dist/src/runtime/sessions/runtime-context-keys.js +1 -1
  520. package/dist/src/runtime/sessions/turn.d.ts +3 -1
  521. package/dist/src/runtime/skills/sandbox-access.d.ts +1 -1
  522. package/dist/src/runtime/subagents/dynamic-agent-config.js +1 -1
  523. package/dist/src/runtime/subagents/dynamic-remote-agent-config.js +1 -1
  524. package/dist/src/runtime/subagents/registry.d.ts +0 -27
  525. package/dist/src/runtime/subagents/registry.js +1 -1
  526. package/dist/src/runtime/tools/registry.js +1 -1
  527. package/dist/src/runtime/types.d.ts +11 -27
  528. package/dist/src/sandbox/backends/default.d.ts +49 -0
  529. package/dist/src/sandbox/backends/default.js +1 -0
  530. package/dist/src/sandbox/backends/docker.d.ts +14 -0
  531. package/dist/src/sandbox/backends/docker.js +1 -0
  532. package/dist/src/sandbox/backends/just-bash.d.ts +17 -0
  533. package/dist/src/sandbox/backends/just-bash.js +1 -0
  534. package/dist/src/sandbox/backends/microsandbox.d.ts +17 -0
  535. package/dist/src/sandbox/backends/microsandbox.js +1 -0
  536. package/dist/src/sandbox/backends/vercel.d.ts +30 -0
  537. package/dist/src/sandbox/backends/vercel.js +1 -0
  538. package/dist/src/services/dev-client/runtime-artifacts.d.ts +2 -0
  539. package/dist/src/services/dev-client/runtime-artifacts.js +1 -1
  540. package/dist/src/services/dev-client.d.ts +1 -1
  541. package/dist/src/setup/channel-add-conflicts.js +1 -1
  542. package/dist/src/setup/cli/select-component.js +1 -1
  543. package/dist/src/setup/flows/link.js +1 -1
  544. package/dist/src/setup/flows/model-source-change.js +1 -1
  545. package/dist/src/setup/flows/model.js +1 -1
  546. package/dist/src/setup/flows/registry.js +1 -1
  547. package/dist/src/setup/integrations/runner.js +1 -1
  548. package/dist/src/setup/prompter.js +1 -1
  549. package/dist/src/setup/scaffold/create/add-to-project.js +1 -1
  550. package/dist/src/setup/scaffold/create/project.js +2 -2
  551. package/dist/src/setup/scaffold/create/web-template.d.ts +8 -8
  552. package/dist/src/setup/scaffold/create/web-template.js +336 -120
  553. package/dist/src/setup/scaffold/update/channels.js +1 -1
  554. package/dist/src/setup/scaffold/update/connections.js +1 -1
  555. package/dist/src/setup/vercel-project.js +0 -0
  556. package/dist/src/{runtime/actions/types.d.ts → shared/action-types.d.ts} +12 -12
  557. package/dist/src/{runtime/actions/types.js → shared/action-types.js} +1 -1
  558. package/dist/src/shared/agent-definition.d.ts +3 -10
  559. package/dist/src/shared/agent-definition.js +1 -1
  560. package/dist/src/{runtime/connections/types.d.ts → shared/connection-types.d.ts} +3 -13
  561. package/dist/src/{runtime/input/types.d.ts → shared/input.d.ts} +1 -1
  562. package/dist/src/shared/input.js +1 -0
  563. package/dist/src/shared/instructions-definition.d.ts +2 -0
  564. package/dist/src/shared/instructions-definition.js +1 -1
  565. package/dist/src/shared/objects.d.ts +5 -0
  566. package/dist/src/shared/objects.js +1 -0
  567. package/dist/src/shared/sandbox-definition.d.ts +1 -1
  568. package/dist/src/shared/skill-definition.d.ts +2 -0
  569. package/dist/src/shared/skill-definition.js +1 -1
  570. package/dist/src/{execution/skills/types.d.ts → shared/skill-types.d.ts} +1 -1
  571. package/dist/src/shared/skill-types.js +1 -0
  572. package/dist/src/{runtime/connections → shared}/validate-authorization.d.ts +1 -1
  573. package/dist/src/shared/vercel-project.d.ts +1 -0
  574. package/dist/src/shared/vercel-project.js +1 -1
  575. package/dist/src/svelte/index.js +1 -1
  576. package/dist/src/svelte/use-eve-agent.d.ts +8 -4
  577. package/dist/src/svelte/use-eve-agent.js +1 -1
  578. package/dist/src/tasks/json.d.ts +4 -89
  579. package/dist/src/tasks/json.js +1 -1
  580. package/dist/src/tasks/session-index.d.ts +1 -1
  581. package/dist/src/tasks/task-id.d.ts +0 -1
  582. package/dist/src/tasks/task-id.js +1 -1
  583. package/dist/src/tasks/types.d.ts +1 -1
  584. package/dist/src/tasks/types.js +1 -1
  585. package/dist/src/{public/tools/approval/approval-helpers.d.ts → tools/approval/policies.d.ts} +1 -1
  586. package/dist/src/tools/approval/policies.js +1 -0
  587. package/dist/src/tools/auth.d.ts +35 -0
  588. package/dist/src/tools/auth.js +1 -0
  589. package/dist/src/{public/definitions/tool.d.ts → tools/definition.d.ts} +42 -138
  590. package/dist/src/tools/definition.js +1 -0
  591. package/dist/src/{shared/durable-dynamic-tool-callbacks.d.ts → tools/durable-callbacks.d.ts} +1 -1
  592. package/dist/src/tools/durable-callbacks.js +1 -0
  593. package/dist/src/tools/dynamic.d.ts +68 -0
  594. package/dist/src/tools/dynamic.js +1 -0
  595. package/dist/src/tools/framework/agent-contract.d.ts +8 -0
  596. package/dist/src/tools/framework/agent-contract.js +1 -0
  597. package/dist/src/tools/framework/agent.d.ts +17 -0
  598. package/dist/src/tools/framework/agent.js +1 -0
  599. package/dist/src/tools/framework/ask-question.d.ts +50 -0
  600. package/dist/src/tools/framework/ask-question.js +1 -0
  601. package/dist/src/tools/framework/connection-search.d.ts +3 -0
  602. package/dist/src/tools/framework/connection-search.js +1 -0
  603. package/dist/src/tools/framework/task-cancel.d.ts +29 -0
  604. package/dist/src/tools/framework/task-cancel.js +1 -0
  605. package/dist/src/tools/framework/task-contract.d.ts +167 -0
  606. package/dist/src/tools/framework/task-contract.js +1 -0
  607. package/dist/src/tools/framework/task-update.d.ts +9 -0
  608. package/dist/src/tools/framework/task-update.js +1 -0
  609. package/dist/src/{public/tools/output-builders.d.ts → tools/model-output.d.ts} +41 -1
  610. package/dist/src/tools/provided/bash.d.ts +29 -0
  611. package/dist/src/tools/provided/bash.js +1 -0
  612. package/dist/src/tools/provided/glob.d.ts +26 -0
  613. package/dist/src/tools/provided/glob.js +2 -0
  614. package/dist/src/{runtime/framework-tools → tools/provided}/grep.d.ts +10 -10
  615. package/dist/src/tools/provided/grep.js +2 -0
  616. package/dist/src/tools/provided/load-skill.d.ts +2 -0
  617. package/dist/src/tools/provided/load-skill.js +1 -0
  618. package/dist/src/tools/provided/read-file.d.ts +27 -0
  619. package/dist/src/tools/provided/read-file.js +2 -0
  620. package/dist/src/{public/tools/sleep/index.d.ts → tools/provided/sleep.d.ts} +3 -3
  621. package/dist/src/tools/provided/sleep.js +1 -0
  622. package/dist/src/tools/provided/todo.d.ts +8 -0
  623. package/dist/src/tools/provided/todo.js +2 -0
  624. package/dist/src/{runtime/framework-tools → tools/provided}/web-fetch.d.ts +5 -2
  625. package/dist/src/tools/provided/web-fetch.js +2 -0
  626. package/dist/src/tools/provided/web-search.d.ts +39 -0
  627. package/dist/src/tools/provided/web-search.js +1 -0
  628. package/dist/src/tools/provided/write-file.d.ts +23 -0
  629. package/dist/src/tools/provided/write-file.js +2 -0
  630. package/dist/src/tools/workflow.d.ts +37 -0
  631. package/dist/src/tools/workflow.js +1 -0
  632. package/dist/src/tracing/agent-action-instrumentation.js +1 -1
  633. package/dist/src/tracing/agent-approval-instrumentation.js +1 -1
  634. package/dist/src/tracing/agent-channel-delivery-instrumentation.js +1 -1
  635. package/dist/src/tracing/agent-otel-provider.js +2 -2
  636. package/dist/src/tracing/agent-otel-session-context.d.ts +1 -1
  637. package/dist/src/tracing/agent-otel-session-context.js +1 -1
  638. package/dist/src/tracing/agent-span-id-generator.d.ts +1 -0
  639. package/dist/src/tracing/agent-span-id-generator.js +1 -1
  640. package/dist/src/tracing/agent-trace-context-store.d.ts +1 -1
  641. package/dist/src/tracing/agent-trace-context-store.js +1 -1
  642. package/dist/src/tracing/agent-trace-span-processor.js +1 -1
  643. package/dist/src/tracing/agent-trace-state.d.ts +2 -6
  644. package/dist/src/tracing/agent-trace-state.js +1 -1
  645. package/dist/src/tracing/install-instrumentation-runtime.js +1 -1
  646. package/dist/src/tracing/local-trace-reader.d.ts +1 -3
  647. package/dist/src/tracing/local-trace-reader.js +1 -1
  648. package/dist/src/tracing/otel-declaration.d.ts +1 -2
  649. package/dist/src/tracing/otel-registration.js +1 -1
  650. package/dist/src/tracing/sampled-trace.d.ts +10 -2
  651. package/dist/src/tracing/sampled-trace.js +1 -1
  652. package/dist/src/vue/index.js +1 -1
  653. package/dist/src/vue/use-eve-agent.d.ts +8 -4
  654. package/dist/src/vue/use-eve-agent.js +1 -1
  655. package/docs/agent-config.md +16 -4
  656. package/docs/channels/chat-sdk.mdx +1 -1
  657. package/docs/channels/discord.mdx +5 -1
  658. package/docs/channels/eve.mdx +19 -3
  659. package/docs/channels/github.mdx +2 -0
  660. package/docs/channels/linear.mdx +1 -1
  661. package/docs/channels/overview.mdx +1 -1
  662. package/docs/channels/slack.mdx +2 -0
  663. package/docs/channels/teams.mdx +1 -1
  664. package/docs/channels/telegram.mdx +2 -0
  665. package/docs/concepts/built-in-tools.md +30 -21
  666. package/docs/concepts/sessions-runs-and-streaming.md +3 -1
  667. package/docs/connections/overview.mdx +1 -1
  668. package/docs/extensions.md +2 -2
  669. package/docs/getting-started.mdx +9 -9
  670. package/docs/guides/auth-and-route-protection.md +3 -3
  671. package/docs/guides/client/output-schema.mdx +2 -2
  672. package/docs/guides/client/overview.mdx +4 -2
  673. package/docs/guides/frontend/nuxt.mdx +4 -3
  674. package/docs/guides/frontend/overview.mdx +21 -18
  675. package/docs/guides/frontend/sveltekit.mdx +4 -3
  676. package/docs/guides/frontend/use-eve-agent-svelte.mdx +5 -4
  677. package/docs/guides/frontend/use-eve-agent-vue.mdx +5 -4
  678. package/docs/guides/instrumentation.md +1 -0
  679. package/docs/guides/remote-agents.md +37 -18
  680. package/docs/patterns/multi-tenant-approvals.md +1 -1
  681. package/docs/reference/cli.md +2 -4
  682. package/docs/reference/typescript-api.md +35 -31
  683. package/docs/sandbox.mdx +1 -1
  684. package/docs/subagents/index.mdx +11 -28
  685. package/docs/tools/human-in-the-loop.md +43 -2
  686. package/docs/tools/overview.mdx +1 -1
  687. package/package.json +58 -8
  688. package/dist/src/compiler/normalize-extension.d.ts +0 -80
  689. package/dist/src/compiler/normalize-extension.js +0 -1
  690. package/dist/src/execution/sandbox/write-file-tool.js +0 -1
  691. package/dist/src/internal/nitro/routes/agent-info/build-agent-info-response-from-manifest.d.ts +0 -9
  692. package/dist/src/internal/nitro/routes/agent-info/build-agent-info-response-from-manifest.js +0 -1
  693. package/dist/src/internal/nitro/routes/health.d.ts +0 -14
  694. package/dist/src/internal/nitro/routes/health.js +0 -1
  695. package/dist/src/node_modules/.pnpm/picocolors@1.1.1/node_modules/picocolors/picocolors.js +0 -1
  696. package/dist/src/public/definitions/tool.js +0 -1
  697. package/dist/src/public/tool-result-narrowing.js +0 -1
  698. package/dist/src/public/tools/approval/approval-helpers.js +0 -1
  699. package/dist/src/public/tools/defaults.d.ts +0 -46
  700. package/dist/src/public/tools/defaults.js +0 -1
  701. package/dist/src/public/tools/define-bash-tool.d.ts +0 -21
  702. package/dist/src/public/tools/define-bash-tool.js +0 -1
  703. package/dist/src/public/tools/define-glob-tool.d.ts +0 -22
  704. package/dist/src/public/tools/define-glob-tool.js +0 -1
  705. package/dist/src/public/tools/define-grep-tool.d.ts +0 -22
  706. package/dist/src/public/tools/define-grep-tool.js +0 -1
  707. package/dist/src/public/tools/define-read-file-tool.d.ts +0 -21
  708. package/dist/src/public/tools/define-read-file-tool.js +0 -1
  709. package/dist/src/public/tools/define-write-file-tool.d.ts +0 -22
  710. package/dist/src/public/tools/define-write-file-tool.js +0 -1
  711. package/dist/src/public/tools/internal.d.ts +0 -13
  712. package/dist/src/public/tools/internal.js +0 -1
  713. package/dist/src/public/tools/sleep/index.js +0 -1
  714. package/dist/src/runtime/connections/callback-route.js +0 -1
  715. package/dist/src/runtime/framework-channels/index.d.ts +0 -6
  716. package/dist/src/runtime/framework-channels/index.js +0 -1
  717. package/dist/src/runtime/framework-tools/agent.d.ts +0 -29
  718. package/dist/src/runtime/framework-tools/agent.js +0 -1
  719. package/dist/src/runtime/framework-tools/ask-question.d.ts +0 -35
  720. package/dist/src/runtime/framework-tools/ask-question.js +0 -1
  721. package/dist/src/runtime/framework-tools/bash.d.ts +0 -24
  722. package/dist/src/runtime/framework-tools/bash.js +0 -1
  723. package/dist/src/runtime/framework-tools/connection-search-dynamic.d.ts +0 -19
  724. package/dist/src/runtime/framework-tools/connection-search-dynamic.js +0 -2
  725. package/dist/src/runtime/framework-tools/final-output.js +0 -1
  726. package/dist/src/runtime/framework-tools/glob.d.ts +0 -26
  727. package/dist/src/runtime/framework-tools/glob.js +0 -2
  728. package/dist/src/runtime/framework-tools/grep.js +0 -2
  729. package/dist/src/runtime/framework-tools/index.d.ts +0 -39
  730. package/dist/src/runtime/framework-tools/index.js +0 -1
  731. package/dist/src/runtime/framework-tools/read-file.d.ts +0 -27
  732. package/dist/src/runtime/framework-tools/read-file.js +0 -2
  733. package/dist/src/runtime/framework-tools/skill.d.ts +0 -12
  734. package/dist/src/runtime/framework-tools/skill.js +0 -1
  735. package/dist/src/runtime/framework-tools/subagent/local.js +0 -1
  736. package/dist/src/runtime/framework-tools/subagent/remote.js +0 -1
  737. package/dist/src/runtime/framework-tools/tasks.d.ts +0 -91
  738. package/dist/src/runtime/framework-tools/tasks.js +0 -1
  739. package/dist/src/runtime/framework-tools/web-fetch.js +0 -2
  740. package/dist/src/runtime/framework-tools/web-search.js +0 -1
  741. package/dist/src/runtime/framework-tools/write-file.d.ts +0 -23
  742. package/dist/src/runtime/framework-tools/write-file.js +0 -2
  743. package/dist/src/runtime/governance/auth/jwt-ecdsa.js +0 -1
  744. package/dist/src/runtime/governance/auth/jwt-hmac.js +0 -1
  745. package/dist/src/runtime/governance/auth/oidc.js +0 -1
  746. package/dist/src/runtime/input/types.js +0 -1
  747. package/dist/src/runtime/session-callback-route.d.ts +0 -6
  748. package/dist/src/runtime/session-callback-route.js +0 -1
  749. package/dist/src/runtime/task-input-response-route.d.ts +0 -5
  750. package/dist/src/runtime/task-input-response-route.js +0 -1
  751. package/dist/src/shared/durable-dynamic-tool-callbacks.js +0 -1
  752. package/dist/src/shared/dynamic-tool-definition.d.ts +0 -154
  753. package/dist/src/shared/dynamic-tool-definition.js +0 -1
  754. package/dist/src/shared/eve-server-health.d.ts +0 -5
  755. package/dist/src/shared/eve-server-health.js +0 -1
  756. package/dist/src/shared/tool-definition.d.ts +0 -89
  757. /package/dist/src/{runtime/governance → channel}/auth/http-basic.js +0 -0
  758. /package/dist/src/{runtime/governance → channel}/auth/token-claims.js +0 -0
  759. /package/dist/src/{runtime/governance → channel}/auth/types.js +0 -0
  760. /package/dist/src/{runtime/governance → channel}/auth/vercel-oidc-project.js +0 -0
  761. /package/dist/src/{runtime/governance/network → channel}/ip-allow-list.d.ts +0 -0
  762. /package/dist/src/{runtime/governance/network → channel}/ip-allow-list.js +0 -0
  763. /package/dist/src/{execution/skills/types.js → context/session-context.js} +0 -0
  764. /package/dist/src/execution/sandbox/{bash-tool.js → bash.js} +0 -0
  765. /package/dist/src/{runtime/framework-tools → execution/tools}/file-state.js +0 -0
  766. /package/dist/src/{runtime/framework-tools → execution/tools}/sleep.d.ts +0 -0
  767. /package/dist/src/{runtime/framework-tools → execution/tools}/sleep.js +0 -0
  768. /package/dist/src/execution/web-fetch/{tool.d.ts → execute.d.ts} +0 -0
  769. /package/dist/src/execution/web-fetch/{tool.js → execute.js} +0 -0
  770. /package/dist/src/{shared/tool-definition.js → runtime/connections/registry-types.js} +0 -0
  771. /package/dist/src/{runtime/connections/types.js → shared/connection-types.js} +0 -0
  772. /package/dist/src/{runtime/sessions/auth.d.ts → shared/session-auth.d.ts} +0 -0
  773. /package/dist/src/{runtime/sessions/auth.js → shared/session-auth.js} +0 -0
  774. /package/dist/src/{runtime/connections → shared}/validate-authorization.js +0 -0
  775. /package/dist/src/{public/tools/output-builders.js → tools/model-output.js} +0 -0
  776. /package/dist/src/{shared/tool-schema.d.ts → tools/schema.d.ts} +0 -0
  777. /package/dist/src/{shared/tool-schema.js → tools/schema.js} +0 -0
  778. /package/dist/src/{shared/tool-task.d.ts → tools/task.d.ts} +0 -0
  779. /package/dist/src/{shared/tool-task.js → tools/task.js} +0 -0
@@ -0,0 +1 @@
1
+ import{createMicrosandboxSandboxBackend}from"#execution/sandbox/bindings/local.js";function microsandbox(e){return createMicrosandboxSandboxBackend({createOptions:e})}export{microsandbox};
@@ -0,0 +1,30 @@
1
+ import type { SandboxBackend } from "#public/definitions/sandbox-backend.js";
2
+ import type { VercelSandboxBootstrapUseOptions, VercelSandboxOptions, VercelSandboxSessionUseOptions } from "#public/sandbox/vercel-sandbox.js";
3
+ /**
4
+ * Constructs the [Vercel Sandbox](https://vercel.com/docs/sandbox)
5
+ * backend. Configuring this backend pins it unconditionally —
6
+ * including for local development, where it creates real hosted
7
+ * sandboxes (requires Vercel credentials).
8
+ *
9
+ * The optional provider creation fields are forwarded to Vercel Sandbox creation
10
+ * for every fresh sandbox the framework creates (template at prewarm,
11
+ * session at first-time create). On resume (`Sandbox.get`), no create
12
+ * happens, so opts are not re-applied. `networkPolicy` is applied after
13
+ * framework-owned base setup for fresh templates and template-less
14
+ * sessions, before authored bootstrap code runs.
15
+ *
16
+ * `opts.source`, if supplied, is used only on the template create:
17
+ * the author's snapshot, git revision, or tarball becomes the base
18
+ * layer of the template. Bootstrap, seed files, and framework setup
19
+ * still run on top, and every session derives from the resulting
20
+ * eve-owned snapshot. `source` is stripped from session creates so the
21
+ * framework's snapshot always wins.
22
+ *
23
+ * `bootstrap({ use })` applies its options to the template via
24
+ * `sandbox.update(...)`; those settings persist into the snapshot.
25
+ * `onSession({ use })` applies its options to the live session via the
26
+ * SDK's `update` under the hood, overriding any overlapping field
27
+ * from `opts`. `sessionCreateOptions`, when provided, is resolved only
28
+ * when creating a fresh live session and can attach session-specific Drives.
29
+ */
30
+ export declare function vercel(opts?: VercelSandboxOptions): SandboxBackend<VercelSandboxBootstrapUseOptions, VercelSandboxSessionUseOptions>;
@@ -0,0 +1 @@
1
+ import{createVercelSandbox}from"#execution/sandbox/bindings/vercel.js";function vercel(e){let{sessionCreateOptions:t,...n}=e??{};return createVercelSandbox({createOptions:n,resolveSessionCreateOptions:t})}export{vercel};
@@ -10,6 +10,8 @@
10
10
  */
11
11
  export declare function readDevelopmentRuntimeArtifactsRevision(input: {
12
12
  readonly serverUrl: string;
13
+ readonly signal?: AbortSignal;
14
+ readonly timeoutMs?: number;
13
15
  }): Promise<string | undefined>;
14
16
  export declare function suspendDevelopmentRuntimeArtifacts(input: {
15
17
  readonly serverUrl: string;
@@ -1 +1 @@
1
- import{EVE_DEV_RUNTIME_ARTIFACTS_REBUILD_ROUTE_PATH,EVE_DEV_RUNTIME_ARTIFACTS_RESUME_ROUTE_PATH,EVE_DEV_RUNTIME_ARTIFACTS_ROUTE_PATH,EVE_DEV_RUNTIME_ARTIFACTS_SUSPEND_ROUTE_PATH}from"#protocol/routes.js";async function readDevelopmentRuntimeArtifactsRevision(e){try{let t=new URL(EVE_DEV_RUNTIME_ARTIFACTS_ROUTE_PATH,e.serverUrl);return await parseDevelopmentRuntimeArtifactsRevision(await fetch(t))}catch{return}}async function suspendDevelopmentRuntimeArtifacts(e){return await changeDevelopmentRuntimeArtifacts(e.serverUrl,EVE_DEV_RUNTIME_ARTIFACTS_SUSPEND_ROUTE_PATH)}async function resumeDevelopmentRuntimeArtifacts(e){try{let n=new URL(EVE_DEV_RUNTIME_ARTIFACTS_RESUME_ROUTE_PATH,e.serverUrl);return e.silent===!0&&n.searchParams.set(`silent`,`1`),await parseDevelopmentRuntimeArtifactsRevision(await fetch(n,{method:`POST`}))}catch{return}}async function changeDevelopmentRuntimeArtifacts(e,t){try{return(await fetch(new URL(t,e),{method:`POST`})).ok}catch{return!1}}async function rebuildDevelopmentRuntimeArtifacts(t){try{let n=new URL(EVE_DEV_RUNTIME_ARTIFACTS_REBUILD_ROUTE_PATH,t.serverUrl);return t.force===!0&&n.searchParams.set(`force`,`1`),await parseDevelopmentRuntimeArtifactsRevision(await fetch(n,{method:`POST`}))}catch{return}}async function parseDevelopmentRuntimeArtifactsRevision(e){if(!e.ok)return;let t=await e.json();return typeof t.revision==`string`&&t.revision.length>0?t.revision:void 0}export{readDevelopmentRuntimeArtifactsRevision,rebuildDevelopmentRuntimeArtifacts,resumeDevelopmentRuntimeArtifacts,suspendDevelopmentRuntimeArtifacts};
1
+ import{EVE_DEV_RUNTIME_ARTIFACTS_REBUILD_ROUTE_PATH,EVE_DEV_RUNTIME_ARTIFACTS_RESUME_ROUTE_PATH,EVE_DEV_RUNTIME_ARTIFACTS_ROUTE_PATH,EVE_DEV_RUNTIME_ARTIFACTS_SUSPEND_ROUTE_PATH}from"#protocol/routes.js";async function readDevelopmentRuntimeArtifactsRevision(e){try{let t=new URL(EVE_DEV_RUNTIME_ARTIFACTS_ROUTE_PATH,e.serverUrl),r=e.timeoutMs===void 0?void 0:AbortSignal.timeout(e.timeoutMs),i=e.signal===void 0?r:r===void 0?e.signal:AbortSignal.any([e.signal,r]),a={redirect:`error`};return i!==void 0&&(a.signal=i),await parseDevelopmentRuntimeArtifactsRevision(await fetch(t,a))}catch{return}}async function suspendDevelopmentRuntimeArtifacts(e){return await changeDevelopmentRuntimeArtifacts(e.serverUrl,EVE_DEV_RUNTIME_ARTIFACTS_SUSPEND_ROUTE_PATH)}async function resumeDevelopmentRuntimeArtifacts(e){try{let n=new URL(EVE_DEV_RUNTIME_ARTIFACTS_RESUME_ROUTE_PATH,e.serverUrl);return e.silent===!0&&n.searchParams.set(`silent`,`1`),await parseDevelopmentRuntimeArtifactsRevision(await fetch(n,{method:`POST`}))}catch{return}}async function changeDevelopmentRuntimeArtifacts(e,t){try{return(await fetch(new URL(t,e),{method:`POST`})).ok}catch{return!1}}async function rebuildDevelopmentRuntimeArtifacts(t){try{let n=new URL(EVE_DEV_RUNTIME_ARTIFACTS_REBUILD_ROUTE_PATH,t.serverUrl);return t.force===!0&&n.searchParams.set(`force`,`1`),await parseDevelopmentRuntimeArtifactsRevision(await fetch(n,{method:`POST`}))}catch{return}}async function parseDevelopmentRuntimeArtifactsRevision(e){if(!e.ok)return;let t=await e.json();return typeof t.revision==`string`&&t.revision.length>0?t.revision:void 0}export{readDevelopmentRuntimeArtifactsRevision,rebuildDevelopmentRuntimeArtifacts,resumeDevelopmentRuntimeArtifacts,suspendDevelopmentRuntimeArtifacts};
@@ -1,5 +1,5 @@
1
1
  import type { UserContent } from "ai";
2
- import type { InputResponse } from "#runtime/input/types.js";
2
+ import type { InputResponse } from "#shared/input.js";
3
3
  /**
4
4
  * Tracks local dev runtime-artifact revisions so callers can refresh their
5
5
  * presentation before delivering the next turn.
@@ -1 +1 @@
1
- import{EVE_SESSION_ROUTE_PATH}from"#protocol/routes.js";import{join}from"node:path";import{compileChannelDefinition}from"#compiler/normalize-channel.js";import{discoverAgent}from"#discover/discover-agent.js";import{isNextJsProject}from"#setup/scaffold/index.js";const SCAFFOLDED_WEB_CHANNEL_LOGICAL_PATH=`channels/eve.ts`;async function inspectExistingChannelRegistrations(a){let o=join(a,`agent`),[{manifest:s},c]=await Promise.all([discoverAgent({agentRoot:o,appRoot:a}),isNextJsProject(a)]),l=new Set,u=new Set;for(let t of s.channels){let r=await compileChannelDefinition(o,t),i=Array.isArray(r)?r:[r];for(let n of i)n.kind===`channel`&&(n.method===`POST`&&n.urlPath===EVE_SESSION_ROUTE_PATH&&l.add(t.logicalPath),n.adapterKind===`slack`&&u.add(t.logicalPath))}let d={};return[...l].some(e=>e!==SCAFFOLDED_WEB_CHANNEL_LOGICAL_PATH)&&(d.web=`POST ${EVE_SESSION_ROUTE_PATH} already registered`),u.size>0&&(d.slack=`Slack channel already registered`),{disabledChannelReasons:d,webRouteOwners:[...l],slackOwners:[...u],webAppPresent:c}}function assertCanAddSelectedChannels(t,n){if(t.includes(`web`)){let t=n.webRouteOwners.find(e=>e!==SCAFFOLDED_WEB_CHANNEL_LOGICAL_PATH);if(t!==void 0)throw Error(`Cannot scaffold Web Chat because agent/${t} already defines POST ${EVE_SESSION_ROUTE_PATH}. Web Chat scaffolds the same eve session routes.`)}if(t.includes(`slack`)){let e=n.slackOwners.find(e=>e!==`channels/slack.ts`);if(e!==void 0)throw Error(`Cannot scaffold Slack because agent/${e} already defines a Slack channel. Slack scaffolding would register the channel again.`)}}export{assertCanAddSelectedChannels,inspectExistingChannelRegistrations};
1
+ import{EVE_SESSION_ROUTE_PATH}from"#protocol/routes.js";import{join}from"node:path";import{compileChannelDefinition}from"#compiler/normalize-channel.js";import{createCompiledBindingNamespaceLoader}from"#compiler/load-binding-namespace.js";import{discoverAgent}from"#discover/discover-agent.js";import{isNextJsProject}from"#setup/scaffold/index.js";const SCAFFOLDED_WEB_CHANNEL_LOGICAL_PATH=`channels/eve.ts`;async function inspectExistingChannelRegistrations(o){let s=join(o,`agent`),[{manifest:c},l]=await Promise.all([discoverAgent({agentRoot:s,appRoot:o}),isNextJsProject(o)]),u=new Set,d=new Set;for(let r of c.channels){let i={backing:{externalDependencies:[],kind:`filesystem`,sourcePath:join(s,r.logicalPath)},logicalPath:r.logicalPath,owner:{kind:`application`}},a=await compileChannelDefinition(s,r,{binding:i,loadNamespace:createCompiledBindingNamespaceLoader({bindings:{[r.sourceId]:i},registries:[]})});if(a.kind===`channel`)for(let t of a.definitions)t.kind===`channel`&&(t.method===`POST`&&t.urlPath===EVE_SESSION_ROUTE_PATH&&u.add(r.logicalPath),t.adapterKind===`slack`&&d.add(r.logicalPath))}let f={};return[...u].some(e=>e!==SCAFFOLDED_WEB_CHANNEL_LOGICAL_PATH)&&(f.web=`POST ${EVE_SESSION_ROUTE_PATH} already registered`),d.size>0&&(f.slack=`Slack channel already registered`),{disabledChannelReasons:f,webRouteOwners:[...u],slackOwners:[...d],webAppPresent:l}}function assertCanAddSelectedChannels(t,n){if(t.includes(`web`)){let t=n.webRouteOwners.find(e=>e!==SCAFFOLDED_WEB_CHANNEL_LOGICAL_PATH);if(t!==void 0)throw Error(`Cannot scaffold Web Chat because agent/${t} already defines POST ${EVE_SESSION_ROUTE_PATH}. Web Chat scaffolds the same eve session routes.`)}if(t.includes(`slack`)){let e=n.slackOwners.find(e=>e!==`channels/slack.ts`);if(e!==void 0)throw Error(`Cannot scaffold Slack because agent/${e} already defines a Slack channel. Slack scaffolding would register the channel again.`)}}export{assertCanAddSelectedChannels,inspectExistingChannelRegistrations};
@@ -1 +1 @@
1
- import{__toESM}from"../../_virtual/_rolldown/runtime.js";import{require_picocolors}from"../../node_modules/.pnpm/picocolors@1.1.1/node_modules/picocolors/picocolors.js";import{Prompt as m,isCancel as q}from"../../node_modules/.pnpm/@clack_core@1.3.1/node_modules/@clack/core/dist/index.js";import{renderMultiselectPrompt,renderSearchableSelect,renderSelectPrompt}from"./prompt-ui.js";import{createSelectOptionCodec}from"./select-option-codec.js";import{filterOptions,initialSelectState,orderedSelection,reduceSelect,searchActionQuery,selectValueAtCursor,submitRowIndex}from"./select-state.js";var import_picocolors=__toESM(require_picocolors(),1);function toPromptState(e){return e}var SelectComponent=class extends m{options;multiple;search;searchAction;required;filter=``;optionCursor=0;selectedSet=new Set;constructor(e){super({render:e.render,validate:()=>this.submitError()},!1),this.options=e.options,this.multiple=e.multiple,this.search=e.search,this.searchAction=e.searchAction,this.required=e.required,this.filter=e.initial.filter,this.optionCursor=e.initial.cursor,this.selectedSet=e.initial.selected,this.refreshValue(),this.on(`key`,(e,t)=>{if(this.multiple&&t?.name===`space`){this.apply({type:`toggle`});return}if(this.search){if(t?.name===`backspace`||e===``||e===`\b`){this.apply({type:`backspace`});return}e!==void 0&&e.length===1&&e>=` `&&e!==``&&this.apply({type:`char`,char:e})}}),this.on(`cursor`,e=>{e===`up`||e===`left`?this.apply({type:`up`}):(e===`down`||e===`right`)&&this.apply({type:`down`})})}visibleOptions(){return filterOptions(this.options,this.filter,this.searchAction)}onSubmitRow(){return this.multiple&&this.optionCursor===submitRowIndex(this.visibleOptions())}submitLabel(){if(this.required)return`Submit`;let e=new Set(this.options.filter(e=>e.locked).map(e=>e.value));return[...this.selectedSet].some(t=>!e.has(t))?`Submit`:`Skip`}_shouldSubmit(){return this.multiple?this.onSubmitRow()?!0:(this.apply({type:`toggle`}),!1):this.visibleOptions()[this.optionCursor]?.completed!==!0}selectedValues(){if(this.multiple)return orderedSelection(this.options,this.selectedSet);let e=selectValueAtCursor(this.visibleOptions(),this.optionCursor);return e===void 0?[]:[e]}submitDisplay(){if(this.multiple){let e=this.options.filter(e=>this.selectedSet.has(e.value)).map(e=>e.label);return e.length>0?e.join(`, `):import_picocolors.default.dim(`(none selected)`)}let e=selectValueAtCursor(this.visibleOptions(),this.optionCursor);return e===void 0?``:this.labelForValue(e)}labelForValue(e){let t=searchActionQuery(e);return t!==void 0&&this.searchAction!==void 0?this.searchAction.label(t):this.options.find(t=>t.value===e)?.label??e}submitError(){return this.multiple?this.required&&this.selectedSet.size===0?`Select at least one option, then press enter.`:void 0:selectValueAtCursor(this.visibleOptions(),this.optionCursor)===void 0?`Type to match an option, then press enter.`:void 0}apply(e){let t=reduceSelect({filter:this.filter,cursor:this.optionCursor,selected:this.selectedSet},e,{options:this.options,searchAction:this.searchAction,submitRow:this.multiple});this.filter=t.filter,this.optionCursor=t.cursor,this.selectedSet=t.selected,this.refreshValue()}refreshValue(){this.value=this.multiple?orderedSelection(this.options,this.selectedSet):selectValueAtCursor(this.visibleOptions(),this.optionCursor)}};function renderSelectComponent(e,t,n,r){let s=toPromptState(e.state);return e.search?renderSearchableSelect({colors:import_picocolors.default,state:s,leadingRail:n,message:t.message,multiple:e.multiple,filter:e.filter,placeholder:t.placeholder,options:e.visibleOptions(),cursor:e.optionCursor,selectedValues:e.selectedValues(),submitDisplay:e.submitDisplay(),footerNote:r,error:e.error,submitLabel:e.submitLabel()}):e.multiple?renderMultiselectPrompt({colors:import_picocolors.default,cursor:e.optionCursor,error:e.error,footerNote:r,leadingRail:n,message:t.message,options:e.options,selectedValues:e.selectedValues(),state:s,submitLabel:e.submitLabel()}):renderSelectPrompt({colors:import_picocolors.default,cursor:e.optionCursor,footerNote:r,leadingRail:n,message:t.message,options:e.options,state:s})}async function runSelectComponent(e){let t=createSelectOptionCodec(e.options),n=initialSelectState({options:t.options,defaultValue:e.defaultValue===void 0?void 0:t.encode(e.defaultValue),initialValues:e.initialValues?.map(e=>t.encode(e)),submitRow:e.multiple}),i,a,o=new SelectComponent({options:t.options,multiple:e.multiple,search:e.search,searchAction:e.searchAction===void 0?void 0:{label:e.searchAction.label},required:e.required,initial:n,render(){return i?renderSelectComponent(i,{message:e.message,placeholder:e.placeholder},e.leadingRail,a?.note()):``}});i=o,a=e.attachGuard?.(o);let c=await o.prompt();if(q(c))return c;if(c===void 0)throw Error(`Select prompt returned no value.`);if(Array.isArray(c))return c.map(e=>t.decode(e));let l=searchActionQuery(c);return l!==void 0&&e.searchAction!==void 0?e.searchAction.value(l):t.decode(c)}export{SelectComponent,runSelectComponent};
1
+ import{Prompt as m,isCancel as q}from"../../node_modules/.pnpm/@clack_core@1.3.1/node_modules/@clack/core/dist/index.js";import{renderMultiselectPrompt,renderSearchableSelect,renderSelectPrompt}from"./prompt-ui.js";import{createSelectOptionCodec}from"./select-option-codec.js";import{filterOptions,initialSelectState,orderedSelection,reduceSelect,searchActionQuery,selectValueAtCursor,submitRowIndex}from"./select-state.js";import pc from"#compiled/picocolors/index.js";function toPromptState(e){return e}var SelectComponent=class extends m{options;multiple;search;searchAction;required;filter=``;optionCursor=0;selectedSet=new Set;constructor(e){super({render:e.render,validate:()=>this.submitError()},!1),this.options=e.options,this.multiple=e.multiple,this.search=e.search,this.searchAction=e.searchAction,this.required=e.required,this.filter=e.initial.filter,this.optionCursor=e.initial.cursor,this.selectedSet=e.initial.selected,this.refreshValue(),this.on(`key`,(e,t)=>{if(this.multiple&&t?.name===`space`){this.apply({type:`toggle`});return}if(this.search){if(t?.name===`backspace`||e===``||e===`\b`){this.apply({type:`backspace`});return}e!==void 0&&e.length===1&&e>=` `&&e!==``&&this.apply({type:`char`,char:e})}}),this.on(`cursor`,e=>{e===`up`||e===`left`?this.apply({type:`up`}):(e===`down`||e===`right`)&&this.apply({type:`down`})})}visibleOptions(){return filterOptions(this.options,this.filter,this.searchAction)}onSubmitRow(){return this.multiple&&this.optionCursor===submitRowIndex(this.visibleOptions())}submitLabel(){if(this.required)return`Submit`;let e=new Set(this.options.filter(e=>e.locked).map(e=>e.value));return[...this.selectedSet].some(t=>!e.has(t))?`Submit`:`Skip`}_shouldSubmit(){return this.multiple?this.onSubmitRow()?!0:(this.apply({type:`toggle`}),!1):this.visibleOptions()[this.optionCursor]?.completed!==!0}selectedValues(){if(this.multiple)return orderedSelection(this.options,this.selectedSet);let e=selectValueAtCursor(this.visibleOptions(),this.optionCursor);return e===void 0?[]:[e]}submitDisplay(){if(this.multiple){let e=this.options.filter(e=>this.selectedSet.has(e.value)).map(e=>e.label);return e.length>0?e.join(`, `):pc.dim(`(none selected)`)}let e=selectValueAtCursor(this.visibleOptions(),this.optionCursor);return e===void 0?``:this.labelForValue(e)}labelForValue(e){let t=searchActionQuery(e);return t!==void 0&&this.searchAction!==void 0?this.searchAction.label(t):this.options.find(t=>t.value===e)?.label??e}submitError(){return this.multiple?this.required&&this.selectedSet.size===0?`Select at least one option, then press enter.`:void 0:selectValueAtCursor(this.visibleOptions(),this.optionCursor)===void 0?`Type to match an option, then press enter.`:void 0}apply(e){let t=reduceSelect({filter:this.filter,cursor:this.optionCursor,selected:this.selectedSet},e,{options:this.options,searchAction:this.searchAction,submitRow:this.multiple});this.filter=t.filter,this.optionCursor=t.cursor,this.selectedSet=t.selected,this.refreshValue()}refreshValue(){this.value=this.multiple?orderedSelection(this.options,this.selectedSet):selectValueAtCursor(this.visibleOptions(),this.optionCursor)}};function renderSelectComponent(e,t,a,o){let s=toPromptState(e.state);return e.search?renderSearchableSelect({colors:pc,state:s,leadingRail:a,message:t.message,multiple:e.multiple,filter:e.filter,placeholder:t.placeholder,options:e.visibleOptions(),cursor:e.optionCursor,selectedValues:e.selectedValues(),submitDisplay:e.submitDisplay(),footerNote:o,error:e.error,submitLabel:e.submitLabel()}):e.multiple?renderMultiselectPrompt({colors:pc,cursor:e.optionCursor,error:e.error,footerNote:o,leadingRail:a,message:t.message,options:e.options,selectedValues:e.selectedValues(),state:s,submitLabel:e.submitLabel()}):renderSelectPrompt({colors:pc,cursor:e.optionCursor,footerNote:o,leadingRail:a,message:t.message,options:e.options,state:s})}async function runSelectComponent(e){let n=createSelectOptionCodec(e.options),r=initialSelectState({options:n.options,defaultValue:e.defaultValue===void 0?void 0:n.encode(e.defaultValue),initialValues:e.initialValues?.map(e=>n.encode(e)),submitRow:e.multiple}),i,o,c=new SelectComponent({options:n.options,multiple:e.multiple,search:e.search,searchAction:e.searchAction===void 0?void 0:{label:e.searchAction.label},required:e.required,initial:r,render(){return i?renderSelectComponent(i,{message:e.message,placeholder:e.placeholder},e.leadingRail,o?.note()):``}});i=c,o=e.attachGuard?.(c);let l=await c.prompt();if(q(l))return l;if(l===void 0)throw Error(`Select prompt returned no value.`);if(Array.isArray(l))return l.map(e=>n.decode(e));let u=searchActionQuery(l);return u!==void 0&&e.searchAction!==void 0?e.searchAction.value(u):n.decode(l)}export{SelectComponent,runSelectComponent};
@@ -1 +1 @@
1
- import{__toESM}from"../../_virtual/_rolldown/runtime.js";import{require_picocolors}from"../../node_modules/.pnpm/picocolors@1.1.1/node_modules/picocolors/picocolors.js";import{AI_GATEWAY_API_KEY_ENV_VAR}from"../ai-gateway-api-key.js";import{interactiveAsker,withAnswers}from"../ask.js";import{detectProjectIdentity}from"../project-resolution.js";import{withSpinner}from"../with-spinner.js";import{snapshotSetupState}from"../state.js";import{detectAiGateway,findEnvFileWithKey}from"../boxes/detect-ai-gateway.js";import{applyAiGatewayCredential}from"../boxes/apply-ai-gateway-credential.js";import{linkVercelProject}from"../boxes/link-project.js";import{resolveProvisioning}from"../boxes/resolve-provisioning.js";import{WizardCancelledError}from"../step.js";import{runInteractive}from"../runner.js";import{inProjectSetupState,prompterSink}from"./in-project.js";import{hasEnvValue,resolveGatewayCredential}from"#internal/resolve-model-endpoint-status.js";var import_picocolors=__toESM(require_picocolors(),1);async function runLinkFlow(e){let{appRoot:t,prompter:a,signal:o,projectSelection:s=`existing-only`}=e,c={detectProjectIdentity,findEnvFileWithKey,env:process.env,...e.deps},l=await withSpinner(a,`Checking the current Vercel link...`,async()=>{let e=await c.detectProjectIdentity(t,{signal:o});return o?.throwIfAborted(),e});if(l===void 0){let[n,r]=await Promise.all([c.findEnvFileWithKey(t,AI_GATEWAY_API_KEY_ENV_VAR),c.findEnvFileWithKey(t,`VERCEL_OIDC_TOKEN`)]),i=n??r;i!==void 0&&e.teamSelectMessage===void 0&&a.log.message(`This directory is not linked to a Vercel project yet — the model currently runs on credentials from ${i}.`)}else{let e=l.teamName===void 0?import_picocolors.default.bold(l.projectName):`${import_picocolors.default.bold(l.projectName)} in ${import_picocolors.default.bold(l.teamName)}`;try{if(await a.select({message:`This directory is already linked to\n${e}`,options:[{value:`relink`,label:`Link to another project`},{value:`dismiss`,label:`Dismiss`}]})===`dismiss`)return{kind:`cancelled`}}catch(e){if(e instanceof WizardCancelledError)return{kind:`cancelled`};throw e}}let u=inProjectSetupState(t,{kind:`unresolved`});if((await runInteractive([resolveProvisioning({asker:withAnswers({deploy:`vercel`})(interactiveAsker(a)),prompter:a,targetDirectory:t,mode:{headless:!1},adoptExistingLink:!1,projectSelection:s,teamSelectMessage:e.teamSelectMessage,deps:c.resolveProvisioning}),linkVercelProject({prompter:a,deps:c.linkProject}),detectAiGateway(),applyAiGatewayCredential({prompter:a,deps:c.applyAiGatewayCredential})],u,prompterSink(a),{snapshot:snapshotSetupState,signal:o})).kind===`cancelled`)return{kind:`cancelled`};let[d,f]=await Promise.all([c.findEnvFileWithKey(t,`VERCEL_OIDC_TOKEN`),c.findEnvFileWithKey(t,AI_GATEWAY_API_KEY_ENV_VAR)]);o?.throwIfAborted(),d===void 0&&f===void 0&&a.log.warning("Linked, but no model credential landed in an env file (VERCEL_OIDC_TOKEN or AI_GATEWAY_API_KEY). Run `vercel env pull` once the project has AI Gateway access.");let p={kind:`done`},m={apiKeyInEnv:hasEnvValue(c.env[AI_GATEWAY_API_KEY_ENV_VAR])};f!==void 0&&(m.apiKeyFile=f),d!==void 0&&(m.oidcFile=d);let h=resolveGatewayCredential(m);return h!==void 0&&(p.resolution=h),p}export{runLinkFlow};
1
+ import{AI_GATEWAY_API_KEY_ENV_VAR}from"../ai-gateway-api-key.js";import{interactiveAsker,withAnswers}from"../ask.js";import{detectProjectIdentity}from"../project-resolution.js";import{withSpinner}from"../with-spinner.js";import{snapshotSetupState}from"../state.js";import{detectAiGateway,findEnvFileWithKey}from"../boxes/detect-ai-gateway.js";import{applyAiGatewayCredential}from"../boxes/apply-ai-gateway-credential.js";import{linkVercelProject}from"../boxes/link-project.js";import{resolveProvisioning}from"../boxes/resolve-provisioning.js";import{WizardCancelledError}from"../step.js";import{runInteractive}from"../runner.js";import{inProjectSetupState,prompterSink}from"./in-project.js";import pc from"#compiled/picocolors/index.js";import{hasEnvValue,resolveGatewayCredential}from"#internal/resolve-model-endpoint-status.js";async function runLinkFlow(i){let{appRoot:a,prompter:o,signal:s,projectSelection:c=`existing-only`}=i,l={detectProjectIdentity,findEnvFileWithKey,env:process.env,...i.deps},u=await withSpinner(o,`Checking the current Vercel link...`,async()=>{let e=await l.detectProjectIdentity(a,{signal:s});return s?.throwIfAborted(),e});if(u===void 0){let[t,n]=await Promise.all([l.findEnvFileWithKey(a,AI_GATEWAY_API_KEY_ENV_VAR),l.findEnvFileWithKey(a,`VERCEL_OIDC_TOKEN`)]),r=t??n;r!==void 0&&i.teamSelectMessage===void 0&&o.log.message(`This directory is not linked to a Vercel project yet — the model currently runs on credentials from ${r}.`)}else{let e=u.teamName===void 0?pc.bold(u.projectName):`${pc.bold(u.projectName)} in ${pc.bold(u.teamName)}`;try{if(await o.select({message:`This directory is already linked to\n${e}`,options:[{value:`relink`,label:`Link to another project`},{value:`dismiss`,label:`Dismiss`}]})===`dismiss`)return{kind:`cancelled`}}catch(e){if(e instanceof WizardCancelledError)return{kind:`cancelled`};throw e}}let d=inProjectSetupState(a,{kind:`unresolved`});if((await runInteractive([resolveProvisioning({asker:withAnswers({deploy:`vercel`})(interactiveAsker(o)),prompter:o,targetDirectory:a,mode:{headless:!1},adoptExistingLink:!1,projectSelection:c,teamSelectMessage:i.teamSelectMessage,deps:l.resolveProvisioning}),linkVercelProject({prompter:o,deps:l.linkProject}),detectAiGateway(),applyAiGatewayCredential({prompter:o,deps:l.applyAiGatewayCredential})],d,prompterSink(o),{snapshot:snapshotSetupState,signal:s})).kind===`cancelled`)return{kind:`cancelled`};let[f,p]=await Promise.all([l.findEnvFileWithKey(a,`VERCEL_OIDC_TOKEN`),l.findEnvFileWithKey(a,AI_GATEWAY_API_KEY_ENV_VAR)]);s?.throwIfAborted(),f===void 0&&p===void 0&&o.log.warning("Linked, but no model credential landed in an env file (VERCEL_OIDC_TOKEN or AI_GATEWAY_API_KEY). Run `vercel env pull` once the project has AI Gateway access.");let m={kind:`done`},h={apiKeyInEnv:hasEnvValue(l.env[AI_GATEWAY_API_KEY_ENV_VAR])};p!==void 0&&(h.apiKeyFile=p),f!==void 0&&(h.oidcFile=f);let g=resolveGatewayCredential(h);return g!==void 0&&(m.resolution=g),m}export{runLinkFlow};
@@ -1 +1 @@
1
- import{__toESM}from"../../_virtual/_rolldown/runtime.js";import{require_picocolors}from"../../node_modules/.pnpm/picocolors@1.1.1/node_modules/picocolors/picocolors.js";import{join}from"node:path";import{discoverAgent}from"#discover/discover-agent.js";import{formatLanguageModelGatewayId}from"#internal/runtime-model.js";import{CHATGPT_MODEL_SELECTION_PREFIX,parseChatGptModelSelection}from"#shared/chatgpt-model.js";import{createCompiledRuntimeModelCatalogLoader}from"#compiler/model-catalog.js";import{createStaticSourceChange}from"#source-change/static-source-change.js";var import_picocolors=__toESM(require_picocolors(),1);function formatApplyModelSettingsOutcome(e){return e.kind===`rejected`?e.message:e.kind===`unchanged`?`Model settings are already up to date.`:e.changed.length===1&&e.changed[0]===`model`&&e.model!==void 0?`Model changed to ${import_picocolors.default.bold(e.model)}. Live on your next prompt.`:`Model settings updated: ${e.changed.map(t=>t===`model`?`model ${e.model??`updated`}`:t===`reasoning`?`reasoning ${e.reasoning??`provider default`}`:`Fast mode ${e.fastMode?`on`:`off`}`).join(`, `)}. Live on your next prompt.`}function formatApplyModelOutcome(e){switch(e.kind){case`changed`:return`Model changed to ${import_picocolors.default.bold(e.to)}. Live on your next prompt.`;case`unchanged`:return`Model is already \`${e.model}\`.`;case`rejected`:return e.message}}async function changeAgentModelSettings(e){let{appRoot:t,patch:r}=e;if(r.model.kind===`set`){let e=await validateModelSlug(t,r.model.value);if(e!==null)return{kind:`rejected`,message:e}}let{manifest:i}=await discoverAgent({agentRoot:join(t,`agent`),appRoot:t}),a=await createStaticSourceChange(i).updateModelSettings(r);if(a.kind===`bail`)return{kind:`rejected`,message:`Couldn't edit ${a.at.logicalPath}: ${a.reason}. Change the model settings by hand.`};if(a.changed.length===0)return{kind:`unchanged`};let o={kind:`changed`,changed:a.changed};return r.model.kind===`set`&&(o.model=r.model.value),r.reasoning.kind!==`keep`&&(o.reasoning=r.reasoning.kind===`set`?r.reasoning.value:null),r.gatewayServiceTier.kind!==`keep`&&(o.fastMode=r.gatewayServiceTier.kind===`set`),o}async function changeAgentModel(e){let{appRoot:t,slug:r}=e,i=await validateModelSlug(t,r);if(i!==null)return{kind:`rejected`,message:i};let{manifest:a}=await discoverAgent({agentRoot:join(t,`agent`),appRoot:t}),o=await createStaticSourceChange(a).updateModelName(r);return o.kind===`bail`?{kind:`rejected`,message:`Couldn't edit ${o.at.logicalPath}: ${o.reason}. Change \`model\` by hand.`}:o.from===o.to?{kind:`unchanged`,model:o.to}:{kind:`changed`,to:o.to}}async function validateModelSlug(e,t){if(parseChatGptModelSelection(t)!==void 0)return null;if(t.startsWith(CHATGPT_MODEL_SELECTION_PREFIX))return"Choose a bare OpenAI model id after `chatgpt/`.";if(!t.includes(`/`))return`\`${t}\` isn't a provider/model id (e.g. anthropic/claude-sonnet-5).`;let n=createCompiledRuntimeModelCatalogLoader(e);try{if(await n.getModelLimits(formatLanguageModelGatewayId(t))===null)return`I couldn't confirm \`${t}\` in the AI Gateway model catalog, so I didn't change agent.ts.`}catch{return null}return null}export{changeAgentModel,changeAgentModelSettings,formatApplyModelOutcome,formatApplyModelSettingsOutcome,validateModelSlug};
1
+ import{join}from"node:path";import pc from"#compiled/picocolors/index.js";import{discoverAgent}from"#discover/discover-agent.js";import{formatLanguageModelGatewayId}from"#internal/runtime-model.js";import{CHATGPT_MODEL_SELECTION_PREFIX,parseChatGptModelSelection}from"#shared/chatgpt-model.js";import{createCompiledRuntimeModelCatalogLoader}from"#compiler/model-catalog.js";import{createStaticSourceChange}from"#source-change/static-source-change.js";function formatApplyModelSettingsOutcome(e){return e.kind===`rejected`?e.message:e.kind===`unchanged`?`Model settings are already up to date.`:e.changed.length===1&&e.changed[0]===`model`&&e.model!==void 0?`Model changed to ${pc.bold(e.model)}. Live on your next prompt.`:`Model settings updated: ${e.changed.map(t=>t===`model`?`model ${e.model??`updated`}`:t===`reasoning`?`reasoning ${e.reasoning??`provider default`}`:`Fast mode ${e.fastMode?`on`:`off`}`).join(`, `)}. Live on your next prompt.`}function formatApplyModelOutcome(e){switch(e.kind){case`changed`:return`Model changed to ${pc.bold(e.to)}. Live on your next prompt.`;case`unchanged`:return`Model is already \`${e.model}\`.`;case`rejected`:return e.message}}async function changeAgentModelSettings(t){let{appRoot:r,patch:i}=t;if(i.model.kind===`set`){let e=await validateModelSlug(r,i.model.value);if(e!==null)return{kind:`rejected`,message:e}}let{manifest:a}=await discoverAgent({agentRoot:join(r,`agent`),appRoot:r}),o=await createStaticSourceChange(a).updateModelSettings(i);if(o.kind===`bail`)return{kind:`rejected`,message:`Couldn't edit ${o.at.logicalPath}: ${o.reason}. Change the model settings by hand.`};if(o.changed.length===0)return{kind:`unchanged`};let s={kind:`changed`,changed:o.changed};return i.model.kind===`set`&&(s.model=i.model.value),i.reasoning.kind!==`keep`&&(s.reasoning=i.reasoning.kind===`set`?i.reasoning.value:null),i.gatewayServiceTier.kind!==`keep`&&(s.fastMode=i.gatewayServiceTier.kind===`set`),s}async function changeAgentModel(t){let{appRoot:r,slug:i}=t,a=await validateModelSlug(r,i);if(a!==null)return{kind:`rejected`,message:a};let{manifest:o}=await discoverAgent({agentRoot:join(r,`agent`),appRoot:r}),s=await createStaticSourceChange(o).updateModelName(i);return s.kind===`bail`?{kind:`rejected`,message:`Couldn't edit ${s.at.logicalPath}: ${s.reason}. Change \`model\` by hand.`}:s.from===s.to?{kind:`unchanged`,model:s.to}:{kind:`changed`,to:s.to}}async function validateModelSlug(e,t){if(parseChatGptModelSelection(t)!==void 0)return null;if(t.startsWith(CHATGPT_MODEL_SELECTION_PREFIX))return"Choose a bare OpenAI model id after `chatgpt/`.";if(!t.includes(`/`))return`\`${t}\` isn't a provider/model id (e.g. anthropic/claude-sonnet-5).`;let n=createCompiledRuntimeModelCatalogLoader(e);try{if(await n.getModelLimits(formatLanguageModelGatewayId(t))===null)return`I couldn't confirm \`${t}\` in the AI Gateway model catalog, so I didn't change agent.ts.`}catch{return null}return null}export{changeAgentModel,changeAgentModelSettings,formatApplyModelOutcome,formatApplyModelSettingsOutcome,validateModelSlug};
@@ -1 +1 @@
1
- import{__toESM}from"../../_virtual/_rolldown/runtime.js";import{require_picocolors}from"../../node_modules/.pnpm/picocolors@1.1.1/node_modules/picocolors/picocolors.js";import{AI_GATEWAY_API_KEY_ENV_VAR}from"../ai-gateway-api-key.js";import{withSpinner}from"../with-spinner.js";import{gatewayModelCapabilities}from"../boxes/model-capabilities.js";import{fetchGatewayCatalog,modelOptionsFromCatalog}from"../boxes/select-model.js";import{ensureChatGptAuth}from"./chatgpt-auth.js";import{WizardCancelledError}from"../step.js";import{changeAgentModelSettings,formatApplyModelSettingsOutcome}from"./model-source-change.js";import{runProviderFlow}from"./provider.js";import{DEFAULT_AGENT_MODEL_ID}from"#shared/default-agent-model.js";import{inspectApplication}from"#services/inspect-application.js";import{readProviderSelection,resolveAvailableProviders,writeProviderSelection}from"#setup/provider-settings.js";import{formatModelSummary}from"#shared/model-summary.js";import{readGatewayServiceTier}from"#shared/gateway-service-tier.js";import{DEFAULT_CHATGPT_MODEL_SELECTION,isChatGptModelRouting,parseChatGptModelSelection}from"#shared/chatgpt-model.js";var import_picocolors=__toESM(require_picocolors(),1);const MODEL_MENU_MESSAGE=``;function providerSelectionHint(e,t){return e===`chatgpt`?t===void 0?`ChatGPT subscription`:`ChatGPT subscription (${t})`:e===`ai-gateway-project`?`AI Gateway via Project`:`AI Gateway via ${AI_GATEWAY_API_KEY_ENV_VAR}`}function modelListRows(e){return modelOptionsFromCatalog(e).map(e=>{let t={value:e.value,label:e.value};return e.featured===!0&&(t.featured=!0),t})}function formatModelDraftHint(e,t,n){let r={model:e};return t!==null&&(r.reasoning=t),n.kind===`priority`&&(r.fastGlyph=`↯`),formatModelSummary(r)}function modelMenuRows(e,t,n,r,i,a,o,s,c){let l;s||c?(l={value:`model`,label:`Change model`,description:s?`The model, its reasoning effort, and the Gateway service tier`:`Reasoning and service tier; the model itself is an SDK model call in agent.ts`},e!==null&&(l.hint=formatModelDraftHint(e,t,n))):l={value:`model`,label:`Change model`,disabled:!0,description:`Set via an SDK model call in agent.ts; edit the source to change it`};let u;return u=o?.kind===`external`&&!isChatGptModelRouting(o)?{disabled:!0,value:`provider`,label:`Change provider`,description:`Disabled in external endpoint mode`}:i?{value:`provider`,label:`Change provider`,hint:providerSelectionHint(r,a),description:`How your agent reaches the model provider`}:{value:`provider`,label:import_picocolors.default.bold(`Configure model access`),hint:import_picocolors.default.yellow(`Not configured`),description:`How your agent reaches the model provider`,accent:`warning`},[l,u,{value:`done`,label:`Done`}]}async function runModelFlow(e){let{appRoot:t,prompter:n,signal:o}=e,d={readCurrentModel:readCurrentAgentModel,applySettings:changeAgentModelSettings,resolveAvailableProviders,readProviderSelection,runProviderFlow,ensureChatGptAuth,writeProviderSelection,...e.deps},f=d.selectModel?.fetchModels??fetchGatewayCatalog,[p,m,h,g]=await withSpinner(n,`Checking the project…`,()=>Promise.all([d.readCurrentModel(t),d.resolveAvailableProviders(t,o===void 0?{env:process.env}:{signal:o,env:process.env}),d.readProviderSelection(t),f(o).catch(()=>void 0)]));o?.throwIfAborted();let{id:_,routing:v,serviceTier:y,editable:b,settingsEditable:x}=p,S=p.reasoning===`provider-default`?null:p.reasoning,C=h??(m.includes(`ai-gateway-key`)?`ai-gateway-key`:`ai-gateway-project`),w=m.includes(C),T,E={model:{kind:`keep`},reasoning:{kind:`keep`},gatewayServiceTier:{kind:`keep`}},D,O,k=!1,A=!1,j=v?.kind===`external`&&!isChatGptModelRouting(v),M=j?{tone:`warning`,text:"`agent.ts` specifies the model provider directly. Model, provider, and service-tier changes stay source-owned; reasoning remains configurable here."}:void 0,N=!w&&v?.kind!==`external`?`provider`:b||x?`model`:`provider`,P=v?.kind!==`external`&&(e.initialStep===`provider`||!w);for(;;){let r;if(P)P=!1,r=`provider`;else try{r=await n.select({message:``,options:modelMenuRows(_,S,isChatGptModelRouting(v)?{kind:`standard`}:y,C,w,e.chatGptAccountLabel,v,b,x),hintLayout:`stacked`,initialValue:N,notices:M===void 0?[]:[M]})}catch(e){if(!(e instanceof WizardCancelledError))throw e;if(hasModelSettingsChanges(E))return{kind:`cancelled`,discardedDraft:!0};break}if(r===`done`){A=!0;break}if(r===`model`){let e=d.pickModelSettings;if(e===void 0)throw Error(`runModelFlow requires a pickModelSettings dep to open the model screen.`);let t=await e({model:b?{kind:`pick`,options:modelListRows(g),current:_}:{kind:`fixed`,current:_,reason:`Set via an SDK model call in agent.ts; edit the source to change it`},reasoning:S,serviceTier:isChatGptModelRouting(v)?{kind:`standard`}:y,settingsEditable:x,externalRouting:j,capabilitiesFor:e=>gatewayModelCapabilities(g,e)});if(o?.throwIfAborted(),t===void 0){N=`model`;continue}t.model!==void 0&&(_=t.model,v=routingForModelSelection(t.model),E.model={kind:`set`,value:t.model}),t.reasoning!==void 0&&(S=t.reasoning==="default"?null:t.reasoning,E.reasoning=S===null?{kind:`remove`}:{kind:`set`,value:S}),t.serviceTier!==void 0&&!isChatGptModelRouting(v)&&(y=t.serviceTier===`priority`?{kind:`priority`}:{kind:`standard`},E.gatewayServiceTier=t.serviceTier===`priority`?{kind:`set`,value:`priority`}:{kind:`remove`}),N=`done`;continue}let a=await d.runProviderFlow({appRoot:t,prompter:n,signal:o,availableProviders:m,selectedProvider:C});if(a.kind===`cancelled`){if(o?.aborted)return{kind:`cancelled`};N=`provider`;continue}if(a.kind===`external-provider`){if(o?.aborted)return{kind:`cancelled`};N=`done`;continue}T=a.kind,T===`chatgpt`?(k=!0,isChatGptModelRouting(v)||(E.model={kind:`set`,value:DEFAULT_CHATGPT_MODEL_SELECTION},E.gatewayServiceTier={kind:`remove`})):isChatGptModelRouting(v)&&(E.model={kind:`set`,value:DEFAULT_AGENT_MODEL_ID}),A=!0;break}let F=E.model.kind===`set`&&parseChatGptModelSelection(E.model.value)!==void 0;if(A&&F&&(E.gatewayServiceTier={kind:`remove`},k=!0),A&&k&&await authenticateChatGpt(d,e.withExclusiveTerminal),A&&hasModelSettingsChanges(E)&&(D=await d.applySettings({appRoot:t,patch:E})),A&&T!==void 0&&D?.kind!==`rejected`&&(await d.writeProviderSelection(t,T),O=T),D!==void 0&&O===void 0&&o?.throwIfAborted(),D===void 0&&O===void 0&&!k)return{kind:`cancelled`};let I={kind:`done`,accessChanged:D?.kind===`changed`||O!==void 0||k};return D===void 0?k&&(I.modelMessage=`ChatGPT login ready.`):I.modelMessage=formatApplyModelSettingsOutcome(D),O!==void 0&&(I.providerSelection=O),I}function routingForModelSelection(e){return parseChatGptModelSelection(e)===void 0?{kind:`gateway`,target:e.split(`/`)[0]??``}:{kind:`external`,provider:`codex`}}async function authenticateChatGpt(e,t){let authenticate=()=>e.ensureChatGptAuth();await(t===void 0?authenticate():t(authenticate))}function hasModelSettingsChanges(e){return e.model.kind!==`keep`||e.reasoning.kind!==`keep`||e.gatewayServiceTier.kind!==`keep`}async function readCurrentAgentModel(e){try{let{compiledState:t}=await inspectApplication(e),n=t?.manifest.config,r=n?.model,i=isChatGptModelRouting(r?.routing);return{id:i&&r!==void 0?`chatgpt/${r.id}`:r?.id??null,routing:r?.routing??null,reasoning:n?.reasoning??null,serviceTier:readGatewayServiceTier(r?.providerOptions),editable:r!==void 0&&(r.source===void 0||i),settingsEditable:n?.source!==void 0}}catch{return{id:null,routing:null,reasoning:null,serviceTier:{kind:`standard`},editable:!1,settingsEditable:!1}}}async function modelChangeRefusalForUneditableModel(e){let{editable:t,routing:n}=await readCurrentAgentModel(e);return t?null:`Model is set via ${n?.kind===`external`?`the external provider \`${n.provider}\``:`an SDK model call`} in agent.ts, not a string literal; /model can't rewrite it. Edit \`model\` in agent.ts.`}export{MODEL_MENU_MESSAGE,modelChangeRefusalForUneditableModel,runModelFlow};
1
+ import{AI_GATEWAY_API_KEY_ENV_VAR}from"../ai-gateway-api-key.js";import{withSpinner}from"../with-spinner.js";import{gatewayModelCapabilities}from"../boxes/model-capabilities.js";import{fetchGatewayCatalog,modelOptionsFromCatalog}from"../boxes/select-model.js";import{ensureChatGptAuth}from"./chatgpt-auth.js";import{WizardCancelledError}from"../step.js";import{changeAgentModelSettings,formatApplyModelSettingsOutcome}from"./model-source-change.js";import{runProviderFlow}from"./provider.js";import pc from"#compiled/picocolors/index.js";import{DEFAULT_AGENT_MODEL_ID}from"#shared/default-agent-model.js";import{inspectApplication}from"#services/inspect-application.js";import{readProviderSelection,resolveAvailableProviders,writeProviderSelection}from"#setup/provider-settings.js";import{formatModelSummary}from"#shared/model-summary.js";import{readGatewayServiceTier}from"#shared/gateway-service-tier.js";import{DEFAULT_CHATGPT_MODEL_SELECTION,isChatGptModelRouting,parseChatGptModelSelection}from"#shared/chatgpt-model.js";const MODEL_MENU_MESSAGE=``;function providerSelectionHint(t,n){return t===`chatgpt`?n===void 0?`ChatGPT subscription`:`ChatGPT subscription (${n})`:t===`ai-gateway-project`?`AI Gateway via Project`:`AI Gateway via ${AI_GATEWAY_API_KEY_ENV_VAR}`}function modelListRows(e){return modelOptionsFromCatalog(e).map(e=>{let t={value:e.value,label:e.value};return e.featured===!0&&(t.featured=!0),t})}function formatModelDraftHint(e,t,n){let r={model:e};return t!==null&&(r.reasoning=t),n.kind===`priority`&&(r.fastGlyph=`↯`),formatModelSummary(r)}function modelMenuRows(e,t,n,r,i,a,o,s,c){let l;s||c?(l={value:`model`,label:`Change model`,description:s?`The model, its reasoning effort, and the Gateway service tier`:`Reasoning and service tier; the model itself is an SDK model call in agent.ts`},e!==null&&(l.hint=formatModelDraftHint(e,t,n))):l={value:`model`,label:`Change model`,disabled:!0,description:`Set via an SDK model call in agent.ts; edit the source to change it`};let d;return d=o?.kind===`external`&&!isChatGptModelRouting(o)?{disabled:!0,value:`provider`,label:`Change provider`,description:`Disabled in external endpoint mode`}:i?{value:`provider`,label:`Change provider`,hint:providerSelectionHint(r,a),description:`How your agent reaches the model provider`}:{value:`provider`,label:pc.bold(`Configure model access`),hint:pc.yellow(`Not configured`),description:`How your agent reaches the model provider`,accent:`warning`},[l,d,{value:`done`,label:`Done`}]}async function runModelFlow(e){let{appRoot:i,prompter:u,signal:f}=e,p={readCurrentModel:readCurrentAgentModel,applySettings:changeAgentModelSettings,resolveAvailableProviders,readProviderSelection,runProviderFlow,ensureChatGptAuth,writeProviderSelection,...e.deps},m=p.selectModel?.fetchModels??fetchGatewayCatalog,[h,g,_,v]=await withSpinner(u,`Checking the project…`,()=>Promise.all([p.readCurrentModel(i),p.resolveAvailableProviders(i,f===void 0?{env:process.env}:{signal:f,env:process.env}),p.readProviderSelection(i),m(f).catch(()=>void 0)]));f?.throwIfAborted();let{id:y,routing:b,serviceTier:x,editable:S,settingsEditable:C}=h,w=h.reasoning===`provider-default`?null:h.reasoning,T=_??(g.includes(`ai-gateway-key`)?`ai-gateway-key`:`ai-gateway-project`),E=g.includes(T),D,O={model:{kind:`keep`},reasoning:{kind:`keep`},gatewayServiceTier:{kind:`keep`}},k,A,j=!1,M=!1,N=b?.kind===`external`&&!isChatGptModelRouting(b),P=N?{tone:`warning`,text:"`agent.ts` specifies the model provider directly. Model, provider, and service-tier changes stay source-owned; reasoning remains configurable here."}:void 0,F=!E&&b?.kind!==`external`?`provider`:S||C?`model`:`provider`,I=b?.kind!==`external`&&(e.initialStep===`provider`||!E);for(;;){let t;if(I)I=!1,t=`provider`;else try{t=await u.select({message:``,options:modelMenuRows(y,w,isChatGptModelRouting(b)?{kind:`standard`}:x,T,E,e.chatGptAccountLabel,b,S,C),hintLayout:`stacked`,initialValue:F,notices:P===void 0?[]:[P]})}catch(e){if(!(e instanceof WizardCancelledError))throw e;if(hasModelSettingsChanges(O))return{kind:`cancelled`,discardedDraft:!0};break}if(t===`done`){M=!0;break}if(t===`model`){let e=p.pickModelSettings;if(e===void 0)throw Error(`runModelFlow requires a pickModelSettings dep to open the model screen.`);let t=await e({model:S?{kind:`pick`,options:modelListRows(v),current:y}:{kind:`fixed`,current:y,reason:`Set via an SDK model call in agent.ts; edit the source to change it`},reasoning:w,serviceTier:isChatGptModelRouting(b)?{kind:`standard`}:x,settingsEditable:C,externalRouting:N,capabilitiesFor:e=>gatewayModelCapabilities(v,e)});if(f?.throwIfAborted(),t===void 0){F=`model`;continue}t.model!==void 0&&(y=t.model,b=routingForModelSelection(t.model),O.model={kind:`set`,value:t.model}),t.reasoning!==void 0&&(w=t.reasoning==="default"?null:t.reasoning,O.reasoning=w===null?{kind:`remove`}:{kind:`set`,value:w}),t.serviceTier!==void 0&&!isChatGptModelRouting(b)&&(x=t.serviceTier===`priority`?{kind:`priority`}:{kind:`standard`},O.gatewayServiceTier=t.serviceTier===`priority`?{kind:`set`,value:`priority`}:{kind:`remove`}),F=`done`;continue}let r=await p.runProviderFlow({appRoot:i,prompter:u,signal:f,availableProviders:g,selectedProvider:T});if(r.kind===`cancelled`){if(f?.aborted)return{kind:`cancelled`};F=`provider`;continue}if(r.kind===`external-provider`){if(f?.aborted)return{kind:`cancelled`};F=`done`;continue}D=r.kind,D===`chatgpt`?(j=!0,isChatGptModelRouting(b)||(O.model={kind:`set`,value:DEFAULT_CHATGPT_MODEL_SELECTION},O.gatewayServiceTier={kind:`remove`})):isChatGptModelRouting(b)&&(O.model={kind:`set`,value:DEFAULT_AGENT_MODEL_ID}),M=!0;break}let L=O.model.kind===`set`&&parseChatGptModelSelection(O.model.value)!==void 0;if(M&&L&&(O.gatewayServiceTier={kind:`remove`},j=!0),M&&j&&await authenticateChatGpt(p,e.withExclusiveTerminal),M&&hasModelSettingsChanges(O)&&(k=await p.applySettings({appRoot:i,patch:O})),M&&D!==void 0&&k?.kind!==`rejected`&&(await p.writeProviderSelection(i,D),A=D),k!==void 0&&A===void 0&&f?.throwIfAborted(),k===void 0&&A===void 0&&!j)return{kind:`cancelled`};let R={kind:`done`,accessChanged:k?.kind===`changed`||A!==void 0||j};return k===void 0?j&&(R.modelMessage=`ChatGPT login ready.`):R.modelMessage=formatApplyModelSettingsOutcome(k),A!==void 0&&(R.providerSelection=A),R}function routingForModelSelection(e){return parseChatGptModelSelection(e)===void 0?{kind:`gateway`,target:e.split(`/`)[0]??``}:{kind:`external`,provider:`codex`}}async function authenticateChatGpt(e,t){let authenticate=()=>e.ensureChatGptAuth();await(t===void 0?authenticate():t(authenticate))}function hasModelSettingsChanges(e){return e.model.kind!==`keep`||e.reasoning.kind!==`keep`||e.gatewayServiceTier.kind!==`keep`}async function readCurrentAgentModel(e){try{let{compiledState:t}=await inspectApplication(e),n=t?.manifest.config,r=n?.model,i=isChatGptModelRouting(r?.routing);return{id:i&&r!==void 0?`chatgpt/${r.id}`:r?.id??null,routing:r?.routing??null,reasoning:n?.reasoning??null,serviceTier:readGatewayServiceTier(r?.providerOptions),editable:r!==void 0&&(r.source===void 0||i),settingsEditable:n?.source!==void 0}}catch{return{id:null,routing:null,reasoning:null,serviceTier:{kind:`standard`},editable:!1,settingsEditable:!1}}}async function modelChangeRefusalForUneditableModel(e){let{editable:t,routing:n}=await readCurrentAgentModel(e);return t?null:`Model is set via ${n?.kind===`external`?`the external provider \`${n.provider}\``:`an SDK model call`} in agent.ts, not a string literal; /model can't rewrite it. Edit \`model\` in agent.ts.`}export{MODEL_MENU_MESSAGE,modelChangeRefusalForUneditableModel,runModelFlow};
@@ -1 +1 @@
1
- import{createRegistrySession}from"./registry-session.js";import{runDeployFlow}from"#setup/flows/deploy.js";import{WizardCancelledError}from"#setup/step.js";import{detectDeployment}from"#setup/project-resolution.js";import{withSpinner}from"#setup/with-spinner.js";const ADDRESS_PREFIX=`address:`,BACK=`action:back`,DONE=`action:done`,ALL=`category:all`,REGISTRY_CATEGORIES=[{value:`category:channel`,prefix:`channel/`,label:`Channels`,hint:`Where people talk to your agent — Web, Slack, Discord, Teams`,browseLabel:`Browse channels`},{value:`category:connection`,prefix:`connection/`,label:`MCP connections`,hint:`Connect services like Linear, Notion, GitHub, and Vercel`,browseLabel:`Browse MCP connections`},{value:`category:extension`,prefix:`extension/`,label:`Extensions`,hint:`Add browser automation, memory, and developer tools`,browseLabel:`Browse extensions`},{value:`category:instrumentation`,prefix:`instrumentation/`,label:`Observability`,hint:`Trace, evaluate, and monitor your agent`,browseLabel:`Browse observability integrations`}];var RegistryFlowFailedError=class extends Error{completed;constructor(e,t){super(e instanceof Error?e.message:String(e),{cause:e}),this.name=`RegistryFlowFailedError`,this.completed=t}};function itemLabel(e){return e.title===void 0?(e.name.split(`/`).at(-1)??e.name).split(`-`).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `):e.title}function itemRows(e){return e.map((e,t)=>({value:`item:${t}`,label:itemLabel(e),hint:e.description??e.type}))}function categoryRows(){return[...REGISTRY_CATEGORIES.map(e=>({value:e.value,label:e.label,hint:e.hint})),{value:ALL,label:`Browse all`,hint:`Search every integration or enter an item address`},{value:DONE,label:`Return to chat`,trailingAction:!0}]}function categoryFor(e){return REGISTRY_CATEGORIES.find(t=>t.value===e)}function itemsForCategory(e,t){if(t===ALL)return e;let n=categoryFor(t);return n===void 0?e:e.filter(e=>e.address.startsWith(n.prefix)||e.name.startsWith(n.prefix))}function stringArray(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`):[]}function itemSource(e){if(e.startsWith(`@`))return e.split(`/`)[0]??e;if(/^https?:\/\//u.test(e))try{return new URL(e).host}catch{return e}return`Vercel`}function manifestRecord(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:{}}function summarizeDetails(e,t=3){let n=e.slice(0,t),r=e.length-n.length;return r>0?`${n.join(`, `)} … (+${r} more)`:n.join(`, `)}function itemDetails(e,t){let n=[{label:`Source`,value:e.source}],r=[...stringArray(t.dependencies),...stringArray(t.devDependencies),...stringArray(t.registryDependencies)];r.length>0&&n.push({label:`Packages`,value:summarizeDetails(r)});let i=t.envVars;if(typeof i==`object`&&i&&!Array.isArray(i)){let e=Object.keys(i);e.length>0&&n.push({label:`Environment`,value:summarizeDetails(e)})}let a=(Array.isArray(t.files)?t.files:[]).flatMap(e=>{if(typeof e!=`object`||!e||Array.isArray(e))return[];let t=e.target;return typeof t==`string`?[t]:[]});return a.length>0&&n.push({label:`Files`,value:summarizeDetails(a)}),n}async function inspectItem(e,t,n,r,a,o){let s=a??manifestRecord(await withSpinner(e,`Loading registry item…`,()=>t.getRegistryItemManifest(n,r.address)));for(;;){let i={message:typeof s.title==`string`?s.title:r.name,metadata:itemDetails(r,s),options:[{value:`add`,label:`Add to project`},{value:`back`,label:`Back`}]},a=typeof s.description==`string`?s.description:r.description;if(a!==void 0&&(i.description=a),await e.select(i)===`back`)return{kind:`back`};let c=e.log.spinner?.(`Installing ${itemLabel(r)} and dependencies…`);try{c?.stop();let install=()=>t.installRegistryItem(n,r.address,{silent:!0,prompter:e,signal:o});return{kind:`added`,...await(e.withExclusiveTerminal?.(install)??install())}}finally{c?.stop()}}}async function resolveAddressItem(e,t,n,r){let a=manifestRecord(await withSpinner(e,`Loading registry item…`,()=>t.getRegistryItemManifest(n,r))),o={address:r,name:typeof a.name==`string`?a.name:r,source:itemSource(r)};return typeof a.type==`string`&&(o.type=a.type),typeof a.description==`string`&&(o.description=a.description),{item:o,manifest:a}}async function offerItem(e,t,n,r,i){let a=await inspectItem(e.prompter,t,e.appRoot,r,i,e.signal);if(a.kind!==`added`)return;n.add(r.address,itemLabel(r),a.output,a.setup);let o=await n.continueAfterInstall({appRoot:e.appRoot,prompter:e.prompter,signal:e.signal});return o===`add-more`?void 0:o}async function runRegistryFlow(c){let l;(c.deps?.browseRegistryCatalog===void 0||c.deps.getRegistryItemManifest===void 0||c.deps.installRegistryItem===void 0)&&(l=await import(`#cli/commands/registry.js`));let u={browseRegistryCatalog:c.deps?.browseRegistryCatalog??l.browseRegistryCatalog,detectDeployment:c.deps?.detectDeployment??detectDeployment,getRegistryItemManifest:c.deps?.getRegistryItemManifest??l.getRegistryItemManifest,installRegistryItem:c.deps?.installRegistryItem??l.installRegistryItem,runDeployFlow:c.deps?.runDeployFlow??runDeployFlow},d=[],f=createRegistrySession(u),p=c.initialAddress?.trim(),m=p===``?void 0:p;try{for(;;){if(c.signal?.throwIfAborted(),m!==void 0){let e=m;m=void 0;let t=await resolveAddressItem(c.prompter,u,c.appRoot,e),n=await offerItem(c,u,f,t.item,t.manifest);if(n!==void 0)return n;continue}let e=await withSpinner(c.prompter,`Loading registry…`,()=>u.browseRegistryCatalog(c.appRoot));d=[...d,...e.errors.map(e=>({tone:`warning`,text:`${e.registry}: ${e.message}`}))];let t=await c.prompter.select({message:`Add an integration`,options:categoryRows(),hintLayout:`inline`,notices:d});if(d=[],t===DONE)return f.result();let n=itemsForCategory(e.items,t),r=itemRows(n);r.push({value:BACK,label:`Back`,trailingAction:!0});let l=await c.prompter.select({message:categoryFor(t)?.browseLabel??`Browse integrations`,options:r,search:!0,placeholder:`Search integrations or enter an item address`,searchAction:{label:e=>`Add “${e}”`,value:e=>`${ADDRESS_PREFIX}${e.trim()}`},hintLayout:`inline`});if(l===BACK)continue;let p=l.startsWith(ADDRESS_PREFIX)?await resolveAddressItem(c.prompter,u,c.appRoot,l.slice(8)):{item:n[Number(l.slice(5))]};if(p.item===void 0)throw Error(`The selected registry item is no longer available.`);let h=await offerItem(c,u,f,p.item,`manifest`in p?p.manifest:void 0);if(h!==void 0)return h}}catch(e){if(e instanceof WizardCancelledError)return{kind:`cancelled`};let t=f.result();throw t.addedItems.length>0?new RegistryFlowFailedError(e,t):e}}export{RegistryFlowFailedError,runRegistryFlow};
1
+ import{createRegistrySession}from"./registry-session.js";import{z}from"#compiled/zod/index.js";import{runDeployFlow}from"#setup/flows/deploy.js";import{WizardCancelledError}from"#setup/step.js";import{detectDeployment}from"#setup/project-resolution.js";import{withSpinner}from"#setup/with-spinner.js";const ADDRESS_PREFIX=`address:`,BACK=`action:back`,DONE=`action:done`,ALL=`category:all`,REGISTRY_CATEGORIES=[{value:`category:channel`,prefix:`channel/`,label:`Channels`,hint:`Where people talk to your agent — Web, Slack, Discord, Teams`,browseLabel:`Browse channels`},{value:`category:connection`,prefix:`connection/`,label:`MCP connections`,hint:`Connect services like Linear, Notion, GitHub, and Vercel`,browseLabel:`Browse MCP connections`},{value:`category:extension`,prefix:`extension/`,label:`Extensions`,hint:`Add browser automation, memory, and developer tools`,browseLabel:`Browse extensions`},{value:`category:instrumentation`,prefix:`instrumentation/`,label:`Observability`,hint:`Trace, evaluate, and monitor your agent`,browseLabel:`Browse observability integrations`}];var RegistryFlowFailedError=class extends Error{completed;constructor(e,t){super(e instanceof Error?e.message:String(e),{cause:e}),this.name=`RegistryFlowFailedError`,this.completed=t}};function itemLabel(e){return e.title===void 0?(e.name.split(`/`).at(-1)??e.name).split(`-`).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `):e.title}function itemRows(e){return e.map((e,t)=>({value:`item:${t}`,label:itemLabel(e),hint:e.description??e.type}))}function categoryRows(){return[...REGISTRY_CATEGORIES.map(e=>({value:e.value,label:e.label,hint:e.hint})),{value:ALL,label:`Browse all`,hint:`Search every integration or enter an item address`},{value:DONE,label:`Return to chat`,trailingAction:!0}]}function categoryFor(e){return REGISTRY_CATEGORIES.find(t=>t.value===e)}function itemsForCategory(e,t){if(t===ALL)return e;let n=categoryFor(t);return n===void 0?e:e.filter(e=>e.address.startsWith(n.prefix)||e.name.startsWith(n.prefix))}function stringArray(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`):[]}function itemSource(e){if(e.startsWith(`@`))return e.split(`/`)[0]??e;if(/^https?:\/\//u.test(e))try{return new URL(e).host}catch{return e}return`Vercel`}function manifestRecord(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:{}}const RegistryDocumentationSchema=z.object({meta:z.object({eve:z.object({docs:z.string().min(1).optional()}).optional()}).optional()});function documentationLink(e){let t=RegistryDocumentationSchema.safeParse(e).data?.meta?.eve?.docs;if(t!==void 0)return t.startsWith(`/`)?`https://eve.dev${t}`:t}function summarizeDetails(e,t=3){let n=e.slice(0,t),r=e.length-n.length;return r>0?`${n.join(`, `)} … (+${r} more)`:n.join(`, `)}function environmentVariables(e){let t=e.envVars;return typeof t==`object`&&t&&!Array.isArray(t)?Object.keys(t):[]}function itemDetails(e,t){let n=[{label:`Source`,value:e.source}],r=[...stringArray(t.dependencies),...stringArray(t.devDependencies),...stringArray(t.registryDependencies)];r.length>0&&n.push({label:`Packages`,value:summarizeDetails(r)});let i=environmentVariables(t);i.length>0&&n.push({label:`Environment`,value:summarizeDetails(i)});let a=(Array.isArray(t.files)?t.files:[]).flatMap(e=>{if(typeof e!=`object`||!e||Array.isArray(e))return[];let t=e.target;return typeof t==`string`?[t]:[]});return a.length>0&&n.push({label:`Files`,value:summarizeDetails(a)}),n}async function inspectItem(e,t,n,r,i,o){let s=i??manifestRecord(await withSpinner(e,`Loading registry item…`,()=>t.getRegistryItemManifest(n,r.address)));for(;;){let i={message:typeof s.title==`string`?s.title:r.name,metadata:itemDetails(r,s),options:[{value:`add`,label:`Add to project`},{value:`back`,label:`Back`}]},a=typeof s.description==`string`?s.description:r.description;if(a!==void 0&&(i.description=a),await e.select(i)===`back`)return{kind:`back`};let c=e.log.spinner?.(`Installing ${itemLabel(r)} and dependencies…`);try{c?.stop();let install=()=>t.installRegistryItem(n,r.address,{silent:!0,prompter:e,signal:o}),i=await(e.withExclusiveTerminal?.(install)??install());return{kind:`added`,documentation:documentationLink(s),environment:environmentVariables(s),...i}}finally{c?.stop()}}}async function resolveAddressItem(e,t,n,r){let i=manifestRecord(await withSpinner(e,`Loading registry item…`,()=>t.getRegistryItemManifest(n,r))),o={address:r,name:typeof i.name==`string`?i.name:r,source:itemSource(r)};return typeof i.type==`string`&&(o.type=i.type),typeof i.description==`string`&&(o.description=i.description),{item:o,manifest:i}}async function offerItem(e,t,n,r,i){let a=await inspectItem(e.prompter,t,e.appRoot,r,i,e.signal);if(a.kind!==`added`)return;let o=[...a.output];a.environment!==void 0&&a.environment.length>0&&o.push(`Environment: ${a.environment.join(`, `)}`),a.documentation!==void 0&&o.push(`Setup: ${a.documentation}`),n.add(r.address,itemLabel(r),o,a.setup);let s=await n.continueAfterInstall({appRoot:e.appRoot,prompter:e.prompter,signal:e.signal});return s===`add-more`?void 0:s}async function runRegistryFlow(t){let l;(t.deps?.browseRegistryCatalog===void 0||t.deps.getRegistryItemManifest===void 0||t.deps.installRegistryItem===void 0)&&(l=await import(`#cli/commands/registry.js`));let u={browseRegistryCatalog:t.deps?.browseRegistryCatalog??l.browseRegistryCatalog,detectDeployment:t.deps?.detectDeployment??detectDeployment,getRegistryItemManifest:t.deps?.getRegistryItemManifest??l.getRegistryItemManifest,installRegistryItem:t.deps?.installRegistryItem??l.installRegistryItem,runDeployFlow:t.deps?.runDeployFlow??runDeployFlow},d=[],f=createRegistrySession(u),p=t.initialAddress?.trim(),m=p===``?void 0:p;try{for(;;){if(t.signal?.throwIfAborted(),m!==void 0){let e=m;m=void 0;let n=await resolveAddressItem(t.prompter,u,t.appRoot,e),r=await offerItem(t,u,f,n.item,n.manifest);if(r!==void 0)return r;continue}let e=await withSpinner(t.prompter,`Loading registry…`,()=>u.browseRegistryCatalog(t.appRoot));d=[...d,...e.errors.map(e=>({tone:`warning`,text:`${e.registry}: ${e.message}`}))];let n=await t.prompter.select({message:`Add an integration`,options:categoryRows(),hintLayout:`inline`,notices:d});if(d=[],n===DONE)return f.result();let r=itemsForCategory(e.items,n),i=itemRows(r);i.push({value:BACK,label:`Back`,trailingAction:!0});let l=await t.prompter.select({message:categoryFor(n)?.browseLabel??`Browse integrations`,options:i,search:!0,placeholder:`Search integrations or enter an item address`,searchAction:{label:e=>`Add “${e}”`,value:e=>`${ADDRESS_PREFIX}${e.trim()}`},hintLayout:`inline`});if(l===BACK)continue;let p=l.startsWith(ADDRESS_PREFIX)?await resolveAddressItem(t.prompter,u,t.appRoot,l.slice(8)):{item:r[Number(l.slice(5))]};if(p.item===void 0)throw Error(`The selected registry item is no longer available.`);let h=await offerItem(t,u,f,p.item,`manifest`in p?p.manifest:void 0);if(h!==void 0)return h}}catch(e){if(e instanceof WizardCancelledError)return{kind:`cancelled`};let t=f.result();throw t.addedItems.length>0?new RegistryFlowFailedError(e,t):e}}export{RegistryFlowFailedError,runRegistryFlow};
@@ -1 +1 @@
1
- import{createSetupContexts}from"./shared/ui.js";import{setupIntegration}from"./registry.js";import{describeIntegrationSetupEnvironment,integrationSetupEnvironment}from"./shared/environment.js";import{resolveIntegrationVercelProject}from"./shared/vercel-project.js";import{detectDeployment,projectResolutionFromDeployment}from"#setup/project-resolution.js";import{interactiveAsker}from"#setup/ask.js";import{getVercelAuthStatus}from"#setup/vercel-project.js";const defaultDeps={detectDeployment,getVercelAuthStatus};async function runIntegrationSetup(t,n,r=defaultDeps){let i=setupIntegration(t);n.prompter.intro(`Set up ${i.label}`),n.prompter.log.message(`Checking Vercel setup...`);let[a,o]=await Promise.all([r.detectDeployment(n.appRoot,{signal:n.signal}),r.getVercelAuthStatus(n.appRoot,{signal:n.signal})]),s=integrationSetupEnvironment(o,projectResolutionFromDeployment(a));return n.prompter.log.info(describeIntegrationSetupEnvironment(s)),i.run(createSetupContexts({appRoot:n.appRoot,asker:n.asker??interactiveAsker(n.prompter),environment:s,prompter:n.prompter,resolveVercelProject:n.resolveVercelProject??(e=>resolveIntegrationVercelProject({appRoot:n.appRoot,integration:e,signal:n.signal})),signal:n.signal,force:n.force,beginExternalAction:n.beginExternalAction}))}export{runIntegrationSetup};
1
+ import{createSetupContexts}from"./shared/ui.js";import{setupIntegration}from"./registry.js";import{describeIntegrationSetupEnvironment,integrationSetupEnvironment}from"./shared/environment.js";import{resolveIntegrationVercelProject}from"./shared/vercel-project.js";import{detectDeployment,projectResolutionFromDeployment}from"#setup/project-resolution.js";import{interactiveAsker}from"#setup/ask.js";import{getVercelAuthStatus}from"#setup/vercel-project.js";const defaultDeps={detectDeployment,getVercelAuthStatus};async function runIntegrationSetup(t,n,r=defaultDeps){let i=setupIntegration(t);n.prompter.intro(`Set up ${i.label}`,i.hint),n.prompter.log.message(`Checking Vercel setup...`);let[a,o]=await Promise.all([r.detectDeployment(n.appRoot,{signal:n.signal}),r.getVercelAuthStatus(n.appRoot,{signal:n.signal})]),s=integrationSetupEnvironment(o,projectResolutionFromDeployment(a));return n.prompter.log.info(describeIntegrationSetupEnvironment(s)),i.run(createSetupContexts({appRoot:n.appRoot,asker:n.asker??interactiveAsker(n.prompter),environment:s,prompter:n.prompter,resolveVercelProject:n.resolveVercelProject??(e=>resolveIntegrationVercelProject({appRoot:n.appRoot,integration:e,signal:n.signal})),signal:n.signal,force:n.force,beginExternalAction:n.beginExternalAction}))}export{runIntegrationSetup};
@@ -1 +1 @@
1
- import{__toESM}from"../_virtual/_rolldown/runtime.js";import{require_picocolors}from"../node_modules/.pnpm/picocolors@1.1.1/node_modules/picocolors/picocolors.js";import{TextPrompt as ht,isCancel as q,settings as h}from"../node_modules/.pnpm/@clack_core@1.3.1/node_modules/@clack/core/dist/index.js";import{WizardCancelledError}from"./step.js";import{initialQuitGuardState,quitHintNote,reduceQuitGuard}from"./quit-guard.js";import{cornerFor,createRailLog,formatPromptCancellation,formatPromptHeader,formatPromptOpener,formatPromptOutro,formatPromptSubmission,formatRailLine,railFor,runSelectComponent}from"#setup/cli/index.js";var import_picocolors=__toESM(require_picocolors(),1);function guardCancel(e){if(q(e))throw process.stdout.write(formatPromptCancellation(`Setup cancelled.`,import_picocolors.default)),new WizardCancelledError;return e}let escapeCancelDisabled=!1;function disableEscapeCancel(){escapeCancelDisabled||=(h.aliases.delete(`escape`),!0)}function attachQuitGuard(e){let t=initialQuitGuardState;return e.on(`key`,(n,r)=>{let{state:i,action:a}=reduceQuitGuard(t,r?.name===`escape`?{type:`escape`}:{type:`other-key`});t=i,a===`quit`&&(e.state=`cancel`)}),{note:()=>quitHintNote(t,import_picocolors.default)}}function toPromptState(e){return e}function railForState(e){return railFor(toPromptState(e),import_picocolors.default)}function cornerForState(e){return cornerFor(toPromptState(e),import_picocolors.default)}function header(e,t,n){return formatPromptHeader(toPromptState(e),t,{colors:import_picocolors.default,leadingRail:n===0?`white`:`green`})}const REDACTED_DISPLAY=`••••••••`;function textPrompt(e,t){let r,i=new ht({validate:t.validate?e=>t.validate?.(e??``):void 0,placeholder:t.placeholder,defaultValue:t.defaultValue,initialValue:t.defaultValue,render(){let n=header(this.state,t.message,e),i=t.placeholder?import_picocolors.default.inverse(t.placeholder[0])+import_picocolors.default.dim(t.placeholder.slice(1)):import_picocolors.default.inverse(import_picocolors.default.hidden(`_`)),a=this.value?`•`.repeat(this.value.length):i,o=i;switch(t.mask?o=a:this.value&&(o=this.userInputWithCursor),this.state){case`error`:return`${n.trim()}\n${railForState(this.state)} ${o}\n${cornerForState(this.state)} ${import_picocolors.default.red(this.error)}\n`;case`submit`:{let n=this.value||t.placeholder||``;return t.mask&&(n=this.value?REDACTED_DISPLAY:t.placeholder??``),formatPromptSubmission(this.state,t.message,n,{colors:import_picocolors.default,leadingRail:e===0?`white`:`green`})}case`cancel`:return`${n}${railForState(this.state)} ${import_picocolors.default.strikethrough(import_picocolors.default.dim(t.mask&&this.value?REDACTED_DISPLAY:this.value??``))}${this.value?.trim()?`\n${railForState(this.state)}`:``}`;default:return`${n}${railForState(this.state)} ${o}\n${cornerForState(this.state)}${cornerNote(r?.note())}\n`}}});return r=attachQuitGuard(i),i.prompt()}function cornerNote(e){return e?` ${e}`:``}function createPrompter(){disableEscapeCancel();let e=0,t=createRailLog({colors:import_picocolors.default,output:process.stdout});function printNotices(e){for(let n of e??[])n.tone===`success`?t.success(n.text):n.tone===`warning`?t.warning(n.text):n.tone===`error`?t.error(n.text):t.message(n.text)}return{async text(n){t.settle(),printNotices(n.notices);let r=guardCancel(await textPrompt(e,n));return e+=1,r??``},async password(n){t.settle();let r=guardCancel(await textPrompt(e,{message:n.message,mask:!0,validate:n.validate}));return e+=1,r??``},async select(n){t.settle(),printNotices(n.notices),n.description!==void 0&&process.stdout.write(formatRailLine(import_picocolors.default.dim(n.description),import_picocolors.default,process.stdout));for(let{label:e,value:t}of n.metadata??[])process.stdout.write(formatRailLine(`${import_picocolors.default.dim(`${e}:`)} ${t}`,import_picocolors.default,process.stdout));let r=guardCancel(await runSelectComponent({message:n.message,options:n.options,multiple:n.multiple===!0,search:n.search??!1,searchAction:n.multiple===!0?void 0:n.searchAction,required:n.required??!1,placeholder:n.placeholder,defaultValue:n.multiple===!0?void 0:n.initialValue,initialValues:n.multiple===!0?n.initialValues:void 0,leadingRail:e===0?`white`:`green`,attachGuard:e=>attachQuitGuard(e)}));return e+=1,r},async acknowledge(e){t.settle(),process.stdout.write(formatRailLine(import_picocolors.default.bold(e.message),import_picocolors.default,process.stdout));for(let t of e.lines??[])process.stdout.write(formatRailLine(import_picocolors.default.dim(t),import_picocolors.default,process.stdout))},note(e,n,r){t.settle();let i=r?.tone===`success`?import_picocolors.default.green:import_picocolors.default.red;n&&process.stdout.write(formatRailLine(i(import_picocolors.default.bold(n)),import_picocolors.default,process.stdout)),process.stdout.write(formatRailLine(i(e),import_picocolors.default,process.stdout))},intro(e,n=`Production-grade agent framework.`){t.settle(),process.stdout.write(formatPromptOpener(e,n,import_picocolors.default))},outro(e){t.settle(),process.stdout.write(formatPromptOutro(e,import_picocolors.default))},log:t}}export{createPrompter};
1
+ import{TextPrompt as ht,isCancel as q,settings as h}from"../node_modules/.pnpm/@clack_core@1.3.1/node_modules/@clack/core/dist/index.js";import{WizardCancelledError}from"./step.js";import{initialQuitGuardState,quitHintNote,reduceQuitGuard}from"./quit-guard.js";import pc from"#compiled/picocolors/index.js";import{cornerFor,createRailLog,formatPromptCancellation,formatPromptHeader,formatPromptOpener,formatPromptOutro,formatPromptSubmission,formatRailLine,railFor,runSelectComponent}from"#setup/cli/index.js";function guardCancel(e){if(q(e))throw process.stdout.write(formatPromptCancellation(`Setup cancelled.`,pc)),new WizardCancelledError;return e}let escapeCancelDisabled=!1;function disableEscapeCancel(){escapeCancelDisabled||=(h.aliases.delete(`escape`),!0)}function attachQuitGuard(e){let t=initialQuitGuardState;return e.on(`key`,(n,r)=>{let{state:i,action:a}=reduceQuitGuard(t,r?.name===`escape`?{type:`escape`}:{type:`other-key`});t=i,a===`quit`&&(e.state=`cancel`)}),{note:()=>quitHintNote(t,pc)}}function toPromptState(e){return e}function railForState(e){return railFor(toPromptState(e),pc)}function cornerForState(e){return cornerFor(toPromptState(e),pc)}function header(e,t,n){return formatPromptHeader(toPromptState(e),t,{colors:pc,leadingRail:n===0?`white`:`green`})}const REDACTED_DISPLAY=`••••••••`;function textPrompt(t,n){let r,i=new ht({validate:n.validate?e=>n.validate?.(e??``):void 0,placeholder:n.placeholder,defaultValue:n.defaultValue,initialValue:n.defaultValue,render(){let e=header(this.state,n.message,t),i=n.placeholder?pc.inverse(n.placeholder[0])+pc.dim(n.placeholder.slice(1)):pc.inverse(pc.hidden(`_`)),a=this.value?`•`.repeat(this.value.length):i,o=i;switch(n.mask?o=a:this.value&&(o=this.userInputWithCursor),this.state){case`error`:return`${e.trim()}\n${railForState(this.state)} ${o}\n${cornerForState(this.state)} ${pc.red(this.error)}\n`;case`submit`:{let e=this.value||n.placeholder||``;return n.mask&&(e=this.value?REDACTED_DISPLAY:n.placeholder??``),formatPromptSubmission(this.state,n.message,e,{colors:pc,leadingRail:t===0?`white`:`green`})}case`cancel`:return`${e}${railForState(this.state)} ${pc.strikethrough(pc.dim(n.mask&&this.value?REDACTED_DISPLAY:this.value??``))}${this.value?.trim()?`\n${railForState(this.state)}`:``}`;default:return`${e}${railForState(this.state)} ${o}\n${cornerForState(this.state)}${cornerNote(r?.note())}\n`}}});return r=attachQuitGuard(i),i.prompt()}function cornerNote(e){return e?` ${e}`:``}function createPrompter(){disableEscapeCancel();let e=0,t=createRailLog({colors:pc,output:process.stdout});function printNotices(e){for(let n of e??[])n.tone===`success`?t.success(n.text):n.tone===`warning`?t.warning(n.text):n.tone===`error`?t.error(n.text):t.message(n.text)}return{async text(n){t.settle(),printNotices(n.notices);let r=guardCancel(await textPrompt(e,n));return e+=1,r??``},async password(n){t.settle();let r=guardCancel(await textPrompt(e,{message:n.message,mask:!0,validate:n.validate}));return e+=1,r??``},async select(n){t.settle(),printNotices(n.notices),n.description!==void 0&&process.stdout.write(formatRailLine(pc.dim(n.description),pc,process.stdout));for(let{label:e,value:t}of n.metadata??[])process.stdout.write(formatRailLine(`${pc.dim(`${e}:`)} ${t}`,pc,process.stdout));let r=guardCancel(await runSelectComponent({message:n.message,options:n.options,multiple:n.multiple===!0,search:n.search??!1,searchAction:n.multiple===!0?void 0:n.searchAction,required:n.required??!1,placeholder:n.placeholder,defaultValue:n.multiple===!0?void 0:n.initialValue,initialValues:n.multiple===!0?n.initialValues:void 0,leadingRail:e===0?`white`:`green`,attachGuard:e=>attachQuitGuard(e)}));return e+=1,r},async acknowledge(e){t.settle(),process.stdout.write(formatRailLine(pc.bold(e.message),pc,process.stdout));for(let t of e.lines??[])process.stdout.write(formatRailLine(pc.dim(t),pc,process.stdout))},note(e,n,r){t.settle();let i=r?.tone===`success`?pc.green:pc.red;n&&process.stdout.write(formatRailLine(i(pc.bold(n)),pc,process.stdout)),process.stdout.write(formatRailLine(i(e),pc,process.stdout))},intro(e,n=`Production-grade agent framework.`){t.settle(),process.stdout.write(formatPromptOpener(e,n,pc))},outro(e){t.settle(),process.stdout.write(formatPromptOutro(e,pc))},log:t}}export{createPrompter};
@@ -1 +1 @@
1
- import{pathExists,writeTextFile}from"../files.js";import{resolveVersionToken}from"../version-tokens.js";import{patchPackageJson}from"../update/package-json.js";import{applyPackageManagerWorkspaceConfiguration,isPackageManagerWorkspaceMember,patchWorkspaceRootPackageJson}from"../workspace-root.js";import{agentTemplateFiles,formatEveDependencySpecifier,resolveEvePackageContract}from"./project.js";import{readFile}from"node:fs/promises";import{join}from"node:path";const DEPENDENCY_FIELDS=[`dependencies`,`devDependencies`,`optionalDependencies`,`peerDependencies`];function isJsonObject(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function hasDeclaredDependency(e,t){if(!isJsonObject(e))return!1;for(let n of DEPENDENCY_FIELDS){let r=e[n];if(isJsonObject(r)&&typeof r[t]==`string`)return!0}return!1}async function addAgentToProject(i){let a=i.packageManager??`pnpm`,o=join(i.projectRoot,`package.json`);if(!await pathExists(o))throw Error(`Cannot add an eve agent to "${i.projectRoot}" because it has no package.json. Run \`eve init <name>\` to create a new project instead.`);let s;try{s=JSON.parse(await readFile(o,`utf8`))}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Cannot add an eve agent because "${o}" is not valid JSON. No files were changed. Fix the file, then retry eve init. ${t}`)}let c=agentTemplateFiles(i.model,i.reasoning),l=[];for(let t of Object.keys(c))await pathExists(join(i.projectRoot,t))&&l.push(t);if(l.length===0&&await pathExists(join(i.projectRoot,`agent`))&&l.push(`agent/`),l.length>0)throw Error(`Cannot add an eve agent to "${i.projectRoot}" because it already has: ${l.join(`, `)}.`);let u=resolveEvePackageContract(i.evePackage),d=resolveVersionToken(`aiPackageVersion`,i.aiPackageVersion??`^7.0.58`),f=resolveVersionToken(`connectPackageVersion`,i.connectPackageVersion??`0.4.3`),p=resolveVersionToken(`zodPackageVersion`,i.zodPackageVersion??`4.4.3`),m=[];for(let[e,n]of Object.entries(c)){let r=join(i.projectRoot,e);await writeTextFile(r,n),m.push(r)}let h={"@vercel/connect":f,ai:d,eve:formatEveDependencySpecifier(u.version),zod:p},g={};for(let[e,t]of Object.entries(h))hasDeclaredDependency(s,e)||(g[e]=t);let _={};Object.keys(g).length>0&&(_.dependencies=g),isPackageManagerWorkspaceMember(a,i.projectRoot)||(_.nodeEngineRequirement=u.nodeEngine);let v=await patchPackageJson(o,_),y=await patchWorkspaceRootPackageJson(a,i.projectRoot,{nodeEngineRequirement:u.nodeEngine}),b=y.nodeEngineOverride??v.nodeEngineOverride,x=await applyPackageManagerWorkspaceConfiguration({packageManager:a,projectRoot:i.projectRoot});return{filesWritten:m,dependenciesAdded:Object.keys(g).sort(),nodeEngineOverride:b,configurationFilesChanged:[...v.changed?[o]:[],...y.changed&&y.path!==void 0?[y.path]:[],...x.filesWritten]}}export{addAgentToProject};
1
+ import{pathExists,writeTextFile}from"../files.js";import{resolveVersionToken}from"../version-tokens.js";import{patchPackageJson}from"../update/package-json.js";import{applyPackageManagerWorkspaceConfiguration,isPackageManagerWorkspaceMember,patchWorkspaceRootPackageJson}from"../workspace-root.js";import{agentTemplateFiles,formatEveDependencySpecifier,resolveEvePackageContract}from"./project.js";import{readFile}from"node:fs/promises";import{join}from"node:path";const DEPENDENCY_FIELDS=[`dependencies`,`devDependencies`,`optionalDependencies`,`peerDependencies`];function isJsonObject(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function hasDeclaredDependency(e,t){if(!isJsonObject(e))return!1;for(let n of DEPENDENCY_FIELDS){let r=e[n];if(isJsonObject(r)&&typeof r[t]==`string`)return!0}return!1}async function addAgentToProject(i){let a=i.packageManager??`pnpm`,o=join(i.projectRoot,`package.json`);if(!await pathExists(o))throw Error(`Cannot add an eve agent to "${i.projectRoot}" because it has no package.json. Run \`eve init <name>\` to create a new project instead.`);let s;try{s=JSON.parse(await readFile(o,`utf8`))}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Cannot add an eve agent because "${o}" is not valid JSON. No files were changed. Fix the file, then retry eve init. ${t}`)}let c=agentTemplateFiles(i.model,i.reasoning),l=[];for(let t of Object.keys(c))await pathExists(join(i.projectRoot,t))&&l.push(t);if(l.length===0&&await pathExists(join(i.projectRoot,`agent`))&&l.push(`agent/`),l.length>0)throw Error(`Cannot add an eve agent to "${i.projectRoot}" because it already has: ${l.join(`, `)}.`);let u=resolveEvePackageContract(i.evePackage),d=resolveVersionToken(`aiPackageVersion`,i.aiPackageVersion??`^7.0.58`),f=resolveVersionToken(`connectPackageVersion`,i.connectPackageVersion??`1.0.0`),p=resolveVersionToken(`zodPackageVersion`,i.zodPackageVersion??`4.4.3`),m=[];for(let[e,n]of Object.entries(c)){let r=join(i.projectRoot,e);await writeTextFile(r,n),m.push(r)}let h={"@vercel/connect":f,ai:d,eve:formatEveDependencySpecifier(u.version),zod:p},g={};for(let[e,t]of Object.entries(h))hasDeclaredDependency(s,e)||(g[e]=t);let _={};Object.keys(g).length>0&&(_.dependencies=g),isPackageManagerWorkspaceMember(a,i.projectRoot)||(_.nodeEngineRequirement=u.nodeEngine);let v=await patchPackageJson(o,_),y=await patchWorkspaceRootPackageJson(a,i.projectRoot,{nodeEngineRequirement:u.nodeEngine}),b=y.nodeEngineOverride??v.nodeEngineOverride,x=await applyPackageManagerWorkspaceConfiguration({packageManager:a,projectRoot:i.projectRoot});return{filesWritten:m,dependenciesAdded:Object.keys(g).sort(),nodeEngineOverride:b,configurationFilesChanged:[...v.changed?[o]:[],...y.changed&&y.path!==void 0?[y.path]:[],...x.filesWritten]}}export{addAgentToProject};
@@ -1,4 +1,4 @@
1
- import{pinnedNodeEngineMajor}from"../../node-engine.js";import{parseChatGptModelSelection}from"../../../shared/chatgpt-model.js";import{SUPPORTED_AUTHORED_MODULE_FILE_EXTENSIONS}from"../update/module-files.js";import{pathExists,writeTextFile}from"../files.js";import{blockingCreateInPlaceEntries}from"../create-in-place.js";import{resolveVersionToken}from"../version-tokens.js";import{applyPackageManagerWorkspaceConfiguration,isPackageManagerWorkspaceMember,patchWorkspaceRootPackageJson}from"../workspace-root.js";import{WEB_APP_TEMPLATE_FILES}from"./web-template.js";import{mkdir,readdir,stat}from"node:fs/promises";import{basename,join,resolve}from"node:path";const CURRENT_DIRECTORY_PROJECT_NAME=`.`,DEFAULT_AI_PACKAGE_VERSION=`^7.0.58`,DEFAULT_CONNECT_PACKAGE_VERSION=`0.4.3`,DEFAULT_ZOD_PACKAGE_VERSION=`4.4.3`,DEFAULT_EVE_PACKAGE_CONTRACT={version:`0.44.4`,nodeEngine:`>=24`};function resolveEvePackageContract(e=DEFAULT_EVE_PACKAGE_CONTRACT){return{version:resolveVersionToken(`evePackage.version`,e.version),nodeEngine:resolveVersionToken(`evePackage.nodeEngine`,e.nodeEngine)}}function modelProviderSlug(e){let t=(e.split(`/`)[0]??``).replaceAll(/[^A-Za-z0-9._-]/gu,``);return t.length>0?t:`anthropic`}function byokProviderEnvVar(e){let t=modelProviderSlug(e).toUpperCase().replaceAll(/[^A-Z0-9]/gu,`_`);return`${/^[0-9]/.test(t)?`_`:``}${t}_API_KEY`}function agentTemplateFiles(e,t){return{"agent/agent.ts":renderAgentTemplate(e,t),"agent/channels/eve.ts":WEB_APP_TEMPLATE_FILES[`agent/channels/eve.ts`],"agent/instructions.md":AGENT_INSTRUCTIONS_TEMPLATE}}function renderAgentTemplate(e,n){let r=parseChatGptModelSelection(e);return r===void 0?BASE_AGENT_TEMPLATE.replaceAll(`__EVE_INIT_MODEL__`,e).replaceAll(`__EVE_INIT_REASONING__`,reasoningTemplateLine(n)):`import { defineAgent } from "eve";\nimport { chatgpt } from "eve/models/openai";\n\nexport default defineAgent({\n model: chatgpt(${JSON.stringify(r)}),\n${reasoningTemplateLine(n)}});\n`}function reasoningTemplateLine(e){return e===void 0||e===`provider-default`?``:` reasoning: "${e}",\n`}function renderTemplate(e,n){return e===BASE_AGENT_TEMPLATE&&parseChatGptModelSelection(n.model)!==void 0?renderAgentTemplate(n.model,n.reasoning):e.replaceAll(`__EVE_INIT_APP_NAME__`,n.appName).replaceAll(`__EVE_INIT_MODEL__`,n.model).replaceAll(`__EVE_INIT_REASONING__`,reasoningTemplateLine(n.reasoning)).replaceAll(`__EVE_INIT_BYOK_PROVIDER__`,modelProviderSlug(n.model)).replaceAll(`__EVE_INIT_BYOK_ENV_VAR__`,byokProviderEnvVar(n.model)).replaceAll(`__EVE_INIT_PACKAGE_VERSION__`,formatEveDependencySpecifier(n.eveVersion)).replaceAll(`__EVE_INIT_AI_SDK_VERSION__`,n.aiPackageVersion).replaceAll(`__EVE_INIT_CONNECT_VERSION__`,n.connectPackageVersion).replaceAll(`__EVE_INIT_ZOD_VERSION__`,n.zodPackageVersion).replaceAll(`__EVE_INIT_TYPESCRIPT_VERSION__`,n.typescriptPackageVersion).replaceAll(`__EVE_INIT_TYPES_NODE_VERSION__`,n.nodeTypesVersion).replaceAll(`__EVE_INIT_NODE_ENGINE__`,n.nodeEngine)}function formatEveDependencySpecifier(e){return/^\d+\.\d+\.\d+(?:[-+][0-9A-Za-z-.]+)?$/.test(e)?`^${e}`:e}const BASE_AGENT_TEMPLATE=`import { defineAgent } from "eve";
1
+ import{pinnedNodeEngineMajor}from"../../node-engine.js";import{parseChatGptModelSelection}from"../../../shared/chatgpt-model.js";import{SUPPORTED_AUTHORED_MODULE_FILE_EXTENSIONS}from"../update/module-files.js";import{pathExists,writeTextFile}from"../files.js";import{blockingCreateInPlaceEntries}from"../create-in-place.js";import{resolveVersionToken}from"../version-tokens.js";import{applyPackageManagerWorkspaceConfiguration,isPackageManagerWorkspaceMember,patchWorkspaceRootPackageJson}from"../workspace-root.js";import{WEB_APP_TEMPLATE_FILES}from"./web-template.js";import{mkdir,readdir,stat}from"node:fs/promises";import{basename,join,resolve}from"node:path";const CURRENT_DIRECTORY_PROJECT_NAME=`.`,DEFAULT_AI_PACKAGE_VERSION=`^7.0.58`,DEFAULT_CONNECT_PACKAGE_VERSION=`1.0.0`,DEFAULT_ZOD_PACKAGE_VERSION=`4.4.3`,DEFAULT_EVE_PACKAGE_CONTRACT={version:`0.45.0`,nodeEngine:`>=24`};function resolveEvePackageContract(e=DEFAULT_EVE_PACKAGE_CONTRACT){return{version:resolveVersionToken(`evePackage.version`,e.version),nodeEngine:resolveVersionToken(`evePackage.nodeEngine`,e.nodeEngine)}}function modelProviderSlug(e){let t=(e.split(`/`)[0]??``).replaceAll(/[^A-Za-z0-9._-]/gu,``);return t.length>0?t:`anthropic`}function byokProviderEnvVar(e){let t=modelProviderSlug(e).toUpperCase().replaceAll(/[^A-Z0-9]/gu,`_`);return`${/^[0-9]/.test(t)?`_`:``}${t}_API_KEY`}function agentTemplateFiles(e,t){return{"agent/agent.ts":renderAgentTemplate(e,t),"agent/channels/eve.ts":WEB_APP_TEMPLATE_FILES[`agent/channels/eve.ts`],"agent/instructions.md":AGENT_INSTRUCTIONS_TEMPLATE}}function renderAgentTemplate(e,n){let r=parseChatGptModelSelection(e);return r===void 0?BASE_AGENT_TEMPLATE.replaceAll(`__EVE_INIT_MODEL__`,e).replaceAll(`__EVE_INIT_REASONING__`,reasoningTemplateLine(n)):`import { defineAgent } from "eve";\nimport { chatgpt } from "eve/models/openai";\n\nexport default defineAgent({\n model: chatgpt(${JSON.stringify(r)}),\n${reasoningTemplateLine(n)}});\n`}function reasoningTemplateLine(e){return e===void 0||e===`provider-default`?``:` reasoning: "${e}",\n`}function renderTemplate(e,n){return e===BASE_AGENT_TEMPLATE&&parseChatGptModelSelection(n.model)!==void 0?renderAgentTemplate(n.model,n.reasoning):e.replaceAll(`__EVE_INIT_APP_NAME__`,n.appName).replaceAll(`__EVE_INIT_MODEL__`,n.model).replaceAll(`__EVE_INIT_REASONING__`,reasoningTemplateLine(n.reasoning)).replaceAll(`__EVE_INIT_BYOK_PROVIDER__`,modelProviderSlug(n.model)).replaceAll(`__EVE_INIT_BYOK_ENV_VAR__`,byokProviderEnvVar(n.model)).replaceAll(`__EVE_INIT_PACKAGE_VERSION__`,formatEveDependencySpecifier(n.eveVersion)).replaceAll(`__EVE_INIT_AI_SDK_VERSION__`,n.aiPackageVersion).replaceAll(`__EVE_INIT_CONNECT_VERSION__`,n.connectPackageVersion).replaceAll(`__EVE_INIT_ZOD_VERSION__`,n.zodPackageVersion).replaceAll(`__EVE_INIT_TYPESCRIPT_VERSION__`,n.typescriptPackageVersion).replaceAll(`__EVE_INIT_TYPES_NODE_VERSION__`,n.nodeTypesVersion).replaceAll(`__EVE_INIT_NODE_ENGINE__`,n.nodeEngine)}function formatEveDependencySpecifier(e){return/^\d+\.\d+\.\d+(?:[-+][0-9A-Za-z-.]+)?$/.test(e)?`^${e}`:e}const BASE_AGENT_TEMPLATE=`import { defineAgent } from "eve";
2
2
 
3
3
  export default defineAgent({
4
4
  model: "__EVE_INIT_MODEL__",
@@ -117,4 +117,4 @@ __EVE_INIT_REASONING__ modelOptions: {
117
117
  },
118
118
  },
119
119
  });
120
- `:BASE_AGENT_TEMPLATE,...SHARED_TEMPLATE_FILES,"package.json":packageJsonTemplate(e.includeRootOnlyPackageJsonFields)}}async function assertCanCreateInPlace(e,t){if(!await pathExists(e))return;let n=blockingCreateInPlaceEntries(await readdir(e));if(n.length>0&&!t){let e=n.slice(0,5).join(`, `),t=n.length>5?`, and ${n.length-5} more`:``;throw Error(`Cannot create project in current directory because it is not empty. Found: ${e}${t}. Use an empty directory.`)}}async function scaffoldBaseProject(t){let n=resolve(t.targetDirectory??process.cwd(),t.projectName),i=t.projectName===`.`,c=t.overwriteExisting??!1,l=t.byokProvider??!1,u=t.packageManager??`pnpm`,d=resolveEvePackageContract(t.evePackage),f=pinnedNodeEngineMajor(d.nodeEngine),p=resolve(t.workspaceProbeDirectory??n),m=isPackageManagerWorkspaceMember(u,p);if(i)await assertCanCreateInPlace(n,c);else if(await pathExists(n))throw Error(`Cannot create project because "${n}" already exists.`);let h={appName:basename(n),model:t.model,reasoning:t.reasoning,eveVersion:d.version,aiPackageVersion:resolveVersionToken(`aiPackageVersion`,t.aiPackageVersion??`^7.0.58`),connectPackageVersion:resolveVersionToken(`connectPackageVersion`,t.connectPackageVersion??`0.4.3`),zodPackageVersion:resolveVersionToken(`zodPackageVersion`,t.zodPackageVersion??`4.4.3`),typescriptPackageVersion:resolveVersionToken(`typescriptPackageVersion`,t.typescriptPackageVersion??`7.0.2`),nodeTypesVersion:f,nodeEngine:f};await mkdir(n,{recursive:!0});for(let[e,a]of Object.entries(templateFiles({byokProvider:l,includeRootOnlyPackageJsonFields:!m}))){let o=`${n}/${e}`,s=await pathExists(o);await writeTextFile(o,renderTemplate(a,h),{force:i&&c}),s&&await t.onOverwriteFile?.(o)}return await applyPackageManagerWorkspaceConfiguration({packageManager:u,projectRoot:n,workspaceProbeRoot:p,onWorkspaceRootMutation:t.onWorkspaceRootMutation}),await patchWorkspaceRootPackageJson(u,p,{nodeEngineRequirement:d.nodeEngine,onWorkspaceRootMutation:t.onWorkspaceRootMutation}),n}async function isEveProject(e){for(let t of SUPPORTED_AUTHORED_MODULE_FILE_EXTENSIONS)try{return await stat(join(e,`agent`,`agent${t}`)),!0}catch{}return!1}export{CURRENT_DIRECTORY_PROJECT_NAME,DEFAULT_AI_PACKAGE_VERSION,DEFAULT_CONNECT_PACKAGE_VERSION,DEFAULT_EVE_PACKAGE_CONTRACT,DEFAULT_ZOD_PACKAGE_VERSION,ROOT_ONLY_PACKAGE_JSON_TEMPLATE_SUFFIX,agentTemplateFiles,byokProviderEnvVar,formatEveDependencySpecifier,isEveProject,modelProviderSlug,resolveEvePackageContract,scaffoldBaseProject};
120
+ `:BASE_AGENT_TEMPLATE,...SHARED_TEMPLATE_FILES,"package.json":packageJsonTemplate(e.includeRootOnlyPackageJsonFields)}}async function assertCanCreateInPlace(e,t){if(!await pathExists(e))return;let n=blockingCreateInPlaceEntries(await readdir(e));if(n.length>0&&!t){let e=n.slice(0,5).join(`, `),t=n.length>5?`, and ${n.length-5} more`:``;throw Error(`Cannot create project in current directory because it is not empty. Found: ${e}${t}. Use an empty directory.`)}}async function scaffoldBaseProject(t){let n=resolve(t.targetDirectory??process.cwd(),t.projectName),i=t.projectName===`.`,c=t.overwriteExisting??!1,l=t.byokProvider??!1,u=t.packageManager??`pnpm`,d=resolveEvePackageContract(t.evePackage),f=pinnedNodeEngineMajor(d.nodeEngine),p=resolve(t.workspaceProbeDirectory??n),m=isPackageManagerWorkspaceMember(u,p);if(i)await assertCanCreateInPlace(n,c);else if(await pathExists(n))throw Error(`Cannot create project because "${n}" already exists.`);let h={appName:basename(n),model:t.model,reasoning:t.reasoning,eveVersion:d.version,aiPackageVersion:resolveVersionToken(`aiPackageVersion`,t.aiPackageVersion??`^7.0.58`),connectPackageVersion:resolveVersionToken(`connectPackageVersion`,t.connectPackageVersion??`1.0.0`),zodPackageVersion:resolveVersionToken(`zodPackageVersion`,t.zodPackageVersion??`4.4.3`),typescriptPackageVersion:resolveVersionToken(`typescriptPackageVersion`,t.typescriptPackageVersion??`7.0.2`),nodeTypesVersion:f,nodeEngine:f};await mkdir(n,{recursive:!0});for(let[e,a]of Object.entries(templateFiles({byokProvider:l,includeRootOnlyPackageJsonFields:!m}))){let o=`${n}/${e}`,s=await pathExists(o);await writeTextFile(o,renderTemplate(a,h),{force:i&&c}),s&&await t.onOverwriteFile?.(o)}return await applyPackageManagerWorkspaceConfiguration({packageManager:u,projectRoot:n,workspaceProbeRoot:p,onWorkspaceRootMutation:t.onWorkspaceRootMutation}),await patchWorkspaceRootPackageJson(u,p,{nodeEngineRequirement:d.nodeEngine,onWorkspaceRootMutation:t.onWorkspaceRootMutation}),n}async function isEveProject(e){for(let t of SUPPORTED_AUTHORED_MODULE_FILE_EXTENSIONS)try{return await stat(join(e,`agent`,`agent${t}`)),!0}catch{}return!1}export{CURRENT_DIRECTORY_PROJECT_NAME,DEFAULT_AI_PACKAGE_VERSION,DEFAULT_CONNECT_PACKAGE_VERSION,DEFAULT_EVE_PACKAGE_CONTRACT,DEFAULT_ZOD_PACKAGE_VERSION,ROOT_ONLY_PACKAGE_JSON_TEMPLATE_SUFFIX,agentTemplateFiles,byokProviderEnvVar,formatEveDependencySpecifier,isEveProject,modelProviderSlug,resolveEvePackageContract,scaffoldBaseProject};