@evalops/maestro 0.10.17 → 0.10.20
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/README.md +56 -1
- package/dist/agent/action-approval.d.ts +12 -2
- package/dist/agent/action-approval.d.ts.map +1 -1
- package/dist/agent/action-approval.js +19 -32
- package/dist/agent/action-approval.js.map +1 -1
- package/dist/agent/agent.d.ts +1 -0
- package/dist/agent/agent.d.ts.map +1 -1
- package/dist/agent/agent.js +26 -0
- package/dist/agent/agent.js.map +1 -1
- package/dist/agent/compaction.d.ts +2 -0
- package/dist/agent/compaction.d.ts.map +1 -1
- package/dist/agent/compaction.js +4 -2
- package/dist/agent/compaction.js.map +1 -1
- package/dist/agent/index.d.ts +1 -1
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/index.js +1 -1
- package/dist/agent/index.js.map +1 -1
- package/dist/agent/modes.d.ts +56 -4
- package/dist/agent/modes.d.ts.map +1 -1
- package/dist/agent/modes.js +163 -2
- package/dist/agent/modes.js.map +1 -1
- package/dist/agent/prompt-recovery.d.ts.map +1 -1
- package/dist/agent/prompt-recovery.js +1 -3
- package/dist/agent/prompt-recovery.js.map +1 -1
- package/dist/agent/providers/anthropic.d.ts.map +1 -1
- package/dist/agent/providers/anthropic.js +9 -1
- package/dist/agent/providers/anthropic.js.map +1 -1
- package/dist/agent/providers/codex-app-server.d.ts +12 -0
- package/dist/agent/providers/codex-app-server.d.ts.map +1 -0
- package/dist/agent/providers/codex-app-server.js +788 -0
- package/dist/agent/providers/codex-app-server.js.map +1 -0
- package/dist/agent/providers/google-gemini-cli.js +14 -3
- package/dist/agent/providers/google.js +22 -3
- package/dist/agent/providers/scripted.d.ts +11 -0
- package/dist/agent/providers/scripted.d.ts.map +1 -0
- package/dist/agent/providers/scripted.js +399 -0
- package/dist/agent/providers/scripted.js.map +1 -0
- package/dist/agent/providers/vertex.js +14 -3
- package/dist/agent/scenario-source.d.ts +19 -0
- package/dist/agent/scenario-source.d.ts.map +1 -0
- package/dist/agent/scenario-source.js +112 -0
- package/dist/agent/scenario-source.js.map +1 -0
- package/dist/agent/subagent-specs.d.ts +1 -1
- package/dist/agent/subagent-specs.js +1 -1
- package/dist/agent/subagent-specs.js.map +1 -1
- package/dist/agent/swarm/executor.d.ts +25 -0
- package/dist/agent/swarm/executor.d.ts.map +1 -1
- package/dist/agent/swarm/executor.js +795 -20
- package/dist/agent/swarm/executor.js.map +1 -1
- package/dist/agent/swarm/runtime-events.d.ts +11 -0
- package/dist/agent/swarm/runtime-events.d.ts.map +1 -0
- package/dist/agent/swarm/runtime-events.js +26 -0
- package/dist/agent/swarm/runtime-events.js.map +1 -0
- package/dist/agent/swarm/types.d.ts +78 -0
- package/dist/agent/swarm/types.d.ts.map +1 -1
- package/dist/agent/swarm/types.js.map +1 -1
- package/dist/agent/tracing.d.ts +1 -1
- package/dist/agent/tracing.d.ts.map +1 -1
- package/dist/agent/tracing.js +17 -9
- package/dist/agent/tracing.js.map +1 -1
- package/dist/agent/transport/create-provider-stream.d.ts.map +1 -1
- package/dist/agent/transport/create-provider-stream.js +14 -0
- package/dist/agent/transport/create-provider-stream.js.map +1 -1
- package/dist/agent/transport/stable-stringify.d.ts +2 -0
- package/dist/agent/transport/stable-stringify.d.ts.map +1 -0
- package/dist/agent/transport/stable-stringify.js +14 -0
- package/dist/agent/transport/stable-stringify.js.map +1 -0
- package/dist/agent/transport/tool-execution-bridge.d.ts.map +1 -1
- package/dist/agent/transport/tool-execution-bridge.js +2 -15
- package/dist/agent/transport/tool-execution-bridge.js.map +1 -1
- package/dist/agent/transport/tool-safety-pipeline.d.ts +5 -1
- package/dist/agent/transport/tool-safety-pipeline.d.ts.map +1 -1
- package/dist/agent/transport/tool-safety-pipeline.js +184 -36
- package/dist/agent/transport/tool-safety-pipeline.js.map +1 -1
- package/dist/agent/transport.d.ts +8 -0
- package/dist/agent/transport.d.ts.map +1 -1
- package/dist/agent/transport.js +1613 -68
- package/dist/agent/transport.js.map +1 -1
- package/dist/agent/types.d.ts +170 -2
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js.map +1 -1
- package/dist/api/enterprise-routes.d.ts.map +1 -1
- package/dist/api/enterprise-routes.js +34 -3
- package/dist/api/enterprise-routes.js.map +1 -1
- package/dist/app-server/in-process-client.d.ts +32 -0
- package/dist/app-server/in-process-client.d.ts.map +1 -0
- package/dist/app-server/in-process-client.js +73 -0
- package/dist/app-server/in-process-client.js.map +1 -0
- package/dist/app-server/session-api.d.ts +36 -0
- package/dist/app-server/session-api.d.ts.map +1 -0
- package/dist/app-server/session-api.js +713 -0
- package/dist/app-server/session-api.js.map +1 -0
- package/dist/approvals/platform-action-approval.d.ts +3 -1
- package/dist/approvals/platform-action-approval.d.ts.map +1 -1
- package/dist/approvals/platform-action-approval.js +16 -9
- package/dist/approvals/platform-action-approval.js.map +1 -1
- package/dist/approvals/service-client.d.ts.map +1 -1
- package/dist/approvals/service-client.js +7 -7
- package/dist/approvals/service-client.js.map +1 -1
- package/dist/audit/logger.d.ts +4 -4
- package/dist/bootstrap/agent-creation-setup.d.ts +4 -0
- package/dist/bootstrap/agent-creation-setup.d.ts.map +1 -1
- package/dist/bootstrap/agent-creation-setup.js +3 -1
- package/dist/bootstrap/agent-creation-setup.js.map +1 -1
- package/dist/bootstrap/auth-setup.js +1 -1
- package/dist/bootstrap/auth-setup.js.map +1 -1
- package/dist/bootstrap/event-subscriptions-setup.d.ts +6 -0
- package/dist/bootstrap/event-subscriptions-setup.d.ts.map +1 -1
- package/dist/bootstrap/event-subscriptions-setup.js +26 -2
- package/dist/bootstrap/event-subscriptions-setup.js.map +1 -1
- package/dist/bootstrap/model-resolution-setup.d.ts.map +1 -1
- package/dist/bootstrap/model-resolution-setup.js +4 -1
- package/dist/bootstrap/model-resolution-setup.js.map +1 -1
- package/dist/bootstrap/tools-setup.d.ts +2 -1
- package/dist/bootstrap/tools-setup.d.ts.map +1 -1
- package/dist/bootstrap/tools-setup.js +5 -1
- package/dist/bootstrap/tools-setup.js.map +1 -1
- package/dist/cli/args.d.ts +9 -1
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +130 -5
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/commands/a2a.d.ts +9 -0
- package/dist/cli/commands/a2a.d.ts.map +1 -0
- package/dist/cli/commands/a2a.js +1714 -0
- package/dist/cli/commands/a2a.js.map +1 -0
- package/dist/cli/commands/agents.d.ts +16 -2
- package/dist/cli/commands/agents.d.ts.map +1 -1
- package/dist/cli/commands/agents.js +223 -35
- package/dist/cli/commands/agents.js.map +1 -1
- package/dist/cli/commands/codex.d.ts +1 -1
- package/dist/cli/commands/codex.d.ts.map +1 -1
- package/dist/cli/commands/codex.js +145 -39
- package/dist/cli/commands/codex.js.map +1 -1
- package/dist/cli/commands/context.d.ts +10 -0
- package/dist/cli/commands/context.d.ts.map +1 -0
- package/dist/cli/commands/context.js +176 -0
- package/dist/cli/commands/context.js.map +1 -0
- package/dist/cli/commands/hosted-runner.d.ts +1 -0
- package/dist/cli/commands/hosted-runner.d.ts.map +1 -1
- package/dist/cli/commands/hosted-runner.js +9 -1
- package/dist/cli/commands/hosted-runner.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +6 -0
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/modes.d.ts +8 -0
- package/dist/cli/commands/modes.d.ts.map +1 -0
- package/dist/cli/commands/modes.js +151 -0
- package/dist/cli/commands/modes.js.map +1 -0
- package/dist/cli/commands/operating-plane.d.ts +14 -0
- package/dist/cli/commands/operating-plane.d.ts.map +1 -0
- package/dist/cli/commands/operating-plane.js +160 -0
- package/dist/cli/commands/operating-plane.js.map +1 -0
- package/dist/cli/commands/run.d.ts +87 -0
- package/dist/cli/commands/run.d.ts.map +1 -0
- package/dist/cli/commands/run.js +356 -0
- package/dist/cli/commands/run.js.map +1 -0
- package/dist/cli/commands/scenario.d.ts +7 -0
- package/dist/cli/commands/scenario.d.ts.map +1 -0
- package/dist/cli/commands/scenario.js +195 -0
- package/dist/cli/commands/scenario.js.map +1 -0
- package/dist/cli/commands/skill.d.ts +7 -0
- package/dist/cli/commands/skill.d.ts.map +1 -0
- package/dist/cli/commands/skill.js +286 -0
- package/dist/cli/commands/skill.js.map +1 -0
- package/dist/cli/headless-protocol.d.ts +55 -1
- package/dist/cli/headless-protocol.d.ts.map +1 -1
- package/dist/cli/headless-protocol.js +446 -7
- package/dist/cli/headless-protocol.js.map +1 -1
- package/dist/cli/headless-runtime-selection.d.ts +38 -0
- package/dist/cli/headless-runtime-selection.d.ts.map +1 -0
- package/dist/cli/headless-runtime-selection.js +48 -0
- package/dist/cli/headless-runtime-selection.js.map +1 -0
- package/dist/cli/headless.d.ts +5 -1
- package/dist/cli/headless.d.ts.map +1 -1
- package/dist/cli/headless.js +11 -1
- package/dist/cli/headless.js.map +1 -1
- package/dist/cli/help.d.ts +3 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +136 -30
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/system-prompt.d.ts +22 -4
- package/dist/cli/system-prompt.d.ts.map +1 -1
- package/dist/cli/system-prompt.js +224 -127
- package/dist/cli/system-prompt.js.map +1 -1
- package/dist/cli-tui/commands/a2a-handlers.d.ts +7 -0
- package/dist/cli-tui/commands/a2a-handlers.d.ts.map +1 -0
- package/dist/cli-tui/commands/a2a-handlers.js +160 -0
- package/dist/cli-tui/commands/a2a-handlers.js.map +1 -0
- package/dist/cli-tui/commands/command-catalog.d.ts.map +1 -1
- package/dist/cli-tui/commands/command-catalog.js +15 -0
- package/dist/cli-tui/commands/command-catalog.js.map +1 -1
- package/dist/cli-tui/commands/command-registry-adapter.js +10 -1
- package/dist/cli-tui/commands/command-registry-adapter.js.map +1 -1
- package/dist/cli-tui/commands/handlers/mode-handler.d.ts.map +1 -1
- package/dist/cli-tui/commands/handlers/mode-handler.js +22 -10
- package/dist/cli-tui/commands/handlers/mode-handler.js.map +1 -1
- package/dist/cli-tui/commands/mcp-handlers.d.ts.map +1 -1
- package/dist/cli-tui/commands/mcp-handlers.js +6 -5
- package/dist/cli-tui/commands/mcp-handlers.js.map +1 -1
- package/dist/cli-tui/commands/types.d.ts +1 -0
- package/dist/cli-tui/commands/types.d.ts.map +1 -1
- package/dist/cli-tui/commands/types.js.map +1 -1
- package/dist/cli-tui/commands/utility-handlers.d.ts +4 -0
- package/dist/cli-tui/commands/utility-handlers.d.ts.map +1 -1
- package/dist/cli-tui/commands/utility-handlers.js +45 -6
- package/dist/cli-tui/commands/utility-handlers.js.map +1 -1
- package/dist/cli-tui/run/run-shell-command.d.ts.map +1 -1
- package/dist/cli-tui/run/run-shell-command.js +14 -5
- package/dist/cli-tui/run/run-shell-command.js.map +1 -1
- package/dist/cli-tui/run/streaming-shell-command.d.ts.map +1 -1
- package/dist/cli-tui/run/streaming-shell-command.js +14 -5
- package/dist/cli-tui/run/streaming-shell-command.js.map +1 -1
- package/dist/cli-tui/selectors/model-selector.d.ts +1 -0
- package/dist/cli-tui/selectors/model-selector.d.ts.map +1 -1
- package/dist/cli-tui/selectors/model-selector.js +6 -2
- package/dist/cli-tui/selectors/model-selector.js.map +1 -1
- package/dist/cli-tui/tui-renderer/command-registry-options.d.ts.map +1 -1
- package/dist/cli-tui/tui-renderer/command-registry-options.js +5 -0
- package/dist/cli-tui/tui-renderer/command-registry-options.js.map +1 -1
- package/dist/cli-tui/utils/commands/review-prompt.d.ts +1 -1
- package/dist/cli-tui/utils/commands/review-prompt.d.ts.map +1 -1
- package/dist/cli-tui/utils/commands/review-prompt.js +8 -3
- package/dist/cli-tui/utils/commands/review-prompt.js.map +1 -1
- package/dist/cli-tui/utils/runtime-badges.d.ts +1 -0
- package/dist/cli-tui/utils/runtime-badges.d.ts.map +1 -1
- package/dist/cli-tui/utils/runtime-badges.js +7 -0
- package/dist/cli-tui/utils/runtime-badges.js.map +1 -1
- package/dist/cli-tui/utils/text-formatting.d.ts +1 -0
- package/dist/cli-tui/utils/text-formatting.d.ts.map +1 -1
- package/dist/cli-tui/utils/text-formatting.js +5 -0
- package/dist/cli-tui/utils/text-formatting.js.map +1 -1
- package/dist/cli.js +49209 -26165
- package/dist/cli.js.map +1 -1
- package/dist/codex/app-server-client.d.ts +139 -0
- package/dist/codex/app-server-client.d.ts.map +1 -0
- package/dist/codex/app-server-client.js +352 -0
- package/dist/codex/app-server-client.js.map +1 -0
- package/dist/codex/compatibility.d.ts +48 -0
- package/dist/codex/compatibility.d.ts.map +1 -0
- package/dist/codex/compatibility.js +344 -0
- package/dist/codex/compatibility.js.map +1 -0
- package/dist/codex/subagent-dispatch-table.d.ts +66 -0
- package/dist/codex/subagent-dispatch-table.d.ts.map +1 -0
- package/dist/codex/subagent-dispatch-table.js +127 -0
- package/dist/codex/subagent-dispatch-table.js.map +1 -0
- package/dist/codex/subagent-workgraph.d.ts +56 -0
- package/dist/codex/subagent-workgraph.d.ts.map +1 -0
- package/dist/codex/subagent-workgraph.js +89 -0
- package/dist/codex/subagent-workgraph.js.map +1 -0
- package/dist/config/constants.d.ts +3 -1
- package/dist/config/constants.d.ts.map +1 -1
- package/dist/config/constants.js +9 -0
- package/dist/config/constants.js.map +1 -1
- package/dist/config/feature-flags.d.ts +10 -1
- package/dist/config/feature-flags.d.ts.map +1 -1
- package/dist/config/feature-flags.js +17 -6
- package/dist/config/feature-flags.js.map +1 -1
- package/dist/config/index.d.ts +1 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +1 -1
- package/dist/config/index.js.map +1 -1
- package/dist/config/toml-config.d.ts +32 -0
- package/dist/config/toml-config.d.ts.map +1 -1
- package/dist/config/toml-config.js +152 -43
- package/dist/config/toml-config.js.map +1 -1
- package/dist/connectors/service-client.d.ts.map +1 -1
- package/dist/connectors/service-client.js +4 -7
- package/dist/connectors/service-client.js.map +1 -1
- package/dist/context/manifest-types.d.ts +59 -0
- package/dist/context/manifest-types.d.ts.map +1 -0
- package/dist/context/manifest-types.js +2 -0
- package/dist/context/manifest-types.js.map +1 -0
- package/dist/context/manifest.d.ts +16 -0
- package/dist/context/manifest.d.ts.map +1 -0
- package/dist/context/manifest.js +503 -0
- package/dist/context/manifest.js.map +1 -0
- package/dist/db/schema.d.ts +10 -1
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js.map +1 -1
- package/dist/evalops/agent-bootstrap.d.ts +1 -0
- package/dist/evalops/agent-bootstrap.d.ts.map +1 -1
- package/dist/evalops/agent-bootstrap.js +41 -1
- package/dist/evalops/agent-bootstrap.js.map +1 -1
- package/dist/evalops/env-aliases.d.ts +13 -0
- package/dist/evalops/env-aliases.d.ts.map +1 -0
- package/dist/evalops/env-aliases.js +60 -0
- package/dist/evalops/env-aliases.js.map +1 -0
- package/dist/evalops/managed-context.d.ts.map +1 -1
- package/dist/evalops/managed-context.js +28 -62
- package/dist/evalops/managed-context.js.map +1 -1
- package/dist/guardian/config.d.ts.map +1 -1
- package/dist/guardian/config.js +1 -0
- package/dist/guardian/config.js.map +1 -1
- package/dist/guardian/runner.d.ts +2 -0
- package/dist/guardian/runner.d.ts.map +1 -1
- package/dist/guardian/runner.js +105 -2
- package/dist/guardian/runner.js.map +1 -1
- package/dist/guardian/types.d.ts +1 -0
- package/dist/guardian/types.d.ts.map +1 -1
- package/dist/guardian/types.js.map +1 -1
- package/dist/index.d.ts +6 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +267 -55
- package/dist/main.js.map +1 -1
- package/dist/mcp/config.d.ts.map +1 -1
- package/dist/mcp/config.js +89 -7
- package/dist/mcp/config.js.map +1 -1
- package/dist/mcp/manager.d.ts +5 -1
- package/dist/mcp/manager.d.ts.map +1 -1
- package/dist/mcp/manager.js +159 -4
- package/dist/mcp/manager.js.map +1 -1
- package/dist/mcp/platform-plugin.d.ts.map +1 -1
- package/dist/mcp/platform-plugin.js +9 -26
- package/dist/mcp/platform-plugin.js.map +1 -1
- package/dist/mcp/schema.d.ts +15 -0
- package/dist/mcp/schema.d.ts.map +1 -1
- package/dist/mcp/schema.js +24 -0
- package/dist/mcp/schema.js.map +1 -1
- package/dist/mcp/tool-bridge.d.ts +39 -10
- package/dist/mcp/tool-bridge.d.ts.map +1 -1
- package/dist/mcp/tool-bridge.js +101 -24
- package/dist/mcp/tool-bridge.js.map +1 -1
- package/dist/mcp/types.d.ts +27 -0
- package/dist/mcp/types.d.ts.map +1 -1
- package/dist/mcp/types.js.map +1 -1
- package/dist/mcp/workspace-trust.d.ts +10 -0
- package/dist/mcp/workspace-trust.d.ts.map +1 -0
- package/dist/mcp/workspace-trust.js +295 -0
- package/dist/mcp/workspace-trust.js.map +1 -0
- package/dist/memory/service-client.d.ts +1 -0
- package/dist/memory/service-client.d.ts.map +1 -1
- package/dist/memory/service-client.js +194 -9
- package/dist/memory/service-client.js.map +1 -1
- package/dist/models/builtin.d.ts.map +1 -1
- package/dist/models/builtin.js +66 -25
- package/dist/models/builtin.js.map +1 -1
- package/dist/models/config-loader.d.ts +10 -10
- package/dist/models/config-loader.d.ts.map +1 -1
- package/dist/models/config-loader.js +2 -0
- package/dist/models/config-loader.js.map +1 -1
- package/dist/models/registry.d.ts +1 -0
- package/dist/models/registry.d.ts.map +1 -1
- package/dist/models/registry.js +1 -0
- package/dist/models/registry.js.map +1 -1
- package/dist/oauth/device-identity.d.ts.map +1 -1
- package/dist/oauth/device-identity.js +1 -3
- package/dist/oauth/device-identity.js.map +1 -1
- package/dist/oauth/evalops.d.ts.map +1 -1
- package/dist/oauth/evalops.js +2 -5
- package/dist/oauth/evalops.js.map +1 -1
- package/dist/opentelemetry.d.ts.map +1 -1
- package/dist/opentelemetry.js +12 -12
- package/dist/opentelemetry.js.map +1 -1
- package/dist/package-version.d.ts +2 -0
- package/dist/package-version.d.ts.map +1 -0
- package/dist/package-version.js +11 -0
- package/dist/package-version.js.map +1 -0
- package/dist/packages/constants.d.ts +3 -0
- package/dist/packages/constants.d.ts.map +1 -0
- package/dist/packages/constants.js +3 -0
- package/dist/packages/constants.js.map +1 -0
- package/dist/packages/inspection.d.ts.map +1 -1
- package/dist/packages/inspection.js +2 -1
- package/dist/packages/inspection.js.map +1 -1
- package/dist/packages/search.d.ts.map +1 -1
- package/dist/packages/search.js +1 -1
- package/dist/packages/search.js.map +1 -1
- package/dist/platform/a2a-capability-market.d.ts +21 -0
- package/dist/platform/a2a-capability-market.d.ts.map +1 -0
- package/dist/platform/a2a-capability-market.js +176 -0
- package/dist/platform/a2a-capability-market.js.map +1 -0
- package/dist/platform/a2a-client.d.ts +217 -0
- package/dist/platform/a2a-client.d.ts.map +1 -0
- package/dist/platform/a2a-client.js +589 -0
- package/dist/platform/a2a-client.js.map +1 -0
- package/dist/platform/a2a-fleet.d.ts +41 -0
- package/dist/platform/a2a-fleet.d.ts.map +1 -0
- package/dist/platform/a2a-fleet.js +109 -0
- package/dist/platform/a2a-fleet.js.map +1 -0
- package/dist/platform/a2a-maestro-peer.d.ts +20 -0
- package/dist/platform/a2a-maestro-peer.d.ts.map +1 -0
- package/dist/platform/a2a-maestro-peer.js +176 -0
- package/dist/platform/a2a-maestro-peer.js.map +1 -0
- package/dist/platform/a2a-peer-pairing.d.ts +107 -0
- package/dist/platform/a2a-peer-pairing.d.ts.map +1 -0
- package/dist/platform/a2a-peer-pairing.js +489 -0
- package/dist/platform/a2a-peer-pairing.js.map +1 -0
- package/dist/platform/a2a-peer-registry.d.ts +68 -0
- package/dist/platform/a2a-peer-registry.d.ts.map +1 -0
- package/dist/platform/a2a-peer-registry.js +320 -0
- package/dist/platform/a2a-peer-registry.js.map +1 -0
- package/dist/platform/a2a-task-ledger.d.ts +86 -0
- package/dist/platform/a2a-task-ledger.d.ts.map +1 -0
- package/dist/platform/a2a-task-ledger.js +546 -0
- package/dist/platform/a2a-task-ledger.js.map +1 -0
- package/dist/platform/a2a-work-graph.d.ts +43 -0
- package/dist/platform/a2a-work-graph.d.ts.map +1 -0
- package/dist/platform/a2a-work-graph.js +267 -0
- package/dist/platform/a2a-work-graph.js.map +1 -0
- package/dist/platform/agent-registry-client.d.ts +327 -0
- package/dist/platform/agent-registry-client.d.ts.map +1 -0
- package/dist/platform/agent-registry-client.js +803 -0
- package/dist/platform/agent-registry-client.js.map +1 -0
- package/dist/platform/agent-runtime-client.d.ts +135 -1
- package/dist/platform/agent-runtime-client.d.ts.map +1 -1
- package/dist/platform/agent-runtime-client.js +467 -10
- package/dist/platform/agent-runtime-client.js.map +1 -1
- package/dist/platform/cerebro-facts-client.d.ts.map +1 -1
- package/dist/platform/cerebro-facts-client.js +4 -7
- package/dist/platform/cerebro-facts-client.js.map +1 -1
- package/dist/platform/client.d.ts +2 -0
- package/dist/platform/client.d.ts.map +1 -1
- package/dist/platform/client.js +7 -14
- package/dist/platform/client.js.map +1 -1
- package/dist/platform/core-services.d.ts +68 -0
- package/dist/platform/core-services.d.ts.map +1 -1
- package/dist/platform/core-services.js +68 -0
- package/dist/platform/core-services.js.map +1 -1
- package/dist/platform/fermata-eval-client.d.ts +195 -0
- package/dist/platform/fermata-eval-client.d.ts.map +1 -0
- package/dist/platform/fermata-eval-client.js +146 -0
- package/dist/platform/fermata-eval-client.js.map +1 -0
- package/dist/platform/fermata-scenario-suite.d.ts +99 -0
- package/dist/platform/fermata-scenario-suite.d.ts.map +1 -0
- package/dist/platform/fermata-scenario-suite.js +459 -0
- package/dist/platform/fermata-scenario-suite.js.map +1 -0
- package/dist/platform/maestro-timeline-client.d.ts.map +1 -1
- package/dist/platform/maestro-timeline-client.js +5 -11
- package/dist/platform/maestro-timeline-client.js.map +1 -1
- package/dist/platform/operating-plane-client.d.ts +156 -0
- package/dist/platform/operating-plane-client.d.ts.map +1 -0
- package/dist/platform/operating-plane-client.js +131 -0
- package/dist/platform/operating-plane-client.js.map +1 -0
- package/dist/platform/operating-plane-summary.d.ts +47 -0
- package/dist/platform/operating-plane-summary.d.ts.map +1 -0
- package/dist/platform/operating-plane-summary.js +209 -0
- package/dist/platform/operating-plane-summary.js.map +1 -0
- package/dist/platform/tool-execution-client.d.ts.map +1 -1
- package/dist/platform/tool-execution-client.js +4 -11
- package/dist/platform/tool-execution-client.js.map +1 -1
- package/dist/prompts/service-client.d.ts.map +1 -1
- package/dist/prompts/service-client.js +3 -5
- package/dist/prompts/service-client.js.map +1 -1
- package/dist/prompts/system-prompt.d.ts +3 -0
- package/dist/prompts/system-prompt.d.ts.map +1 -1
- package/dist/prompts/system-prompt.js +13 -3
- package/dist/prompts/system-prompt.js.map +1 -1
- package/dist/prompts/types.d.ts +2 -0
- package/dist/prompts/types.d.ts.map +1 -1
- package/dist/prompts/types.js.map +1 -1
- package/dist/providers/api-keys.d.ts +1 -1
- package/dist/providers/api-keys.d.ts.map +1 -1
- package/dist/providers/api-keys.js +2 -1
- package/dist/providers/api-keys.js.map +1 -1
- package/dist/providers/auth.d.ts.map +1 -1
- package/dist/providers/auth.js +48 -25
- package/dist/providers/auth.js.map +1 -1
- package/dist/remote-runner/attach-client.d.ts.map +1 -1
- package/dist/remote-runner/attach-client.js +1 -0
- package/dist/remote-runner/attach-client.js.map +1 -1
- package/dist/remote-runner/client.d.ts.map +1 -1
- package/dist/remote-runner/client.js +4 -7
- package/dist/remote-runner/client.js.map +1 -1
- package/dist/rpc/rpc-types.d.ts.map +1 -1
- package/dist/rpc/rpc-types.js +1 -0
- package/dist/rpc/rpc-types.js.map +1 -1
- package/dist/safety/action-firewall.d.ts.map +1 -1
- package/dist/safety/action-firewall.js +69 -6
- package/dist/safety/action-firewall.js.map +1 -1
- package/dist/safety/attack-patterns.d.ts.map +1 -1
- package/dist/safety/attack-patterns.js +31 -14
- package/dist/safety/attack-patterns.js.map +1 -1
- package/dist/safety/bash-parser.d.ts.map +1 -1
- package/dist/safety/bash-parser.js +4 -3
- package/dist/safety/bash-parser.js.map +1 -1
- package/dist/safety/execpolicy.d.ts +15 -3
- package/dist/safety/execpolicy.d.ts.map +1 -1
- package/dist/safety/execpolicy.js +248 -37
- package/dist/safety/execpolicy.js.map +1 -1
- package/dist/safety/governance-service-client.d.ts.map +1 -1
- package/dist/safety/governance-service-client.js +4 -7
- package/dist/safety/governance-service-client.js.map +1 -1
- package/dist/safety/guarded-files.d.ts +34 -0
- package/dist/safety/guarded-files.d.ts.map +1 -0
- package/dist/safety/guarded-files.js +372 -0
- package/dist/safety/guarded-files.js.map +1 -0
- package/dist/safety/loop-detector.d.ts.map +1 -1
- package/dist/safety/loop-detector.js +6 -1
- package/dist/safety/loop-detector.js.map +1 -1
- package/dist/safety/permission-profile.d.ts +47 -0
- package/dist/safety/permission-profile.d.ts.map +1 -0
- package/dist/safety/permission-profile.js +349 -0
- package/dist/safety/permission-profile.js.map +1 -0
- package/dist/safety/safety-middleware.d.ts +5 -1
- package/dist/safety/safety-middleware.d.ts.map +1 -1
- package/dist/safety/safety-middleware.js +3 -2
- package/dist/safety/safety-middleware.js.map +1 -1
- package/dist/safety/suspicious-patterns.d.ts.map +1 -1
- package/dist/safety/suspicious-patterns.js +12 -7
- package/dist/safety/suspicious-patterns.js.map +1 -1
- package/dist/safety/tool-categorization.js +1 -1
- package/dist/safety/tool-categorization.js.map +1 -1
- package/dist/safety/validators/path-policy-validator.d.ts.map +1 -1
- package/dist/safety/validators/path-policy-validator.js +7 -0
- package/dist/safety/validators/path-policy-validator.js.map +1 -1
- package/dist/sandbox/index.d.ts +6 -1
- package/dist/sandbox/index.d.ts.map +1 -1
- package/dist/sandbox/index.js +30 -4
- package/dist/sandbox/index.js.map +1 -1
- package/dist/sandbox/native-sandbox.d.ts +3 -0
- package/dist/sandbox/native-sandbox.d.ts.map +1 -1
- package/dist/sandbox/native-sandbox.js +139 -18
- package/dist/sandbox/native-sandbox.js.map +1 -1
- package/dist/sentry.d.ts +17 -0
- package/dist/sentry.d.ts.map +1 -0
- package/dist/sentry.js +91 -0
- package/dist/sentry.js.map +1 -0
- package/dist/server/agent-runtime-ledger.d.ts +141 -0
- package/dist/server/agent-runtime-ledger.d.ts.map +1 -0
- package/dist/server/agent-runtime-ledger.js +334 -0
- package/dist/server/agent-runtime-ledger.js.map +1 -0
- package/dist/server/agent-trajectory-inspection.d.ts +104 -0
- package/dist/server/agent-trajectory-inspection.d.ts.map +1 -0
- package/dist/server/agent-trajectory-inspection.js +168 -0
- package/dist/server/agent-trajectory-inspection.js.map +1 -0
- package/dist/server/agent-trajectory-replay.d.ts +56 -0
- package/dist/server/agent-trajectory-replay.d.ts.map +1 -0
- package/dist/server/agent-trajectory-replay.js +214 -0
- package/dist/server/agent-trajectory-replay.js.map +1 -0
- package/dist/server/agent-trajectory-scenarios.d.ts +109 -0
- package/dist/server/agent-trajectory-scenarios.d.ts.map +1 -0
- package/dist/server/agent-trajectory-scenarios.js +822 -0
- package/dist/server/agent-trajectory-scenarios.js.map +1 -0
- package/dist/server/agent-trajectory-scorers.d.ts +61 -0
- package/dist/server/agent-trajectory-scorers.d.ts.map +1 -0
- package/dist/server/agent-trajectory-scorers.js +162 -0
- package/dist/server/agent-trajectory-scorers.js.map +1 -0
- package/dist/server/agent-trajectory-validation.d.ts +7 -0
- package/dist/server/agent-trajectory-validation.d.ts.map +1 -0
- package/dist/server/agent-trajectory-validation.js +101 -0
- package/dist/server/agent-trajectory-validation.js.map +1 -0
- package/dist/server/agent-trajectory.d.ts +50 -0
- package/dist/server/agent-trajectory.d.ts.map +1 -0
- package/dist/server/agent-trajectory.js +159 -0
- package/dist/server/agent-trajectory.js.map +1 -0
- package/dist/server/app-context.d.ts +18 -0
- package/dist/server/app-context.d.ts.map +1 -1
- package/dist/server/app-context.js.map +1 -1
- package/dist/server/handlers/headless-sessions.d.ts.map +1 -1
- package/dist/server/handlers/headless-sessions.js +64 -27
- package/dist/server/handlers/headless-sessions.js.map +1 -1
- package/dist/server/handlers/health.d.ts +6 -0
- package/dist/server/handlers/health.d.ts.map +1 -1
- package/dist/server/handlers/health.js +6 -0
- package/dist/server/handlers/health.js.map +1 -1
- package/dist/server/handlers/hosted-runner-drain.d.ts +69 -1
- package/dist/server/handlers/hosted-runner-drain.d.ts.map +1 -1
- package/dist/server/handlers/hosted-runner-drain.js +309 -18
- package/dist/server/handlers/hosted-runner-drain.js.map +1 -1
- package/dist/server/handlers/hosted-runner-identity.d.ts +16 -0
- package/dist/server/handlers/hosted-runner-identity.d.ts.map +1 -1
- package/dist/server/handlers/hosted-runner-identity.js +43 -0
- package/dist/server/handlers/hosted-runner-identity.js.map +1 -1
- package/dist/server/handlers/mode.d.ts.map +1 -1
- package/dist/server/handlers/mode.js +3 -1
- package/dist/server/handlers/mode.js.map +1 -1
- package/dist/server/handlers/pending-requests.d.ts.map +1 -1
- package/dist/server/handlers/pending-requests.js +336 -51
- package/dist/server/handlers/pending-requests.js.map +1 -1
- package/dist/server/handlers/platform-a2a-push.d.ts +6 -0
- package/dist/server/handlers/platform-a2a-push.d.ts.map +1 -0
- package/dist/server/handlers/platform-a2a-push.js +136 -0
- package/dist/server/handlers/platform-a2a-push.js.map +1 -0
- package/dist/server/handlers/sessions.d.ts.map +1 -1
- package/dist/server/handlers/sessions.js +21 -1
- package/dist/server/handlers/sessions.js.map +1 -1
- package/dist/server/headless-runtime-service.d.ts +9 -2
- package/dist/server/headless-runtime-service.d.ts.map +1 -1
- package/dist/server/headless-runtime-service.js +39 -0
- package/dist/server/headless-runtime-service.js.map +1 -1
- package/dist/server/hosted-agent-runtime-progress.d.ts +144 -0
- package/dist/server/hosted-agent-runtime-progress.d.ts.map +1 -0
- package/dist/server/hosted-agent-runtime-progress.js +1650 -0
- package/dist/server/hosted-agent-runtime-progress.js.map +1 -0
- package/dist/server/hosted-runner-lease.d.ts +41 -0
- package/dist/server/hosted-runner-lease.d.ts.map +1 -0
- package/dist/server/hosted-runner-lease.js +140 -0
- package/dist/server/hosted-runner-lease.js.map +1 -0
- package/dist/server/hosted-session-manager.d.ts +16 -8
- package/dist/server/hosted-session-manager.d.ts.map +1 -1
- package/dist/server/hosted-session-manager.js +98 -76
- package/dist/server/hosted-session-manager.js.map +1 -1
- package/dist/server/junit-xml.d.ts +2 -0
- package/dist/server/junit-xml.d.ts.map +1 -0
- package/dist/server/junit-xml.js +9 -0
- package/dist/server/junit-xml.js.map +1 -0
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +6 -0
- package/dist/server/routes.js.map +1 -1
- package/dist/server/scenario-recorder.d.ts +56 -0
- package/dist/server/scenario-recorder.d.ts.map +1 -0
- package/dist/server/scenario-recorder.js +109 -0
- package/dist/server/scenario-recorder.js.map +1 -0
- package/dist/server/scripted-scenario-runner.d.ts +46 -0
- package/dist/server/scripted-scenario-runner.d.ts.map +1 -0
- package/dist/server/scripted-scenario-runner.js +190 -0
- package/dist/server/scripted-scenario-runner.js.map +1 -0
- package/dist/server/server-middlewares.d.ts +6 -2
- package/dist/server/server-middlewares.d.ts.map +1 -1
- package/dist/server/server-middlewares.js +8 -2
- package/dist/server/server-middlewares.js.map +1 -1
- package/dist/server/server-request-manager.d.ts +9 -1
- package/dist/server/server-request-manager.d.ts.map +1 -1
- package/dist/server/server-request-manager.js +49 -4
- package/dist/server/server-request-manager.js.map +1 -1
- package/dist/services/intelligent-router/service.d.ts +2 -0
- package/dist/services/intelligent-router/service.d.ts.map +1 -1
- package/dist/services/intelligent-router/service.js +4 -0
- package/dist/services/intelligent-router/service.js.map +1 -1
- package/dist/services/service-authority.d.ts +25 -0
- package/dist/services/service-authority.d.ts.map +1 -0
- package/dist/services/service-authority.js +143 -0
- package/dist/services/service-authority.js.map +1 -0
- package/dist/services/workspace-config/service.d.ts +2 -0
- package/dist/services/workspace-config/service.d.ts.map +1 -1
- package/dist/services/workspace-config/service.js +4 -0
- package/dist/services/workspace-config/service.js.map +1 -1
- package/dist/session/manager.d.ts +8 -2
- package/dist/session/manager.d.ts.map +1 -1
- package/dist/session/manager.js +19 -4
- package/dist/session/manager.js.map +1 -1
- package/dist/session/session-branch.d.ts.map +1 -1
- package/dist/session/session-branch.js +5 -1
- package/dist/session/session-branch.js.map +1 -1
- package/dist/session/session-catalog.d.ts +7 -2
- package/dist/session/session-catalog.d.ts.map +1 -1
- package/dist/session/session-catalog.js +13 -2
- package/dist/session/session-catalog.js.map +1 -1
- package/dist/session/session-context.d.ts +6 -2
- package/dist/session/session-context.d.ts.map +1 -1
- package/dist/session/session-context.js +44 -4
- package/dist/session/session-context.js.map +1 -1
- package/dist/session/session-graph-projection.d.ts +32 -0
- package/dist/session/session-graph-projection.d.ts.map +1 -0
- package/dist/session/session-graph-projection.js +133 -0
- package/dist/session/session-graph-projection.js.map +1 -0
- package/dist/session/types.d.ts +18 -0
- package/dist/session/types.d.ts.map +1 -1
- package/dist/session/types.js +8 -0
- package/dist/session/types.js.map +1 -1
- package/dist/session/wire-format.generated.d.ts +3 -0
- package/dist/session/wire-format.generated.d.ts.map +1 -1
- package/dist/session/wire-format.generated.js +20 -0
- package/dist/session/wire-format.generated.js.map +1 -1
- package/dist/skills/eval-harness.d.ts +38 -0
- package/dist/skills/eval-harness.d.ts.map +1 -0
- package/dist/skills/eval-harness.js +112 -0
- package/dist/skills/eval-harness.js.map +1 -0
- package/dist/skills/index.d.ts +5 -1
- package/dist/skills/index.d.ts.map +1 -1
- package/dist/skills/index.js +5 -1
- package/dist/skills/index.js.map +1 -1
- package/dist/skills/linter.d.ts +36 -0
- package/dist/skills/linter.d.ts.map +1 -0
- package/dist/skills/linter.js +398 -0
- package/dist/skills/linter.js.map +1 -0
- package/dist/skills/loader.d.ts +36 -6
- package/dist/skills/loader.d.ts.map +1 -1
- package/dist/skills/loader.js +169 -86
- package/dist/skills/loader.js.map +1 -1
- package/dist/skills/package-contract.d.ts +45 -0
- package/dist/skills/package-contract.d.ts.map +1 -0
- package/dist/skills/package-contract.js +153 -0
- package/dist/skills/package-contract.js.map +1 -0
- package/dist/skills/runtime-activation.d.ts +68 -0
- package/dist/skills/runtime-activation.d.ts.map +1 -0
- package/dist/skills/runtime-activation.js +228 -0
- package/dist/skills/runtime-activation.js.map +1 -0
- package/dist/skills/service-client.d.ts.map +1 -1
- package/dist/skills/service-client.js +3 -4
- package/dist/skills/service-client.js.map +1 -1
- package/dist/skills/tool.d.ts.map +1 -1
- package/dist/skills/tool.js +2 -0
- package/dist/skills/tool.js.map +1 -1
- package/dist/skills/types.d.ts +14 -0
- package/dist/skills/types.d.ts.map +1 -1
- package/dist/skills/types.js.map +1 -1
- package/dist/telemetry/agent-operating-plane-context.d.ts +24 -0
- package/dist/telemetry/agent-operating-plane-context.d.ts.map +1 -0
- package/dist/telemetry/agent-operating-plane-context.js +54 -0
- package/dist/telemetry/agent-operating-plane-context.js.map +1 -0
- package/dist/telemetry/beacon.d.ts +24 -0
- package/dist/telemetry/beacon.d.ts.map +1 -0
- package/dist/telemetry/beacon.js +115 -0
- package/dist/telemetry/beacon.js.map +1 -0
- package/dist/telemetry/cli-command-aggregator.d.ts +36 -0
- package/dist/telemetry/cli-command-aggregator.d.ts.map +1 -0
- package/dist/telemetry/cli-command-aggregator.js +251 -0
- package/dist/telemetry/cli-command-aggregator.js.map +1 -0
- package/dist/telemetry/cli-startup.d.ts +21 -0
- package/dist/telemetry/cli-startup.d.ts.map +1 -0
- package/dist/telemetry/cli-startup.js +83 -0
- package/dist/telemetry/cli-startup.js.map +1 -0
- package/dist/telemetry/disablement.d.ts +13 -0
- package/dist/telemetry/disablement.d.ts.map +1 -0
- package/dist/telemetry/disablement.js +19 -0
- package/dist/telemetry/disablement.js.map +1 -0
- package/dist/telemetry/index.d.ts +6 -2
- package/dist/telemetry/index.d.ts.map +1 -1
- package/dist/telemetry/index.js +6 -2
- package/dist/telemetry/index.js.map +1 -1
- package/dist/telemetry/maestro-event-bus.d.ts +52 -0
- package/dist/telemetry/maestro-event-bus.d.ts.map +1 -1
- package/dist/telemetry/maestro-event-bus.js +179 -3
- package/dist/telemetry/maestro-event-bus.js.map +1 -1
- package/dist/telemetry/maestro-event-catalog.d.ts +3 -1
- package/dist/telemetry/maestro-event-catalog.d.ts.map +1 -1
- package/dist/telemetry/maestro-event-catalog.js +2 -0
- package/dist/telemetry/maestro-event-catalog.js.map +1 -1
- package/dist/telemetry/maestro-platform-replay-fixture.d.ts.map +1 -1
- package/dist/telemetry/maestro-platform-replay-fixture.js +74 -9
- package/dist/telemetry/maestro-platform-replay-fixture.js.map +1 -1
- package/dist/telemetry/maestro-publisher-conformance-fixture.d.ts +1 -1
- package/dist/telemetry/maestro-publisher-conformance-fixture.d.ts.map +1 -1
- package/dist/telemetry/maestro-publisher-conformance-fixture.js +46 -11
- package/dist/telemetry/maestro-publisher-conformance-fixture.js.map +1 -1
- package/dist/telemetry/mcp-beacon.d.ts +20 -0
- package/dist/telemetry/mcp-beacon.d.ts.map +1 -0
- package/dist/telemetry/mcp-beacon.js +54 -0
- package/dist/telemetry/mcp-beacon.js.map +1 -0
- package/dist/telemetry/metadata-normalization.d.ts +7 -0
- package/dist/telemetry/metadata-normalization.d.ts.map +1 -0
- package/dist/telemetry/metadata-normalization.js +189 -0
- package/dist/telemetry/metadata-normalization.js.map +1 -0
- package/dist/telemetry/meter-service-client.d.ts.map +1 -1
- package/dist/telemetry/meter-service-client.js +5 -10
- package/dist/telemetry/meter-service-client.js.map +1 -1
- package/dist/telemetry/metrics.d.ts +123 -0
- package/dist/telemetry/metrics.d.ts.map +1 -0
- package/dist/telemetry/metrics.js +184 -0
- package/dist/telemetry/metrics.js.map +1 -0
- package/dist/telemetry/turn-tracker.d.ts +1 -0
- package/dist/telemetry/turn-tracker.d.ts.map +1 -1
- package/dist/telemetry/turn-tracker.js +22 -1
- package/dist/telemetry/turn-tracker.js.map +1 -1
- package/dist/telemetry/wide-events.d.ts +31 -1
- package/dist/telemetry/wide-events.d.ts.map +1 -1
- package/dist/telemetry/wide-events.js +229 -1
- package/dist/telemetry/wide-events.js.map +1 -1
- package/dist/telemetry.d.ts +39 -3
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +160 -3
- package/dist/telemetry.js.map +1 -1
- package/dist/testing/test-verification-hook.d.ts.map +1 -1
- package/dist/testing/test-verification-hook.js +34 -21
- package/dist/testing/test-verification-hook.js.map +1 -1
- package/dist/tools/apply-patch-parser.d.ts +26 -0
- package/dist/tools/apply-patch-parser.d.ts.map +1 -0
- package/dist/tools/apply-patch-parser.js +146 -0
- package/dist/tools/apply-patch-parser.js.map +1 -0
- package/dist/tools/apply-patch.d.ts +42 -0
- package/dist/tools/apply-patch.d.ts.map +1 -0
- package/dist/tools/apply-patch.js +648 -0
- package/dist/tools/apply-patch.js.map +1 -0
- package/dist/tools/ask-user.d.ts +1 -0
- package/dist/tools/ask-user.d.ts.map +1 -1
- package/dist/tools/background/tool-handler.d.ts +1 -0
- package/dist/tools/background/tool-handler.d.ts.map +1 -1
- package/dist/tools/bash.d.ts +1 -0
- package/dist/tools/bash.d.ts.map +1 -1
- package/dist/tools/codesearch.d.ts +1 -0
- package/dist/tools/codesearch.d.ts.map +1 -1
- package/dist/tools/conductor-client.d.ts +1 -0
- package/dist/tools/conductor-client.d.ts.map +1 -1
- package/dist/tools/conductor-client.js +63 -0
- package/dist/tools/conductor-client.js.map +1 -1
- package/dist/tools/diff.d.ts +1 -0
- package/dist/tools/diff.d.ts.map +1 -1
- package/dist/tools/edit.d.ts +1 -0
- package/dist/tools/edit.d.ts.map +1 -1
- package/dist/tools/extract-document.d.ts +1 -0
- package/dist/tools/extract-document.d.ts.map +1 -1
- package/dist/tools/find.d.ts +10 -0
- package/dist/tools/find.d.ts.map +1 -1
- package/dist/tools/find.js +236 -27
- package/dist/tools/find.js.map +1 -1
- package/dist/tools/gh.d.ts +3 -0
- package/dist/tools/gh.d.ts.map +1 -1
- package/dist/tools/index.d.ts +50 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +4 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/list.d.ts +1 -0
- package/dist/tools/list.d.ts.map +1 -1
- package/dist/tools/notebook.d.ts +1 -0
- package/dist/tools/notebook.d.ts.map +1 -1
- package/dist/tools/oracle.d.ts +1 -0
- package/dist/tools/oracle.d.ts.map +1 -1
- package/dist/tools/oracle.js +17 -32
- package/dist/tools/oracle.js.map +1 -1
- package/dist/tools/parallel-execution.d.ts +13 -2
- package/dist/tools/parallel-execution.d.ts.map +1 -1
- package/dist/tools/parallel-execution.js +178 -7
- package/dist/tools/parallel-execution.js.map +1 -1
- package/dist/tools/parallel-ripgrep.d.ts +1 -0
- package/dist/tools/parallel-ripgrep.d.ts.map +1 -1
- package/dist/tools/pipeline.d.ts +4 -0
- package/dist/tools/pipeline.d.ts.map +1 -1
- package/dist/tools/read.d.ts +1 -0
- package/dist/tools/read.d.ts.map +1 -1
- package/dist/tools/search.d.ts +1 -0
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/status.d.ts +1 -0
- package/dist/tools/status.d.ts.map +1 -1
- package/dist/tools/todo.d.ts +1 -0
- package/dist/tools/todo.d.ts.map +1 -1
- package/dist/tools/tool-dsl.d.ts +5 -1
- package/dist/tools/tool-dsl.d.ts.map +1 -1
- package/dist/tools/tool-dsl.js +1 -0
- package/dist/tools/tool-dsl.js.map +1 -1
- package/dist/tools/tool-result-cache.d.ts.map +1 -1
- package/dist/tools/tool-result-cache.js +1 -0
- package/dist/tools/tool-result-cache.js.map +1 -1
- package/dist/tools/typebox-tool.d.ts.map +1 -1
- package/dist/tools/typebox-tool.js +3 -0
- package/dist/tools/typebox-tool.js.map +1 -1
- package/dist/tools/webfetch.d.ts +1 -0
- package/dist/tools/webfetch.d.ts.map +1 -1
- package/dist/tools/websearch.d.ts +1 -0
- package/dist/tools/websearch.d.ts.map +1 -1
- package/dist/tools/write.d.ts +1 -0
- package/dist/tools/write.d.ts.map +1 -1
- package/dist/utils/abort-error.d.ts +2 -0
- package/dist/utils/abort-error.d.ts.map +1 -0
- package/dist/utils/abort-error.js +7 -0
- package/dist/utils/abort-error.js.map +1 -0
- package/dist/utils/downstream.d.ts.map +1 -1
- package/dist/utils/downstream.js +4 -0
- package/dist/utils/downstream.js.map +1 -1
- package/dist/utils/logger.d.ts +3 -0
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +14 -3
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/path-containment.d.ts +2 -0
- package/dist/utils/path-containment.d.ts.map +1 -0
- package/dist/utils/path-containment.js +14 -0
- package/dist/utils/path-containment.js.map +1 -0
- package/dist/utils/prompt-safe-text.d.ts +7 -0
- package/dist/utils/prompt-safe-text.d.ts.map +1 -0
- package/dist/utils/prompt-safe-text.js +44 -0
- package/dist/utils/prompt-safe-text.js.map +1 -0
- package/dist/version.json +2 -2
- package/dist/web-server.d.ts.map +1 -1
- package/dist/web-server.js +32 -7
- package/dist/web-server.js.map +1 -1
- package/dist/workspace/root-resolver.d.ts +4 -1
- package/dist/workspace/root-resolver.d.ts.map +1 -1
- package/dist/workspace/root-resolver.js +16 -6
- package/dist/workspace/root-resolver.js.map +1 -1
- package/node_modules/@evalops/contracts/dist/advisor-effort.d.ts +8 -0
- package/node_modules/@evalops/contracts/dist/advisor-effort.d.ts.map +1 -0
- package/node_modules/@evalops/contracts/dist/advisor-effort.js +35 -0
- package/node_modules/@evalops/contracts/dist/advisor-effort.js.map +1 -0
- package/node_modules/@evalops/contracts/dist/delegation-prompt.d.ts +10 -0
- package/node_modules/@evalops/contracts/dist/delegation-prompt.d.ts.map +1 -0
- package/node_modules/@evalops/contracts/dist/delegation-prompt.js +48 -0
- package/node_modules/@evalops/contracts/dist/delegation-prompt.js.map +1 -0
- package/node_modules/@evalops/contracts/dist/guarded-files-settings.d.ts +20 -0
- package/node_modules/@evalops/contracts/dist/guarded-files-settings.d.ts.map +1 -0
- package/node_modules/@evalops/contracts/dist/guarded-files-settings.js +147 -0
- package/node_modules/@evalops/contracts/dist/guarded-files-settings.js.map +1 -0
- package/node_modules/@evalops/contracts/dist/headless-protocol-generated.d.ts +2 -0
- package/node_modules/@evalops/contracts/dist/headless-protocol-generated.d.ts.map +1 -1
- package/node_modules/@evalops/contracts/dist/headless-protocol-generated.js +1 -0
- package/node_modules/@evalops/contracts/dist/headless-protocol-generated.js.map +1 -1
- package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.d.ts +280 -5
- package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.d.ts.map +1 -1
- package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.js +36 -1
- package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.js.map +1 -1
- package/node_modules/@evalops/contracts/dist/index.d.ts +15 -1
- package/node_modules/@evalops/contracts/dist/index.d.ts.map +1 -1
- package/node_modules/@evalops/contracts/dist/index.js +6 -0
- package/node_modules/@evalops/contracts/dist/index.js.map +1 -1
- package/node_modules/@evalops/contracts/dist/maestro-app-server.d.ts +593 -0
- package/node_modules/@evalops/contracts/dist/maestro-app-server.d.ts.map +1 -0
- package/node_modules/@evalops/contracts/dist/maestro-app-server.js +218 -0
- package/node_modules/@evalops/contracts/dist/maestro-app-server.js.map +1 -0
- package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.d.ts +91 -0
- package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.d.ts.map +1 -1
- package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.js +92 -61
- package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.js.map +1 -1
- package/node_modules/@evalops/contracts/dist/runtime-app-server.d.ts +3 -0
- package/node_modules/@evalops/contracts/dist/runtime-app-server.d.ts.map +1 -1
- package/node_modules/@evalops/contracts/dist/runtime-constraints.d.ts +28 -0
- package/node_modules/@evalops/contracts/dist/runtime-constraints.d.ts.map +1 -0
- package/node_modules/@evalops/contracts/dist/runtime-constraints.js +71 -0
- package/node_modules/@evalops/contracts/dist/runtime-constraints.js.map +1 -0
- package/node_modules/@evalops/contracts/dist/runtime-server-request.d.ts +7 -0
- package/node_modules/@evalops/contracts/dist/runtime-server-request.d.ts.map +1 -1
- package/node_modules/@evalops/contracts/dist/runtime-server-request.js +2 -0
- package/node_modules/@evalops/contracts/dist/runtime-server-request.js.map +1 -1
- package/node_modules/@evalops/contracts/dist/scenario.d.ts +191 -0
- package/node_modules/@evalops/contracts/dist/scenario.d.ts.map +1 -0
- package/node_modules/@evalops/contracts/dist/scenario.js +4 -0
- package/node_modules/@evalops/contracts/dist/scenario.js.map +1 -0
- package/node_modules/@evalops/contracts/dist/schemas.d.ts +17 -3
- package/node_modules/@evalops/contracts/dist/schemas.d.ts.map +1 -1
- package/node_modules/@evalops/contracts/dist/schemas.js +16 -0
- package/node_modules/@evalops/contracts/dist/schemas.js.map +1 -1
- package/node_modules/@evalops/contracts/package.json +1 -1
- package/node_modules/@evalops/tui/package.json +1 -1
- package/package.json +41 -7
- package/skills/incident-triage/SKILL.md +40 -0
- package/skills/incident-triage/mcp.json +14 -0
- package/skills/incident-triage/reference/triage.md +20 -0
- package/skills/incident-triage/toolbox/incident-timeline +22 -0
- package/skills/incident-triage/toolbox/incident-timeline.cmd +16 -0
- package/skills/pr-review/SKILL.md +40 -0
- package/skills/pr-review/mcp.json +14 -0
- package/skills/pr-review/reference/rubric.md +20 -0
- package/skills/pr-review/toolbox/review-summary +20 -0
- package/skills/pr-review/toolbox/review-summary.cmd +14 -0
- package/skills/release-verification/SKILL.md +40 -0
- package/skills/release-verification/mcp.json +15 -0
- package/skills/release-verification/reference/checklist.md +21 -0
- package/skills/release-verification/toolbox/release-readiness +18 -0
- package/skills/release-verification/toolbox/release-readiness.cmd +12 -0
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import { metrics as otelMetrics, } from "@opentelemetry/api";
|
|
2
|
+
export const MAESTRO_OTEL_METRIC_DEFINITIONS = [
|
|
3
|
+
{
|
|
4
|
+
key: "toolInvocationCount",
|
|
5
|
+
name: "tool_service.invocation_count",
|
|
6
|
+
kind: "counter",
|
|
7
|
+
description: "Number of tool invocations",
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
key: "toolInvocationLatency",
|
|
11
|
+
name: "tool_service.invocation_latency",
|
|
12
|
+
kind: "histogram",
|
|
13
|
+
description: "Latency of tool invocations",
|
|
14
|
+
unit: "ms",
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
key: "skillInvocationCount",
|
|
18
|
+
name: "tool_service.skill.invocation_count",
|
|
19
|
+
kind: "counter",
|
|
20
|
+
description: "Skill tool invocations by skill name",
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
key: "agentTurnCount",
|
|
24
|
+
name: "agent.turn_count",
|
|
25
|
+
kind: "counter",
|
|
26
|
+
description: "Agent turns by mode and outcome",
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
key: "agentTurnLatency",
|
|
30
|
+
name: "agent.turn_latency",
|
|
31
|
+
kind: "histogram",
|
|
32
|
+
description: "Wall-clock duration per agent turn",
|
|
33
|
+
unit: "ms",
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
key: "subagentDispatchCount",
|
|
37
|
+
name: "agent.subagent.dispatch_count",
|
|
38
|
+
kind: "counter",
|
|
39
|
+
description: "Subagent dispatch decisions by mode, type, provider, and outcome",
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
key: "subagentDispatchLatency",
|
|
43
|
+
name: "agent.subagent.dispatch_latency",
|
|
44
|
+
kind: "histogram",
|
|
45
|
+
description: "Latency of subagent dispatch resolution",
|
|
46
|
+
unit: "ms",
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
key: "compactionTriggered",
|
|
50
|
+
name: "compaction.triggered",
|
|
51
|
+
kind: "counter",
|
|
52
|
+
description: "Auto-compaction triggers",
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
key: "llmRequestCount",
|
|
56
|
+
name: "llm.request_count",
|
|
57
|
+
kind: "counter",
|
|
58
|
+
description: "LLM requests by provider, model, mode",
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
key: "llmTokenUsage",
|
|
62
|
+
name: "llm.tokens_used",
|
|
63
|
+
kind: "counter",
|
|
64
|
+
description: "Tokens consumed by direction",
|
|
65
|
+
},
|
|
66
|
+
];
|
|
67
|
+
const definitionsByKey = Object.fromEntries(MAESTRO_OTEL_METRIC_DEFINITIONS.map((definition) => [
|
|
68
|
+
definition.key,
|
|
69
|
+
definition,
|
|
70
|
+
]));
|
|
71
|
+
const meter = otelMetrics.getMeter("evalops.maestro", process.env.MAESTRO_VERSION ?? "unknown");
|
|
72
|
+
function counter(key) {
|
|
73
|
+
const definition = definitionsByKey[key];
|
|
74
|
+
return meter.createCounter(definition.name, {
|
|
75
|
+
description: definition.description,
|
|
76
|
+
unit: definition.unit,
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
function histogram(key) {
|
|
80
|
+
const definition = definitionsByKey[key];
|
|
81
|
+
return meter.createHistogram(definition.name, {
|
|
82
|
+
description: definition.description,
|
|
83
|
+
unit: definition.unit,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
export const maestroOtelMetrics = {
|
|
87
|
+
toolInvocationCount: counter("toolInvocationCount"),
|
|
88
|
+
toolInvocationLatency: histogram("toolInvocationLatency"),
|
|
89
|
+
skillInvocationCount: counter("skillInvocationCount"),
|
|
90
|
+
agentTurnCount: counter("agentTurnCount"),
|
|
91
|
+
agentTurnLatency: histogram("agentTurnLatency"),
|
|
92
|
+
subagentDispatchCount: counter("subagentDispatchCount"),
|
|
93
|
+
subagentDispatchLatency: histogram("subagentDispatchLatency"),
|
|
94
|
+
compactionTriggered: counter("compactionTriggered"),
|
|
95
|
+
llmRequestCount: counter("llmRequestCount"),
|
|
96
|
+
llmTokenUsage: counter("llmTokenUsage"),
|
|
97
|
+
};
|
|
98
|
+
function compactAttributes(attributes) {
|
|
99
|
+
return Object.fromEntries(Object.entries(attributes).filter((entry) => entry[1] !== undefined));
|
|
100
|
+
}
|
|
101
|
+
export function recordToolInvocationMetric(input) {
|
|
102
|
+
const attributes = compactAttributes({
|
|
103
|
+
"tool.name": input.toolName,
|
|
104
|
+
"tool.success": input.success,
|
|
105
|
+
"maestro.surface": input.surface,
|
|
106
|
+
"maestro.agent_run_id": input.agentRunId,
|
|
107
|
+
});
|
|
108
|
+
maestroOtelMetrics.toolInvocationCount.add(1, attributes);
|
|
109
|
+
if (typeof input.durationMs === "number" &&
|
|
110
|
+
Number.isFinite(input.durationMs)) {
|
|
111
|
+
maestroOtelMetrics.toolInvocationLatency.record(input.durationMs, attributes);
|
|
112
|
+
}
|
|
113
|
+
if (input.skillName) {
|
|
114
|
+
maestroOtelMetrics.skillInvocationCount.add(1, compactAttributes({
|
|
115
|
+
...attributes,
|
|
116
|
+
"skill.name": input.skillName,
|
|
117
|
+
}));
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
export function recordAgentTurnMetric(input) {
|
|
121
|
+
const attributes = compactAttributes({
|
|
122
|
+
"agent.turn.status": input.status,
|
|
123
|
+
"agent.turn.mode": input.mode,
|
|
124
|
+
"llm.model.id": input.modelId,
|
|
125
|
+
"llm.model.provider": input.modelProvider,
|
|
126
|
+
"maestro.surface": input.surface,
|
|
127
|
+
"maestro.agent_run_id": input.agentRunId,
|
|
128
|
+
});
|
|
129
|
+
maestroOtelMetrics.agentTurnCount.add(1, attributes);
|
|
130
|
+
if (typeof input.durationMs === "number" &&
|
|
131
|
+
Number.isFinite(input.durationMs)) {
|
|
132
|
+
maestroOtelMetrics.agentTurnLatency.record(input.durationMs, attributes);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
export function recordSubagentDispatchMetric(input) {
|
|
136
|
+
const attributes = compactAttributes({
|
|
137
|
+
"maestro.subagent.mode": input.mode,
|
|
138
|
+
"maestro.subagent.type": input.subagentType,
|
|
139
|
+
"maestro.subagent.reasoning_effort": input.reasoningEffort,
|
|
140
|
+
"maestro.subagent.source": input.source,
|
|
141
|
+
"maestro.subagent.success": input.success,
|
|
142
|
+
"llm.model.provider": input.provider,
|
|
143
|
+
"llm.model.id": input.model,
|
|
144
|
+
"maestro.agent_run_id": input.agentRunId,
|
|
145
|
+
});
|
|
146
|
+
maestroOtelMetrics.subagentDispatchCount.add(1, attributes);
|
|
147
|
+
if (typeof input.latencyMs === "number" && Number.isFinite(input.latencyMs)) {
|
|
148
|
+
maestroOtelMetrics.subagentDispatchLatency.record(input.latencyMs, attributes);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
export function recordCompactionMetric(attributes = {}) {
|
|
152
|
+
maestroOtelMetrics.compactionTriggered.add(1, compactAttributes(attributes));
|
|
153
|
+
}
|
|
154
|
+
export function recordLlmTokenUsageMetric(tokens, attributes = {}) {
|
|
155
|
+
const compactedAttributes = compactAttributes(attributes);
|
|
156
|
+
const tokenEntries = [
|
|
157
|
+
["input", tokens.input],
|
|
158
|
+
["output", tokens.output],
|
|
159
|
+
["cache_read", tokens.cacheRead],
|
|
160
|
+
["cache_write", tokens.cacheWrite],
|
|
161
|
+
];
|
|
162
|
+
for (const [direction, value] of tokenEntries) {
|
|
163
|
+
if (typeof value === "number" && Number.isFinite(value) && value > 0) {
|
|
164
|
+
maestroOtelMetrics.llmTokenUsage.add(value, compactAttributes({
|
|
165
|
+
...compactedAttributes,
|
|
166
|
+
"llm.token.direction": direction,
|
|
167
|
+
}));
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
export function recordLlmRequestMetric(input) {
|
|
172
|
+
const attributes = compactAttributes({
|
|
173
|
+
"llm.model.provider": input.provider,
|
|
174
|
+
"llm.model.id": input.modelId,
|
|
175
|
+
"llm.request.mode": input.mode,
|
|
176
|
+
"maestro.surface": input.surface,
|
|
177
|
+
"maestro.agent_run_id": input.agentRunId,
|
|
178
|
+
});
|
|
179
|
+
maestroOtelMetrics.llmRequestCount.add(1, attributes);
|
|
180
|
+
if (input.tokens) {
|
|
181
|
+
recordLlmTokenUsageMetric(input.tokens, attributes);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=metrics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/telemetry/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,OAAO,IAAI,WAAW,GACtB,MAAM,oBAAoB,CAAC;AAU5B,MAAM,CAAC,MAAM,+BAA+B,GAAG;IAC9C;QACC,GAAG,EAAE,qBAAqB;QAC1B,IAAI,EAAE,+BAA+B;QACrC,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,4BAA4B;KACzC;IACD;QACC,GAAG,EAAE,uBAAuB;QAC5B,IAAI,EAAE,iCAAiC;QACvC,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,6BAA6B;QAC1C,IAAI,EAAE,IAAI;KACV;IACD;QACC,GAAG,EAAE,sBAAsB;QAC3B,IAAI,EAAE,qCAAqC;QAC3C,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,sCAAsC;KACnD;IACD;QACC,GAAG,EAAE,gBAAgB;QACrB,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,iCAAiC;KAC9C;IACD;QACC,GAAG,EAAE,kBAAkB;QACvB,IAAI,EAAE,oBAAoB;QAC1B,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,oCAAoC;QACjD,IAAI,EAAE,IAAI;KACV;IACD;QACC,GAAG,EAAE,uBAAuB;QAC5B,IAAI,EAAE,+BAA+B;QACrC,IAAI,EAAE,SAAS;QACf,WAAW,EACV,kEAAkE;KACnE;IACD;QACC,GAAG,EAAE,yBAAyB;QAC9B,IAAI,EAAE,iCAAiC;QACvC,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,yCAAyC;QACtD,IAAI,EAAE,IAAI;KACV;IACD;QACC,GAAG,EAAE,qBAAqB;QAC1B,IAAI,EAAE,sBAAsB;QAC5B,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,0BAA0B;KACvC;IACD;QACC,GAAG,EAAE,iBAAiB;QACtB,IAAI,EAAE,mBAAmB;QACzB,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,uCAAuC;KACpD;IACD;QACC,GAAG,EAAE,eAAe;QACpB,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,8BAA8B;KAC3C;CACqD,CAAC;AAKxD,MAAM,gBAAgB,GAAG,MAAM,CAAC,WAAW,CAC1C,+BAA+B,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC;IACnD,UAAU,CAAC,GAAG;IACd,UAAU;CACV,CAAC,CACuB,CAAC;AAE3B,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,CACjC,iBAAiB,EACjB,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,SAAS,CACxC,CAAC;AAEF,SAAS,OAAO,CAAC,GAAc;IAC9B,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACzC,OAAO,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,EAAE;QAC3C,WAAW,EAAE,UAAU,CAAC,WAAW;QACnC,IAAI,EAAE,UAAU,CAAC,IAAI;KACrB,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,GAAc;IAChC,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACzC,OAAO,KAAK,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,EAAE;QAC7C,WAAW,EAAE,UAAU,CAAC,WAAW;QACnC,IAAI,EAAE,UAAU,CAAC,IAAI;KACrB,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG;IACjC,mBAAmB,EAAE,OAAO,CAAC,qBAAqB,CAAC;IACnD,qBAAqB,EAAE,SAAS,CAAC,uBAAuB,CAAC;IACzD,oBAAoB,EAAE,OAAO,CAAC,sBAAsB,CAAC;IACrD,cAAc,EAAE,OAAO,CAAC,gBAAgB,CAAC;IACzC,gBAAgB,EAAE,SAAS,CAAC,kBAAkB,CAAC;IAC/C,qBAAqB,EAAE,OAAO,CAAC,uBAAuB,CAAC;IACvD,uBAAuB,EAAE,SAAS,CAAC,yBAAyB,CAAC;IAC7D,mBAAmB,EAAE,OAAO,CAAC,qBAAqB,CAAC;IACnD,eAAe,EAAE,OAAO,CAAC,iBAAiB,CAAC;IAC3C,aAAa,EAAE,OAAO,CAAC,eAAe,CAAC;CACvC,CAAC;AAEF,SAAS,iBAAiB,CACzB,UAAiE;IAEjE,OAAO,MAAM,CAAC,WAAW,CACxB,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,CAChC,CAAC,KAAK,EAAgD,EAAE,CACvD,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,CACvB,CACD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,KAO1C;IACA,MAAM,UAAU,GAAG,iBAAiB,CAAC;QACpC,WAAW,EAAE,KAAK,CAAC,QAAQ;QAC3B,cAAc,EAAE,KAAK,CAAC,OAAO;QAC7B,iBAAiB,EAAE,KAAK,CAAC,OAAO;QAChC,sBAAsB,EAAE,KAAK,CAAC,UAAU;KACxC,CAAC,CAAC;IACH,kBAAkB,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAC1D,IACC,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ;QACpC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,EAChC,CAAC;QACF,kBAAkB,CAAC,qBAAqB,CAAC,MAAM,CAC9C,KAAK,CAAC,UAAU,EAChB,UAAU,CACV,CAAC;IACH,CAAC;IACD,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACrB,kBAAkB,CAAC,oBAAoB,CAAC,GAAG,CAC1C,CAAC,EACD,iBAAiB,CAAC;YACjB,GAAG,UAAU;YACb,YAAY,EAAE,KAAK,CAAC,SAAS;SAC7B,CAAC,CACF,CAAC;IACH,CAAC;AACF,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAQrC;IACA,MAAM,UAAU,GAAG,iBAAiB,CAAC;QACpC,mBAAmB,EAAE,KAAK,CAAC,MAAM;QACjC,iBAAiB,EAAE,KAAK,CAAC,IAAI;QAC7B,cAAc,EAAE,KAAK,CAAC,OAAO;QAC7B,oBAAoB,EAAE,KAAK,CAAC,aAAa;QACzC,iBAAiB,EAAE,KAAK,CAAC,OAAO;QAChC,sBAAsB,EAAE,KAAK,CAAC,UAAU;KACxC,CAAC,CAAC;IACH,kBAAkB,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IACrD,IACC,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ;QACpC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,EAChC,CAAC;QACF,kBAAkB,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAC1E,CAAC;AACF,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,KAU5C;IACA,MAAM,UAAU,GAAG,iBAAiB,CAAC;QACpC,uBAAuB,EAAE,KAAK,CAAC,IAAI;QACnC,uBAAuB,EAAE,KAAK,CAAC,YAAY;QAC3C,mCAAmC,EAAE,KAAK,CAAC,eAAe;QAC1D,yBAAyB,EAAE,KAAK,CAAC,MAAM;QACvC,0BAA0B,EAAE,KAAK,CAAC,OAAO;QACzC,oBAAoB,EAAE,KAAK,CAAC,QAAQ;QACpC,cAAc,EAAE,KAAK,CAAC,KAAK;QAC3B,sBAAsB,EAAE,KAAK,CAAC,UAAU;KACxC,CAAC,CAAC;IACH,kBAAkB,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAC5D,IAAI,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7E,kBAAkB,CAAC,uBAAuB,CAAC,MAAM,CAChD,KAAK,CAAC,SAAS,EACf,UAAU,CACV,CAAC;IACH,CAAC;AACF,CAAC;AAED,MAAM,UAAU,sBAAsB,CACrC,aAAoE,EAAE;IAEtE,kBAAkB,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,yBAAyB,CACxC,MAKC,EACD,aAAoE,EAAE;IAEtE,MAAM,mBAAmB,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAC1D,MAAM,YAAY,GAAG;QACpB,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;QACvB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC;QACzB,CAAC,YAAY,EAAE,MAAM,CAAC,SAAS,CAAC;QAChC,CAAC,aAAa,EAAE,MAAM,CAAC,UAAU,CAAC;KACzB,CAAC;IACX,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,YAAY,EAAE,CAAC;QAC/C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACtE,kBAAkB,CAAC,aAAa,CAAC,GAAG,CACnC,KAAK,EACL,iBAAiB,CAAC;gBACjB,GAAG,mBAAmB;gBACtB,qBAAqB,EAAE,SAAS;aAChC,CAAC,CACF,CAAC;QACH,CAAC;IACF,CAAC;AACF,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAYtC;IACA,MAAM,UAAU,GAAG,iBAAiB,CAAC;QACpC,oBAAoB,EAAE,KAAK,CAAC,QAAQ;QACpC,cAAc,EAAE,KAAK,CAAC,OAAO;QAC7B,kBAAkB,EAAE,KAAK,CAAC,IAAI;QAC9B,iBAAiB,EAAE,KAAK,CAAC,OAAO;QAChC,sBAAsB,EAAE,KAAK,CAAC,UAAU;KACxC,CAAC,CAAC;IACH,kBAAkB,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IACtD,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QAClB,yBAAyB,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACrD,CAAC;AACF,CAAC","sourcesContent":["import {\n\ttype Counter,\n\ttype Histogram,\n\tmetrics as otelMetrics,\n} from \"@opentelemetry/api\";\n\nexport type MaestroMetricDefinition = {\n\tkey: string;\n\tname: string;\n\tkind: \"counter\" | \"histogram\";\n\tdescription: string;\n\tunit?: string;\n};\n\nexport const MAESTRO_OTEL_METRIC_DEFINITIONS = [\n\t{\n\t\tkey: \"toolInvocationCount\",\n\t\tname: \"tool_service.invocation_count\",\n\t\tkind: \"counter\",\n\t\tdescription: \"Number of tool invocations\",\n\t},\n\t{\n\t\tkey: \"toolInvocationLatency\",\n\t\tname: \"tool_service.invocation_latency\",\n\t\tkind: \"histogram\",\n\t\tdescription: \"Latency of tool invocations\",\n\t\tunit: \"ms\",\n\t},\n\t{\n\t\tkey: \"skillInvocationCount\",\n\t\tname: \"tool_service.skill.invocation_count\",\n\t\tkind: \"counter\",\n\t\tdescription: \"Skill tool invocations by skill name\",\n\t},\n\t{\n\t\tkey: \"agentTurnCount\",\n\t\tname: \"agent.turn_count\",\n\t\tkind: \"counter\",\n\t\tdescription: \"Agent turns by mode and outcome\",\n\t},\n\t{\n\t\tkey: \"agentTurnLatency\",\n\t\tname: \"agent.turn_latency\",\n\t\tkind: \"histogram\",\n\t\tdescription: \"Wall-clock duration per agent turn\",\n\t\tunit: \"ms\",\n\t},\n\t{\n\t\tkey: \"subagentDispatchCount\",\n\t\tname: \"agent.subagent.dispatch_count\",\n\t\tkind: \"counter\",\n\t\tdescription:\n\t\t\t\"Subagent dispatch decisions by mode, type, provider, and outcome\",\n\t},\n\t{\n\t\tkey: \"subagentDispatchLatency\",\n\t\tname: \"agent.subagent.dispatch_latency\",\n\t\tkind: \"histogram\",\n\t\tdescription: \"Latency of subagent dispatch resolution\",\n\t\tunit: \"ms\",\n\t},\n\t{\n\t\tkey: \"compactionTriggered\",\n\t\tname: \"compaction.triggered\",\n\t\tkind: \"counter\",\n\t\tdescription: \"Auto-compaction triggers\",\n\t},\n\t{\n\t\tkey: \"llmRequestCount\",\n\t\tname: \"llm.request_count\",\n\t\tkind: \"counter\",\n\t\tdescription: \"LLM requests by provider, model, mode\",\n\t},\n\t{\n\t\tkey: \"llmTokenUsage\",\n\t\tname: \"llm.tokens_used\",\n\t\tkind: \"counter\",\n\t\tdescription: \"Tokens consumed by direction\",\n\t},\n] as const satisfies readonly MaestroMetricDefinition[];\n\ntype MetricKey = (typeof MAESTRO_OTEL_METRIC_DEFINITIONS)[number][\"key\"];\ntype MetricDefinitionByKey = Record<MetricKey, MaestroMetricDefinition>;\n\nconst definitionsByKey = Object.fromEntries(\n\tMAESTRO_OTEL_METRIC_DEFINITIONS.map((definition) => [\n\t\tdefinition.key,\n\t\tdefinition,\n\t]),\n) as MetricDefinitionByKey;\n\nconst meter = otelMetrics.getMeter(\n\t\"evalops.maestro\",\n\tprocess.env.MAESTRO_VERSION ?? \"unknown\",\n);\n\nfunction counter(key: MetricKey): Counter {\n\tconst definition = definitionsByKey[key];\n\treturn meter.createCounter(definition.name, {\n\t\tdescription: definition.description,\n\t\tunit: definition.unit,\n\t});\n}\n\nfunction histogram(key: MetricKey): Histogram {\n\tconst definition = definitionsByKey[key];\n\treturn meter.createHistogram(definition.name, {\n\t\tdescription: definition.description,\n\t\tunit: definition.unit,\n\t});\n}\n\nexport const maestroOtelMetrics = {\n\ttoolInvocationCount: counter(\"toolInvocationCount\"),\n\ttoolInvocationLatency: histogram(\"toolInvocationLatency\"),\n\tskillInvocationCount: counter(\"skillInvocationCount\"),\n\tagentTurnCount: counter(\"agentTurnCount\"),\n\tagentTurnLatency: histogram(\"agentTurnLatency\"),\n\tsubagentDispatchCount: counter(\"subagentDispatchCount\"),\n\tsubagentDispatchLatency: histogram(\"subagentDispatchLatency\"),\n\tcompactionTriggered: counter(\"compactionTriggered\"),\n\tllmRequestCount: counter(\"llmRequestCount\"),\n\tllmTokenUsage: counter(\"llmTokenUsage\"),\n};\n\nfunction compactAttributes(\n\tattributes: Record<string, string | number | boolean | undefined>,\n): Record<string, string | number | boolean> {\n\treturn Object.fromEntries(\n\t\tObject.entries(attributes).filter(\n\t\t\t(entry): entry is [string, string | number | boolean] =>\n\t\t\t\tentry[1] !== undefined,\n\t\t),\n\t);\n}\n\nexport function recordToolInvocationMetric(input: {\n\ttoolName: string;\n\tdurationMs?: number;\n\tsuccess?: boolean;\n\tsurface?: string;\n\tagentRunId?: string;\n\tskillName?: string;\n}): void {\n\tconst attributes = compactAttributes({\n\t\t\"tool.name\": input.toolName,\n\t\t\"tool.success\": input.success,\n\t\t\"maestro.surface\": input.surface,\n\t\t\"maestro.agent_run_id\": input.agentRunId,\n\t});\n\tmaestroOtelMetrics.toolInvocationCount.add(1, attributes);\n\tif (\n\t\ttypeof input.durationMs === \"number\" &&\n\t\tNumber.isFinite(input.durationMs)\n\t) {\n\t\tmaestroOtelMetrics.toolInvocationLatency.record(\n\t\t\tinput.durationMs,\n\t\t\tattributes,\n\t\t);\n\t}\n\tif (input.skillName) {\n\t\tmaestroOtelMetrics.skillInvocationCount.add(\n\t\t\t1,\n\t\t\tcompactAttributes({\n\t\t\t\t...attributes,\n\t\t\t\t\"skill.name\": input.skillName,\n\t\t\t}),\n\t\t);\n\t}\n}\n\nexport function recordAgentTurnMetric(input: {\n\tdurationMs?: number;\n\tstatus?: string;\n\tmode?: string;\n\tmodelId?: string;\n\tmodelProvider?: string;\n\tsurface?: string;\n\tagentRunId?: string;\n}): void {\n\tconst attributes = compactAttributes({\n\t\t\"agent.turn.status\": input.status,\n\t\t\"agent.turn.mode\": input.mode,\n\t\t\"llm.model.id\": input.modelId,\n\t\t\"llm.model.provider\": input.modelProvider,\n\t\t\"maestro.surface\": input.surface,\n\t\t\"maestro.agent_run_id\": input.agentRunId,\n\t});\n\tmaestroOtelMetrics.agentTurnCount.add(1, attributes);\n\tif (\n\t\ttypeof input.durationMs === \"number\" &&\n\t\tNumber.isFinite(input.durationMs)\n\t) {\n\t\tmaestroOtelMetrics.agentTurnLatency.record(input.durationMs, attributes);\n\t}\n}\n\nexport function recordSubagentDispatchMetric(input: {\n\tmode: string;\n\tsubagentType: string;\n\tprovider: string;\n\tmodel: string;\n\treasoningEffort: string;\n\tsource?: string;\n\tsuccess: boolean;\n\tlatencyMs?: number;\n\tagentRunId?: string;\n}): void {\n\tconst attributes = compactAttributes({\n\t\t\"maestro.subagent.mode\": input.mode,\n\t\t\"maestro.subagent.type\": input.subagentType,\n\t\t\"maestro.subagent.reasoning_effort\": input.reasoningEffort,\n\t\t\"maestro.subagent.source\": input.source,\n\t\t\"maestro.subagent.success\": input.success,\n\t\t\"llm.model.provider\": input.provider,\n\t\t\"llm.model.id\": input.model,\n\t\t\"maestro.agent_run_id\": input.agentRunId,\n\t});\n\tmaestroOtelMetrics.subagentDispatchCount.add(1, attributes);\n\tif (typeof input.latencyMs === \"number\" && Number.isFinite(input.latencyMs)) {\n\t\tmaestroOtelMetrics.subagentDispatchLatency.record(\n\t\t\tinput.latencyMs,\n\t\t\tattributes,\n\t\t);\n\t}\n}\n\nexport function recordCompactionMetric(\n\tattributes: Record<string, string | number | boolean | undefined> = {},\n): void {\n\tmaestroOtelMetrics.compactionTriggered.add(1, compactAttributes(attributes));\n}\n\nexport function recordLlmTokenUsageMetric(\n\ttokens: {\n\t\tinput?: number;\n\t\toutput?: number;\n\t\tcacheRead?: number;\n\t\tcacheWrite?: number;\n\t},\n\tattributes: Record<string, string | number | boolean | undefined> = {},\n): void {\n\tconst compactedAttributes = compactAttributes(attributes);\n\tconst tokenEntries = [\n\t\t[\"input\", tokens.input],\n\t\t[\"output\", tokens.output],\n\t\t[\"cache_read\", tokens.cacheRead],\n\t\t[\"cache_write\", tokens.cacheWrite],\n\t] as const;\n\tfor (const [direction, value] of tokenEntries) {\n\t\tif (typeof value === \"number\" && Number.isFinite(value) && value > 0) {\n\t\t\tmaestroOtelMetrics.llmTokenUsage.add(\n\t\t\t\tvalue,\n\t\t\t\tcompactAttributes({\n\t\t\t\t\t...compactedAttributes,\n\t\t\t\t\t\"llm.token.direction\": direction,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\t}\n}\n\nexport function recordLlmRequestMetric(input: {\n\tprovider?: string;\n\tmodelId?: string;\n\tmode?: string;\n\tsurface?: string;\n\tagentRunId?: string;\n\ttokens?: {\n\t\tinput?: number;\n\t\toutput?: number;\n\t\tcacheRead?: number;\n\t\tcacheWrite?: number;\n\t};\n}): void {\n\tconst attributes = compactAttributes({\n\t\t\"llm.model.provider\": input.provider,\n\t\t\"llm.model.id\": input.modelId,\n\t\t\"llm.request.mode\": input.mode,\n\t\t\"maestro.surface\": input.surface,\n\t\t\"maestro.agent_run_id\": input.agentRunId,\n\t});\n\tmaestroOtelMetrics.llmRequestCount.add(1, attributes);\n\tif (input.tokens) {\n\t\trecordLlmTokenUsageMetric(input.tokens, attributes);\n\t}\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turn-tracker.d.ts","sourceRoot":"","sources":["../../src/telemetry/turn-tracker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EACN,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,
|
|
1
|
+
{"version":3,"file":"turn-tracker.d.ts","sourceRoot":"","sources":["../../src/telemetry/turn-tracker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EACN,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EAIvB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,WAAW,iBAAiB;IACjC,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,yEAAyE;IACzE,cAAc,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC7C,6DAA6D;IAC7D,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;CACrD;AAED,MAAM,WAAW,kBAAkB;IAClC,0BAA0B;IAC1B,WAAW,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;IAC1C,2BAA2B;IAC3B,YAAY,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC1C,8BAA8B;IAC9B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,gCAAgC;IAChC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oBAAoB;IACpB,QAAQ,CAAC,EAAE;QACV,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAC;QAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,WAAW;IAUtB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAVxB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,WAAW,CAA8B;IACjD,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,gBAAgB,CAAsB;IAC9C,OAAO,CAAC,gBAAgB,CAA2B;gBAGjC,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,iBAAiB;IAU3C;;;OAGG;IACH,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,IAAI;IAIzD;;OAEG;IACH,OAAO,IAAI,IAAI;IAOf;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB,OAAO,CAAC,WAAW;IAsFnB,OAAO,CAAC,SAAS;IAiDjB,OAAO,CAAC,OAAO;CA6Df;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAChC,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,iBAAiB,GACvB,WAAW,CAEb"}
|
|
@@ -34,6 +34,7 @@ export class TurnTracker {
|
|
|
34
34
|
this.context = {};
|
|
35
35
|
this.unsubscribe = null;
|
|
36
36
|
this.accumulatedUsage = null;
|
|
37
|
+
this.lastMetricTokens = null;
|
|
37
38
|
this.samplingConfig = {
|
|
38
39
|
...getSamplingConfigFromEnv(),
|
|
39
40
|
...config.samplingConfig,
|
|
@@ -87,6 +88,9 @@ export class TurnTracker {
|
|
|
87
88
|
this.currentTurn.recordSkillMetadata(event.skillMetadata);
|
|
88
89
|
}
|
|
89
90
|
break;
|
|
91
|
+
case "tool_phase_summary":
|
|
92
|
+
this.currentTurn?.recordToolPhaseSummary(event);
|
|
93
|
+
break;
|
|
90
94
|
case "message_start":
|
|
91
95
|
if (this.currentTurn && event.message?.role === "assistant") {
|
|
92
96
|
this.currentTurn.recordLlmStart();
|
|
@@ -130,6 +134,7 @@ export class TurnTracker {
|
|
|
130
134
|
if (!isContinuation || this.turnNumber === 0) {
|
|
131
135
|
this.turnNumber++;
|
|
132
136
|
this.accumulatedUsage = null;
|
|
137
|
+
this.lastMetricTokens = null;
|
|
133
138
|
}
|
|
134
139
|
this.currentTurn = new TurnCollector(this.config.sessionId, this.turnNumber, this.samplingConfig);
|
|
135
140
|
// Set model info from agent state
|
|
@@ -198,8 +203,10 @@ export class TurnTracker {
|
|
|
198
203
|
: undefined,
|
|
199
204
|
};
|
|
200
205
|
const costUsd = this.accumulatedUsage?.cost?.total ?? 0;
|
|
206
|
+
const metricTokens = diffTokenUsage(tokens, this.lastMetricTokens);
|
|
201
207
|
// Complete the turn
|
|
202
|
-
const canonicalEvent = this.currentTurn.complete(status, tokens, costUsd, errorDetails, abortReason);
|
|
208
|
+
const canonicalEvent = this.currentTurn.complete(status, tokens, costUsd, errorDetails, abortReason, metricTokens);
|
|
209
|
+
this.lastMetricTokens = tokens;
|
|
203
210
|
// Call the callback if provided
|
|
204
211
|
if (this.config.onTurnComplete) {
|
|
205
212
|
this.config.onTurnComplete(canonicalEvent);
|
|
@@ -213,4 +220,18 @@ export class TurnTracker {
|
|
|
213
220
|
export function createTurnTracker(agent, config) {
|
|
214
221
|
return new TurnTracker(agent, config);
|
|
215
222
|
}
|
|
223
|
+
function diffTokenUsage(current, previous) {
|
|
224
|
+
if (!previous) {
|
|
225
|
+
return current;
|
|
226
|
+
}
|
|
227
|
+
return {
|
|
228
|
+
input: Math.max(0, current.input - previous.input),
|
|
229
|
+
output: Math.max(0, current.output - previous.output),
|
|
230
|
+
cacheRead: Math.max(0, current.cacheRead - previous.cacheRead),
|
|
231
|
+
cacheWrite: Math.max(0, current.cacheWrite - previous.cacheWrite),
|
|
232
|
+
thinking: current.thinking !== undefined || previous.thinking !== undefined
|
|
233
|
+
? Math.max(0, (current.thinking ?? 0) - (previous.thinking ?? 0))
|
|
234
|
+
: undefined,
|
|
235
|
+
};
|
|
236
|
+
}
|
|
216
237
|
//# sourceMappingURL=turn-tracker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turn-tracker.js","sourceRoot":"","sources":["../../src/telemetry/turn-tracker.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Turn Tracker - Integrates TurnCollector with Agent Event Stream\n *\n * Automatically tracks agent turns by subscribing to agent events and\n * emitting canonical wide events at turn completion.\n */\n\nimport type { Agent } from \"../agent/agent.js\";\nimport type { AgentEvent, ThinkingLevel, Usage } from \"../agent/types.js\";\nimport {\n\ttype CanonicalTurnEvent,\n\ttype TailSamplingConfig,\n\tTurnCollector,\n\tgetSamplingConfigFromEnv,\n} from \"./wide-events.js\";\n\nexport interface TurnTrackerConfig {\n\t/** Session ID for the current session */\n\tsessionId: string;\n\t/** Sampling configuration (defaults to env vars or built-in defaults) */\n\tsamplingConfig?: Partial<TailSamplingConfig>;\n\t/** Callback when a turn completes (for logging/debugging) */\n\tonTurnComplete?: (event: CanonicalTurnEvent) => void;\n}\n\nexport interface TurnTrackerContext {\n\t/** Sandbox mode in use */\n\tsandboxMode?: \"docker\" | \"local\" | \"none\";\n\t/** Approval mode in use */\n\tapprovalMode?: \"auto\" | \"prompt\" | \"fail\";\n\t/** Active MCP server names */\n\tmcpServers?: string[];\n\t/** Number of context sources */\n\tcontextSourceCount?: number;\n\t/** Feature flags */\n\tfeatures?: {\n\t\tsafeMode?: boolean;\n\t\tguardianEnabled?: boolean;\n\t\tcompactionEnabled?: boolean;\n\t\thookCount?: number;\n\t};\n}\n\n/**\n * Tracks agent turns and emits canonical wide events.\n *\n * Usage:\n * ```typescript\n * const tracker = new TurnTracker(agent, {\n * sessionId: \"session-123\",\n * onTurnComplete: (event) => console.log(\"Turn completed:\", event.turnId),\n * });\n *\n * // Update context as it changes\n * tracker.updateContext({ sandboxMode: \"docker\", mcpServers: [\"context7\"] });\n *\n * // Tracker automatically records turns via agent subscription\n * await agent.prompt(\"Hello!\");\n *\n * // Clean up when done\n * tracker.dispose();\n * ```\n */\nexport class TurnTracker {\n\tprivate turnNumber = 0;\n\tprivate currentTurn: TurnCollector | null = null;\n\tprivate context: TurnTrackerContext = {};\n\tprivate unsubscribe: (() => void) | null = null;\n\tprivate samplingConfig: Partial<TailSamplingConfig>;\n\tprivate accumulatedUsage: Usage | null = null;\n\n\tconstructor(\n\t\tprivate readonly agent: Agent,\n\t\tprivate readonly config: TurnTrackerConfig,\n\t) {\n\t\tthis.samplingConfig = {\n\t\t\t...getSamplingConfigFromEnv(),\n\t\t\t...config.samplingConfig,\n\t\t};\n\n\t\tthis.unsubscribe = agent.subscribe((event) => this.handleEvent(event));\n\t}\n\n\t/**\n\t * Update the context for future turns.\n\t * Call this when sandbox mode, MCP servers, or other context changes.\n\t */\n\tupdateContext(context: Partial<TurnTrackerContext>): void {\n\t\tthis.context = { ...this.context, ...context };\n\t}\n\n\t/**\n\t * Stop tracking and clean up subscription.\n\t */\n\tdispose(): void {\n\t\tif (this.unsubscribe) {\n\t\t\tthis.unsubscribe();\n\t\t\tthis.unsubscribe = null;\n\t\t}\n\t}\n\n\t/**\n\t * Get the current turn number (0 if no turns have started).\n\t */\n\tgetTurnNumber(): number {\n\t\treturn this.turnNumber;\n\t}\n\n\tprivate handleEvent(event: AgentEvent): void {\n\t\tswitch (event.type) {\n\t\t\tcase \"agent_start\":\n\t\t\t\tthis.startTurn(event.continuation === true);\n\t\t\t\tbreak;\n\n\t\t\tcase \"tool_execution_start\":\n\t\t\t\tif (this.currentTurn && \"toolCallId\" in event && \"toolName\" in event) {\n\t\t\t\t\tthis.currentTurn.recordToolStart(\n\t\t\t\t\t\tevent.toolName,\n\t\t\t\t\t\tevent.toolCallId,\n\t\t\t\t\t\t\"input\" in event && typeof event.input === \"string\"\n\t\t\t\t\t\t\t? event.input.length\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"tool_execution_end\":\n\t\t\t\tif (this.currentTurn && \"toolCallId\" in event) {\n\t\t\t\t\tconst success = !event.isError;\n\t\t\t\t\tconst errorCode = event.isError\n\t\t\t\t\t\t? (event.errorCode?.slice(0, 50) ?? \"error\")\n\t\t\t\t\t\t: undefined;\n\t\t\t\t\tconst outputSize =\n\t\t\t\t\t\t\"output\" in event && typeof event.output === \"string\"\n\t\t\t\t\t\t\t? event.output.length\n\t\t\t\t\t\t\t: undefined;\n\n\t\t\t\t\tthis.currentTurn.recordToolEnd(\n\t\t\t\t\t\tevent.toolCallId,\n\t\t\t\t\t\tsuccess,\n\t\t\t\t\t\toutputSize,\n\t\t\t\t\t\terrorCode,\n\t\t\t\t\t);\n\t\t\t\t\tthis.currentTurn.recordSkillMetadata(event.skillMetadata);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"message_start\":\n\t\t\t\tif (this.currentTurn && event.message?.role === \"assistant\") {\n\t\t\t\t\tthis.currentTurn.recordLlmStart();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"message_end\":\n\t\t\t\tif (this.currentTurn && event.message?.role === \"assistant\") {\n\t\t\t\t\tthis.currentTurn.recordLlmEnd();\n\t\t\t\t\t// Accumulate usage from this message (turns may have multiple LLM calls)\n\t\t\t\t\tif (\"message\" in event && event.message && \"usage\" in event.message) {\n\t\t\t\t\t\tconst usage = event.message.usage as Usage;\n\t\t\t\t\t\tif (this.accumulatedUsage) {\n\t\t\t\t\t\t\t// Add to existing totals\n\t\t\t\t\t\t\tthis.accumulatedUsage = {\n\t\t\t\t\t\t\t\tinput: this.accumulatedUsage.input + usage.input,\n\t\t\t\t\t\t\t\toutput: this.accumulatedUsage.output + usage.output,\n\t\t\t\t\t\t\t\tcacheRead: this.accumulatedUsage.cacheRead + usage.cacheRead,\n\t\t\t\t\t\t\t\tcacheWrite: this.accumulatedUsage.cacheWrite + usage.cacheWrite,\n\t\t\t\t\t\t\t\tcost: {\n\t\t\t\t\t\t\t\t\tinput: this.accumulatedUsage.cost.input + usage.cost.input,\n\t\t\t\t\t\t\t\t\toutput: this.accumulatedUsage.cost.output + usage.cost.output,\n\t\t\t\t\t\t\t\t\tcacheRead:\n\t\t\t\t\t\t\t\t\t\tthis.accumulatedUsage.cost.cacheRead + usage.cost.cacheRead,\n\t\t\t\t\t\t\t\t\tcacheWrite:\n\t\t\t\t\t\t\t\t\t\tthis.accumulatedUsage.cost.cacheWrite +\n\t\t\t\t\t\t\t\t\t\tusage.cost.cacheWrite,\n\t\t\t\t\t\t\t\t\ttotal: this.accumulatedUsage.cost.total + usage.cost.total,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.accumulatedUsage = usage;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"agent_end\":\n\t\t\t\tthis.endTurn(event);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tprivate startTurn(isContinuation = false): void {\n\t\tif (!isContinuation || this.turnNumber === 0) {\n\t\t\tthis.turnNumber++;\n\t\t\tthis.accumulatedUsage = null;\n\t\t}\n\n\t\tthis.currentTurn = new TurnCollector(\n\t\t\tthis.config.sessionId,\n\t\t\tthis.turnNumber,\n\t\t\tthis.samplingConfig,\n\t\t);\n\n\t\t// Set model info from agent state\n\t\tconst state = this.agent.state;\n\t\tthis.currentTurn.setModel({\n\t\t\tid: state.model.id,\n\t\t\tprovider: state.model.provider,\n\t\t\tthinkingLevel:\n\t\t\t\tstate.thinkingLevel as CanonicalTurnEvent[\"model\"][\"thinkingLevel\"],\n\t\t});\n\t\tthis.currentTurn.setPromptMetadata(state.promptMetadata);\n\n\t\t// Set context from tracker\n\t\tif (this.context.sandboxMode) {\n\t\t\tthis.currentTurn.setSandboxMode(this.context.sandboxMode);\n\t\t}\n\t\tif (this.context.approvalMode) {\n\t\t\tthis.currentTurn.setApprovalMode(this.context.approvalMode);\n\t\t}\n\t\tif (this.context.mcpServers) {\n\t\t\tthis.currentTurn.setMcpServers(this.context.mcpServers);\n\t\t}\n\t\tif (this.context.contextSourceCount !== undefined) {\n\t\t\tthis.currentTurn.setContextSourceCount(this.context.contextSourceCount);\n\t\t}\n\t\tif (this.context.features) {\n\t\t\tthis.currentTurn.setFeatures({\n\t\t\t\tsafeMode: this.context.features.safeMode ?? false,\n\t\t\t\tguardianEnabled: this.context.features.guardianEnabled ?? true,\n\t\t\t\tcompactionEnabled: this.context.features.compactionEnabled ?? true,\n\t\t\t\thookCount: this.context.features.hookCount ?? 0,\n\t\t\t});\n\t\t}\n\n\t\t// Set message count\n\t\tthis.currentTurn.setMessageCount(state.messages.length);\n\t}\n\n\tprivate endTurn(event: AgentEvent & { type: \"agent_end\" }): void {\n\t\tif (!this.currentTurn) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine status\n\t\tlet status: CanonicalTurnEvent[\"status\"] = \"success\";\n\t\tlet abortReason: CanonicalTurnEvent[\"abortReason\"] | undefined;\n\t\tlet errorDetails: { category?: string; message?: string } | undefined;\n\n\t\tif (\"aborted\" in event && event.aborted) {\n\t\t\tstatus = \"aborted\";\n\t\t\tabortReason = \"user\";\n\t\t}\n\n\t\t// Check for error in agent state\n\t\tconst agentError = this.agent.state.error;\n\t\tif (agentError) {\n\t\t\tstatus = \"error\";\n\t\t\terrorDetails = {\n\t\t\t\tcategory: \"runtime\",\n\t\t\t\tmessage:\n\t\t\t\t\tagentError.length > 200\n\t\t\t\t\t\t? `${agentError.slice(0, 200)}...`\n\t\t\t\t\t\t: agentError,\n\t\t\t};\n\t\t}\n\n\t\t// Extract token usage\n\t\tconst tokens = {\n\t\t\tinput: this.accumulatedUsage?.input ?? 0,\n\t\t\toutput: this.accumulatedUsage?.output ?? 0,\n\t\t\tcacheRead: this.accumulatedUsage?.cacheRead ?? 0,\n\t\t\tcacheWrite: this.accumulatedUsage?.cacheWrite ?? 0,\n\t\t\tthinking:\n\t\t\t\t\"thinking\" in (this.accumulatedUsage ?? {})\n\t\t\t\t\t? (this.accumulatedUsage as { thinking?: number }).thinking\n\t\t\t\t\t: undefined,\n\t\t};\n\n\t\tconst costUsd = this.accumulatedUsage?.cost?.total ?? 0;\n\n\t\t// Complete the turn\n\t\tconst canonicalEvent = this.currentTurn.complete(\n\t\t\tstatus,\n\t\t\ttokens,\n\t\t\tcostUsd,\n\t\t\terrorDetails,\n\t\t\tabortReason,\n\t\t);\n\n\t\t// Call the callback if provided\n\t\tif (this.config.onTurnComplete) {\n\t\t\tthis.config.onTurnComplete(canonicalEvent);\n\t\t}\n\n\t\tthis.currentTurn = null;\n\t}\n}\n\n/**\n * Create a TurnTracker for an agent.\n */\nexport function createTurnTracker(\n\tagent: Agent,\n\tconfig: TurnTrackerConfig,\n): TurnTracker {\n\treturn new TurnTracker(agent, config);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"turn-tracker.js","sourceRoot":"","sources":["../../src/telemetry/turn-tracker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAIN,aAAa,EACb,wBAAwB,GACxB,MAAM,kBAAkB,CAAC;AA6B1B;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,OAAO,WAAW;IASvB,YACkB,KAAY,EACZ,MAAyB;QADzB,UAAK,GAAL,KAAK,CAAO;QACZ,WAAM,GAAN,MAAM,CAAmB;QAVnC,eAAU,GAAG,CAAC,CAAC;QACf,gBAAW,GAAyB,IAAI,CAAC;QACzC,YAAO,GAAuB,EAAE,CAAC;QACjC,gBAAW,GAAwB,IAAI,CAAC;QAExC,qBAAgB,GAAiB,IAAI,CAAC;QACtC,qBAAgB,GAAsB,IAAI,CAAC;QAMlD,IAAI,CAAC,cAAc,GAAG;YACrB,GAAG,wBAAwB,EAAE;YAC7B,GAAG,MAAM,CAAC,cAAc;SACxB,CAAC;QAEF,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IACxE,CAAC;IAED;;;OAGG;IACH,aAAa,CAAC,OAAoC;QACjD,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,OAAO;QACN,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACzB,CAAC;IACF,CAAC;IAED;;OAEG;IACH,aAAa;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC;IACxB,CAAC;IAEO,WAAW,CAAC,KAAiB;QACpC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACpB,KAAK,aAAa;gBACjB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC;gBAC5C,MAAM;YAEP,KAAK,sBAAsB;gBAC1B,IAAI,IAAI,CAAC,WAAW,IAAI,YAAY,IAAI,KAAK,IAAI,UAAU,IAAI,KAAK,EAAE,CAAC;oBACtE,IAAI,CAAC,WAAW,CAAC,eAAe,CAC/B,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,UAAU,EAChB,OAAO,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;wBAClD,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM;wBACpB,CAAC,CAAC,SAAS,CACZ,CAAC;gBACH,CAAC;gBACD,MAAM;YAEP,KAAK,oBAAoB;gBACxB,IAAI,IAAI,CAAC,WAAW,IAAI,YAAY,IAAI,KAAK,EAAE,CAAC;oBAC/C,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;oBAC/B,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO;wBAC9B,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC;wBAC5C,CAAC,CAAC,SAAS,CAAC;oBACb,MAAM,UAAU,GACf,QAAQ,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ;wBACpD,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM;wBACrB,CAAC,CAAC,SAAS,CAAC;oBAEd,IAAI,CAAC,WAAW,CAAC,aAAa,CAC7B,KAAK,CAAC,UAAU,EAChB,OAAO,EACP,UAAU,EACV,SAAS,CACT,CAAC;oBACF,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;gBAC3D,CAAC;gBACD,MAAM;YAEP,KAAK,oBAAoB;gBACxB,IAAI,CAAC,WAAW,EAAE,sBAAsB,CAAC,KAAK,CAAC,CAAC;gBAChD,MAAM;YAEP,KAAK,eAAe;gBACnB,IAAI,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC,OAAO,EAAE,IAAI,KAAK,WAAW,EAAE,CAAC;oBAC7D,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;gBACnC,CAAC;gBACD,MAAM;YAEP,KAAK,aAAa;gBACjB,IAAI,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC,OAAO,EAAE,IAAI,KAAK,WAAW,EAAE,CAAC;oBAC7D,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;oBAChC,yEAAyE;oBACzE,IAAI,SAAS,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,IAAI,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;wBACrE,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAc,CAAC;wBAC3C,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;4BAC3B,yBAAyB;4BACzB,IAAI,CAAC,gBAAgB,GAAG;gCACvB,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK;gCAChD,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM;gCACnD,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS;gCAC5D,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU;gCAC/D,IAAI,EAAE;oCACL,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK;oCAC1D,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM;oCAC7D,SAAS,EACR,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS;oCAC5D,UAAU,EACT,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU;wCACrC,KAAK,CAAC,IAAI,CAAC,UAAU;oCACtB,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK;iCAC1D;6BACD,CAAC;wBACH,CAAC;6BAAM,CAAC;4BACP,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;wBAC/B,CAAC;oBACF,CAAC;gBACF,CAAC;gBACD,MAAM;YAEP,KAAK,WAAW;gBACf,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACpB,MAAM;QACR,CAAC;IACF,CAAC;IAEO,SAAS,CAAC,cAAc,GAAG,KAAK;QACvC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;YAC9C,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC7B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC9B,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,IAAI,aAAa,CACnC,IAAI,CAAC,MAAM,CAAC,SAAS,EACrB,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,cAAc,CACnB,CAAC;QAEF,kCAAkC;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC/B,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;YACzB,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;YAClB,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ;YAC9B,aAAa,EACZ,KAAK,CAAC,aAA6D;SACpE,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAEzD,2BAA2B;QAC3B,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAC9B,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;YAC/B,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YAC7B,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;YACnD,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QACzE,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;gBAC5B,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,IAAI,KAAK;gBACjD,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,IAAI,IAAI;gBAC9D,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,IAAI,IAAI;gBAClE,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,IAAI,CAAC;aAC/C,CAAC,CAAC;QACJ,CAAC;QAED,oBAAoB;QACpB,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACzD,CAAC;IAEO,OAAO,CAAC,KAAyC;QACxD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACvB,OAAO;QACR,CAAC;QAED,mBAAmB;QACnB,IAAI,MAAM,GAAiC,SAAS,CAAC;QACrD,IAAI,WAA0D,CAAC;QAC/D,IAAI,YAAiE,CAAC;QAEtE,IAAI,SAAS,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YACzC,MAAM,GAAG,SAAS,CAAC;YACnB,WAAW,GAAG,MAAM,CAAC;QACtB,CAAC;QAED,iCAAiC;QACjC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;QAC1C,IAAI,UAAU,EAAE,CAAC;YAChB,MAAM,GAAG,OAAO,CAAC;YACjB,YAAY,GAAG;gBACd,QAAQ,EAAE,SAAS;gBACnB,OAAO,EACN,UAAU,CAAC,MAAM,GAAG,GAAG;oBACtB,CAAC,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK;oBAClC,CAAC,CAAC,UAAU;aACd,CAAC;QACH,CAAC;QAED,sBAAsB;QACtB,MAAM,MAAM,GAAG;YACd,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,KAAK,IAAI,CAAC;YACxC,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,IAAI,CAAC;YAC1C,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAAE,SAAS,IAAI,CAAC;YAChD,UAAU,EAAE,IAAI,CAAC,gBAAgB,EAAE,UAAU,IAAI,CAAC;YAClD,QAAQ,EACP,UAAU,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,EAAE,CAAC;gBAC1C,CAAC,CAAE,IAAI,CAAC,gBAA0C,CAAC,QAAQ;gBAC3D,CAAC,CAAC,SAAS;SACb,CAAC;QAEF,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC;QACxD,MAAM,YAAY,GAAG,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAEnE,oBAAoB;QACpB,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAC/C,MAAM,EACN,MAAM,EACN,OAAO,EACP,YAAY,EACZ,WAAW,EACX,YAAY,CACZ,CAAC;QACF,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC;QAE/B,gCAAgC;QAChC,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YAChC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IACzB,CAAC;CACD;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAChC,KAAY,EACZ,MAAyB;IAEzB,OAAO,IAAI,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,cAAc,CACtB,OAAmB,EACnB,QAA2B;IAE3B,IAAI,CAAC,QAAQ,EAAE,CAAC;QACf,OAAO,OAAO,CAAC;IAChB,CAAC;IACD,OAAO;QACN,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QAClD,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QACrD,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;QAC9D,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;QACjE,QAAQ,EACP,OAAO,CAAC,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,QAAQ,KAAK,SAAS;YAChE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;YACjE,CAAC,CAAC,SAAS;KACb,CAAC;AACH,CAAC","sourcesContent":["/**\n * Turn Tracker - Integrates TurnCollector with Agent Event Stream\n *\n * Automatically tracks agent turns by subscribing to agent events and\n * emitting canonical wide events at turn completion.\n */\n\nimport type { Agent } from \"../agent/agent.js\";\nimport type { AgentEvent, ThinkingLevel, Usage } from \"../agent/types.js\";\nimport {\n\ttype CanonicalTurnEvent,\n\ttype TailSamplingConfig,\n\ttype TokenUsage,\n\tTurnCollector,\n\tgetSamplingConfigFromEnv,\n} from \"./wide-events.js\";\n\nexport interface TurnTrackerConfig {\n\t/** Session ID for the current session */\n\tsessionId: string;\n\t/** Sampling configuration (defaults to env vars or built-in defaults) */\n\tsamplingConfig?: Partial<TailSamplingConfig>;\n\t/** Callback when a turn completes (for logging/debugging) */\n\tonTurnComplete?: (event: CanonicalTurnEvent) => void;\n}\n\nexport interface TurnTrackerContext {\n\t/** Sandbox mode in use */\n\tsandboxMode?: \"docker\" | \"local\" | \"none\";\n\t/** Approval mode in use */\n\tapprovalMode?: \"auto\" | \"prompt\" | \"fail\";\n\t/** Active MCP server names */\n\tmcpServers?: string[];\n\t/** Number of context sources */\n\tcontextSourceCount?: number;\n\t/** Feature flags */\n\tfeatures?: {\n\t\tsafeMode?: boolean;\n\t\tguardianEnabled?: boolean;\n\t\tcompactionEnabled?: boolean;\n\t\thookCount?: number;\n\t};\n}\n\n/**\n * Tracks agent turns and emits canonical wide events.\n *\n * Usage:\n * ```typescript\n * const tracker = new TurnTracker(agent, {\n * sessionId: \"session-123\",\n * onTurnComplete: (event) => console.log(\"Turn completed:\", event.turnId),\n * });\n *\n * // Update context as it changes\n * tracker.updateContext({ sandboxMode: \"docker\", mcpServers: [\"context7\"] });\n *\n * // Tracker automatically records turns via agent subscription\n * await agent.prompt(\"Hello!\");\n *\n * // Clean up when done\n * tracker.dispose();\n * ```\n */\nexport class TurnTracker {\n\tprivate turnNumber = 0;\n\tprivate currentTurn: TurnCollector | null = null;\n\tprivate context: TurnTrackerContext = {};\n\tprivate unsubscribe: (() => void) | null = null;\n\tprivate samplingConfig: Partial<TailSamplingConfig>;\n\tprivate accumulatedUsage: Usage | null = null;\n\tprivate lastMetricTokens: TokenUsage | null = null;\n\n\tconstructor(\n\t\tprivate readonly agent: Agent,\n\t\tprivate readonly config: TurnTrackerConfig,\n\t) {\n\t\tthis.samplingConfig = {\n\t\t\t...getSamplingConfigFromEnv(),\n\t\t\t...config.samplingConfig,\n\t\t};\n\n\t\tthis.unsubscribe = agent.subscribe((event) => this.handleEvent(event));\n\t}\n\n\t/**\n\t * Update the context for future turns.\n\t * Call this when sandbox mode, MCP servers, or other context changes.\n\t */\n\tupdateContext(context: Partial<TurnTrackerContext>): void {\n\t\tthis.context = { ...this.context, ...context };\n\t}\n\n\t/**\n\t * Stop tracking and clean up subscription.\n\t */\n\tdispose(): void {\n\t\tif (this.unsubscribe) {\n\t\t\tthis.unsubscribe();\n\t\t\tthis.unsubscribe = null;\n\t\t}\n\t}\n\n\t/**\n\t * Get the current turn number (0 if no turns have started).\n\t */\n\tgetTurnNumber(): number {\n\t\treturn this.turnNumber;\n\t}\n\n\tprivate handleEvent(event: AgentEvent): void {\n\t\tswitch (event.type) {\n\t\t\tcase \"agent_start\":\n\t\t\t\tthis.startTurn(event.continuation === true);\n\t\t\t\tbreak;\n\n\t\t\tcase \"tool_execution_start\":\n\t\t\t\tif (this.currentTurn && \"toolCallId\" in event && \"toolName\" in event) {\n\t\t\t\t\tthis.currentTurn.recordToolStart(\n\t\t\t\t\t\tevent.toolName,\n\t\t\t\t\t\tevent.toolCallId,\n\t\t\t\t\t\t\"input\" in event && typeof event.input === \"string\"\n\t\t\t\t\t\t\t? event.input.length\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"tool_execution_end\":\n\t\t\t\tif (this.currentTurn && \"toolCallId\" in event) {\n\t\t\t\t\tconst success = !event.isError;\n\t\t\t\t\tconst errorCode = event.isError\n\t\t\t\t\t\t? (event.errorCode?.slice(0, 50) ?? \"error\")\n\t\t\t\t\t\t: undefined;\n\t\t\t\t\tconst outputSize =\n\t\t\t\t\t\t\"output\" in event && typeof event.output === \"string\"\n\t\t\t\t\t\t\t? event.output.length\n\t\t\t\t\t\t\t: undefined;\n\n\t\t\t\t\tthis.currentTurn.recordToolEnd(\n\t\t\t\t\t\tevent.toolCallId,\n\t\t\t\t\t\tsuccess,\n\t\t\t\t\t\toutputSize,\n\t\t\t\t\t\terrorCode,\n\t\t\t\t\t);\n\t\t\t\t\tthis.currentTurn.recordSkillMetadata(event.skillMetadata);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"tool_phase_summary\":\n\t\t\t\tthis.currentTurn?.recordToolPhaseSummary(event);\n\t\t\t\tbreak;\n\n\t\t\tcase \"message_start\":\n\t\t\t\tif (this.currentTurn && event.message?.role === \"assistant\") {\n\t\t\t\t\tthis.currentTurn.recordLlmStart();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"message_end\":\n\t\t\t\tif (this.currentTurn && event.message?.role === \"assistant\") {\n\t\t\t\t\tthis.currentTurn.recordLlmEnd();\n\t\t\t\t\t// Accumulate usage from this message (turns may have multiple LLM calls)\n\t\t\t\t\tif (\"message\" in event && event.message && \"usage\" in event.message) {\n\t\t\t\t\t\tconst usage = event.message.usage as Usage;\n\t\t\t\t\t\tif (this.accumulatedUsage) {\n\t\t\t\t\t\t\t// Add to existing totals\n\t\t\t\t\t\t\tthis.accumulatedUsage = {\n\t\t\t\t\t\t\t\tinput: this.accumulatedUsage.input + usage.input,\n\t\t\t\t\t\t\t\toutput: this.accumulatedUsage.output + usage.output,\n\t\t\t\t\t\t\t\tcacheRead: this.accumulatedUsage.cacheRead + usage.cacheRead,\n\t\t\t\t\t\t\t\tcacheWrite: this.accumulatedUsage.cacheWrite + usage.cacheWrite,\n\t\t\t\t\t\t\t\tcost: {\n\t\t\t\t\t\t\t\t\tinput: this.accumulatedUsage.cost.input + usage.cost.input,\n\t\t\t\t\t\t\t\t\toutput: this.accumulatedUsage.cost.output + usage.cost.output,\n\t\t\t\t\t\t\t\t\tcacheRead:\n\t\t\t\t\t\t\t\t\t\tthis.accumulatedUsage.cost.cacheRead + usage.cost.cacheRead,\n\t\t\t\t\t\t\t\t\tcacheWrite:\n\t\t\t\t\t\t\t\t\t\tthis.accumulatedUsage.cost.cacheWrite +\n\t\t\t\t\t\t\t\t\t\tusage.cost.cacheWrite,\n\t\t\t\t\t\t\t\t\ttotal: this.accumulatedUsage.cost.total + usage.cost.total,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.accumulatedUsage = usage;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"agent_end\":\n\t\t\t\tthis.endTurn(event);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tprivate startTurn(isContinuation = false): void {\n\t\tif (!isContinuation || this.turnNumber === 0) {\n\t\t\tthis.turnNumber++;\n\t\t\tthis.accumulatedUsage = null;\n\t\t\tthis.lastMetricTokens = null;\n\t\t}\n\n\t\tthis.currentTurn = new TurnCollector(\n\t\t\tthis.config.sessionId,\n\t\t\tthis.turnNumber,\n\t\t\tthis.samplingConfig,\n\t\t);\n\n\t\t// Set model info from agent state\n\t\tconst state = this.agent.state;\n\t\tthis.currentTurn.setModel({\n\t\t\tid: state.model.id,\n\t\t\tprovider: state.model.provider,\n\t\t\tthinkingLevel:\n\t\t\t\tstate.thinkingLevel as CanonicalTurnEvent[\"model\"][\"thinkingLevel\"],\n\t\t});\n\t\tthis.currentTurn.setPromptMetadata(state.promptMetadata);\n\n\t\t// Set context from tracker\n\t\tif (this.context.sandboxMode) {\n\t\t\tthis.currentTurn.setSandboxMode(this.context.sandboxMode);\n\t\t}\n\t\tif (this.context.approvalMode) {\n\t\t\tthis.currentTurn.setApprovalMode(this.context.approvalMode);\n\t\t}\n\t\tif (this.context.mcpServers) {\n\t\t\tthis.currentTurn.setMcpServers(this.context.mcpServers);\n\t\t}\n\t\tif (this.context.contextSourceCount !== undefined) {\n\t\t\tthis.currentTurn.setContextSourceCount(this.context.contextSourceCount);\n\t\t}\n\t\tif (this.context.features) {\n\t\t\tthis.currentTurn.setFeatures({\n\t\t\t\tsafeMode: this.context.features.safeMode ?? false,\n\t\t\t\tguardianEnabled: this.context.features.guardianEnabled ?? true,\n\t\t\t\tcompactionEnabled: this.context.features.compactionEnabled ?? true,\n\t\t\t\thookCount: this.context.features.hookCount ?? 0,\n\t\t\t});\n\t\t}\n\n\t\t// Set message count\n\t\tthis.currentTurn.setMessageCount(state.messages.length);\n\t}\n\n\tprivate endTurn(event: AgentEvent & { type: \"agent_end\" }): void {\n\t\tif (!this.currentTurn) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine status\n\t\tlet status: CanonicalTurnEvent[\"status\"] = \"success\";\n\t\tlet abortReason: CanonicalTurnEvent[\"abortReason\"] | undefined;\n\t\tlet errorDetails: { category?: string; message?: string } | undefined;\n\n\t\tif (\"aborted\" in event && event.aborted) {\n\t\t\tstatus = \"aborted\";\n\t\t\tabortReason = \"user\";\n\t\t}\n\n\t\t// Check for error in agent state\n\t\tconst agentError = this.agent.state.error;\n\t\tif (agentError) {\n\t\t\tstatus = \"error\";\n\t\t\terrorDetails = {\n\t\t\t\tcategory: \"runtime\",\n\t\t\t\tmessage:\n\t\t\t\t\tagentError.length > 200\n\t\t\t\t\t\t? `${agentError.slice(0, 200)}...`\n\t\t\t\t\t\t: agentError,\n\t\t\t};\n\t\t}\n\n\t\t// Extract token usage\n\t\tconst tokens = {\n\t\t\tinput: this.accumulatedUsage?.input ?? 0,\n\t\t\toutput: this.accumulatedUsage?.output ?? 0,\n\t\t\tcacheRead: this.accumulatedUsage?.cacheRead ?? 0,\n\t\t\tcacheWrite: this.accumulatedUsage?.cacheWrite ?? 0,\n\t\t\tthinking:\n\t\t\t\t\"thinking\" in (this.accumulatedUsage ?? {})\n\t\t\t\t\t? (this.accumulatedUsage as { thinking?: number }).thinking\n\t\t\t\t\t: undefined,\n\t\t};\n\n\t\tconst costUsd = this.accumulatedUsage?.cost?.total ?? 0;\n\t\tconst metricTokens = diffTokenUsage(tokens, this.lastMetricTokens);\n\n\t\t// Complete the turn\n\t\tconst canonicalEvent = this.currentTurn.complete(\n\t\t\tstatus,\n\t\t\ttokens,\n\t\t\tcostUsd,\n\t\t\terrorDetails,\n\t\t\tabortReason,\n\t\t\tmetricTokens,\n\t\t);\n\t\tthis.lastMetricTokens = tokens;\n\n\t\t// Call the callback if provided\n\t\tif (this.config.onTurnComplete) {\n\t\t\tthis.config.onTurnComplete(canonicalEvent);\n\t\t}\n\n\t\tthis.currentTurn = null;\n\t}\n}\n\n/**\n * Create a TurnTracker for an agent.\n */\nexport function createTurnTracker(\n\tagent: Agent,\n\tconfig: TurnTrackerConfig,\n): TurnTracker {\n\treturn new TurnTracker(agent, config);\n}\n\nfunction diffTokenUsage(\n\tcurrent: TokenUsage,\n\tprevious: TokenUsage | null,\n): TokenUsage {\n\tif (!previous) {\n\t\treturn current;\n\t}\n\treturn {\n\t\tinput: Math.max(0, current.input - previous.input),\n\t\toutput: Math.max(0, current.output - previous.output),\n\t\tcacheRead: Math.max(0, current.cacheRead - previous.cacheRead),\n\t\tcacheWrite: Math.max(0, current.cacheWrite - previous.cacheWrite),\n\t\tthinking:\n\t\t\tcurrent.thinking !== undefined || previous.thinking !== undefined\n\t\t\t\t? Math.max(0, (current.thinking ?? 0) - (previous.thinking ?? 0))\n\t\t\t\t: undefined,\n\t};\n}\n"]}
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
* - Tail sampling: always keep errors/slow, sample successes
|
|
12
12
|
* - Optimized for querying, not writing
|
|
13
13
|
*/
|
|
14
|
+
import type { ToolPhaseSummary, ToolSchedulingDecision } from "../agent/types.js";
|
|
14
15
|
import type { PromptMetadata } from "../prompts/types.js";
|
|
15
16
|
import type { SkillArtifactMetadata } from "../skills/artifact-metadata.js";
|
|
16
17
|
export interface ToolExecution {
|
|
@@ -21,6 +22,7 @@ export interface ToolExecution {
|
|
|
21
22
|
errorCode?: string;
|
|
22
23
|
inputSizeBytes?: number;
|
|
23
24
|
outputSizeBytes?: number;
|
|
25
|
+
scheduling?: ToolSchedulingDecision;
|
|
24
26
|
}
|
|
25
27
|
export interface TokenUsage {
|
|
26
28
|
input: number;
|
|
@@ -34,6 +36,27 @@ export interface ModelInfo {
|
|
|
34
36
|
provider: string;
|
|
35
37
|
thinkingLevel: "off" | "minimal" | "low" | "medium" | "high" | "max" | "ultra";
|
|
36
38
|
}
|
|
39
|
+
export interface SerializationReasonCount {
|
|
40
|
+
reason: string;
|
|
41
|
+
count: number;
|
|
42
|
+
}
|
|
43
|
+
export interface ToolSchedulingSummary {
|
|
44
|
+
modelToolCallCount: number;
|
|
45
|
+
modelEmittedToolCallCount: number;
|
|
46
|
+
schedulableWaveCount: number;
|
|
47
|
+
parallelizedCallCount: number;
|
|
48
|
+
actuallyParallelizedCallCount: number;
|
|
49
|
+
serializedCallCount: number;
|
|
50
|
+
delayedCallCount: number;
|
|
51
|
+
blockedByMutationCount: number;
|
|
52
|
+
mcpOptInCallCount: number;
|
|
53
|
+
mcpOptInUseCount: number;
|
|
54
|
+
cacheHitCount: number;
|
|
55
|
+
totalToolWaitMs: number;
|
|
56
|
+
toolWaitTimeMs: number;
|
|
57
|
+
serializationReasons: Record<string, number>;
|
|
58
|
+
topSerializationReasons: SerializationReasonCount[];
|
|
59
|
+
}
|
|
37
60
|
/**
|
|
38
61
|
* Canonical Turn Event - One wide event per agent turn
|
|
39
62
|
*
|
|
@@ -58,6 +81,7 @@ export interface CanonicalTurnEvent {
|
|
|
58
81
|
toolCount: number;
|
|
59
82
|
toolSuccessCount: number;
|
|
60
83
|
toolFailureCount: number;
|
|
84
|
+
toolScheduling?: ToolSchedulingSummary;
|
|
61
85
|
tokens: TokenUsage;
|
|
62
86
|
costUsd: number;
|
|
63
87
|
sandboxMode: "docker" | "local" | "none";
|
|
@@ -123,11 +147,14 @@ export declare class TurnCollector {
|
|
|
123
147
|
private readonly startTime;
|
|
124
148
|
private llmStartTime?;
|
|
125
149
|
private accumulatedLlmDurationMs;
|
|
150
|
+
private llmRequestCount;
|
|
126
151
|
private queueStartTime?;
|
|
127
152
|
private model;
|
|
128
153
|
private promptMetadata?;
|
|
129
154
|
private readonly skillMetadata;
|
|
130
155
|
private tools;
|
|
156
|
+
private readonly toolSchedulingDecisions;
|
|
157
|
+
private readonly toolPhaseSummaries;
|
|
131
158
|
private completedTools;
|
|
132
159
|
private sandboxMode;
|
|
133
160
|
private approvalMode;
|
|
@@ -157,6 +184,8 @@ export declare class TurnCollector {
|
|
|
157
184
|
recordLlmStart(): this;
|
|
158
185
|
recordLlmEnd(): this;
|
|
159
186
|
recordToolStart(name: string, callId: string, inputSizeBytes?: number): this;
|
|
187
|
+
recordToolSchedulingDecision(decision: ToolSchedulingDecision): this;
|
|
188
|
+
recordToolPhaseSummary(summary: ToolPhaseSummary): this;
|
|
160
189
|
recordToolEnd(callId: string, success: boolean, outputSizeBytes?: number, errorCode?: string): this;
|
|
161
190
|
/**
|
|
162
191
|
* Complete the turn and emit the canonical event.
|
|
@@ -165,7 +194,8 @@ export declare class TurnCollector {
|
|
|
165
194
|
complete(status: CanonicalTurnEvent["status"], tokens: TokenUsage, costUsd: number, errorDetails?: {
|
|
166
195
|
category?: string;
|
|
167
196
|
message?: string;
|
|
168
|
-
}, abortReason?: CanonicalTurnEvent["abortReason"]): CanonicalTurnEvent;
|
|
197
|
+
}, abortReason?: CanonicalTurnEvent["abortReason"], metricTokens?: TokenUsage): CanonicalTurnEvent;
|
|
198
|
+
private summarizeToolScheduling;
|
|
169
199
|
private shouldSample;
|
|
170
200
|
}
|
|
171
201
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wide-events.d.ts","sourceRoot":"","sources":["../../src/telemetry/wide-events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"wide-events.d.ts","sourceRoot":"","sources":["../../src/telemetry/wide-events.ts"],"names":[],"mappings":"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"}
|