eve 0.75.1 → 0.76.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.
- package/CHANGELOG.md +42 -0
- package/dist/src/_virtual/_rolldown/runtime.js +1 -1
- package/dist/src/acp/adapter.js +1 -1
- package/dist/src/channel/task-card.js +1 -1
- package/dist/src/channel/tool-eligibility.d.ts +1 -2
- package/dist/src/chunks/{use-eve-agent-B2Kne9z6.js → use-eve-agent-D2V9UhLt.js} +68 -10
- package/dist/src/chunks/{use-eve-agent-DK_T88EP.js → use-eve-agent-QmriPA-w.js} +68 -10
- package/dist/src/cli/dev/environment.d.ts +0 -6
- package/dist/src/cli/dev/environment.js +1 -1
- package/dist/src/cli/dev/tui/conversation-view.js +1 -1
- package/dist/src/cli/dev/tui/runner.js +1 -1
- package/dist/src/cli/dev/tui/tool-presentation.js +1 -1
- package/dist/src/cli/dev/tui/transcript.js +1 -1
- package/dist/src/client/message-action-parts.d.ts +3 -0
- package/dist/src/client/message-action-parts.js +1 -1
- package/dist/src/client/message-reducer-types.d.ts +6 -1
- package/dist/src/client/message-reducer.js +1 -1
- package/dist/src/compiled/.vendor-stamp.json +3 -2
- package/dist/src/compiled/@eve/catalog/index.js +1 -1
- package/dist/src/compiled/@vercel/queue/index.d.ts +1066 -0
- package/dist/src/compiled/@vercel/queue/index.js +47 -0
- package/dist/src/compiler/connection-ownership.d.ts +6 -0
- package/dist/src/compiler/connection-ownership.js +1 -0
- package/dist/src/compiler/default-tool-policy.d.ts +0 -3
- package/dist/src/compiler/default-tool-policy.js +1 -1
- package/dist/src/compiler/extension-compatibility.d.ts +21 -20
- package/dist/src/compiler/extension-compatibility.js +1 -1
- package/dist/src/compiler/manifest.d.ts +9 -6
- package/dist/src/compiler/manifest.js +1 -1
- package/dist/src/compiler/normalize-connection.js +1 -1
- package/dist/src/compiler/normalize-manifest.js +1 -1
- package/dist/src/compiler/normalize-skill.d.ts +5 -0
- package/dist/src/compiler/normalize-skill.js +1 -1
- package/dist/src/compiler/normalize-subagent.d.ts +2 -1
- package/dist/src/compiler/normalize-subagent.js +1 -1
- package/dist/src/compiler/normalize-tool.js +1 -1
- package/dist/src/compiler/remote-agent-node.d.ts +2 -1
- package/dist/src/compiler/remote-agent-node.js +1 -1
- package/dist/src/connections/ownership.d.ts +18 -0
- package/dist/src/connections/ownership.js +1 -0
- package/dist/src/context/build-dynamic-tools.d.ts +3 -9
- package/dist/src/context/build-dynamic-tools.js +1 -1
- package/dist/src/context/dynamic-connection-lifecycle.js +1 -1
- package/dist/src/context/dynamic-skill-lifecycle.d.ts +2 -11
- package/dist/src/context/dynamic-skill-lifecycle.js +1 -1
- package/dist/src/context/dynamic-subagent-lifecycle.js +1 -1
- package/dist/src/context/dynamic-tool-lifecycle.js +1 -1
- package/dist/src/context/dynamic-tool-metadata.d.ts +1 -0
- package/dist/src/context/keys.d.ts +5 -4
- package/dist/src/context/memory-tools.js +1 -1
- package/dist/src/context/schedule-collection-tools.js +1 -1
- package/dist/src/discover/grammar.d.ts +11 -0
- package/dist/src/discover/grammar.js +1 -1
- package/dist/src/discover/manifest.d.ts +1 -0
- package/dist/src/discover/manifest.js +1 -1
- package/dist/src/discover/skills.d.ts +1 -0
- package/dist/src/discover/skills.js +1 -1
- package/dist/src/dynamic/definition.d.ts +7 -5
- package/dist/src/evals/assertions/collector.d.ts +4 -0
- package/dist/src/evals/assertions/collector.js +1 -1
- package/dist/src/evals/assertions/run.d.ts +2 -3
- package/dist/src/evals/assertions/run.js +2 -2
- package/dist/src/evals/assertions/scoped.js +1 -1
- package/dist/src/evals/index.d.ts +1 -1
- package/dist/src/evals/match.d.ts +9 -6
- package/dist/src/evals/reported-tool-name.d.ts +9 -0
- package/dist/src/evals/reported-tool-name.js +1 -0
- package/dist/src/evals/runner/derive-run-facts.d.ts +3 -3
- package/dist/src/evals/runner/derive-run-facts.js +1 -1
- package/dist/src/evals/runner/execute-task.js +1 -1
- package/dist/src/evals/runner/reporters/braintrust.js +1 -1
- package/dist/src/evals/runner/reporters/datadog-runtime-trace-links.d.ts +11 -0
- package/dist/src/evals/runner/reporters/datadog-runtime-trace-links.js +1 -0
- package/dist/src/evals/runner/reporters/datadog.js +2 -2
- package/dist/src/evals/session.js +2 -2
- package/dist/src/evals/target.d.ts +7 -0
- package/dist/src/evals/target.js +1 -1
- package/dist/src/evals/types.d.ts +17 -1
- package/dist/src/execution/agent-sessions/remote.js +1 -1
- package/dist/src/execution/catalog/connection-auth.d.ts +41 -0
- package/dist/src/execution/catalog/connection-auth.js +1 -0
- package/dist/src/execution/catalog/connection-entry.d.ts +16 -0
- package/dist/src/execution/catalog/connection-entry.js +1 -0
- package/dist/src/execution/catalog/listing.d.ts +9 -0
- package/dist/src/execution/catalog/listing.js +3 -0
- package/dist/src/execution/catalog/rank.d.ts +44 -0
- package/dist/src/execution/catalog/rank.js +1 -0
- package/dist/src/execution/catalog/search.d.ts +28 -0
- package/dist/src/execution/catalog/search.js +1 -0
- package/dist/src/execution/catalog/signatures.d.ts +11 -0
- package/dist/src/execution/catalog/signatures.js +1 -0
- package/dist/src/execution/catalog/skills.d.ts +24 -0
- package/dist/src/execution/catalog/skills.js +1 -0
- package/dist/src/execution/catalog/step-catalog.d.ts +51 -0
- package/dist/src/execution/catalog/step-catalog.js +1 -0
- package/dist/src/execution/coordination-dispatch-shared.js +1 -1
- package/dist/src/execution/dynamic-connections.js +1 -1
- package/dist/src/execution/dynamic-workflow/tool.js +1 -1
- package/dist/src/execution/invoke-tool.js +1 -1
- package/dist/src/execution/node-step.js +1 -1
- package/dist/src/execution/session/active-turn.d.ts +1 -1
- package/dist/src/execution/session/pending-turn-state.js +1 -1
- package/dist/src/execution/session/turn-step.js +1 -1
- package/dist/src/execution/session/turn.d.ts +5 -5
- package/dist/src/execution/session/turn.js +1 -1
- package/dist/src/execution/session.js +1 -1
- package/dist/src/execution/skills/instructions.d.ts +20 -10
- package/dist/src/execution/skills/instructions.js +2 -2
- package/dist/src/execution/tasks/calls.d.ts +6 -5
- package/dist/src/execution/tasks/calls.js +1 -1
- package/dist/src/execution/tasks/model-step.d.ts +10 -10
- package/dist/src/execution/tasks/model-step.js +1 -1
- package/dist/src/execution/tasks/render.d.ts +3 -3
- package/dist/src/execution/tasks/render.js +3 -3
- package/dist/src/execution/tasks/session.d.ts +2 -1
- package/dist/src/execution/tasks/table.d.ts +1 -1
- package/dist/src/execution/tasks/tool-entry-point.d.ts +1 -1
- package/dist/src/execution/tool-auth.js +1 -1
- package/dist/src/execution/tools/agent-router-workflow.js +1 -1
- package/dist/src/execution/tools/workflow/harness-definition.js +1 -1
- package/dist/src/extensions/code/extension/extension.d.ts +4 -18
- package/dist/src/extensions/code/extension/instructions/github.d.ts +3 -0
- package/dist/src/extensions/code/extension/instructions/github.js +1 -0
- package/dist/src/extensions/code/extension/instructions.md +1 -13
- package/dist/src/extensions/code/extension/lib/diagnostics.d.ts +4 -2
- package/dist/src/extensions/code/extension/lib/diagnostics.js +3 -3
- package/dist/src/extensions/code/extension/lib/github-compat.d.ts +28 -0
- package/dist/src/extensions/code/extension/lib/github-compat.js +1 -0
- package/dist/src/extensions/code/extension/lib/grep-search.d.ts +3 -13
- package/dist/src/extensions/code/extension/lib/grep-search.js +2 -2
- package/dist/src/extensions/code/extension/lib/patch.d.ts +8 -2
- package/dist/src/extensions/code/extension/lib/patch.js +4 -4
- package/dist/src/extensions/code/extension/lib/repository-root.d.ts +3 -4
- package/dist/src/extensions/code/extension/lib/repository-root.js +1 -1
- package/dist/src/extensions/code/extension/lib/sandbox.d.ts +2 -1
- package/dist/src/extensions/code/extension/lib/sandbox.js +1 -1
- package/dist/src/extensions/code/extension/lib/tooling.d.ts +4 -4
- package/dist/src/extensions/code/extension/lib/tooling.js +7 -7
- package/dist/src/extensions/code/extension/lib/workspace-root.d.ts +31 -0
- package/dist/src/extensions/code/extension/lib/workspace-root.js +1 -0
- package/dist/src/extensions/code/extension/skills/pr.d.ts +6 -0
- package/dist/src/extensions/code/extension/skills/pr.js +1 -0
- package/dist/src/extensions/code/extension/tools/apply_patch.d.ts +2 -2
- package/dist/src/extensions/code/extension/tools/apply_patch.js +2 -2
- package/dist/src/extensions/code/extension/tools/gh.d.ts +4 -3
- package/dist/src/extensions/code/extension/tools/gh.js +1 -1
- package/dist/src/extensions/code/extension/tools/grep.js +1 -1
- package/dist/src/extensions/code/tools.d.ts +2 -1
- package/dist/src/extensions/code/tools.js +1 -1
- package/dist/src/extensions/git/extension/extension.d.ts +12 -0
- package/dist/src/extensions/git/extension/extension.js +1 -0
- package/dist/src/extensions/git/extension/instructions/github.d.ts +2 -0
- package/dist/src/extensions/git/extension/instructions/github.js +1 -0
- package/dist/src/extensions/git/extension/lib/gh-tool.d.ts +29 -0
- package/dist/src/extensions/git/extension/lib/gh-tool.js +1 -0
- package/dist/src/extensions/git/extension/lib/github-guidance.d.ts +3 -0
- package/dist/src/extensions/git/extension/lib/github-guidance.js +49 -0
- package/dist/src/extensions/{code → git}/extension/lib/github-shell.d.ts +1 -1
- package/dist/src/extensions/git/extension/lib/github-shell.js +1 -0
- package/dist/src/extensions/git/extension/lib/repository-root.d.ts +5 -0
- package/dist/src/extensions/git/extension/lib/repository-root.js +1 -0
- package/dist/src/extensions/git/extension/lib/sandbox.d.ts +6 -0
- package/dist/src/extensions/git/extension/lib/sandbox.js +1 -0
- package/dist/src/extensions/git/extension/lib/shell.d.ts +1 -0
- package/dist/src/extensions/git/extension/lib/shell.js +1 -0
- package/dist/src/extensions/git/extension/lib/tooling.d.ts +4 -0
- package/dist/src/extensions/git/extension/lib/tooling.js +1 -0
- package/dist/src/extensions/git/extension/skills/pr.d.ts +5 -0
- package/dist/src/extensions/git/extension/skills/pr.js +1 -0
- package/dist/src/extensions/git/extension/tools/gh.d.ts +28 -0
- package/dist/src/extensions/git/extension/tools/gh.js +1 -0
- package/dist/src/extensions/git/tools.d.ts +27 -0
- package/dist/src/extensions/git/tools.js +1 -0
- package/dist/src/framework/sources/registry.js +1 -1
- package/dist/src/harness/action-presentation.d.ts +2 -2
- package/dist/src/harness/action-result-helpers.d.ts +10 -2
- package/dist/src/harness/action-result-helpers.js +1 -1
- package/dist/src/harness/announcements.d.ts +2 -8
- package/dist/src/harness/announcements.js +1 -1
- package/dist/src/harness/coordination.d.ts +11 -11
- package/dist/src/harness/coordination.js +1 -1
- package/dist/src/harness/current-messages.d.ts +1 -5
- package/dist/src/harness/current-messages.js +1 -1
- package/dist/src/harness/emission.d.ts +2 -2
- package/dist/src/harness/emission.js +1 -1
- package/dist/src/harness/execute-call.d.ts +48 -0
- package/dist/src/harness/execute-call.js +1 -0
- package/dist/src/harness/execute-tool.d.ts +3 -1
- package/dist/src/harness/final-output.d.ts +2 -6
- package/dist/src/harness/final-output.js +1 -1
- package/dist/src/harness/hitl/approvals.d.ts +5 -0
- package/dist/src/harness/hitl/approvals.js +1 -1
- package/dist/src/harness/hitl/approved-calls.d.ts +3 -2
- package/dist/src/harness/hitl/approved-calls.js +1 -1
- package/dist/src/harness/hitl/candidates.d.ts +13 -2
- package/dist/src/harness/hitl/candidates.js +1 -1
- package/dist/src/harness/hitl/coordinator.d.ts +3 -3
- package/dist/src/harness/hitl/coordinator.js +1 -1
- package/dist/src/harness/hitl/index.d.ts +6 -4
- package/dist/src/harness/hitl/index.js +1 -1
- package/dist/src/harness/hitl/intake.d.ts +3 -3
- package/dist/src/harness/hitl/intake.js +1 -1
- package/dist/src/harness/input-extraction.d.ts +4 -1
- package/dist/src/harness/input-extraction.js +1 -1
- package/dist/src/harness/input-request-resolution.d.ts +15 -0
- package/dist/src/harness/input-request-resolution.js +1 -1
- package/dist/src/harness/model-call/call.d.ts +3 -5
- package/dist/src/harness/model-call/call.js +1 -1
- package/dist/src/harness/model-call/errors.js +1 -1
- package/dist/src/harness/model-call/request.d.ts +3 -2
- package/dist/src/harness/model-call/request.js +1 -1
- package/dist/src/harness/model-call/response.d.ts +2 -1
- package/dist/src/harness/model-call/response.js +1 -1
- package/dist/src/harness/model-call/run.d.ts +5 -3
- package/dist/src/harness/model-call/run.js +1 -1
- package/dist/src/harness/model-call/tools.d.ts +12 -21
- package/dist/src/harness/model-call/tools.js +1 -1
- package/dist/src/harness/model-profile.d.ts +5 -0
- package/dist/src/harness/model-profile.js +1 -1
- package/dist/src/harness/provider-tools.d.ts +6 -5
- package/dist/src/harness/provider-tools.js +1 -1
- package/dist/src/harness/session-machine/commit.js +1 -1
- package/dist/src/harness/session-machine/transitions.d.ts +5 -2
- package/dist/src/harness/session-machine/transitions.js +1 -1
- package/dist/src/harness/step/after-model.js +1 -1
- package/dist/src/harness/step-hooks.d.ts +4 -6
- package/dist/src/harness/step-hooks.js +1 -1
- package/dist/src/harness/tool-call-input-errors.d.ts +2 -2
- package/dist/src/harness/tool-call-io.d.ts +3 -0
- package/dist/src/harness/tool-call-io.js +1 -1
- package/dist/src/harness/tools.d.ts +22 -19
- package/dist/src/harness/tools.js +1 -1
- package/dist/src/harness/types.d.ts +14 -0
- package/dist/src/instrumentation/lifecycle.d.ts +0 -1
- package/dist/src/instrumentation/native-events.js +1 -1
- package/dist/src/instrumentation/runtime.d.ts +2 -1
- package/dist/src/internal/application/package.js +1 -1
- package/dist/src/internal/authored-definition/core.js +1 -1
- package/dist/src/internal/authored-definition/schedule-collection.js +1 -1
- package/dist/src/internal/authored-definition/schema-backed.d.ts +2 -2
- package/dist/src/internal/authored-definition/schema-backed.js +1 -1
- package/dist/src/internal/authored-module.d.ts +2 -1
- package/dist/src/internal/authored-module.js +1 -1
- package/dist/src/internal/helpers/markdown.js +1 -1
- package/dist/src/internal/mcp/skills.js +1 -1
- package/dist/src/internal/nitro/host/create-application-nitro.js +1 -1
- package/dist/src/internal/nitro/host/dev-host-fingerprint.js +1 -1
- package/dist/src/internal/nitro/host/local-schedules-runtime-plugin.d.ts +5 -0
- package/dist/src/internal/nitro/host/local-schedules-runtime-plugin.js +1 -0
- package/dist/src/internal/nitro/routes/schedule-collection-consumer.d.ts +6 -0
- package/dist/src/internal/nitro/routes/schedule-collection-consumer.js +1 -1
- package/dist/src/internal/schedules/consumer-route.d.ts +2 -0
- package/dist/src/internal/schedules/consumer-route.js +1 -1
- package/dist/src/internal/schedules/dev-environment.d.ts +2 -0
- package/dist/src/internal/schedules/dev-environment.js +1 -0
- package/dist/src/internal/vercel-agent-summary.d.ts +2 -2
- package/dist/src/internal/workflow/vercel-world-defaults.d.ts +1 -1
- package/dist/src/internal/workflow/vercel-world-defaults.js +1 -1
- package/dist/src/protocol/catalog-tools.d.ts +12 -0
- package/dist/src/protocol/catalog-tools.js +1 -0
- package/dist/src/protocol/message-version.js +1 -1
- package/dist/src/protocol/message.d.ts +1 -1
- package/dist/src/protocol/remote-agent-protocol.d.ts +2 -0
- package/dist/src/protocol/remote-agent-protocol.js +1 -1
- package/dist/src/protocol/reply-tool.d.ts +2 -0
- package/dist/src/protocol/reply-tool.js +1 -0
- package/dist/src/protocol/runtime-tools.d.ts +6 -0
- package/dist/src/protocol/runtime-tools.js +1 -0
- package/dist/src/protocol/session-projection.js +1 -1
- package/dist/src/protocol/task-tools.d.ts +4 -4
- package/dist/src/protocol/task-tools.js +1 -1
- package/dist/src/public/channels/chat-sdk/chatSdkChannel.js +1 -1
- package/dist/src/public/channels/linear/defaults.js +2 -2
- package/dist/src/public/channels/slack/action-status.d.ts +0 -9
- package/dist/src/public/channels/slack/action-status.js +1 -1
- package/dist/src/public/channels/slack/defaults.js +2 -2
- package/dist/src/public/channels/slack/task-card.d.ts +1 -1
- package/dist/src/public/definitions/connections/mcp.d.ts +4 -4
- package/dist/src/public/definitions/connections/openapi.d.ts +6 -7
- package/dist/src/public/definitions/remote-agent.d.ts +6 -3
- package/dist/src/public/definitions/workspace-agent.d.ts +6 -3
- package/dist/src/public/experimental/schedules/index.d.ts +1 -1
- package/dist/src/public/schedules/providers/in-memory.js +1 -1
- package/dist/src/public/schedules/providers/vercel.js +1 -1
- package/dist/src/public/schedules/subscription.d.ts +36 -16
- package/dist/src/public/tools/web-search.d.ts +1 -1
- package/dist/src/runtime/agent/bootstrap.d.ts +2 -1
- package/dist/src/runtime/agent/bootstrap.js +1 -1
- package/dist/src/runtime/agent/mock-model-adapter.js +2 -2
- package/dist/src/runtime/agent/mock-model-fixtures.js +2 -2
- package/dist/src/runtime/agent/mock-model-skill-selection.d.ts +2 -0
- package/dist/src/runtime/agent/mock-model-skill-selection.js +2 -2
- package/dist/src/runtime/agent/mock-structured-output.d.ts +1 -1
- package/dist/src/runtime/connections/mcp-client.js +1 -1
- package/dist/src/runtime/connections/registry.js +1 -1
- package/dist/src/runtime/connections/scoped-authorization.js +1 -1
- package/dist/src/runtime/connections/tool-result.d.ts +2 -2
- package/dist/src/runtime/resolve-agent-graph.js +1 -1
- package/dist/src/runtime/resolve-tool.js +1 -1
- package/dist/src/runtime/schedules/collection-client.d.ts +12 -3
- package/dist/src/runtime/schedules/collection-client.js +1 -1
- package/dist/src/runtime/subagents/dynamic-agent-config.d.ts +2 -2
- package/dist/src/runtime/subagents/dynamic-remote-agent-config.d.ts +2 -1
- package/dist/src/runtime/subagents/dynamic-remote-agent-config.js +1 -1
- package/dist/src/runtime/subagents/registry.d.ts +2 -1
- package/dist/src/runtime/subagents/registry.js +1 -1
- package/dist/src/runtime/tools/registry.d.ts +2 -0
- package/dist/src/runtime/tools/registry.js +1 -1
- package/dist/src/runtime/types.d.ts +3 -3
- package/dist/src/setup/connection-connector.js +1 -2
- package/dist/src/setup/index.d.ts +1 -1
- package/dist/src/setup/index.js +1 -1
- package/dist/src/setup/integrations/slack/setup.d.ts +23 -3
- package/dist/src/setup/integrations/slack/setup.js +1 -1
- package/dist/src/setup/primitives/process-output.d.ts +5 -0
- package/dist/src/setup/primitives/process-output.js +2 -1
- package/dist/src/setup/scaffold/create/project.js +1 -1
- package/dist/src/setup/scaffold/create/web-template.d.ts +1 -1
- package/dist/src/setup/scaffold/create/web-template.js +1 -1
- package/dist/src/setup/scaffold/update/update-slack-channel.d.ts +17 -0
- package/dist/src/setup/scaffold/update/update-slack-channel.js +1 -1
- package/dist/src/setup/slack-connect-create.d.ts +10 -2
- package/dist/src/setup/slack-connect-create.js +1 -1
- package/dist/src/setup/slack-connect-lifecycle.d.ts +92 -44
- package/dist/src/setup/slack-connect-lifecycle.js +1 -1
- package/dist/src/setup/slack-connect.d.ts +30 -11
- package/dist/src/setup/slack-connect.js +1 -1
- package/dist/src/setup/slack-setup-plan.d.ts +72 -0
- package/dist/src/setup/slack-setup-plan.js +1 -0
- package/dist/src/setup/slackbot.d.ts +75 -35
- package/dist/src/setup/slackbot.js +2 -1
- package/dist/src/shared/action-label.d.ts +10 -0
- package/dist/src/shared/action-label.js +1 -0
- package/dist/src/shared/action-request-name.d.ts +3 -1
- package/dist/src/shared/action-request-name.js +1 -1
- package/dist/src/shared/action-types.d.ts +7 -8
- package/dist/src/shared/action-types.js +1 -1
- package/dist/src/shared/agent-definition.d.ts +11 -3
- package/dist/src/shared/development-env-files.d.ts +4 -0
- package/dist/src/shared/development-env-files.js +1 -0
- package/dist/src/shared/input.d.ts +0 -1
- package/dist/src/shared/map-with-concurrency.d.ts +2 -0
- package/dist/src/shared/map-with-concurrency.js +1 -0
- package/dist/src/shared/skill-definition.d.ts +6 -0
- package/dist/src/shared/skill-package.d.ts +1 -0
- package/dist/src/shared/skill-package.js +1 -1
- package/dist/src/shared/web-search.d.ts +15 -2
- package/dist/src/shared/web-search.js +1 -1
- package/dist/src/svelte/index.js +1 -1
- package/dist/src/svelte/use-eve-agent.js +1 -1
- package/dist/src/tool-stubs/execute.d.ts +0 -3
- package/dist/src/tool-stubs/execute.js +1 -1
- package/dist/src/tool-stubs/rules.js +1 -1
- package/dist/src/tool-stubs/validate-targets.js +1 -1
- package/dist/src/tools/behavior.d.ts +3 -6
- package/dist/src/tools/definition.d.ts +5 -0
- package/dist/src/tools/dynamic.d.ts +5 -2
- package/dist/src/tools/provided/ask-question-workflow.js +1 -1
- package/dist/src/tools/provided/sleep-workflow.js +1 -1
- package/dist/src/tools/provided/task-cancel.d.ts +1 -1
- package/dist/src/tools/provided/task-wait.d.ts +1 -1
- package/dist/src/tools/provided/web-search.d.ts +20 -7
- package/dist/src/tools/provided/web-search.js +1 -1
- package/dist/src/tools/schema.d.ts +5 -0
- package/dist/src/tools/schema.js +1 -1
- package/dist/src/{runtime/connections/tool-signature.d.ts → tools/signature.d.ts} +2 -2
- package/dist/src/tools/workflow-definition.d.ts +1 -1
- package/dist/src/tracing/agent-approval-instrumentation.js +1 -1
- package/dist/src/tracing/agent-otel-provider.js +2 -2
- package/dist/src/tracing/agent-otel-runtime-context.d.ts +1 -0
- package/dist/src/tracing/agent-otel-runtime-context.js +1 -1
- package/dist/src/tracing/agent-otel-turn-state.d.ts +6 -0
- package/dist/src/tracing/agent-otel-turn-state.js +1 -0
- package/dist/src/tracing/agent-tool-instrumentation.js +1 -1
- package/dist/src/tracing/agent-trace-context-codec.js +1 -1
- package/dist/src/tracing/agent-trace-state.d.ts +4 -1
- package/dist/src/vue/index.js +1 -1
- package/dist/src/vue/use-eve-agent.js +1 -1
- package/docs/agent-config.md +8 -8
- package/docs/channels/chat-sdk.mdx +1 -1
- package/docs/channels/slack.mdx +32 -82
- package/docs/code-extension.mdx +28 -7
- package/docs/concepts/built-in-tools.md +43 -43
- package/docs/concepts/context-control.md +1 -1
- package/docs/concepts/execution-model-and-durability.mdx +1 -1
- package/docs/concepts/sessions-runs-and-streaming.md +4 -4
- package/docs/connections/mcp.mdx +5 -5
- package/docs/connections/openapi.mdx +1 -1
- package/docs/connections/overview.mdx +4 -2
- package/docs/evals/assertions.mdx +5 -3
- package/docs/evals/reporters.mdx +3 -1
- package/docs/evals/tool-stubs.mdx +3 -1
- package/docs/extensions.md +2 -0
- package/docs/guides/dev-tui.md +2 -2
- package/docs/guides/dynamic-capabilities.md +14 -4
- package/docs/guides/frontend/overview.mdx +1 -1
- package/docs/guides/remote-agents.md +10 -3
- package/docs/instructions.mdx +5 -5
- package/docs/reference/cli.md +2 -2
- package/docs/reference/typescript-api.md +3 -3
- package/docs/skills.mdx +19 -4
- package/docs/subagents/index.mdx +5 -3
- package/docs/tools/overview.mdx +22 -1
- package/docs/tools/tasks-upgrade.md +1 -1
- package/docs/tools/tasks.md +32 -32
- package/docs/tools/workflows.mdx +6 -6
- package/docs/tutorial/team-playbooks.mdx +2 -2
- package/package.json +22 -6
- package/dist/src/execution/connection-announcement.d.ts +0 -7
- package/dist/src/execution/connection-announcement.js +0 -4
- package/dist/src/execution/tools/connection-approval.d.ts +0 -25
- package/dist/src/execution/tools/connection-approval.js +0 -1
- package/dist/src/execution/tools/connection-search-rank.d.ts +0 -21
- package/dist/src/execution/tools/connection-search-rank.js +0 -1
- package/dist/src/execution/tools/connection-target.d.ts +0 -18
- package/dist/src/execution/tools/connection-target.js +0 -1
- package/dist/src/execution/tools/connection-tools.d.ts +0 -4
- package/dist/src/execution/tools/connection-tools.js +0 -2
- package/dist/src/execution/tools/load-skill.d.ts +0 -10
- package/dist/src/execution/tools/load-skill.js +0 -1
- package/dist/src/extensions/code/extension/lib/github-shell.js +0 -1
- package/dist/src/extensions/code/extension/skills/pr/SKILL.md +0 -53
- package/dist/src/extensions/code/extension/subagents/worker/tools/load_skill.d.ts +0 -2
- package/dist/src/extensions/code/extension/subagents/worker/tools/load_skill.js +0 -1
- package/dist/src/harness/advertised-tools.d.ts +0 -26
- package/dist/src/harness/advertised-tools.js +0 -1
- package/dist/src/harness/nested-actions.d.ts +0 -23
- package/dist/src/harness/nested-actions.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_cli-config@0.2.0/node_modules/@vercel/cli-config/dist/cli-config.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_cli-config@0.2.0/node_modules/@vercel/cli-config/dist/cred-storage.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_cli-config@0.2.0/node_modules/@vercel/cli-config/dist/index.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_cli-config@0.2.0/node_modules/@vercel/cli-config/dist/schema.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_cli-config@0.2.0/node_modules/@vercel/cli-config/dist/schema.zod.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_cli-config@0.2.0/node_modules/@vercel/cli-config/dist/types.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.0/node_modules/@vercel/cli-exec/dist/envpath.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.0/node_modules/@vercel/cli-exec/dist/errors.js +0 -2
- package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.0/node_modules/@vercel/cli-exec/dist/errutils.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.0/node_modules/@vercel/cli-exec/dist/exec.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.0/node_modules/@vercel/cli-exec/dist/fsutils.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.0/node_modules/@vercel/cli-exec/dist/index.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.0/node_modules/@vercel/cli-exec/dist/lookup.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.0/node_modules/@vercel/cli-exec/dist/safety.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/auth-errors.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/exchange-vercel-oidc-token.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/get-context.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/get-vercel-oidc-token-sync.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/get-vercel-oidc-token-with-refresh.js +0 -2
- package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/index.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/oauth.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/token-error.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/token-io.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/token-util.js +0 -2
- package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/token.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/verify-vercel-oidc-token.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/version.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_queue@0.5.1_@opentelemetry_api@1.9.1/node_modules/@vercel/queue/dist/index.js +0 -36
- package/dist/src/node_modules/.pnpm/balanced-match@4.0.4/node_modules/balanced-match/dist/esm/index.js +0 -1
- package/dist/src/node_modules/.pnpm/brace-expansion@5.0.12/node_modules/brace-expansion/dist/esm/index.js +0 -1
- package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/index.js +0 -1
- package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/enoent.js +0 -1
- package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/parse.js +0 -1
- package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/escape.js +0 -1
- package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/readShebang.js +0 -1
- package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/resolveCommand.js +0 -1
- package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/index.js +0 -1
- package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/command.js +0 -1
- package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/error.js +0 -2
- package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/kill.js +0 -1
- package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/promise.js +0 -1
- package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/stdio.js +0 -1
- package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/stream.js +0 -1
- package/dist/src/node_modules/.pnpm/get-stream@6.0.1/node_modules/get-stream/buffer-stream.js +0 -1
- package/dist/src/node_modules/.pnpm/get-stream@6.0.1/node_modules/get-stream/index.js +0 -1
- package/dist/src/node_modules/.pnpm/human-signals@2.1.0/node_modules/human-signals/build/src/core.js +0 -1
- package/dist/src/node_modules/.pnpm/human-signals@2.1.0/node_modules/human-signals/build/src/main.js +0 -1
- package/dist/src/node_modules/.pnpm/human-signals@2.1.0/node_modules/human-signals/build/src/realtime.js +0 -1
- package/dist/src/node_modules/.pnpm/human-signals@2.1.0/node_modules/human-signals/build/src/signals.js +0 -1
- package/dist/src/node_modules/.pnpm/is-stream@2.0.1/node_modules/is-stream/index.js +0 -1
- package/dist/src/node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/index.js +0 -1
- package/dist/src/node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/mode.js +0 -1
- package/dist/src/node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/windows.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/index.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/compact/decrypt.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/compact/encrypt.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/flattened/decrypt.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/flattened/encrypt.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/general/decrypt.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/general/encrypt.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwk/embedded.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwk/thumbprint.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwks/local.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwks/remote.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/compact/sign.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/compact/verify.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/flattened/sign.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/flattened/verify.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/general/sign.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/general/verify.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/decrypt.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/encrypt.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/produce.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/sign.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/unsecured.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/verify.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/key/export.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/key/generate_key_pair.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/key/generate_secret.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/key/import.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/aesgcmkw.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/buffer_utils.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/cek.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/check_iv_length.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/check_key_type.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/check_p2s.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/crypto_key.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/decrypt_key_management.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/encrypt_key_management.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/epoch.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/invalid_key_input.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/is_disjoint.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/is_jwk.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/is_object.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/iv.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/jwt_claims_set.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/private_symbols.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/secs.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/validate_algorithms.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/validate_crit.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/aeskw.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/asn1.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/base64url.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/cbc_tag.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/check_cek_length.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/check_key_length.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/ciphers.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/decrypt.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/digest.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/dsa_digest.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/ecdhes.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/encrypt.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/fetch_jwks.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/generate.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/get_named_curve.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/get_sign_verify_key.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/hmac_digest.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/is_key_like.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/is_key_object.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/jwk_to_key.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/key_to_jwk.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/node_key.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/normalize_key.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/pbes2kw.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/random.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/rsaes.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/runtime.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/sign.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/timing_safe_equal.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/verify.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/webcrypto.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/base64url.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/decode_jwt.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/decode_protected_header.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/errors.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/runtime.js +0 -1
- package/dist/src/node_modules/.pnpm/merge-stream@2.0.0/node_modules/merge-stream/index.js +0 -1
- package/dist/src/node_modules/.pnpm/mimic-fn@2.1.0/node_modules/mimic-fn/index.js +0 -1
- package/dist/src/node_modules/.pnpm/minimatch@10.2.6/node_modules/minimatch/dist/esm/assert-valid-pattern.js +0 -1
- package/dist/src/node_modules/.pnpm/minimatch@10.2.6/node_modules/minimatch/dist/esm/ast.js +0 -1
- package/dist/src/node_modules/.pnpm/minimatch@10.2.6/node_modules/minimatch/dist/esm/brace-expressions.js +0 -1
- package/dist/src/node_modules/.pnpm/minimatch@10.2.6/node_modules/minimatch/dist/esm/escape.js +0 -1
- package/dist/src/node_modules/.pnpm/minimatch@10.2.6/node_modules/minimatch/dist/esm/index.js +0 -1
- package/dist/src/node_modules/.pnpm/minimatch@10.2.6/node_modules/minimatch/dist/esm/unescape.js +0 -1
- package/dist/src/node_modules/.pnpm/mixpart@0.0.6/node_modules/mixpart/dist/index.js +0 -7
- package/dist/src/node_modules/.pnpm/npm-run-path@4.0.1/node_modules/npm-run-path/index.js +0 -1
- package/dist/src/node_modules/.pnpm/onetime@5.1.2/node_modules/onetime/index.js +0 -1
- package/dist/src/node_modules/.pnpm/os-paths@4.4.0/node_modules/os-paths/src/lib/index.js +0 -1
- package/dist/src/node_modules/.pnpm/path-key@3.1.1/node_modules/path-key/index.js +0 -1
- package/dist/src/node_modules/.pnpm/picocolors@1.1.1/node_modules/picocolors/picocolors.js +0 -1
- package/dist/src/node_modules/.pnpm/shebang-command@2.0.0/node_modules/shebang-command/index.js +0 -1
- package/dist/src/node_modules/.pnpm/shebang-regex@3.0.0/node_modules/shebang-regex/index.js +0 -1
- package/dist/src/node_modules/.pnpm/signal-exit@3.0.7/node_modules/signal-exit/index.js +0 -1
- package/dist/src/node_modules/.pnpm/signal-exit@3.0.7/node_modules/signal-exit/signals.js +0 -1
- package/dist/src/node_modules/.pnpm/strip-final-newline@2.0.0/node_modules/strip-final-newline/index.js +0 -2
- package/dist/src/node_modules/.pnpm/which@2.0.2/node_modules/which/which.js +0 -1
- package/dist/src/node_modules/.pnpm/xdg-app-paths@5.5.1/node_modules/xdg-app-paths/src/lib/index.js +0 -1
- package/dist/src/node_modules/.pnpm/xdg-portable@7.3.0/node_modules/xdg-portable/src/lib/index.js +0 -1
- package/dist/src/public/tools/load-skill.d.ts +0 -3
- package/dist/src/public/tools/load-skill.js +0 -1
- package/dist/src/runtime/skills/fragment-context.d.ts +0 -4
- package/dist/src/runtime/skills/fragment-context.js +0 -1
- package/dist/src/tools/framework/connection-tools.d.ts +0 -3
- package/dist/src/tools/framework/connection-tools.js +0 -1
- package/dist/src/tools/provided/load-skill.d.ts +0 -2
- package/dist/src/tools/provided/load-skill.js +0 -1
- /package/dist/src/extensions/{code → git}/extension/lib/github-shell-schema.d.ts +0 -0
- /package/dist/src/extensions/{code → git}/extension/lib/github-shell-schema.js +0 -0
- /package/dist/src/extensions/{code → git}/extension/lib/signed-commit.d.ts +0 -0
- /package/dist/src/extensions/{code → git}/extension/lib/signed-commit.js +0 -0
- /package/dist/src/{runtime/connections/tool-signature.js → tools/signature.js} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,47 @@
|
|
|
1
1
|
# eve
|
|
2
2
|
|
|
3
|
+
## 0.76.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 8c55ea7: Skills now load through `eve__skill({ name })`, which every agent with a skill has in place of `load_skill`, and a skill with `deferred: true` (in `SKILL.md` frontmatter or on `defineSkill`, static or dynamic) leaves the system prompt and is found with `eve__search` instead.
|
|
8
|
+
|
|
9
|
+
- The `load_skill` tool and the `eve/tools/load_skill` export are removed. Delete any `agent/tools/load_skill.ts` override or approval policy that names it; an authored `agent/tools/load_skill.ts` is now an ordinary tool.
|
|
10
|
+
- A skill load's `load-skill` action now carries the skill's `name`, and its `input` is the model's `{ name }` instead of `{ skill }`. Its result is a `load-skill-result` with the same `name` instead of a `tool-result` named `load_skill`. Its client message part has the `toolName` `eve__skill` instead of `eve:load-skill`, with the skill's name in `toolMetadata.eve.name`. Sessions recorded by earlier versions replay with `name` filled in from `input.skill`.
|
|
11
|
+
- Eval facts report skill loads in `skillLoads`, which `t.loadedSkill` reads. They no longer count toward `toolCallCount`, `usedNoTools`, or `maxToolCalls`.
|
|
12
|
+
- Skill names must use only ASCII letters, digits, underscores, and dashes, start with a letter or digit, and have at most 64 characters. The compiler rejects a static skill with another name, and eve skips a dynamic skill resolver that returns one.
|
|
13
|
+
- 8c55ea7: An agent with deferred entries or connections now has `eve__search` to find tools marked `deferred: true`, agents marked `tool: "deferred"`, and every connection tool, and `eve__tool` to call them, without growing the model's tool list. An agent with skills has `eve__skill` to load them, and `eve__search` also finds deferred skills. An agent with none of these gets no catalog tools, so its tool list is unchanged apart from `load_skill` becoming `eve__skill`. They replace `connection_search` and `connection_execute`, and stream events, approvals, hooks, and traces now name each connection tool call `<connection>__<tool>`. `eve__search` never asks the user to sign in: it lists a connection that needs sign-in under the connection's own name, and `eve__tool` on that name, such as `eve__tool({ name: "linear" })`, asks the user to sign in. `eve__search` takes a required `query`; a query such as `linear__` searches only that connection's tools.
|
|
14
|
+
|
|
15
|
+
Breaking changes:
|
|
16
|
+
|
|
17
|
+
- The tools eve adds itself now live in the `eve` namespace: `task_wait` is `eve__task_wait`, `task_cancel` is `eve__task_cancel`, and `final_output`, the tool a session with an output schema calls to deliver its structured result, is `eve__reply`. The catalog tools are `eve__search`, `eve__tool`, and `eve__skill`. Update evals, approval policies, hooks, and channel code that match `task_wait`, `task_cancel`, or `final_output` by name. A turn held on `task_wait` when you upgrade stays held until the next message or a cancel.
|
|
18
|
+
- eve reserves the `eve` namespace. A tool, subagent, skill, connection, or extension mount named `eve` or starting with `eve__` now fails to build, or fails when the agent loads or a dynamic entry resolves; rename it. `search`, `execute`, `task_wait`, `task_cancel`, and `final_output` are ordinary names again.
|
|
19
|
+
- A connection owns its name and every name starting with `<name>__`. A tool, subagent, or connection under another connection's prefix is rejected at build time, and a dynamic one when it resolves.
|
|
20
|
+
- Dynamic tool map keys must be legal tool names: ASCII letters, digits, `_`, and `-`, starting with a letter, up to 64 characters.
|
|
21
|
+
- Connection approvals are keyed by `<connection>__<tool>` instead of a `[connection, tool]` pair, so saved "always approve" decisions for connection tools reset.
|
|
22
|
+
- A `connection_execute` call still waiting for approval when you upgrade fails when someone answers it, with "The tool "connection_execute" is no longer available, so the call didn't run."
|
|
23
|
+
- Eval tool-name helpers (`calledTool`, `notCalledTool`, `toolOrder`, and `requireToolCall`) now throw, saying what to assert instead, for `eve__tool` and `eve__skill`, whose calls are reported under the entry they reach and as skill loads, and for a retired eve tool name (`load_skill`, `task_wait`, `task_cancel`, `final_output`, `connection_search`, `connection_execute`) unless the root agent declares a tool by that name or has a dynamic tool resolver. Before, `notCalledTool` on one of these names always passed. `usedNoTools` and `maxToolCalls` count `eve__search` calls; skill loads no longer do.
|
|
24
|
+
- Removed: the `parentCallId` field on `tool-call` actions in `actions.requested` events, and the `agent.action.parent_call_id` span attribute. The subagent `parentCallId` on `session.started` invocation metadata is unchanged.
|
|
25
|
+
- 2cc43ca: GitHub work moves out of `eve/extensions/code` into a new built-in extension, `eve/extensions/git`. The code extension used to tell every agent that "GitHub credentials are not available to ordinary `bash`" and to route GitHub work through its `gh` tool, which only works with Connect-brokered `github` config. Agents whose shell already has `gh` credentials were steered to a tool that could not authenticate.
|
|
26
|
+
|
|
27
|
+
`git({})` adds the GitHub instructions and a `git__pr` skill that commits, pushes, and opens a draft with the shell's `gh pr create --draft`. `git({ github })` adds the Connect-brokered `git__gh` tool and switches `git__pr` to the signed-commit workflow. The tool and sandbox helpers are exported from `eve/extensions/git/tools` and `eve/extensions/git/sandbox`.
|
|
28
|
+
|
|
29
|
+
Deprecated: `code({ github })`. While it is set, the code extension still contributes `code__gh`, its GitHub instructions, and the signed-commit `code__pr` skill. Without it, `code({})` no longer contributes `code__gh`, `code__pr`, or any GitHub instructions; mount `eve/extensions/git` for the pull request skill. `gh` from `eve/extensions/code/tools` and the GitHub shell helpers from `eve/extensions/code/sandbox` still work but are deprecated.
|
|
30
|
+
- 14f2af0: Add dynamic schedule updates for timing and complete payload replacement, with prepared-payload approval for model calls. Payload replacement makes the updating caller the new creator; custom schedule providers must implement `update`, and `preparePayload` now receives a `create` or `update` operation.
|
|
31
|
+
- 0ef5c4c: `eve add channel/slack` now resumes interrupted setup, reopens workspace installation for existing connectors, fixes stale routes without detaching, and avoids sharing a Slack app with another project or creating one with a taken name. The `eve/setup` Slack provisioning API now takes a connector selection from `inspectSlackbotConnectors` rather than inspecting a second time; a failed Vercel create reports its original error instead of a misleading cleanup failure.
|
|
32
|
+
|
|
33
|
+
### Patch Changes
|
|
34
|
+
|
|
35
|
+
- 32aaf68: Accept create-session responses from remote agents on eve 0.66–0.68 (protocol 1). A newer parent no longer fails a call that the older remote already accepted and is running.
|
|
36
|
+
- 8c55ea7: Catalog calls now read as what happened: `eve__search` shows `Search tools for “linear issues”` and then how much it found, a skill load shows `Load skill <name>` and then `Loaded skill <name>`, and a connection's sign-in entry shows `Sign in to Linear`. Linear activities, Chat SDK typing indicators, and ACP tool calls now show each call's label instead of its raw tool name, and `eve/client` tool parts carry that text as `toolMetadata.eve.label`.
|
|
37
|
+
- 47f1f18: `grep` and `apply_patch` in `eve/extensions/code` now work in sandboxes whose workspace is not `/workspace`, such as `/app`. `apply_patch` no longer requires a git checkout: `root` is optional and defaults to the workspace root, and outside git it still reports whitespace problems the patch introduced. It also accepts unified-diff range headers such as `@@ -118,8 +118,8 @@ def second():`, using the function context to pick between identical blocks.
|
|
38
|
+
- afe7058: `eve__tool` now runs a tool from the agent's tool list, other than eve's own catalog and task tools and tools a provider or client runs, instead of returning an error, so a model that routes a listed tool through it no longer wastes a step.
|
|
39
|
+
- f8ea556: `webSearch({ provider: "native" })` uses the model vendor's own hosted search for AI Gateway models: OpenAI web search for OpenAI models, Anthropic web search for Anthropic models, and Google Search grounding for Gemini 3 and later, instead of Exa. Other Gateway models don't get `web_search` with this setting unless you set `fallback`, for example `webSearch({ provider: "native", fallback: "exa" })`. Gemini models before Gemini 3, including direct ones, no longer get Google Search, which made the model drop every other tool.
|
|
40
|
+
- 73adcdf: Dynamic schedules now use Vercel's local scheduler and queue delivery under `vc dev`, so cron and one-time occurrences fire automatically. The local consumer loads only for Vercel-backed dynamic collections; standalone `eve dev` keeps its in-memory scheduling backend.
|
|
41
|
+
- f15eaa6: Remove the stream-writer WebSocket default added in 0.73.0, which never took effect. Behavior is unchanged.
|
|
42
|
+
- 192732a: Remote-agent create requests now report that work may have completed when a successful response has an incompatible protocol or unreadable body. These failures stop automatic workflow retries, and protocol mismatches include the remote session ID for checking the outcome.
|
|
43
|
+
- c25caf3: Datadog Experiment reports now link each eval to its sampled runtime traces using Datadog-indexed IDs. Linked traces include classified structural spans and, when capture is enabled, turn-level task input and output; zero-duration Experiment spans are normalized to a positive duration. Canonical runtime spans remain unchanged.
|
|
44
|
+
|
|
3
45
|
## 0.75.1
|
|
4
46
|
|
|
5
47
|
### Patch Changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"node:module";
|
|
1
|
+
import"node:module";export{};
|
package/dist/src/acp/adapter.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{randomUUID}from"node:crypto";import{realpath}from"node:fs/promises";import{PROTOCOL_VERSION,RequestError,methods}from"#compiled/@agentclientprotocol/sdk/index.js";import{Client,ClientError}from"#client/index.js";import{callStatus,foldSession,initialSessionProjection}from"#protocol/session-projection.js";const ANSWER_FIELD=`answer`,ERROR_CODE_EVE=-32002,ACP_TOOL_STATUS={running:`in_progress`,"awaiting-input":`pending`,completed:`completed`,failed:`failed`,rejected:`failed`,cancelled:`failed`,interrupted:`failed`};var EveAcpAdapter=class{#e;#t;#n;#r=!1;#i=new Map;constructor(e){this.#t=e.eveVersion,this.#n=e.workspaceRoot,this.#e=e.client??new Client({auth:e.auth,headers:e.headers,host:e.serverUrl,redirect:`manual`})}initialize(e){return this.#r=e.clientCapabilities?.elicitation?.form!==void 0,{protocolVersion:PROTOCOL_VERSION,agentCapabilities:{loadSession:!1,promptCapabilities:{},sessionCapabilities:{close:{}}},agentInfo:{name:`eve`,title:`eve`,version:this.#t},authMethods:[]}}async newSession(e){if(e.mcpServers.length>0)throw unsupported(`Client-provided MCP servers are not supported by eve ACP mode.`);if((e.additionalDirectories?.length??0)>0)throw unsupported(`Additional workspace directories are not supported by eve ACP mode.`);if(this.#n!==void 0){let t=await normalizedRealpath(e.cwd,`session/new.cwd`),n=await normalizedRealpath(this.#n,`the eve application root`);if(t!==n)throw RequestError.invalidParams({cwd:e.cwd,workspaceRoot:n},`ACP cwd must be the eve application root`)}let t=randomUUID();return this.#i.set(t,{projection:initialSessionProjection(),tools:new Map}),{sessionId:t}}async prompt(e,t,n){let r=this.#s(e.sessionId);if(r.active!==void 0)throw new RequestError(-32001,`ACP session ${e.sessionId} already has an active prompt.`);let i=promptContent(e);r.tools.clear();let a=Promise.withResolvers(),o={cancelRequested:!1,protocolCancelled:!1,outboundController:new AbortController,settled:a.promise,resolveSettled:a.resolve};r.active=o;let onProtocolCancel=()=>{o.protocolCancelled=!0,this.#o(r).catch(()=>void 0)};n.aborted?onProtocolCancel():n.addEventListener(`abort`,onProtocolCancel,{once:!0});try{if(o.protocolCancelled)throw RequestError.requestCancelled({sessionId:e.sessionId});let a={message:i};for(;;){let i;if(r.client===void 0){if(a.message===void 0)throw Error(`ACP session has not started.`);let e=await this.#e.sessions.create({...a,message:a.message});r.client=e.session,i=e.response}else i=a.inputResponses===void 0?await r.client.send(a.message):await r.client.respond(a.inputResponses);(o.cancelRequested||o.protocolCancelled)&&await this.#o(r);let s=[],c=!1,l,u;for await(let n of i){let i=`data`in n?n.data:void 0,a=i!==void 0&&`turnId`in i?i.turnId:void 0;typeof a==`string`&&(o.turnId=a),n.type===`input.requested`&&s.push(...n.data.requests),n.type===`authorization.required`&&(u=unsupported(`Connection authorization cannot be completed through eve ACP mode.`)),n.type===`turn.cancelled`&&(c=!0),(n.type===`turn.failed`||n.type===`session.failed`)&&(l=n),await this.#c(e.sessionId,r,n,t)}if(o.protocolCancelled)throw RequestError.requestCancelled({sessionId:e.sessionId});if(c||o.cancelRequested)return{stopReason:`cancelled`};if(l!==void 0)throw await this.#l(e.sessionId,r,t),eveFailure(l);if(u!==void 0)throw u;if(s.length===0)return{stopReason:`end_turn`};let d;try{d=await Promise.all(s.map(i=>this.#d(e.sessionId,r,i,t,n)))}catch(t){if(o.protocolCancelled)throw RequestError.requestCancelled({sessionId:e.sessionId});if(o.cancelRequested)return{stopReason:`cancelled`};throw t}if(o.protocolCancelled)throw RequestError.requestCancelled({sessionId:e.sessionId});if(o.cancelRequested)return{stopReason:`cancelled`};a={inputResponses:d}}}catch(e){throw acpRequestError(e)}finally{n.removeEventListener(`abort`,onProtocolCancel),r.tools.clear(),o.resolveSettled(),r.active===o&&(r.active=void 0)}}async cancel(e){let t=this.#i.get(e);t!==void 0&&t.active!==void 0&&(t.active.cancelRequested=!0,await this.#o(t))}async closeSession(e){let t=this.#s(e);this.#i.delete(e),await this.#a(t)}async close(){let e=[...this.#i.values()];this.#i.clear(),await Promise.allSettled(e.map(e=>this.#a(e)))}async#a(e){let t;if(e.active!==void 0){let n=e.active;n.cancelRequested=!0;try{await this.#o(e)}catch(e){t=e}await n.settled}try{await e.client?.reset()}catch(e){throw t===void 0?e:AggregateError([t,e],`Could not cancel or reset the eve session`)}if(t!==void 0)throw t}async#o(e){e.active?.outboundController.abort(),e.client!==void 0&&await e.client.cancel(e.active?.turnId===void 0?void 0:{turnId:e.active.turnId})}#s(e){let t=this.#i.get(e);if(t===void 0)throw RequestError.invalidParams({sessionId:e},`Unknown or closed ACP session`);return t}async#c(e,t,n,r){let i=t.projection;if(t.projection=foldSession(i,n),await this.#u(e,t,n,r),n.type===`actions.requested`)return;let a=new Set,{calls:o,tasks:s,turns:c}=t.projection;if(o!==i.calls||s!==i.tasks||c!==i.turns)for(let s of Object.keys(o)){if(!t.tools.has(s))continue;let o=callStatus(t.projection,s);o!==void 0&&o!==callStatus(i,s)&&(a.add(s),await notifyUpdate(r,e,{sessionUpdate:`tool_call_update`,toolCallId:s,status:ACP_TOOL_STATUS[o],...callOutput(n,s)}))}let l=n.type===`action.result`?n.data.result.callId:n.type===`task.settled`?n.data.callId:void 0;if(l===void 0||a.has(l)||!t.tools.has(l))return;let u=callOutput(n,l),d=callStatus(t.projection,l);`content`in u&&d!==void 0&&await notifyUpdate(r,e,{sessionUpdate:`tool_call_update`,toolCallId:l,status:ACP_TOOL_STATUS[d],...u})}async#l(e,t,n){for(let r of t.tools.keys())callStatus(t.projection,r)===`running`&&await notifyUpdate(n,e,{sessionUpdate:`tool_call_update`,toolCallId:r,status:ACP_TOOL_STATUS.failed})}async#u(e,t,n,r){switch(n.type){case`message.appended`:await notifyUpdate(r,e,{sessionUpdate:`agent_message_chunk`,content:{type:`text`,text:n.data.messageDelta},messageId:`${n.data.turnId}:message:${n.data.stepIndex}`});return;case`reasoning.appended`:await notifyUpdate(r,e,{sessionUpdate:`agent_thought_chunk`,content:{type:`text`,text:n.data.reasoningDelta},messageId:`${n.data.turnId}:thought:${n.data.stepIndex}`});return;case`actions.requested`:for(let i of n.data.actions){let n=toolCallForAction(i);t.tools.set(i.callId,n),await notifyUpdate(r,e,{sessionUpdate:`tool_call`,...n})}return;default:return}}async#d(e,t,n,r,i){let a=AbortSignal.any([i,t.active.outboundController.signal]);if(n.display===`confirmation`){let i=`${n.requestId}:approve`,o=`${n.requestId}:deny`,s=t.tools.get(n.action.callId)??toolCallForAction(n.action),c=await r.request(methods.client.session.requestPermission,{sessionId:e,toolCall:s,options:[{kind:`allow_once`,name:`Approve`,optionId:i},{kind:`reject_once`,name:`Deny`,optionId:o}]},{cancellationSignal:a});if(c.outcome.outcome===`cancelled`)return this.#f(t),{requestId:n.requestId};if(c.outcome.optionId===i)return{requestId:n.requestId,optionId:`approve`};if(c.outcome.optionId===o)return{requestId:n.requestId,optionId:`deny`};throw RequestError.invalidParams({optionId:c.outcome.optionId},`Unknown ACP permission option`)}if(!this.#r)throw unsupported(`The ACP client does not support form elicitation required by this eve question.`);let o=elicitationProperty(n),s=await r.request(methods.client.elicitation.create,{mode:`form`,sessionId:e,message:n.prompt,requestedSchema:{type:`object`,properties:{[ANSWER_FIELD]:o},required:[ANSWER_FIELD]}},{cancellationSignal:a});if(s.action!==`accept`)return this.#f(t),{requestId:n.requestId};let c=s.content?.[ANSWER_FIELD];if(typeof c!=`string`)throw RequestError.invalidParams(s.content,`ACP elicitation response must contain a string answer`);if(n.display===`select`){if(!n.options?.some(e=>e.id===c))throw RequestError.invalidParams({answer:c},`Unknown eve question option`);return{requestId:n.requestId,optionId:c}}return{requestId:n.requestId,text:c}}#f(e){let t=e.active;t.cancelRequested=!0,t.outboundController.abort()}};async function normalizedRealpath(e,t){try{return await realpath(e)}catch(n){throw RequestError.invalidParams({path:e},`Could not resolve ${t}: ${errorMessage(n)}`)}}function promptContent(e){let t=e.prompt.map(e=>{if(e.type!==`text`)throw unsupported(`ACP prompt content type ${JSON.stringify(e.type)} is not supported.`);return{type:`text`,text:e.text}});if(t.every(e=>e.text.length===0))throw RequestError.invalidParams(e.prompt,`ACP prompt must contain at least one non-empty text block`);return t}function toolCallForAction(e){let t=e.kind===`tool-call`||e.kind===`workflow-tool-call`?e.toolName:e.kind===`load-skill`?`Load skill`:e.name;return{toolCallId:e.callId,title:t,kind:`other`,status:`pending`,rawInput:e.input}}function elicitationProperty(e){if(e.display===`select`&&e.allowFreeform!==!0&&e.options?.length)return{type:`string`,title:e.prompt,oneOf:e.options.map(e=>({const:e.id,title:e.label,description:e.description}))};if(e.display===`text`&&e.allowFreeform!==!1)return{type:`string`,title:e.prompt,minLength:1};throw unsupported(`This eve question shape cannot be represented by ACP form elicitation.`)}async function notifyUpdate(e,t,n){await e.notify(methods.client.session.update,{sessionId:t,update:n})}function stringifyOutput(e){return typeof e==`string`?e:JSON.stringify(e,null,2)}function unsupported(e){return new RequestError(-32003,e)}function eveFailure(e){return new RequestError(ERROR_CODE_EVE,e.data.message,{code:e.data.code,details:e.data.details})}function acpRequestError(e){return e instanceof RequestError?e:e instanceof ClientError?new RequestError(ERROR_CODE_EVE,e.message,{httpStatus:e.status}):new RequestError(ERROR_CODE_EVE,errorMessage(e))}function errorMessage(e){return e instanceof Error?e.message:String(e)}function callOutput(e,t){let n=e.type===`action.result`&&e.data.result.callId===t?e.data.result.output:e.type===`task.settled`&&e.data.callId===t?e.data.output===void 0?e.data.error?.message:e.data.output:void 0;return n===void 0?{}:{content:[{type:`content`,content:{type:`text`,text:stringifyOutput(n)}}],rawOutput:n}}export{EveAcpAdapter};
|
|
1
|
+
import{randomUUID}from"node:crypto";import{realpath}from"node:fs/promises";import{PROTOCOL_VERSION,RequestError,methods}from"#compiled/@agentclientprotocol/sdk/index.js";import{Client,ClientError}from"#client/index.js";import{callStatus,foldSession,initialSessionProjection}from"#protocol/session-projection.js";import{actionLabel,visibleActions}from"#shared/action-label.js";const ANSWER_FIELD=`answer`,ERROR_CODE_EVE=-32002,ACP_TOOL_STATUS={running:`in_progress`,"awaiting-input":`pending`,completed:`completed`,failed:`failed`,rejected:`failed`,cancelled:`failed`,interrupted:`failed`};var EveAcpAdapter=class{#e;#t;#n;#r=!1;#i=new Map;constructor(e){this.#t=e.eveVersion,this.#n=e.workspaceRoot,this.#e=e.client??new Client({auth:e.auth,headers:e.headers,host:e.serverUrl,redirect:`manual`})}initialize(e){return this.#r=e.clientCapabilities?.elicitation?.form!==void 0,{protocolVersion:PROTOCOL_VERSION,agentCapabilities:{loadSession:!1,promptCapabilities:{},sessionCapabilities:{close:{}}},agentInfo:{name:`eve`,title:`eve`,version:this.#t},authMethods:[]}}async newSession(e){if(e.mcpServers.length>0)throw unsupported(`Client-provided MCP servers are not supported by eve ACP mode.`);if((e.additionalDirectories?.length??0)>0)throw unsupported(`Additional workspace directories are not supported by eve ACP mode.`);if(this.#n!==void 0){let t=await normalizedRealpath(e.cwd,`session/new.cwd`),n=await normalizedRealpath(this.#n,`the eve application root`);if(t!==n)throw RequestError.invalidParams({cwd:e.cwd,workspaceRoot:n},`ACP cwd must be the eve application root`)}let t=randomUUID();return this.#i.set(t,{projection:initialSessionProjection(),tools:new Map}),{sessionId:t}}async prompt(e,t,n){let r=this.#s(e.sessionId);if(r.active!==void 0)throw new RequestError(-32001,`ACP session ${e.sessionId} already has an active prompt.`);let i=promptContent(e);r.tools.clear();let a=Promise.withResolvers(),o={cancelRequested:!1,protocolCancelled:!1,outboundController:new AbortController,settled:a.promise,resolveSettled:a.resolve};r.active=o;let onProtocolCancel=()=>{o.protocolCancelled=!0,this.#o(r).catch(()=>void 0)};n.aborted?onProtocolCancel():n.addEventListener(`abort`,onProtocolCancel,{once:!0});try{if(o.protocolCancelled)throw RequestError.requestCancelled({sessionId:e.sessionId});let a={message:i};for(;;){let i;if(r.client===void 0){if(a.message===void 0)throw Error(`ACP session has not started.`);let e=await this.#e.sessions.create({...a,message:a.message});r.client=e.session,i=e.response}else i=a.inputResponses===void 0?await r.client.send(a.message):await r.client.respond(a.inputResponses);(o.cancelRequested||o.protocolCancelled)&&await this.#o(r);let s=[],c=!1,l,u;for await(let n of i){let i=`data`in n?n.data:void 0,a=i!==void 0&&`turnId`in i?i.turnId:void 0;typeof a==`string`&&(o.turnId=a),n.type===`input.requested`&&s.push(...n.data.requests),n.type===`authorization.required`&&(u=unsupported(`Connection authorization cannot be completed through eve ACP mode.`)),n.type===`turn.cancelled`&&(c=!0),(n.type===`turn.failed`||n.type===`session.failed`)&&(l=n),await this.#c(e.sessionId,r,n,t)}if(o.protocolCancelled)throw RequestError.requestCancelled({sessionId:e.sessionId});if(c||o.cancelRequested)return{stopReason:`cancelled`};if(l!==void 0)throw await this.#l(e.sessionId,r,t),eveFailure(l);if(u!==void 0)throw u;if(s.length===0)return{stopReason:`end_turn`};let d;try{d=await Promise.all(s.map(i=>this.#d(e.sessionId,r,i,t,n)))}catch(t){if(o.protocolCancelled)throw RequestError.requestCancelled({sessionId:e.sessionId});if(o.cancelRequested)return{stopReason:`cancelled`};throw t}if(o.protocolCancelled)throw RequestError.requestCancelled({sessionId:e.sessionId});if(o.cancelRequested)return{stopReason:`cancelled`};a={inputResponses:d}}}catch(e){throw acpRequestError(e)}finally{n.removeEventListener(`abort`,onProtocolCancel),r.tools.clear(),o.resolveSettled(),r.active===o&&(r.active=void 0)}}async cancel(e){let t=this.#i.get(e);t!==void 0&&t.active!==void 0&&(t.active.cancelRequested=!0,await this.#o(t))}async closeSession(e){let t=this.#s(e);this.#i.delete(e),await this.#a(t)}async close(){let e=[...this.#i.values()];this.#i.clear(),await Promise.allSettled(e.map(e=>this.#a(e)))}async#a(e){let t;if(e.active!==void 0){let n=e.active;n.cancelRequested=!0;try{await this.#o(e)}catch(e){t=e}await n.settled}try{await e.client?.reset()}catch(e){throw t===void 0?e:AggregateError([t,e],`Could not cancel or reset the eve session`)}if(t!==void 0)throw t}async#o(e){e.active?.outboundController.abort(),e.client!==void 0&&await e.client.cancel(e.active?.turnId===void 0?void 0:{turnId:e.active.turnId})}#s(e){let t=this.#i.get(e);if(t===void 0)throw RequestError.invalidParams({sessionId:e},`Unknown or closed ACP session`);return t}async#c(e,t,n,r){let i=t.projection;if(t.projection=foldSession(i,n),await this.#u(e,t,n,r),n.type===`actions.requested`)return;let a=new Set,{calls:o,tasks:s,turns:c}=t.projection;if(o!==i.calls||s!==i.tasks||c!==i.turns)for(let s of Object.keys(o)){if(!t.tools.has(s))continue;let o=callStatus(t.projection,s);o!==void 0&&o!==callStatus(i,s)&&(a.add(s),await notifyUpdate(r,e,{sessionUpdate:`tool_call_update`,toolCallId:s,status:ACP_TOOL_STATUS[o],...callOutput(n,s),...resultTitle(n,s)}))}let l=n.type===`action.result`?n.data.result.callId:n.type===`task.settled`?n.data.callId:void 0;if(l===void 0||a.has(l)||!t.tools.has(l))return;let u=callOutput(n,l),d=callStatus(t.projection,l);`content`in u&&d!==void 0&&await notifyUpdate(r,e,{sessionUpdate:`tool_call_update`,toolCallId:l,status:ACP_TOOL_STATUS[d],...u,...resultTitle(n,l)})}async#l(e,t,n){for(let r of t.tools.keys())callStatus(t.projection,r)===`running`&&await notifyUpdate(n,e,{sessionUpdate:`tool_call_update`,toolCallId:r,status:ACP_TOOL_STATUS.failed})}async#u(e,t,n,r){switch(n.type){case`message.appended`:await notifyUpdate(r,e,{sessionUpdate:`agent_message_chunk`,content:{type:`text`,text:n.data.messageDelta},messageId:`${n.data.turnId}:message:${n.data.stepIndex}`});return;case`reasoning.appended`:await notifyUpdate(r,e,{sessionUpdate:`agent_thought_chunk`,content:{type:`text`,text:n.data.reasoningDelta},messageId:`${n.data.turnId}:thought:${n.data.stepIndex}`});return;case`actions.requested`:for(let i of visibleActions(n.data.actions)){let a=toolCallForAction(i,n.data.presentation);t.tools.set(i.callId,a),await notifyUpdate(r,e,{sessionUpdate:`tool_call`,...a})}return;default:return}}async#d(e,t,n,r,i){let a=AbortSignal.any([i,t.active.outboundController.signal]);if(n.display===`confirmation`){let i=`${n.requestId}:approve`,o=`${n.requestId}:deny`,s=t.tools.get(n.action.callId)??toolCallForAction(n.action),c=await r.request(methods.client.session.requestPermission,{sessionId:e,toolCall:s,options:[{kind:`allow_once`,name:`Approve`,optionId:i},{kind:`reject_once`,name:`Deny`,optionId:o}]},{cancellationSignal:a});if(c.outcome.outcome===`cancelled`)return this.#f(t),{requestId:n.requestId};if(c.outcome.optionId===i)return{requestId:n.requestId,optionId:`approve`};if(c.outcome.optionId===o)return{requestId:n.requestId,optionId:`deny`};throw RequestError.invalidParams({optionId:c.outcome.optionId},`Unknown ACP permission option`)}if(!this.#r)throw unsupported(`The ACP client does not support form elicitation required by this eve question.`);let o=elicitationProperty(n),s=await r.request(methods.client.elicitation.create,{mode:`form`,sessionId:e,message:n.prompt,requestedSchema:{type:`object`,properties:{[ANSWER_FIELD]:o},required:[ANSWER_FIELD]}},{cancellationSignal:a});if(s.action!==`accept`)return this.#f(t),{requestId:n.requestId};let c=s.content?.[ANSWER_FIELD];if(typeof c!=`string`)throw RequestError.invalidParams(s.content,`ACP elicitation response must contain a string answer`);if(n.display===`select`){if(!n.options?.some(e=>e.id===c))throw RequestError.invalidParams({answer:c},`Unknown eve question option`);return{requestId:n.requestId,optionId:c}}return{requestId:n.requestId,text:c}}#f(e){let t=e.active;t.cancelRequested=!0,t.outboundController.abort()}};async function normalizedRealpath(e,t){try{return await realpath(e)}catch(n){throw RequestError.invalidParams({path:e},`Could not resolve ${t}: ${errorMessage(n)}`)}}function promptContent(e){let t=e.prompt.map(e=>{if(e.type!==`text`)throw unsupported(`ACP prompt content type ${JSON.stringify(e.type)} is not supported.`);return{type:`text`,text:e.text}});if(t.every(e=>e.text.length===0))throw RequestError.invalidParams(e.prompt,`ACP prompt must contain at least one non-empty text block`);return t}function toolCallForAction(e,t){return{toolCallId:e.callId,title:actionLabel(e,t),kind:`other`,status:`pending`,rawInput:e.input}}function elicitationProperty(e){if(e.display===`select`&&e.allowFreeform!==!0&&e.options?.length)return{type:`string`,title:e.prompt,oneOf:e.options.map(e=>({const:e.id,title:e.label,description:e.description}))};if(e.display===`text`&&e.allowFreeform!==!1)return{type:`string`,title:e.prompt,minLength:1};throw unsupported(`This eve question shape cannot be represented by ACP form elicitation.`)}async function notifyUpdate(e,t,n){await e.notify(methods.client.session.update,{sessionId:t,update:n})}function stringifyOutput(e){return typeof e==`string`?e:JSON.stringify(e,null,2)}function unsupported(e){return new RequestError(-32003,e)}function eveFailure(e){return new RequestError(ERROR_CODE_EVE,e.data.message,{code:e.data.code,details:e.data.details})}function acpRequestError(e){return e instanceof RequestError?e:e instanceof ClientError?new RequestError(ERROR_CODE_EVE,e.message,{httpStatus:e.status}):new RequestError(ERROR_CODE_EVE,errorMessage(e))}function errorMessage(e){return e instanceof Error?e.message:String(e)}function resultTitle(e,t){let n=e.type===`action.result`?e.data.presentation?.[t]?.label:void 0;return n===void 0?{}:{title:n}}function callOutput(e,t){let n=e.type===`action.result`&&e.data.result.callId===t?e.data.result.output:e.type===`task.settled`&&e.data.callId===t?e.data.output===void 0?e.data.error?.message:e.data.output:void 0;return n===void 0?{}:{content:[{type:`content`,content:{type:`text`,text:stringifyOutput(n)}}],rawOutput:n}}export{EveAcpAdapter};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{actionLabel,visibleActions}from"#shared/action-label.js";import{actionRequestName}from"#shared/action-request-name.js";import{displayTitle}from"#shared/display-name.js";import{firstSentence,normalizePresentationText}from"#shared/presentation-text.js";function trackTaskCardEvent(e,t,n){switch(t.type){case`input.requested`:{let{requests:n,taskId:r}=t.data;if(r===void 0)return{};let i=n.map(e=>blocker(e.requestId,e.kind===`question`?`input`:`approval`,e.prompt));return updateBlockers(e,r,e=>[...e,...i])}case`input.resolved`:{let n=new Set(t.data.resolutions.map(e=>e.requestId));return updateBlockers(e,void 0,e=>e.filter(e=>!n.has(e.id)))}case`authorization.required`:{let{taskId:n}=t.data;if(n===void 0)return{};let r=authorizationId(t.data),i=t.data.authorization?.displayName??t.data.name;return updateBlockers(e,n,e=>[...e.filter(e=>e.id!==r),blocker(r,`authorization`,i)])}case`authorization.completed`:{let n=authorizationId(t.data);return updateBlockers(e,t.data.taskId,e=>e.filter(e=>e.id!==n))}default:{let r=trackTurnEvent(e,t,n);return r===void 0?{}:{[r.turnId]:r.turn}}}}function blocker(e,t,n){let r=presentationText(n)?.slice(0,200);return r===void 0?{id:e,kind:t}:{id:e,kind:t,label:r}}function authorizationId(e){return e.attemptId??e.candidateId??e.name}function updateBlockers(e,t,n){let r={};for(let[i,a]of Object.entries(e))for(let e of a.calls){if(e.task===void 0||e.status!==`working`||t!==void 0&&e.task.id!==t)continue;let o=e.task.blockers??[],s=n(o);if(s.length===o.length&&s.every((e,t)=>e.id===o[t].id))continue;let c={...e.task,blockers:s};r[i]=replaceCall(r[i]??a,{...e,task:c})}return r}function trackTurnEvent(e,t,n){switch(t.type){case`actions.requested`:{let{turnId:r}=t.data,i=e[r]??{calls:[],ended:!1},a=new Set(i.calls.map(e=>e.callId)),o=visibleActions(t.data.actions).filter(e=>!a.has(e.callId));if(o.length===0)return;let s=o.map(e=>requestedCall(e,t.data.presentation,n));return{turn:{...i,calls:bounded([...i.calls,...s])},turnId:r}}case`action.result`:{let{turnId:r}=t.data,i=e[r],a=i?.calls.find(e=>e.callId===t.data.result.callId);if(i===void 0||a===void 0||a.task!==void 0)return;let o=actionStatus(t.data.status);return{turn:replaceCall(i,{...a,settledAt:n,status:o}),turnId:r}}case`task.started`:{let{callId:r,kind:i,name:a,taskId:o,turnId:s}=t.data,c=e[s]??{calls:[],ended:!1},l=c.calls.find(e=>e.callId===r)??{callId:r,name:a,startedAt:n,status:`working`,title:displayTitle(a)};return{turn:replaceCall(c,{callId:l.callId,name:l.name,startedAt:l.startedAt,status:`working`,task:{id:o,kind:i},title:l.title}),turnId:s}}case`task.settled`:{let{callId:r,status:i,turnId:a}=t.data,o=e[a],s=o?.calls.find(e=>e.callId===r);if(o===void 0||s?.task===void 0)return;let c={id:s.task.id,kind:s.task.kind},l=taskSummary(t.data);l!==void 0&&(c.summary=l);let u=t.data.cancel?.reason;return u!==void 0&&(c.cancelReason=u),{turn:replaceCall(o,{...s,settledAt:n,status:i,task:c}),turnId:a}}case`turn.completed`:case`turn.failed`:case`turn.cancelled`:{let n=e[t.data.turnId];return n===void 0||n.ended?void 0:{turn:{...n,ended:!0},turnId:t.data.turnId}}default:return}}function closeSettledTasks(e,t){let n=e.calls.filter(e=>e.task!==void 0&&e.callId!==t);if(!(n.length===0||n.some(e=>e.status===`working`)))return{closed:{calls:e.calls.filter(e=>e.status!==`working`),ended:!0},open:{calls:e.calls.filter(e=>e.status===`working`),ended:!1}}}function taskCardView(e,t,n){let r=[],i=[];for(let e of t.calls)e.task===void 0?i.push(toAction(e)):r.push(toTask(e,e.task,n.audience));return{actions:i,state:r.some(e=>e.status===`blocked`)?`blocked`:!t.ended||r.some(e=>e.status===`working`)?`working`:`finished`,tasks:r,turnId:e}}function workingTaskNames(e){return(e?.calls??[]).filter(e=>e.task!==void 0&&e.status===`working`).map(e=>e.name)}function requestedCall(e,t,n){let r=actionRequestName(e),i={callId:e.callId,name:r,startedAt:n,status:`working`,title:actionLabel(e,t)},a=boundedInput(e.input);return a!==void 0&&(i.input=a),i}function toAction(e){let t={id:e.callId,name:e.name,startedAt:e.startedAt,status:e.status,title:e.title};return e.input!==void 0&&(t.input=e.input),e.settledAt!==void 0&&(t.settledAt=e.settledAt),t}function toTask(e,t,n){let r={id:e.callId,kind:t.kind,name:e.name,startedAt:e.startedAt,status:e.status,taskId:t.id,title:e.title},i=n===`private`,a=e.status===`working`?t.blockers?.at(-1):void 0;a!==void 0&&(r.status=`blocked`,r.blockedOn=i&&a.label!==void 0?{kind:a.kind,label:a.label}:{kind:a.kind});let o=e.status!==`failed`||i;return t.summary!==void 0&&o&&(r.summary=t.summary),t.cancelReason!==void 0&&(r.cancelReason=t.cancelReason),e.settledAt!==void 0&&(r.settledAt=e.settledAt),r}function replaceCall(e,t){let n=e.calls.some(e=>e.callId===t.callId)?e.calls.map(e=>e.callId===t.callId?t:e):[...e.calls,t];return{...e,calls:bounded(n)}}function bounded(e){let t=e.length-100;return t<=0?e:e.filter(e=>t>0&&e.status!==`working`?(--t,!1):!0)}function actionStatus(e){switch(e){case`completed`:case`cancelled`:return e;default:return`failed`}}function boundedInput(e){if(typeof e==`object`&&e&&!Array.isArray(e))return JSON.stringify(e).length<=4096?e:void 0}function taskSummary(e){switch(e.status){case`completed`:return brief(resultText(e.output));case`failed`:return brief(e.error?.message);default:return}}function resultText(e){if(typeof e==`string`)return e;if(typeof e!=`object`||!e||Array.isArray(e))return;let t=e;return t.message??t.text??t.summary}function brief(e){return typeof e==`string`?firstSentence(e):void 0}function presentationText(e){if(e===void 0)return;let t=normalizePresentationText(e);return t===``?void 0:t}export{closeSettledTasks,taskCardView,trackTaskCardEvent,workingTaskNames};
|
|
@@ -20,8 +20,7 @@ export interface CompiledToolBindings {
|
|
|
20
20
|
* conservative phase-1 policy, stricter than the mechanical predicate in
|
|
21
21
|
* the research plan (`hasExecute` minus handled tools and framework
|
|
22
22
|
* actions). It is not a claim that every framework tool needs a turn: some,
|
|
23
|
-
* such as `
|
|
24
|
-
* session, while others, such as `web_fetch`, could run without one. They
|
|
23
|
+
* such as `agent`, depend on the turn's harness or session, while others, such as `web_fetch`, could run without one. They
|
|
25
24
|
* are all withheld so that phase 1 publishes only tools the application or
|
|
26
25
|
* an extension authored; exposing individual framework tools is a later,
|
|
27
26
|
* explicit decision. An application or extension tool that overrides a
|
|
@@ -767,7 +767,7 @@ function settleCall(call, status, error) {
|
|
|
767
767
|
}
|
|
768
768
|
function actionName(action) {
|
|
769
769
|
switch (action.kind) {
|
|
770
|
-
case "load-skill": return
|
|
770
|
+
case "load-skill": return action.name;
|
|
771
771
|
case "subagent-call":
|
|
772
772
|
case "remote-agent-call": return action.name;
|
|
773
773
|
case "tool-call":
|
|
@@ -776,7 +776,7 @@ function actionName(action) {
|
|
|
776
776
|
}
|
|
777
777
|
function resultName(result) {
|
|
778
778
|
switch (result.kind) {
|
|
779
|
-
case "load-skill-result": return
|
|
779
|
+
case "load-skill-result": return result.name;
|
|
780
780
|
case "subagent-result": return result.subagentName;
|
|
781
781
|
default: return result.toolName;
|
|
782
782
|
}
|
|
@@ -1201,6 +1201,9 @@ function isFinalMessageCompleted(event) {
|
|
|
1201
1201
|
//#endregion
|
|
1202
1202
|
//#region src/protocol/message-version.ts
|
|
1203
1203
|
function normalizeMessageStreamEvent(version, event) {
|
|
1204
|
+
return nameSkillLoads(normalizeAppendEvent(version, event));
|
|
1205
|
+
}
|
|
1206
|
+
function normalizeAppendEvent(version, event) {
|
|
1204
1207
|
switch (version) {
|
|
1205
1208
|
case "21":
|
|
1206
1209
|
case "22":
|
|
@@ -1256,6 +1259,26 @@ function normalizeLegacyMessageStreamEvent(version, event) {
|
|
|
1256
1259
|
}
|
|
1257
1260
|
return event;
|
|
1258
1261
|
}
|
|
1262
|
+
function nameSkillLoads(event) {
|
|
1263
|
+
if (event.type !== "actions.requested" || !event.data.actions.some(isUnnamedSkillLoad)) return event;
|
|
1264
|
+
return {
|
|
1265
|
+
...event,
|
|
1266
|
+
data: {
|
|
1267
|
+
...event.data,
|
|
1268
|
+
actions: event.data.actions.map((action) => isUnnamedSkillLoad(action) ? {
|
|
1269
|
+
...action,
|
|
1270
|
+
name: releasedSkillName(action)
|
|
1271
|
+
} : action)
|
|
1272
|
+
}
|
|
1273
|
+
};
|
|
1274
|
+
}
|
|
1275
|
+
function isUnnamedSkillLoad(action) {
|
|
1276
|
+
return action.kind === "load-skill" && typeof Reflect.get(action, "name") !== "string";
|
|
1277
|
+
}
|
|
1278
|
+
function releasedSkillName(action) {
|
|
1279
|
+
const skill = action.input.skill;
|
|
1280
|
+
return typeof skill === "string" ? skill : "load_skill";
|
|
1281
|
+
}
|
|
1259
1282
|
function validateDeltaMessageStreamEvent(version, event) {
|
|
1260
1283
|
if (event.type === "message.appended") {
|
|
1261
1284
|
assertAppendDelta(event.data.messageDelta, "message", version);
|
|
@@ -3069,11 +3092,15 @@ function formatAuthorizationDisplayName(name) {
|
|
|
3069
3092
|
return `${name.charAt(0).toUpperCase()}${name.slice(1)}`;
|
|
3070
3093
|
}
|
|
3071
3094
|
|
|
3095
|
+
//#endregion
|
|
3096
|
+
//#region src/protocol/catalog-tools.ts
|
|
3097
|
+
const SKILL_TOOL_NAME = "eve__skill";
|
|
3098
|
+
|
|
3072
3099
|
//#endregion
|
|
3073
3100
|
//#region src/shared/action-request-name.ts
|
|
3074
3101
|
function actionRequestName(action) {
|
|
3075
3102
|
switch (action.kind) {
|
|
3076
|
-
case "load-skill": return
|
|
3103
|
+
case "load-skill": return action.name;
|
|
3077
3104
|
case "subagent-call": return action.subagentName;
|
|
3078
3105
|
case "remote-agent-call": return action.remoteAgentName;
|
|
3079
3106
|
case "tool-call":
|
|
@@ -3081,6 +3108,23 @@ function actionRequestName(action) {
|
|
|
3081
3108
|
}
|
|
3082
3109
|
}
|
|
3083
3110
|
|
|
3111
|
+
//#endregion
|
|
3112
|
+
//#region src/shared/display-name.ts
|
|
3113
|
+
function displayName(identifier) {
|
|
3114
|
+
const words = lastSegment(identifier).replace(/([a-z0-9])([A-Z])/gu, "$1 $2").replace(/([A-Z]+)([A-Z][a-z])/gu, "$1 $2").split(SEPARATORS).filter((word) => word !== "").map((word) => word.length > 1 && word === word.toUpperCase() ? word : word.toLowerCase());
|
|
3115
|
+
return words.length === 0 ? identifier : words.join(" ");
|
|
3116
|
+
}
|
|
3117
|
+
function displayTitle(identifier) {
|
|
3118
|
+
return capitalize(displayName(identifier));
|
|
3119
|
+
}
|
|
3120
|
+
const SEPARATORS = /[\s_-]+/u;
|
|
3121
|
+
function lastSegment(identifier) {
|
|
3122
|
+
return identifier.split("__").findLast((segment) => segment !== "") ?? identifier;
|
|
3123
|
+
}
|
|
3124
|
+
function capitalize(text) {
|
|
3125
|
+
return text.charAt(0).toUpperCase() + text.slice(1);
|
|
3126
|
+
}
|
|
3127
|
+
|
|
3084
3128
|
//#endregion
|
|
3085
3129
|
//#region src/client/message-action-parts.ts
|
|
3086
3130
|
function toMessageInputRequest(request) {
|
|
@@ -3097,6 +3141,7 @@ function createToolMetadata(descriptor, extra) {
|
|
|
3097
3141
|
return { eve: {
|
|
3098
3142
|
inputRequest: extra?.inputRequest,
|
|
3099
3143
|
kind: descriptor.kind,
|
|
3144
|
+
label: extra?.label,
|
|
3100
3145
|
name: descriptor.name
|
|
3101
3146
|
} };
|
|
3102
3147
|
}
|
|
@@ -3109,6 +3154,7 @@ function mergeToolMetadata(current, next) {
|
|
|
3109
3154
|
inputRequest: next.eve?.inputRequest ?? current?.eve?.inputRequest,
|
|
3110
3155
|
inputResponse: next.eve?.inputResponse ?? current?.eve?.inputResponse,
|
|
3111
3156
|
kind,
|
|
3157
|
+
label: next.eve?.label ?? current?.eve?.label,
|
|
3112
3158
|
name
|
|
3113
3159
|
} };
|
|
3114
3160
|
}
|
|
@@ -3118,7 +3164,7 @@ function normalizeActionRequest(action) {
|
|
|
3118
3164
|
case "load-skill": return {
|
|
3119
3165
|
kind: "load-skill",
|
|
3120
3166
|
name,
|
|
3121
|
-
toolName:
|
|
3167
|
+
toolName: SKILL_TOOL_NAME
|
|
3122
3168
|
};
|
|
3123
3169
|
case "tool-call":
|
|
3124
3170
|
case "workflow-tool-call": return {
|
|
@@ -3138,8 +3184,8 @@ function normalizeActionResult(result) {
|
|
|
3138
3184
|
switch (result.kind) {
|
|
3139
3185
|
case "load-skill-result": return {
|
|
3140
3186
|
kind: "load-skill",
|
|
3141
|
-
name: result.name
|
|
3142
|
-
toolName:
|
|
3187
|
+
name: result.name,
|
|
3188
|
+
toolName: SKILL_TOOL_NAME
|
|
3143
3189
|
};
|
|
3144
3190
|
case "tool-result": return {
|
|
3145
3191
|
kind: "tool-call",
|
|
@@ -3153,6 +3199,9 @@ function normalizeActionResult(result) {
|
|
|
3153
3199
|
};
|
|
3154
3200
|
}
|
|
3155
3201
|
}
|
|
3202
|
+
function settledLabel(current, label, descriptor) {
|
|
3203
|
+
return label ?? current?.eve?.label ?? displayTitle(descriptor.name);
|
|
3204
|
+
}
|
|
3156
3205
|
function stringifyUnknown(value) {
|
|
3157
3206
|
if (typeof value === "string") return value;
|
|
3158
3207
|
try {
|
|
@@ -3249,6 +3298,12 @@ function transition(message, input) {
|
|
|
3249
3298
|
}
|
|
3250
3299
|
const messageRun = { transition };
|
|
3251
3300
|
|
|
3301
|
+
//#endregion
|
|
3302
|
+
//#region src/shared/action-label.ts
|
|
3303
|
+
function actionLabel(action, presentation) {
|
|
3304
|
+
return presentation?.[action.callId]?.label ?? displayTitle(actionRequestName(action));
|
|
3305
|
+
}
|
|
3306
|
+
|
|
3252
3307
|
//#endregion
|
|
3253
3308
|
//#region src/client/tool-part-state.ts
|
|
3254
3309
|
function toolPartState(data, part) {
|
|
@@ -3446,7 +3501,7 @@ function reduceContent(data, event) {
|
|
|
3446
3501
|
state: "input-available",
|
|
3447
3502
|
stepIndex: event.data.stepIndex,
|
|
3448
3503
|
toolCallId: action.callId,
|
|
3449
|
-
toolMetadata: createToolMetadata(descriptor),
|
|
3504
|
+
toolMetadata: createToolMetadata(descriptor, { label: actionLabel(action, event.data.presentation) }),
|
|
3450
3505
|
toolName: descriptor.toolName,
|
|
3451
3506
|
type: "dynamic-tool"
|
|
3452
3507
|
}));
|
|
@@ -3466,7 +3521,10 @@ function reduceContent(data, event) {
|
|
|
3466
3521
|
state: "approval-requested",
|
|
3467
3522
|
stepIndex: existing?.stepIndex ?? event.data.stepIndex,
|
|
3468
3523
|
toolCallId: request.action.callId,
|
|
3469
|
-
toolMetadata: createToolMetadata(descriptor, {
|
|
3524
|
+
toolMetadata: createToolMetadata(descriptor, {
|
|
3525
|
+
inputRequest: toMessageInputRequest(request),
|
|
3526
|
+
label: existing?.toolMetadata?.eve?.label ?? actionLabel(request.action, void 0)
|
|
3527
|
+
}),
|
|
3470
3528
|
toolName: descriptor.toolName,
|
|
3471
3529
|
type: "dynamic-tool"
|
|
3472
3530
|
}));
|
|
@@ -3487,7 +3545,7 @@ function reduceContent(data, event) {
|
|
|
3487
3545
|
input: existing?.input,
|
|
3488
3546
|
stepIndex: existing?.stepIndex ?? event.data.stepIndex,
|
|
3489
3547
|
toolCallId: event.data.result.callId,
|
|
3490
|
-
toolMetadata: mergeToolMetadata(existing?.toolMetadata, createToolMetadata(descriptor)),
|
|
3548
|
+
toolMetadata: mergeToolMetadata(existing?.toolMetadata, createToolMetadata(descriptor, { label: settledLabel(existing?.toolMetadata, event.data.presentation?.[event.data.result.callId]?.label, descriptor) })),
|
|
3491
3549
|
toolName: existing?.toolName ?? descriptor.toolName,
|
|
3492
3550
|
type: "dynamic-tool"
|
|
3493
3551
|
};
|
|
@@ -3516,7 +3574,7 @@ function reduceContent(data, event) {
|
|
|
3516
3574
|
state: "output-available",
|
|
3517
3575
|
stepIndex: existing?.stepIndex ?? event.data.stepIndex,
|
|
3518
3576
|
toolCallId: event.data.result.callId,
|
|
3519
|
-
toolMetadata: mergeToolMetadata(existing?.toolMetadata, createToolMetadata(descriptor)),
|
|
3577
|
+
toolMetadata: mergeToolMetadata(existing?.toolMetadata, createToolMetadata(descriptor, { label: settledLabel(existing?.toolMetadata, event.data.presentation?.[event.data.result.callId]?.label, descriptor) })),
|
|
3520
3578
|
toolName: existing?.toolName ?? descriptor.toolName,
|
|
3521
3579
|
type: "dynamic-tool"
|
|
3522
3580
|
});
|
|
@@ -766,7 +766,7 @@ function settleCall(call, status, error) {
|
|
|
766
766
|
}
|
|
767
767
|
function actionName(action) {
|
|
768
768
|
switch (action.kind) {
|
|
769
|
-
case "load-skill": return
|
|
769
|
+
case "load-skill": return action.name;
|
|
770
770
|
case "subagent-call":
|
|
771
771
|
case "remote-agent-call": return action.name;
|
|
772
772
|
case "tool-call":
|
|
@@ -775,7 +775,7 @@ function actionName(action) {
|
|
|
775
775
|
}
|
|
776
776
|
function resultName(result) {
|
|
777
777
|
switch (result.kind) {
|
|
778
|
-
case "load-skill-result": return
|
|
778
|
+
case "load-skill-result": return result.name;
|
|
779
779
|
case "subagent-result": return result.subagentName;
|
|
780
780
|
default: return result.toolName;
|
|
781
781
|
}
|
|
@@ -1200,6 +1200,9 @@ function isFinalMessageCompleted(event) {
|
|
|
1200
1200
|
//#endregion
|
|
1201
1201
|
//#region src/protocol/message-version.ts
|
|
1202
1202
|
function normalizeMessageStreamEvent(version, event) {
|
|
1203
|
+
return nameSkillLoads(normalizeAppendEvent(version, event));
|
|
1204
|
+
}
|
|
1205
|
+
function normalizeAppendEvent(version, event) {
|
|
1203
1206
|
switch (version) {
|
|
1204
1207
|
case "21":
|
|
1205
1208
|
case "22":
|
|
@@ -1255,6 +1258,26 @@ function normalizeLegacyMessageStreamEvent(version, event) {
|
|
|
1255
1258
|
}
|
|
1256
1259
|
return event;
|
|
1257
1260
|
}
|
|
1261
|
+
function nameSkillLoads(event) {
|
|
1262
|
+
if (event.type !== "actions.requested" || !event.data.actions.some(isUnnamedSkillLoad)) return event;
|
|
1263
|
+
return {
|
|
1264
|
+
...event,
|
|
1265
|
+
data: {
|
|
1266
|
+
...event.data,
|
|
1267
|
+
actions: event.data.actions.map((action) => isUnnamedSkillLoad(action) ? {
|
|
1268
|
+
...action,
|
|
1269
|
+
name: releasedSkillName(action)
|
|
1270
|
+
} : action)
|
|
1271
|
+
}
|
|
1272
|
+
};
|
|
1273
|
+
}
|
|
1274
|
+
function isUnnamedSkillLoad(action) {
|
|
1275
|
+
return action.kind === "load-skill" && typeof Reflect.get(action, "name") !== "string";
|
|
1276
|
+
}
|
|
1277
|
+
function releasedSkillName(action) {
|
|
1278
|
+
const skill = action.input.skill;
|
|
1279
|
+
return typeof skill === "string" ? skill : "load_skill";
|
|
1280
|
+
}
|
|
1258
1281
|
function validateDeltaMessageStreamEvent(version, event) {
|
|
1259
1282
|
if (event.type === "message.appended") {
|
|
1260
1283
|
assertAppendDelta(event.data.messageDelta, "message", version);
|
|
@@ -3068,11 +3091,15 @@ function formatAuthorizationDisplayName(name) {
|
|
|
3068
3091
|
return `${name.charAt(0).toUpperCase()}${name.slice(1)}`;
|
|
3069
3092
|
}
|
|
3070
3093
|
|
|
3094
|
+
//#endregion
|
|
3095
|
+
//#region src/protocol/catalog-tools.ts
|
|
3096
|
+
const SKILL_TOOL_NAME = "eve__skill";
|
|
3097
|
+
|
|
3071
3098
|
//#endregion
|
|
3072
3099
|
//#region src/shared/action-request-name.ts
|
|
3073
3100
|
function actionRequestName(action) {
|
|
3074
3101
|
switch (action.kind) {
|
|
3075
|
-
case "load-skill": return
|
|
3102
|
+
case "load-skill": return action.name;
|
|
3076
3103
|
case "subagent-call": return action.subagentName;
|
|
3077
3104
|
case "remote-agent-call": return action.remoteAgentName;
|
|
3078
3105
|
case "tool-call":
|
|
@@ -3080,6 +3107,23 @@ function actionRequestName(action) {
|
|
|
3080
3107
|
}
|
|
3081
3108
|
}
|
|
3082
3109
|
|
|
3110
|
+
//#endregion
|
|
3111
|
+
//#region src/shared/display-name.ts
|
|
3112
|
+
function displayName(identifier) {
|
|
3113
|
+
const words = lastSegment(identifier).replace(/([a-z0-9])([A-Z])/gu, "$1 $2").replace(/([A-Z]+)([A-Z][a-z])/gu, "$1 $2").split(SEPARATORS).filter((word) => word !== "").map((word) => word.length > 1 && word === word.toUpperCase() ? word : word.toLowerCase());
|
|
3114
|
+
return words.length === 0 ? identifier : words.join(" ");
|
|
3115
|
+
}
|
|
3116
|
+
function displayTitle(identifier) {
|
|
3117
|
+
return capitalize(displayName(identifier));
|
|
3118
|
+
}
|
|
3119
|
+
const SEPARATORS = /[\s_-]+/u;
|
|
3120
|
+
function lastSegment(identifier) {
|
|
3121
|
+
return identifier.split("__").findLast((segment) => segment !== "") ?? identifier;
|
|
3122
|
+
}
|
|
3123
|
+
function capitalize(text) {
|
|
3124
|
+
return text.charAt(0).toUpperCase() + text.slice(1);
|
|
3125
|
+
}
|
|
3126
|
+
|
|
3083
3127
|
//#endregion
|
|
3084
3128
|
//#region src/client/message-action-parts.ts
|
|
3085
3129
|
function toMessageInputRequest(request) {
|
|
@@ -3096,6 +3140,7 @@ function createToolMetadata(descriptor, extra) {
|
|
|
3096
3140
|
return { eve: {
|
|
3097
3141
|
inputRequest: extra?.inputRequest,
|
|
3098
3142
|
kind: descriptor.kind,
|
|
3143
|
+
label: extra?.label,
|
|
3099
3144
|
name: descriptor.name
|
|
3100
3145
|
} };
|
|
3101
3146
|
}
|
|
@@ -3108,6 +3153,7 @@ function mergeToolMetadata(current, next) {
|
|
|
3108
3153
|
inputRequest: next.eve?.inputRequest ?? current?.eve?.inputRequest,
|
|
3109
3154
|
inputResponse: next.eve?.inputResponse ?? current?.eve?.inputResponse,
|
|
3110
3155
|
kind,
|
|
3156
|
+
label: next.eve?.label ?? current?.eve?.label,
|
|
3111
3157
|
name
|
|
3112
3158
|
} };
|
|
3113
3159
|
}
|
|
@@ -3117,7 +3163,7 @@ function normalizeActionRequest(action) {
|
|
|
3117
3163
|
case "load-skill": return {
|
|
3118
3164
|
kind: "load-skill",
|
|
3119
3165
|
name,
|
|
3120
|
-
toolName:
|
|
3166
|
+
toolName: SKILL_TOOL_NAME
|
|
3121
3167
|
};
|
|
3122
3168
|
case "tool-call":
|
|
3123
3169
|
case "workflow-tool-call": return {
|
|
@@ -3137,8 +3183,8 @@ function normalizeActionResult(result) {
|
|
|
3137
3183
|
switch (result.kind) {
|
|
3138
3184
|
case "load-skill-result": return {
|
|
3139
3185
|
kind: "load-skill",
|
|
3140
|
-
name: result.name
|
|
3141
|
-
toolName:
|
|
3186
|
+
name: result.name,
|
|
3187
|
+
toolName: SKILL_TOOL_NAME
|
|
3142
3188
|
};
|
|
3143
3189
|
case "tool-result": return {
|
|
3144
3190
|
kind: "tool-call",
|
|
@@ -3152,6 +3198,9 @@ function normalizeActionResult(result) {
|
|
|
3152
3198
|
};
|
|
3153
3199
|
}
|
|
3154
3200
|
}
|
|
3201
|
+
function settledLabel(current, label, descriptor) {
|
|
3202
|
+
return label ?? current?.eve?.label ?? displayTitle(descriptor.name);
|
|
3203
|
+
}
|
|
3155
3204
|
function stringifyUnknown(value) {
|
|
3156
3205
|
if (typeof value === "string") return value;
|
|
3157
3206
|
try {
|
|
@@ -3248,6 +3297,12 @@ function transition(message, input) {
|
|
|
3248
3297
|
}
|
|
3249
3298
|
const messageRun = { transition };
|
|
3250
3299
|
|
|
3300
|
+
//#endregion
|
|
3301
|
+
//#region src/shared/action-label.ts
|
|
3302
|
+
function actionLabel(action, presentation) {
|
|
3303
|
+
return presentation?.[action.callId]?.label ?? displayTitle(actionRequestName(action));
|
|
3304
|
+
}
|
|
3305
|
+
|
|
3251
3306
|
//#endregion
|
|
3252
3307
|
//#region src/client/tool-part-state.ts
|
|
3253
3308
|
function toolPartState(data, part) {
|
|
@@ -3445,7 +3500,7 @@ function reduceContent(data, event) {
|
|
|
3445
3500
|
state: "input-available",
|
|
3446
3501
|
stepIndex: event.data.stepIndex,
|
|
3447
3502
|
toolCallId: action.callId,
|
|
3448
|
-
toolMetadata: createToolMetadata(descriptor),
|
|
3503
|
+
toolMetadata: createToolMetadata(descriptor, { label: actionLabel(action, event.data.presentation) }),
|
|
3449
3504
|
toolName: descriptor.toolName,
|
|
3450
3505
|
type: "dynamic-tool"
|
|
3451
3506
|
}));
|
|
@@ -3465,7 +3520,10 @@ function reduceContent(data, event) {
|
|
|
3465
3520
|
state: "approval-requested",
|
|
3466
3521
|
stepIndex: existing?.stepIndex ?? event.data.stepIndex,
|
|
3467
3522
|
toolCallId: request.action.callId,
|
|
3468
|
-
toolMetadata: createToolMetadata(descriptor, {
|
|
3523
|
+
toolMetadata: createToolMetadata(descriptor, {
|
|
3524
|
+
inputRequest: toMessageInputRequest(request),
|
|
3525
|
+
label: existing?.toolMetadata?.eve?.label ?? actionLabel(request.action, void 0)
|
|
3526
|
+
}),
|
|
3469
3527
|
toolName: descriptor.toolName,
|
|
3470
3528
|
type: "dynamic-tool"
|
|
3471
3529
|
}));
|
|
@@ -3486,7 +3544,7 @@ function reduceContent(data, event) {
|
|
|
3486
3544
|
input: existing?.input,
|
|
3487
3545
|
stepIndex: existing?.stepIndex ?? event.data.stepIndex,
|
|
3488
3546
|
toolCallId: event.data.result.callId,
|
|
3489
|
-
toolMetadata: mergeToolMetadata(existing?.toolMetadata, createToolMetadata(descriptor)),
|
|
3547
|
+
toolMetadata: mergeToolMetadata(existing?.toolMetadata, createToolMetadata(descriptor, { label: settledLabel(existing?.toolMetadata, event.data.presentation?.[event.data.result.callId]?.label, descriptor) })),
|
|
3490
3548
|
toolName: existing?.toolName ?? descriptor.toolName,
|
|
3491
3549
|
type: "dynamic-tool"
|
|
3492
3550
|
};
|
|
@@ -3515,7 +3573,7 @@ function reduceContent(data, event) {
|
|
|
3515
3573
|
state: "output-available",
|
|
3516
3574
|
stepIndex: existing?.stepIndex ?? event.data.stepIndex,
|
|
3517
3575
|
toolCallId: event.data.result.callId,
|
|
3518
|
-
toolMetadata: mergeToolMetadata(existing?.toolMetadata, createToolMetadata(descriptor)),
|
|
3576
|
+
toolMetadata: mergeToolMetadata(existing?.toolMetadata, createToolMetadata(descriptor, { label: settledLabel(existing?.toolMetadata, event.data.presentation?.[event.data.result.callId]?.label, descriptor) })),
|
|
3519
3577
|
toolName: existing?.toolName ?? descriptor.toolName,
|
|
3520
3578
|
type: "dynamic-tool"
|
|
3521
3579
|
});
|
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Development environment files loaded by local CLI commands such as
|
|
3
|
-
* `eve dev`, `eve build`, and `eve eval`, ordered from highest to lowest
|
|
4
|
-
* precedence.
|
|
5
|
-
*/
|
|
6
|
-
export declare const DEVELOPMENT_ENV_FILE_NAMES: readonly [".env.development.local", ".env.local", ".env.development", ".env"];
|
|
7
1
|
export interface DevelopmentEnvironmentReload {
|
|
8
2
|
commit(): void;
|
|
9
3
|
rollback(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{join,resolve}from"node:path";import{findEveProjectRoot}from"#internal/eve-project-root.js";import{DEVELOPMENT_ENV_FILE_NAMES,readDevelopmentEnvironmentValues}from"#shared/development-env-files.js";import{MODEL_CONNECTION_ENV}from"#shared/model-helper.js";import{readProviderSettingsSync}from"#setup/provider-settings.js";const developmentEnvironmentLoaders=new Map;function getDevelopmentEnvironmentFilePaths(e){return DEVELOPMENT_ENV_FILE_NAMES.map(t=>join(getDevelopmentEnvironmentLoader(e).environmentRoot,t))}async function loadDevelopmentEnvironmentFiles(e){let t=resolve(e);getDevelopmentEnvironmentLoader(t,await findEveProjectRoot(t)).reload()}function stageDevelopmentEnvironmentFiles(e){return getDevelopmentEnvironmentLoader(e).stageReload()}function readDevelopmentEnvironmentHostValues(e){let t={},n=readDevelopmentEnvironmentValues(getDevelopmentEnvironmentLoader(e).environmentRoot),r=new Set(n.keys());for(let e of[...r].sort((e,t)=>e.localeCompare(t)))t[e]=process.env[e]??null;return t}function getDevelopmentEnvironmentLoader(e,t){let n=resolve(e),r=developmentEnvironmentLoaders.get(n);if(r!==void 0&&t===void 0)return r;let i=resolve(t??n);if(r?.environmentRoot===i)return r;let a=createDevelopmentEnvironmentLoader(n,i);return developmentEnvironmentLoaders.set(n,a),a}function createDevelopmentEnvironmentLoader(e,t){let n=new Set(Object.keys(process.env)),r=new Map,stageReload=()=>{let i=new Map(r),a=readDevelopmentEnvironmentValues(t),o=readProviderSettingsSync(e),s=new Set([...r.keys(),...a.keys(),MODEL_CONNECTION_ENV,`EVE_MODEL_TEAM`,`EVE_MODEL_TEAM_NAME`,`EVE_MODEL_KEY_SOURCE`]),c=new Map([...s].map(e=>[e,process.env[e]])),l=!1;o?process.env[MODEL_CONNECTION_ENV]=o.selected:delete process.env[MODEL_CONNECTION_ENV];let u=o?.keySource;return u?process.env.EVE_MODEL_KEY_SOURCE=u:delete process.env.EVE_MODEL_KEY_SOURCE,o?.teamId&&o.teamName?(process.env.EVE_MODEL_TEAM=o.teamId,process.env.EVE_MODEL_TEAM_NAME=o.teamName):(delete process.env.EVE_MODEL_TEAM,delete process.env.EVE_MODEL_TEAM_NAME),applyDevelopmentEnvironmentValues({managedValues:r,nextValues:a,protectedKeys:n}),{commit(){l=!0},rollback(){if(!l){l=!0,r.clear();for(let[e,t]of i)r.set(e,t);for(let[e,t]of c)t===void 0?delete process.env[e]:process.env[e]=t}}}};return{environmentRoot:t,reload(){stageReload().commit()},stageReload}}function applyDevelopmentEnvironmentValues(e){for(let[t,n]of e.managedValues)e.nextValues.has(t)||e.protectedKeys.has(t)||(process.env[t]===n&&delete process.env[t],e.managedValues.delete(t));for(let[t,n]of e.nextValues)e.protectedKeys.has(t)||(process.env[t]=n,e.managedValues.set(t,n))}export{getDevelopmentEnvironmentFilePaths,loadDevelopmentEnvironmentFiles,readDevelopmentEnvironmentHostValues,stageDevelopmentEnvironmentFiles};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{failureKey,formatFailureDetail,formatFailureHint,formatFailureMessage}from"./errors.js";import{
|
|
1
|
+
import{failureKey,formatFailureDetail,formatFailureHint,formatFailureMessage}from"./errors.js";import{stripAnsi}from"#cli/ui/terminal-text.js";import{isTaskRetryRefusal}from"#protocol/task-tools.js";const tuiSessionReducer={initial:()=>({usage:{inputTokens:0,outputTokens:0},failures:[],sessionFailed:!1,turnFailureKeys:[],toolLabels:{},withdrawnCallIds:[]}),reduce(e,t){switch(t.type){case`actions.requested`:{let n=t.data.presentation;if(n===void 0)return e;let r={...e.toolLabels};for(let e of t.data.actions){let t=n[e.callId]?.label;t!==void 0&&(r[e.callId]={start:t})}return{...e,toolLabels:r}}case`action.result`:{let{callId:n}=t.data.result;if(isTaskRetryRefusal(t))return{...e,withdrawnCallIds:[...e.withdrawnCallIds,n]};let r=t.data.presentation?.[n]?.label;if(r===void 0)return e;let i={...e.toolLabels,[n]:{...e.toolLabels[n],complete:r}};return{...e,toolLabels:i}}case`turn.started`:{let{turnId:n}=t.data;if(e.turnFailureKeys.length===0&&n===e.modelTurnId)return e;let{modelId:r,...i}=e;return n===e.modelTurnId?{...e,turnFailureKeys:[]}:{...i,modelTurnId:n,turnFailureKeys:[]}}case`step.started`:{let n=stripAnsi(t.data.modelId.slice(0,256)).replace(/\s+/gu,` `).trim()||void 0;if(n===e.modelId)return e;let{modelId:r,...i}=e,a=t.data.turnId;return n===void 0?{...i,modelTurnId:a}:{...i,modelId:n,modelTurnId:a}}case`step.completed`:{let n=t.data.usage;return n===void 0?e:{...e,lastStepUsage:n,usage:{inputTokens:e.usage.inputTokens+(n.inputTokens??0),outputTokens:e.usage.outputTokens+(n.outputTokens??0)}}}case`step.failed`:case`turn.failed`:case`session.failed`:{let n=failureKey(t),r=e.sessionFailed||t.type===`session.failed`;return e.turnFailureKeys.includes(n)?{...e,sessionFailed:r}:{...e,failures:[...e.failures,t],sessionFailed:r,turnFailureKeys:[...e.turnFailureKeys,n]}}default:return e}}};function conversationView(e,t){return{conversation:e.conversation,working:isWorking(e.status),data:e.data,failures:e.data.failures.map(e=>{let n={message:formatFailureMessage(e)},r=t?.(e)??formatFailureHint(e);r!==void 0&&(n.hint=r);let i=formatFailureDetail(e);return i!==void 0&&(n.detail=i),n})}}function isWorking(e){return e===`submitted`||e===`streaming`||e===`resuming`}export{conversationView,isWorking,tuiSessionReducer};
|