eve 0.13.7 → 0.14.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 (183) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/src/channel/routes.d.ts +5 -0
  3. package/dist/src/channel/send.js +1 -1
  4. package/dist/src/channel/types.d.ts +5 -0
  5. package/dist/src/compiled/.vendor-stamp.json +12 -8
  6. package/dist/src/compiled/@ai-sdk/anthropic/index.d.ts +2 -2
  7. package/dist/src/compiled/@ai-sdk/anthropic/index.js +2 -2
  8. package/dist/src/compiled/@ai-sdk/google/index.d.ts +25 -3
  9. package/dist/src/compiled/@ai-sdk/google/index.js +6 -6
  10. package/dist/src/compiled/@ai-sdk/mcp/index.d.ts +647 -30
  11. package/dist/src/compiled/@ai-sdk/mcp/index.js +1 -1
  12. package/dist/src/compiled/@ai-sdk/openai/index.d.ts +8 -2
  13. package/dist/src/compiled/@ai-sdk/openai/index.js +2 -2
  14. package/dist/src/compiled/@ai-sdk/otel/index.d.ts +165 -28
  15. package/dist/src/compiled/@ai-sdk/otel/index.js +3 -3
  16. package/dist/src/compiled/@ai-sdk/provider/index.d.ts +10 -2
  17. package/dist/src/compiled/@ai-sdk/provider-utils/index.d.ts +2362 -0
  18. package/dist/src/compiled/@ai-sdk/provider-utils/index.js +1 -0
  19. package/dist/src/compiled/@workflow/serde/LICENSE.md +3 -0
  20. package/dist/src/compiled/@workflow/serde/index.d.ts +30 -0
  21. package/dist/src/compiled/@workflow/serde/index.js +1 -0
  22. package/dist/src/compiled/_chunks/workflow/{dist-C9PV_vnE.js → dist-D7CzPkf8.js} +1 -1
  23. package/dist/src/compiled/eventsource-parser/stream/LICENSE +21 -0
  24. package/dist/src/compiled/eventsource-parser/stream/index.d.ts +121 -0
  25. package/dist/src/compiled/eventsource-parser/stream/index.js +1 -0
  26. package/dist/src/compiled/experimental-ai-sdk-code-mode/approval-continuation.d.ts +7 -7
  27. package/dist/src/compiled/experimental-ai-sdk-code-mode/continuation-capability.d.ts +15 -4
  28. package/dist/src/compiled/experimental-ai-sdk-code-mode/index.d.ts +1 -1
  29. package/dist/src/compiled/experimental-ai-sdk-code-mode/index.js +15 -15
  30. package/dist/src/compiled/experimental-ai-sdk-code-mode/interrupt-continuation.d.ts +5 -5
  31. package/dist/src/compiled/experimental-ai-sdk-code-mode/runtime/protocol.d.ts +13 -2
  32. package/dist/src/compiled/experimental-ai-sdk-code-mode/types.d.ts +26 -0
  33. package/dist/src/compiled/json-schema/LICENSE +21 -0
  34. package/dist/src/compiled/json-schema/index.d.ts +749 -0
  35. package/dist/src/compiled/json-schema/index.js +1 -0
  36. package/dist/src/compiler/manifest.js +1 -1
  37. package/dist/src/compiler/normalize-agent-config.js +1 -1
  38. package/dist/src/context/build-dynamic-tools.js +1 -1
  39. package/dist/src/context/dynamic-tool-lifecycle.js +1 -1
  40. package/dist/src/context/keys.d.ts +1 -1
  41. package/dist/src/execution/create-session-step.d.ts +0 -17
  42. package/dist/src/execution/create-session-step.js +1 -1
  43. package/dist/src/execution/dispatch-runtime-actions-step.js +1 -1
  44. package/dist/src/execution/dispatch-workflow-runtime-actions-step.d.ts +12 -0
  45. package/dist/src/execution/dispatch-workflow-runtime-actions-step.js +1 -0
  46. package/dist/src/execution/eve-workflow-attributes.d.ts +1 -1
  47. package/dist/src/execution/next-driver-action.d.ts +1 -1
  48. package/dist/src/execution/node-step.js +1 -1
  49. package/dist/src/execution/sandbox/prewarm.js +1 -1
  50. package/dist/src/execution/session.js +3 -3
  51. package/dist/src/execution/turn-workflow.js +1 -1
  52. package/dist/src/execution/workflow-entry.js +1 -1
  53. package/dist/src/execution/workflow-runtime.d.ts +2 -3
  54. package/dist/src/execution/workflow-runtime.js +1 -1
  55. package/dist/src/execution/workflow-steps.d.ts +1 -1
  56. package/dist/src/execution/workflow-steps.js +1 -1
  57. package/dist/src/harness/action-result-helpers.d.ts +2 -2
  58. package/dist/src/harness/emission.js +1 -1
  59. package/dist/src/harness/execute-tool.d.ts +2 -2
  60. package/dist/src/harness/input-extraction.js +1 -1
  61. package/dist/src/harness/tool-loop.js +1 -1
  62. package/dist/src/harness/tools.d.ts +4 -6
  63. package/dist/src/harness/tools.js +1 -1
  64. package/dist/src/harness/types.d.ts +4 -10
  65. package/dist/src/harness/workflow-continuation-security.d.ts +4 -0
  66. package/dist/src/harness/workflow-continuation-security.js +1 -0
  67. package/dist/src/harness/workflow-interrupt-state.d.ts +14 -0
  68. package/dist/src/harness/workflow-interrupt-state.js +1 -0
  69. package/dist/src/harness/workflow-lifecycle.d.ts +13 -0
  70. package/dist/src/harness/workflow-lifecycle.js +1 -0
  71. package/dist/src/harness/workflow-runtime-action-state.d.ts +9 -0
  72. package/dist/src/harness/workflow-runtime-action-state.js +1 -0
  73. package/dist/src/harness/workflow-sandbox.d.ts +22 -0
  74. package/dist/src/harness/workflow-sandbox.js +2 -0
  75. package/dist/src/harness/workflow-tool-description.d.ts +2 -2
  76. package/dist/src/harness/workflow-tool-description.js +16 -4
  77. package/dist/src/internal/application/package.js +1 -1
  78. package/dist/src/internal/authored-definition/connection.js +1 -1
  79. package/dist/src/internal/authored-definition/core.js +1 -1
  80. package/dist/src/internal/authored-definition/schema-backed.js +1 -1
  81. package/dist/src/internal/nitro/host/create-application-nitro.js +1 -1
  82. package/dist/src/internal/nitro/host/workflow-sandbox-runtime-plugin.d.ts +1 -0
  83. package/dist/src/internal/nitro/host/workflow-sandbox-runtime-plugin.js +1 -0
  84. package/dist/src/internal/nitro/routes/agent-info/build-agent-info-response-from-manifest.js +1 -1
  85. package/dist/src/internal/nitro/routes/agent-info/build-agent-info-response.js +1 -1
  86. package/dist/src/internal/workflow/runtime.d.ts +1 -0
  87. package/dist/src/public/channels/slack/attachments.js +1 -1
  88. package/dist/src/public/channels/slack/auth.d.ts +2 -0
  89. package/dist/src/public/channels/slack/auth.js +1 -1
  90. package/dist/src/public/channels/slack/defaults.js +2 -2
  91. package/dist/src/public/channels/slack/inbound.d.ts +4 -11
  92. package/dist/src/public/channels/slack/inbound.js +1 -2
  93. package/dist/src/public/channels/slack/model-context.d.ts +28 -0
  94. package/dist/src/public/channels/slack/model-context.js +3 -0
  95. package/dist/src/public/channels/slack/slackChannel.d.ts +8 -0
  96. package/dist/src/public/channels/slack/slackChannel.js +1 -1
  97. package/dist/src/public/connections/index.d.ts +1 -1
  98. package/dist/src/public/definitions/agent.d.ts +1 -1
  99. package/dist/src/public/definitions/approval.d.ts +40 -0
  100. package/dist/src/public/definitions/approval.js +1 -0
  101. package/dist/src/public/definitions/connections/mcp.d.ts +11 -9
  102. package/dist/src/public/definitions/connections/mcp.js +1 -1
  103. package/dist/src/public/definitions/connections/openapi.d.ts +9 -7
  104. package/dist/src/public/definitions/connections/openapi.js +1 -1
  105. package/dist/src/public/definitions/tool.d.ts +7 -20
  106. package/dist/src/public/index.d.ts +1 -1
  107. package/dist/src/public/tools/approval/approval-helpers.d.ts +7 -7
  108. package/dist/src/public/tools/approval/approval-helpers.js +1 -1
  109. package/dist/src/public/tools/approval/index.d.ts +1 -1
  110. package/dist/src/public/tools/index.d.ts +2 -1
  111. package/dist/src/public/tools/internal.js +1 -1
  112. package/dist/src/runtime/agent/bootstrap.d.ts +1 -0
  113. package/dist/src/runtime/agent/bootstrap.js +1 -1
  114. package/dist/src/runtime/agent/mock-model-adapter.js +2 -3
  115. package/dist/src/runtime/attributes/emit.d.ts +2 -43
  116. package/dist/src/runtime/attributes/emit.js +1 -1
  117. package/dist/src/runtime/attributes/normalize.d.ts +17 -0
  118. package/dist/src/runtime/attributes/normalize.js +1 -0
  119. package/dist/src/runtime/connections/mcp-client.d.ts +3 -3
  120. package/dist/src/runtime/connections/mcp-client.js +1 -1
  121. package/dist/src/runtime/connections/registry.d.ts +2 -2
  122. package/dist/src/runtime/connections/resolve-authorization.d.ts +11 -0
  123. package/dist/src/runtime/connections/resolve-authorization.js +1 -0
  124. package/dist/src/runtime/connections/types.d.ts +27 -11
  125. package/dist/src/runtime/framework-tools/connection-search-dynamic.js +1 -1
  126. package/dist/src/runtime/resolve-agent-graph.js +1 -1
  127. package/dist/src/runtime/resolve-agent.js +1 -1
  128. package/dist/src/runtime/resolve-connection.js +1 -1
  129. package/dist/src/runtime/resolve-tool.d.ts +1 -1
  130. package/dist/src/runtime/resolve-tool.js +1 -1
  131. package/dist/src/runtime/sessions/compiled-agent-cache.js +1 -1
  132. package/dist/src/runtime/types.d.ts +8 -7
  133. package/dist/src/setup/primitives/pm/pnpm.js +6 -5
  134. package/dist/src/setup/scaffold/create/add-to-project.js +1 -1
  135. package/dist/src/setup/scaffold/create/project.js +2 -2
  136. package/dist/src/setup/scaffold/update/channels.js +1 -1
  137. package/dist/src/shared/agent-definition.d.ts +11 -13
  138. package/dist/src/shared/dynamic-tool-definition.d.ts +3 -3
  139. package/dist/src/shared/tool-definition.d.ts +1 -2
  140. package/dist/src/shared/workflow-sandbox.d.ts +37 -0
  141. package/dist/src/shared/workflow-sandbox.js +1 -0
  142. package/docs/agent-config.md +30 -10
  143. package/docs/channels/custom.mdx +2 -2
  144. package/docs/channels/slack.mdx +7 -13
  145. package/docs/connections/mcp.mdx +2 -2
  146. package/docs/connections/openapi.mdx +37 -2
  147. package/docs/connections/overview.mdx +32 -0
  148. package/docs/guides/deployment.md +2 -2
  149. package/docs/guides/dynamic-workflows.md +1 -7
  150. package/docs/guides/frontend/overview.mdx +1 -1
  151. package/docs/guides/frontend/use-eve-agent-svelte.mdx +1 -1
  152. package/docs/guides/frontend/use-eve-agent-vue.mdx +1 -1
  153. package/docs/guides/session-context.md +2 -1
  154. package/docs/reference/typescript-api.md +2 -2
  155. package/docs/subagents.mdx +2 -2
  156. package/docs/tools/human-in-the-loop.md +43 -6
  157. package/docs/tools/overview.mdx +3 -3
  158. package/docs/tutorial/first-agent.mdx +1 -1
  159. package/docs/tutorial/guard-the-spend.mdx +4 -3
  160. package/docs/tutorial/ship-it.mdx +1 -1
  161. package/package.json +14 -11
  162. package/dist/src/compiled/@ai-sdk/anthropic/_provider-utils.d.ts +0 -15
  163. package/dist/src/compiled/@ai-sdk/google/_provider-utils.d.ts +0 -11
  164. package/dist/src/compiled/@ai-sdk/openai/_provider-utils.d.ts +0 -15
  165. package/dist/src/compiled/@ai-sdk/provider/_json-schema.d.ts +0 -5
  166. package/dist/src/execution/dispatch-code-mode-runtime-actions-step.d.ts +0 -21
  167. package/dist/src/execution/dispatch-code-mode-runtime-actions-step.js +0 -1
  168. package/dist/src/harness/code-mode-interrupt-state.d.ts +0 -26
  169. package/dist/src/harness/code-mode-interrupt-state.js +0 -1
  170. package/dist/src/harness/code-mode-lifecycle.d.ts +0 -16
  171. package/dist/src/harness/code-mode-lifecycle.js +0 -1
  172. package/dist/src/harness/code-mode-runtime-action-state.d.ts +0 -6
  173. package/dist/src/harness/code-mode-runtime-action-state.js +0 -1
  174. package/dist/src/harness/code-mode.d.ts +0 -26
  175. package/dist/src/harness/code-mode.js +0 -1
  176. package/dist/src/harness/sandbox-surface.d.ts +0 -68
  177. package/dist/src/harness/sandbox-surface.js +0 -1
  178. package/dist/src/internal/nitro/host/code-mode-runtime-dependency-plugin.d.ts +0 -1
  179. package/dist/src/internal/nitro/host/code-mode-runtime-dependency-plugin.js +0 -1
  180. package/dist/src/runtime/framework-tools/code-mode-connection-auth.d.ts +0 -29
  181. package/dist/src/runtime/framework-tools/code-mode-connection-auth.js +0 -1
  182. package/dist/src/shared/code-mode.d.ts +0 -29
  183. package/dist/src/shared/code-mode.js +0 -1
@@ -5,7 +5,7 @@ description: "Part 8 of the Build an Agent tutorial. Gate expensive queries with
5
5
 
6
6
  A single warehouse query can scan terabytes and run up the bill. So before the analytics assistant fires off an expensive scan, make it stop and check with you. The agent pauses, asks you, and resumes with your answer. That's human-in-the-loop, and you wire it up with one field on the tool.
7
7
 
8
- `needsApproval` runs before `execute`. Return `true` and the turn parks on an approval request; you answer, and the run picks up from that exact step. The function gets the tool input, so you can make the decision cost-based.
8
+ `approval` runs before `execute`. Return `"user-approval"` and the turn parks on an approval request; you answer, and the run picks up from that exact step. The function gets the tool input, so you can make the decision cost-based.
9
9
 
10
10
  ## Estimate, then gate
11
11
 
@@ -32,7 +32,8 @@ export default defineTool({
32
32
  description: "Run a read-only SQL query against the analytics tables.",
33
33
  inputSchema: z.object({ sql: z.string() }),
34
34
  // Cost-based gate: only the expensive queries need a human yes.
35
- needsApproval: ({ toolInput }) => estimateScanGb(toolInput?.sql ?? "") > THRESHOLD_GB,
35
+ approval: ({ toolInput }) =>
36
+ estimateScanGb(toolInput?.sql ?? "") > THRESHOLD_GB ? "user-approval" : "not-applicable",
36
37
  async execute({ sql }) {
37
38
  const { columns, rows } = await runReadOnlySql(sql);
38
39
  return { columns, rows: rows.slice(0, 500), truncated: rows.length > 500 };
@@ -50,7 +51,7 @@ Ask for something that forces a large unfiltered scan:
50
51
  Total revenue across all customers, all time, broken out by day.
51
52
  ```
52
53
 
53
- The model proposes the query, `needsApproval` returns `true`, and the turn parks. The stream emits `input.requested`, then `session.waiting`. How the prompt looks depends on the channel, whether buttons in the TUI, Block Kit in Slack, or a UI control on the web. Approve it and the run resumes from exactly that step, then the query runs. Deny it and the tool is skipped, with the model told why.
54
+ The model proposes the query, `approval` returns `"user-approval"`, and the turn parks. The stream emits `input.requested`, then `session.waiting`. How the prompt looks depends on the channel, whether buttons in the TUI, Block Kit in Slack, or a UI control on the web. Approve it and the run resumes from exactly that step, then the query runs. Deny it and the tool is skipped, with the model told why.
54
55
 
55
56
  Each session has exactly one active continuation. Answer an approval against a stale handle and it's rejected, so there's no way to double-resume the same parked turn.
56
57
 
@@ -142,7 +142,7 @@ Across the nine steps you built and shipped one agent, and along the way you use
142
142
  - **The sandbox** to compute and chart beyond SQL in an isolated `/workspace`.
143
143
  - **State** (`defineState`) to remember the team's glossary across turns.
144
144
  - **Dynamic skills** (`defineDynamic`) to load the right team playbook per caller.
145
- - **Human-in-the-loop** approval (`needsApproval`) to gate expensive queries.
145
+ - **Human-in-the-loop** approval (`approval`) to gate expensive queries.
146
146
  - **Channel auth** to turn a request into an authenticated principal.
147
147
  - **Deployment** to Vercel, with the runtime behind your web app.
148
148
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eve",
3
- "version": "0.13.7",
3
+ "version": "0.14.0",
4
4
  "private": false,
5
5
  "description": "Filesystem-first framework for durable backend AI agents that run anywhere.",
6
6
  "keywords": [
@@ -267,12 +267,13 @@
267
267
  "nitro": "3.0.260610-beta"
268
268
  },
269
269
  "devDependencies": {
270
- "@ai-sdk/anthropic": "4.0.0-beta.67",
271
- "@ai-sdk/google": "4.0.0-beta.82",
272
- "@ai-sdk/mcp": "2.0.0-beta.66",
273
- "@ai-sdk/openai": "4.0.0-beta.74",
274
- "@ai-sdk/otel": "1.0.0-beta.124",
275
- "@ai-sdk/provider": "4.0.0-beta.19",
270
+ "@ai-sdk/anthropic": "^4.0.0",
271
+ "@ai-sdk/google": "^4.0.0",
272
+ "@ai-sdk/mcp": "^2.0.0",
273
+ "@ai-sdk/openai": "^4.0.0",
274
+ "@ai-sdk/otel": "^1.0.0",
275
+ "@ai-sdk/provider": "^4.0.0",
276
+ "@ai-sdk/provider-utils": "^5.0.0",
276
277
  "@chat-adapter/slack": "4.31.0",
277
278
  "@chat-adapter/state-memory": "4.31.0",
278
279
  "@clack/core": "1.3.1",
@@ -288,15 +289,17 @@
288
289
  "@vercel/sdk": "1.28.1",
289
290
  "@workflow/core": "5.0.0-beta.24",
290
291
  "@workflow/errors": "5.0.0-beta.8",
292
+ "@workflow/serde": "4.1.0",
291
293
  "@workflow/world": "5.0.0-beta.13",
292
294
  "@workflow/world-local": "5.0.0-beta.21",
293
- "ai": "7.0.0-beta.178",
295
+ "ai": "^7.0.0",
294
296
  "autoevals": "0.0.132",
295
297
  "chat": "4.31.0",
296
298
  "chokidar": "5.0.0",
297
299
  "commander": "14.0.3",
298
- "emulate": "^0.6.0",
299
- "experimental-ai-sdk-code-mode": "1.0.14",
300
+ "emulate": "0.6.0",
301
+ "eventsource-parser": "3.0.8",
302
+ "experimental-ai-sdk-code-mode": "1.0.16",
300
303
  "gray-matter": "4.0.3",
301
304
  "jose": "6.2.3",
302
305
  "jsonc-parser": "3.3.1",
@@ -319,7 +322,7 @@
319
322
  "peerDependencies": {
320
323
  "@opentelemetry/api": "^1.0.0",
321
324
  "@sveltejs/kit": "^2.0.0",
322
- "ai": "7.0.0-beta.178",
325
+ "ai": "^7.0.0",
323
326
  "braintrust": "^3.0.0",
324
327
  "just-bash": "^3.0.0",
325
328
  "microsandbox": "^0.5.0",
@@ -1,15 +0,0 @@
1
- // Auto-generated stub for `@ai-sdk/provider-utils` types referenced by a vendored .d.ts.
2
- // Emitted by createDeclarationCopier > buildOpaqueTypesStub.
3
- //
4
- // Names are aliased to `unknown` so consumers don't have to install
5
- // upstream @types just to typecheck against eve. If real types are
6
- // needed in user code, install the upstream @types and use them directly.
7
-
8
- export type Experimental_SandboxSession = unknown;
9
- export type FetchFunction = unknown;
10
- export type ProviderDefinedTool = unknown;
11
- export type ProviderDefinedToolFactory = unknown;
12
- export type ProviderExecutedTool = unknown;
13
- export type ProviderExecutedToolFactory = unknown;
14
- export type Tool = unknown;
15
- export type ToolExecuteFunction = unknown;
@@ -1,11 +0,0 @@
1
- // Auto-generated stub for `@ai-sdk/provider-utils` types referenced by a vendored .d.ts.
2
- // Emitted by createDeclarationCopier > buildOpaqueTypesStub.
3
- //
4
- // Names are aliased to `unknown` so consumers don't have to install
5
- // upstream @types just to typecheck against eve. If real types are
6
- // needed in user code, install the upstream @types and use them directly.
7
-
8
- export type FetchFunction = unknown;
9
- export type InferSchema = unknown;
10
- export type LazySchema = unknown;
11
- export type ProviderExecutedToolFactory = unknown;
@@ -1,15 +0,0 @@
1
- // Auto-generated stub for `@ai-sdk/provider-utils` types referenced by a vendored .d.ts.
2
- // Emitted by createDeclarationCopier > buildOpaqueTypesStub.
3
- //
4
- // Names are aliased to `unknown` so consumers don't have to install
5
- // upstream @types just to typecheck against eve. If real types are
6
- // needed in user code, install the upstream @types and use them directly.
7
-
8
- export type FetchFunction = unknown;
9
- export type InferSchema = unknown;
10
- export type LazySchema = unknown;
11
- export type ProviderDefinedTool = unknown;
12
- export type ProviderDefinedToolFactory = unknown;
13
- export type ProviderDefinedToolFactoryWithOutputSchema = unknown;
14
- export type ProviderExecutedTool = unknown;
15
- export type ProviderExecutedToolFactory = unknown;
@@ -1,5 +0,0 @@
1
- // Auto-generated stub for `json-schema` types referenced by a vendored .d.ts.
2
- // Emitted by scripts/vendor-compiled/@ai-sdk/provider.mjs.
3
-
4
- export type JSONSchema7 = Record<string, unknown>;
5
- export type JSONSchema7Definition = JSONSchema7 | boolean;
@@ -1,21 +0,0 @@
1
- /**
2
- * Dispatches runtime actions originating from code mode.
3
- *
4
- * Reads the pending code mode runtime action from session state,
5
- * builds a runtime action request from the interrupt payload, stores
6
- * it as a temporary PendingRuntimeActionBatch, and delegates to the
7
- * standard dispatch step. The batch is only needed for dispatch —
8
- * the harness never sees it because results flow through
9
- * continuePendingCodeModeRuntimeAction, not resolvePendingRuntimeActions.
10
- */
11
- import type { RuntimeSubagentResultActionResult } from "#runtime/actions/types.js";
12
- import { type DurableSessionState } from "#execution/durable-session-store.js";
13
- export declare function dispatchCodeModeRuntimeActionsStep(input: {
14
- readonly callbackBaseUrl?: string;
15
- readonly parentWritable: WritableStream<Uint8Array>;
16
- readonly serializedContext: Record<string, unknown>;
17
- readonly sessionState: DurableSessionState;
18
- }): Promise<{
19
- readonly results: readonly RuntimeSubagentResultActionResult[];
20
- readonly sessionState: DurableSessionState;
21
- }>;
@@ -1 +0,0 @@
1
- import{BundleKey}from"#runtime/sessions/runtime-context-keys.js";import{createDurableSessionState,readDurableSession}from"#execution/durable-session-store.js";import{hydrateDurableSession}from"#execution/session.js";import{deserializeContext}from"#context/serialize.js";import{buildRuntimeActionFromInterrupt}from"#harness/code-mode-runtime-action-state.js";import{getPendingCodeModeInterrupt}from"#harness/code-mode-interrupt-state.js";import{setPendingRuntimeActionBatch}from"#harness/runtime-actions.js";import{dispatchRuntimeActionsStep}from"#execution/dispatch-runtime-actions-step.js";async function dispatchCodeModeRuntimeActionsStep(e){"use step";let t=await readDurableSession(e.sessionState),n=getPendingCodeModeInterrupt(t.state);if(n===void 0)return{results:[],sessionState:e.sessionState};let r=buildRuntimeActionFromInterrupt(n.interrupt),i=(await deserializeContext(e.serializedContext)).require(BundleKey),a=hydrateDurableSession({compactionOverrides:{thresholdPercent:i.resolvedAgent.config.compaction?.thresholdPercent},durable:t,turnAgent:i.turnAgent}),o=createDurableSessionState({session:setPendingRuntimeActionBatch({actions:[r],event:{sequence:0,stepIndex:0,turnId:`code-mode-dispatch`},responseMessages:[],session:a})});return dispatchRuntimeActionsStep({callbackBaseUrl:e.callbackBaseUrl,parentWritable:e.parentWritable,serializedContext:e.serializedContext,sessionState:o})}export{dispatchCodeModeRuntimeActionsStep};
@@ -1,26 +0,0 @@
1
- import type { ModelMessage } from "ai";
2
- import type { HarnessSession, SessionStateMap } from "#harness/types.js";
3
- import type { CodeModeInterrupt } from "#shared/code-mode.js";
4
- /**
5
- * One code-mode invocation parked on a host interrupt (nested-tool approval,
6
- * connection auth, or any future durable interrupt kind), plus the assistant
7
- * response messages that produced the outer `code_mode` tool result.
8
- *
9
- * Every interrupt kind rides this single pending slot; the kind-specific
10
- * behavior lives in {@link parkOnCodeModeInterrupt} /
11
- * {@link continuePendingCodeModeInterrupt}, keyed by `interrupt.payload.kind`.
12
- */
13
- export interface PendingCodeModeInterrupt {
14
- readonly interrupt: CodeModeInterrupt;
15
- readonly responseMessages: readonly ModelMessage[];
16
- }
17
- /** Returns the pending code-mode interrupt stored on the session, if any. */
18
- export declare function getPendingCodeModeInterrupt(state: SessionStateMap | undefined): PendingCodeModeInterrupt | undefined;
19
- /** Stores one pending code-mode interrupt on the session. */
20
- export declare function setPendingCodeModeInterrupt(input: {
21
- readonly interrupt: CodeModeInterrupt;
22
- readonly responseMessages: readonly ModelMessage[];
23
- readonly session: HarnessSession;
24
- }): HarnessSession;
25
- /** Clears any pending code-mode interrupt from the session. */
26
- export declare function clearPendingCodeModeInterrupt(session: HarnessSession): HarnessSession;
@@ -1 +0,0 @@
1
- const PENDING_KEY=`eve.harness.pendingCodeModeInterrupt`;function getPendingCodeModeInterrupt(t){let n=t?.[PENDING_KEY];if(isRecord(n)&&!(!isCodeModeInterruptShape(n.interrupt)||!Array.isArray(n.responseMessages)))return{interrupt:n.interrupt,responseMessages:n.responseMessages}}function setPendingCodeModeInterrupt(t){return{...t.session,state:{...t.session.state,[PENDING_KEY]:{interrupt:t.interrupt,responseMessages:t.responseMessages}}}}function clearPendingCodeModeInterrupt(t){if(t.state?.[PENDING_KEY]===void 0)return t;let n={...t.state};return delete n[PENDING_KEY],{...t,state:Object.keys(n).length>0?n:void 0}}function isCodeModeInterruptShape(e){return isRecord(e)&&e.type===`code-mode-interrupt`&&typeof e.interruptId==`string`&&typeof e.outerToolCallId==`string`&&isRecord(e.payload)&&typeof e.payload.kind==`string`&&isRecord(e.continuation)&&typeof e.continuation.outerToolCallId==`string`}function isRecord(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}export{clearPendingCodeModeInterrupt,getPendingCodeModeInterrupt,setPendingCodeModeInterrupt};
@@ -1,16 +0,0 @@
1
- import { type HandleMessageStreamEvent } from "#protocol/message.js";
2
- import type { HarnessEmissionState } from "#harness/emission.js";
3
- import type { HarnessToolMap } from "#harness/types.js";
4
- import type { CodeModeOptions } from "#shared/code-mode.js";
5
- type EmitCodeModeLifecycleEvent = (event: HandleMessageStreamEvent) => Promise<void>;
6
- /**
7
- * Builds code-mode lifecycle hooks that project nested host tool calls onto
8
- * eve's existing action event stream.
9
- */
10
- export declare function createCodeModeLifecycle(input: {
11
- readonly emit: EmitCodeModeLifecycleEvent;
12
- readonly emissionState: HarnessEmissionState;
13
- readonly skipReplayed?: boolean;
14
- readonly tools: HarnessToolMap;
15
- }): NonNullable<CodeModeOptions["lifecycle"]>;
16
- export {};
@@ -1 +0,0 @@
1
- import{createLogger}from"#internal/logging.js";import{toErrorMessage}from"#shared/errors.js";import{createActionResultEvent,createActionsRequestedEvent}from"#protocol/message.js";import{createRuntimeActionRequestFromToolCall}from"#harness/runtime-actions.js";import{createRuntimeToolResultFromValue}from"#harness/action-result-helpers.js";const log=createLogger(`harness.code-mode-lifecycle`);function createCodeModeLifecycle(e){return{onHookError(e,t){log.warn(`code-mode lifecycle hook failed`,{error:e,hook:t.hook})},async onNestedToolCall(t){if(e.skipReplayed===!0&&t.replayed)return;let n={input:t.input,toolCallId:t.toolCallId,toolName:t.toolName,type:`tool-call`};await e.emit(createActionsRequestedEvent({actions:[createRuntimeActionRequestFromToolCall({toolCall:n,tools:e.tools})],sequence:e.emissionState.sequence,stepIndex:e.emissionState.stepIndex,turnId:e.emissionState.turnId}))},async onNestedToolResult(r){if(e.skipReplayed===!0&&r.replayed||r.status===`interrupted`)return;let i=createRuntimeToolResultFromValue({callId:r.toolCallId,output:r.status===`rejected`?toErrorMessage(r.error):r.output,toolName:r.toolName,isError:r.status===`rejected`});await e.emit(createActionResultEvent({result:i,sequence:e.emissionState.sequence,stepIndex:e.emissionState.stepIndex,turnId:e.emissionState.turnId}))}}}export{createCodeModeLifecycle};
@@ -1,6 +0,0 @@
1
- import type { RuntimeActionRequest } from "#runtime/actions/types.js";
2
- import type { CodeModeInterrupt } from "#shared/code-mode.js";
3
- export declare const CODE_MODE_RUNTIME_ACTION_INTERRUPT_KIND = "eve.runtime-action";
4
- export declare function isCodeModeRuntimeActionInterrupt(interrupt: unknown): boolean;
5
- export declare function buildRuntimeActionFromInterrupt(interrupt: CodeModeInterrupt): RuntimeActionRequest;
6
- export declare function getRuntimeActionKeyFromInterrupt(interrupt: CodeModeInterrupt): string;
@@ -1 +0,0 @@
1
- import{getRuntimeActionRequestKey}from"#runtime/actions/keys.js";const CODE_MODE_RUNTIME_ACTION_INTERRUPT_KIND=`eve.runtime-action`;function isCodeModeRuntimeActionInterrupt(e){return isRecord(e)&&isRecord(e.payload)&&e.payload.kind===`eve.runtime-action`}function buildRuntimeActionFromInterrupt(e){let t=e.payload,n=t.runtimeAction,r=t.toolInput,i=t.toolName,a=sanitizeCallId(`${i}_${`interruptId`in e?String(e.interruptId):``}`);return n.kind===`remote-agent-call`?{callId:a,description:``,input:r,kind:`remote-agent-call`,name:i,nodeId:n.nodeId,remoteAgentName:n.remoteAgentName??i}:{callId:a,description:``,input:r,kind:`subagent-call`,name:i,nodeId:n.nodeId,subagentName:n.subagentName}}function getRuntimeActionKeyFromInterrupt(t){return getRuntimeActionRequestKey(buildRuntimeActionFromInterrupt(t))}function sanitizeCallId(e){return e.replace(/[^a-zA-Z0-9_-]/g,`_`)}function isRecord(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}export{CODE_MODE_RUNTIME_ACTION_INTERRUPT_KIND,buildRuntimeActionFromInterrupt,getRuntimeActionKeyFromInterrupt,isCodeModeRuntimeActionInterrupt};
@@ -1,26 +0,0 @@
1
- import { type ToolSet } from "ai";
2
- import type { SessionCapabilities } from "#channel/types.js";
3
- import type { HarnessToolMap } from "#harness/types.js";
4
- import { type CodeModeOptions } from "#shared/code-mode.js";
5
- import { type SandboxSurface } from "#harness/sandbox-surface.js";
6
- interface SandboxPartitionInput {
7
- readonly lifecycle?: CodeModeOptions["lifecycle"];
8
- readonly tools: ToolSet;
9
- readonly harnessTools: HarnessToolMap;
10
- /** Sandbox surfaces to emit, in claim-priority order (first claim wins). */
11
- readonly surfaces: readonly SandboxSurface[];
12
- }
13
- interface SandboxPartition {
14
- readonly hostTools: ToolSet;
15
- readonly modelTools: ToolSet;
16
- }
17
- export declare function createEveCodeModeOptions(input?: {
18
- readonly lifecycle?: CodeModeOptions["lifecycle"];
19
- }): CodeModeOptions;
20
- export declare function applySandboxToolSet(input: SandboxPartitionInput): Promise<SandboxPartition>;
21
- export declare function buildSandboxHostTools(input: {
22
- readonly approvedTools?: ReadonlySet<string>;
23
- readonly capabilities?: SessionCapabilities;
24
- readonly tools: HarnessToolMap;
25
- }): Promise<ToolSet>;
26
- export {};
@@ -1 +0,0 @@
1
- import{contextStorage}from"#context/container.js";import"ai";import{LOAD_SKILL_TOOL_NAME}from"#runtime/skills/fragment-context.js";import{CODE_MODE_RUNTIME_ACTION_INTERRUPT_KIND}from"#harness/code-mode-runtime-action-state.js";import{loadCodeModeModule}from"#shared/code-mode.js";import{isAuthorizationSignal}from"#harness/authorization.js";import{buildDynamicTools}from"#context/build-dynamic-tools.js";import{CODE_MODE_CONNECTION_AUTH_INTERRUPT_KIND,markCodeModeToolExecutionOptions,toCodeModeConnectionAuthArgs}from"#runtime/framework-tools/code-mode-connection-auth.js";import{ALL_SANDBOX_SURFACES}from"#harness/sandbox-surface.js";import{buildToolSet,buildToolSetFromDefinitions}from"#harness/tools.js";const NEVER_SANDBOXED_TOOL_NAMES=new Set([LOAD_SKILL_TOOL_NAME]);function createEveCodeModeOptions(e={}){let t={approval:{mode:`interrupt`}};return e.lifecycle!==void 0&&(t.lifecycle=e.lifecycle),t}async function applySandboxToolSet(e){let t={},n=new Map(e.surfaces.map(e=>[e,{}]));for(let[r,i]of Object.entries(e.tools)){if(NEVER_SANDBOXED_TOOL_NAMES.has(r)){t[r]=i;continue}let a=e.harnessTools.get(r),o=a?.runtimeAction!==void 0;o&&(t[r]=i);let s=e.surfaces.filter(e=>e.claims(a,i));if(s.length===0){o||(t[r]=i);continue}let c=o&&a!==void 0?createRuntimeActionHostTool(a):wrapHostToolForCodeMode(i);for(let e of s)n.get(e)[r]=c}let r={};for(let i of e.surfaces){let a=n.get(i);Object.keys(a).length!==0&&(Object.assign(r,a),t[i.toolName]=await createSandboxTool(i,a,e.lifecycle))}return{hostTools:r,modelTools:t}}async function createSandboxTool(e,t,n){let{createCodeModeTool:i}=await loadCodeModeModule(),a=i(t,createEveCodeModeOptions({lifecycle:n}));if(e.describe===void 0)return a;let o=typeof a.description==`string`?a.description:``;return{...a,description:e.describe({generated:o,toolNames:Object.keys(t)})}}async function buildSandboxHostTools(t){let n=buildToolSet({approvedTools:t.approvedTools,capabilities:t.capabilities,tools:t.tools}),r=contextStorage.getStore();if(r!==void 0){let e=buildDynamicTools(r),i=buildToolSetFromDefinitions({approvedTools:t.approvedTools,capabilities:t.capabilities,tools:e});for(let[e,t]of Object.entries(i))n[e]??=t}return(await applySandboxToolSet({harnessTools:t.tools,tools:n,surfaces:ALL_SANDBOX_SURFACES})).hostTools}function createRuntimeActionHostTool(e){return{description:e.description,inputSchema:e.inputSchema,execute:async(t,i)=>{let a=i?.codeModeInterrupt;if(a?.resolution!==void 0)return a.resolution;let{requestCodeModeInterrupt:o}=await loadCodeModeModule();return o({kind:CODE_MODE_RUNTIME_ACTION_INTERRUPT_KIND,runtimeAction:e.runtimeAction,toolInput:t,toolName:e.name})}}}function wrapHostToolForCodeMode(e){let t=e.execute;if(t===void 0)return e;let invoke=async(e,n)=>{let a=await resolveExecuteOutput(t(e,markCodeModeToolExecutionOptions(n)));if(isAuthorizationSignal(a)){let{requestCodeModeInterrupt:t}=await loadCodeModeModule(),n=a.challenges[0]?.name;n&&t({args:toCodeModeConnectionAuthArgs(e),challenges:a.challenges,connectionName:n,kind:CODE_MODE_CONNECTION_AUTH_INTERRUPT_KIND,toolName:``})}return a};return{...e,execute:(e,t)=>invoke(e,t)}}async function resolveExecuteOutput(e){if(isAsyncIterable(e)){let t;for await(let n of e)t=n;return t}return await e}function isAsyncIterable(e){return typeof e==`object`&&!!e&&Symbol.asyncIterator in e&&typeof e[Symbol.asyncIterator]==`function`}export{applySandboxToolSet,buildSandboxHostTools,createEveCodeModeOptions};
@@ -1,68 +0,0 @@
1
- import type { ToolSet } from "ai";
2
- import type { HarnessToolDefinition } from "#harness/execute-tool.js";
3
- /**
4
- * A model-facing code-execution sandbox over a *subset* of the agent's tools.
5
- *
6
- * `code_mode` and `Workflow` are two instances of this one concept: each is a
7
- * QuickJS sandbox the model drives by writing JavaScript, differing only in
8
- * which tools it exposes and how it presents itself. Modeling them as surfaces
9
- * (rather than parallel boolean branches) keeps the partition uniform and makes
10
- * a third sandbox a one-line addition.
11
- */
12
- export interface SandboxSurface {
13
- /** Reserved model-facing tool name (e.g. `"code_mode"`, `"Workflow"`). */
14
- readonly toolName: string;
15
- /**
16
- * Whether this surface wraps the given tool into its sandbox. A tool enters
17
- * *every* active surface that claims it, so an agent tool — claimed by both
18
- * surfaces — is callable from either sandbox when both are enabled.
19
- */
20
- readonly claims: (harnessTool: HarnessToolDefinition | undefined, tool: ToolSet[string]) => boolean;
21
- /**
22
- * Optional transform applied to the description auto-generated by
23
- * `createCodeModeTool`. Receives the generated text (which lists the callable
24
- * tool signatures) and the names of the tools in this sandbox, so the framing
25
- * can adapt to what is actually callable. Omit to use the generated
26
- * description as-is.
27
- */
28
- readonly describe?: (input: {
29
- readonly generated: string;
30
- readonly toolNames: readonly string[];
31
- }) => string;
32
- }
33
- /**
34
- * The `Workflow` sandbox: agents only. Its sole callable operations are the
35
- * agent's subagents and remote agents, for orchestrating them from
36
- * model-authored JavaScript.
37
- */
38
- export declare const WORKFLOW_SURFACE: SandboxSurface;
39
- /**
40
- * The `code_mode` sandbox: every sandboxable tool — subagent/remote-agent
41
- * (`runtimeAction`) tools and ordinary executable host tools (bash, fs, web,
42
- * skills). Provider-managed tools with no executor are never sandboxed. This is
43
- * unchanged by whether `Workflow` is also enabled.
44
- */
45
- export declare const CODE_MODE_SURFACE: SandboxSurface;
46
- /**
47
- * Active sandbox surfaces for a harness config. A tool enters every surface
48
- * that claims it, so the two compose without interfering: `code_mode` is the
49
- * full sandbox (agents + host tools) regardless of `Workflow`, and `Workflow`
50
- * is an additional agents-only sandbox. When both are enabled, agents are
51
- * callable from either; other host tools remain only in `code_mode`. Order is
52
- * the emission order and does not affect routing.
53
- */
54
- export declare function selectSandboxSurfaces(config: {
55
- readonly codeMode?: boolean;
56
- readonly workflow?: boolean;
57
- }): SandboxSurface[];
58
- /** Whether any sandbox surface is active — i.e. the model gets a sandbox tool. */
59
- export declare function isSandboxEnabled(config: {
60
- readonly codeMode?: boolean;
61
- readonly workflow?: boolean;
62
- }): boolean;
63
- /**
64
- * Every known surface. Used on replay to rebuild the full sandbox tool set
65
- * without knowing which surface a pending interrupt came from — a script only
66
- * references its own tools, so the superset is safe.
67
- */
68
- export declare const ALL_SANDBOX_SURFACES: readonly SandboxSurface[];
@@ -1 +0,0 @@
1
- import{CODE_MODE_TOOL_NAME,WORKFLOW_TOOL_NAME}from"#shared/code-mode.js";import{workflowToolDescription}from"#harness/workflow-tool-description.js";const WORKFLOW_SURFACE={toolName:WORKFLOW_TOOL_NAME,claims:e=>e?.runtimeAction!==void 0,describe:({generated:e,toolNames:t})=>{let n=workflowToolDescription(t);return e.length>0?`${n}\n\n${e}`:n}},CODE_MODE_SURFACE={toolName:CODE_MODE_TOOL_NAME,claims:(e,t)=>e?.runtimeAction!==void 0||t.execute!==void 0};function selectSandboxSurfaces(e){let t=[];return e.workflow===!0&&t.push(WORKFLOW_SURFACE),e.codeMode===!0&&t.push(CODE_MODE_SURFACE),t}function isSandboxEnabled(e){return e.codeMode===!0||e.workflow===!0}const ALL_SANDBOX_SURFACES=[WORKFLOW_SURFACE,CODE_MODE_SURFACE];export{ALL_SANDBOX_SURFACES,CODE_MODE_SURFACE,WORKFLOW_SURFACE,isSandboxEnabled,selectSandboxSurfaces};
@@ -1 +0,0 @@
1
- export default function installCodeModeRuntimeDependencyPlugin(): void;
@@ -1 +0,0 @@
1
- import{installCodeModeModule}from"#shared/code-mode.js";import*as codeMode from"#compiled/experimental-ai-sdk-code-mode/index.js";installCodeModeModule(codeMode);function installCodeModeRuntimeDependencyPlugin(){}export{installCodeModeRuntimeDependencyPlugin as default};
@@ -1,29 +0,0 @@
1
- import type { CodeModeInterrupt, CodeModeInterruptExecutionContext, CodeModeInterruptPayload } from "#shared/code-mode.js";
2
- import type { AuthorizationChallenge } from "#harness/authorization.js";
3
- import type { JsonValue } from "#public/types/json.js";
4
- export declare const CODE_MODE_CONNECTION_AUTH_INTERRUPT_KIND = "eve.connection-auth";
5
- export interface CodeModeConnectionAuthPayload extends CodeModeInterruptPayload {
6
- readonly kind: typeof CODE_MODE_CONNECTION_AUTH_INTERRUPT_KIND;
7
- readonly args: JsonValue;
8
- readonly challenges?: readonly AuthorizationChallenge[];
9
- readonly connectionName: string;
10
- readonly toolName: string;
11
- }
12
- export type CodeModeConnectionAuthResolution = {
13
- readonly status: "authorized";
14
- } | {
15
- readonly reason: string;
16
- readonly retryable: boolean;
17
- readonly status: "failed";
18
- };
19
- export type CodeModeConnectionAuthContext = CodeModeInterruptExecutionContext<CodeModeConnectionAuthPayload, CodeModeConnectionAuthResolution>;
20
- export declare function markCodeModeToolExecutionOptions(options: unknown): unknown;
21
- export declare function isCodeModeToolExecutionOptions(options: unknown): boolean;
22
- export declare function readCodeModeConnectionAuthContext(options: unknown): CodeModeConnectionAuthContext | undefined;
23
- export declare function isCodeModeConnectionAuthPayload(value: unknown): value is CodeModeConnectionAuthPayload;
24
- export declare function isCodeModeConnectionAuthInterrupt(value: unknown): value is CodeModeInterrupt<CodeModeConnectionAuthPayload>;
25
- export declare function toConnectionAuthResolutionFailure(input: {
26
- readonly reason: string;
27
- readonly retryable: boolean;
28
- }): CodeModeConnectionAuthResolution;
29
- export declare function toCodeModeConnectionAuthArgs(value: unknown): JsonValue;
@@ -1 +0,0 @@
1
- import{isObject}from"#shared/guards.js";const CODE_MODE_CONNECTION_AUTH_INTERRUPT_KIND=`eve.connection-auth`,CODE_MODE_TOOL_EXECUTION_FLAG=`__eveCodeMode`;function markCodeModeToolExecutionOptions(t){return isObject(t)?{...t,[CODE_MODE_TOOL_EXECUTION_FLAG]:!0}:{[CODE_MODE_TOOL_EXECUTION_FLAG]:!0}}function isCodeModeToolExecutionOptions(t){return isObject(t)&&t[CODE_MODE_TOOL_EXECUTION_FLAG]===!0}function readCodeModeConnectionAuthContext(t){if(!isObject(t))return;let n=t.codeModeInterrupt;if(isObject(n)&&isCodeModeConnectionAuthPayload(n.payload)&&isCodeModeConnectionAuthResolution(n.resolution)&&typeof n.interruptId==`string`)return{interruptId:n.interruptId,payload:n.payload,resolution:n.resolution}}function isCodeModeConnectionAuthPayload(t){return isObject(t)&&t.kind===`eve.connection-auth`&&typeof t.connectionName==`string`&&typeof t.toolName==`string`&&`args`in t}function isCodeModeConnectionAuthInterrupt(t){return!isObject(t)||t.type!==`code-mode-interrupt`?!1:isCodeModeConnectionAuthPayload(t.payload)}function toConnectionAuthResolutionFailure(e){return{reason:e.reason,retryable:e.retryable,status:`failed`}}function toCodeModeConnectionAuthArgs(e){if(e===void 0)return null;try{return JSON.parse(JSON.stringify(e))}catch{return null}}function isCodeModeConnectionAuthResolution(t){return!isObject(t)||typeof t.status!=`string`?!1:t.status===`authorized`?!0:t.status===`failed`&&typeof t.reason==`string`&&typeof t.retryable==`boolean`}export{CODE_MODE_CONNECTION_AUTH_INTERRUPT_KIND,isCodeModeConnectionAuthInterrupt,isCodeModeConnectionAuthPayload,isCodeModeToolExecutionOptions,markCodeModeToolExecutionOptions,readCodeModeConnectionAuthContext,toCodeModeConnectionAuthArgs,toConnectionAuthResolutionFailure};
@@ -1,29 +0,0 @@
1
- import type * as CodeModeModule from "#compiled/experimental-ai-sdk-code-mode/index.js";
2
- /** Internal AI SDK tool name used for eve's code-mode wrapper. */
3
- export declare const CODE_MODE_TOOL_NAME = "code_mode";
4
- /**
5
- * Model-facing tool name for eve's `Workflow` orchestration wrapper — a
6
- * code-mode sandbox restricted to subagent and remote-agent calls. Reserved so
7
- * authored tools cannot collide with it.
8
- */
9
- export declare const WORKFLOW_TOOL_NAME = "Workflow";
10
- type CodeModeModuleNamespace = typeof CodeModeModule;
11
- export type { CodeModeApprovalInterrupt, CodeModeInterrupt, CodeModeInterruptExecutionContext, CodeModeInterruptPayload, CodeModeOptions, } from "#compiled/experimental-ai-sdk-code-mode/index.js";
12
- /**
13
- * Reads the `EVE_EXPERIMENTAL_CODE_MODE` backstop. Per-agent
14
- * `experimental.codeMode` takes precedence; this env var is the
15
- * fallback applied to agents that do not set the flag.
16
- */
17
- export declare function isCodeModeEnvEnabled(env?: {
18
- readonly [name: string]: string | undefined;
19
- }): boolean;
20
- /**
21
- * Resolves the effective code-mode setting for one agent. The authored
22
- * `experimental.codeMode` flag wins; when omitted, eve falls back to the
23
- * {@link isCodeModeEnvEnabled} environment backstop.
24
- */
25
- export declare function resolveCodeModeEnabled(experimentalCodeMode: boolean | undefined, env?: {
26
- readonly [name: string]: string | undefined;
27
- }): boolean;
28
- export declare function installCodeModeModule(module: CodeModeModuleNamespace): void;
29
- export declare function loadCodeModeModule(): Promise<CodeModeModuleNamespace>;
@@ -1 +0,0 @@
1
- const CODE_MODE_TOOL_NAME=`code_mode`,WORKFLOW_TOOL_NAME=`Workflow`,CODE_MODE_MODULE_KEY=Symbol.for(`eve.codeMode.module`),CODE_MODE_MODULE_SPECIFIER=[`#compiled`,`experimental-ai-sdk-code-mode`,`index.js`].join(`/`);let codeModeModulePromise;function isCodeModeEnvEnabled(e=process.env){return e.EVE_EXPERIMENTAL_CODE_MODE===`1`}function resolveCodeModeEnabled(e,t=process.env){return e??isCodeModeEnvEnabled(t)}function installCodeModeModule(e){globalThis[CODE_MODE_MODULE_KEY]=e}async function loadCodeModeModule(){let e=globalThis[CODE_MODE_MODULE_KEY];return e===void 0?(codeModeModulePromise??=importCodeModeModule(CODE_MODE_MODULE_SPECIFIER),await codeModeModulePromise):e}async function importCodeModeModule(e){return await import(e)}export{CODE_MODE_TOOL_NAME,WORKFLOW_TOOL_NAME,installCodeModeModule,isCodeModeEnvEnabled,loadCodeModeModule,resolveCodeModeEnabled};