@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
package/dist/telemetry.js
CHANGED
|
@@ -3,11 +3,15 @@ import { dirname } from "node:path";
|
|
|
3
3
|
import { SpanStatusCode } from "@opentelemetry/api";
|
|
4
4
|
import { PATHS } from "./config/constants.js";
|
|
5
5
|
import { getTelemetryTracer, isOpenTelemetryEnabled, } from "./opentelemetry.js";
|
|
6
|
+
import { isInternalTelemetryDisabled } from "./telemetry/disablement.js";
|
|
6
7
|
import { mirrorTelemetryToMaestroEventBus, resolveMaestroEventBusConfig, } from "./telemetry/maestro-event-bus.js";
|
|
8
|
+
import { normalizeTelemetryMetadataInputs } from "./telemetry/metadata-normalization.js";
|
|
7
9
|
import { hasRemoteMeterDestination, mirrorCanonicalTurnEventToMeter, } from "./telemetry/meter-service-client.js";
|
|
10
|
+
import { recordCompactionMetric, recordSubagentDispatchMetric, recordToolInvocationMetric, } from "./telemetry/metrics.js";
|
|
8
11
|
import { setDefaultTelemetryRecorder, } from "./telemetry/wide-events.js";
|
|
9
12
|
import { resolveEnvPath } from "./utils/path-expansion.js";
|
|
10
13
|
import { sanitizeOptionalWithStaticMask, sanitizeWithStaticMask, } from "./utils/secret-redactor.js";
|
|
14
|
+
export { splitTelemetryMetadata } from "./telemetry/metadata-normalization.js";
|
|
11
15
|
const telemetryFlag = process.env.MAESTRO_TELEMETRY ?? process.env.PLAYWRIGHT_TELEMETRY;
|
|
12
16
|
const telemetryFileEnv = resolveEnvPath(process.env.MAESTRO_TELEMETRY_FILE) ??
|
|
13
17
|
resolveEnvPath(process.env.PLAYWRIGHT_TELEMETRY_FILE);
|
|
@@ -84,6 +88,32 @@ export function setTelemetryRuntimeOverride(enabled, reason) {
|
|
|
84
88
|
telemetryOverrideReason = reason;
|
|
85
89
|
telemetryEnabled = enabled === null ? initialTelemetryEnabled : enabled;
|
|
86
90
|
}
|
|
91
|
+
function normalizeTelemetryEventMetadata(event) {
|
|
92
|
+
if (!("metadata" in event) && !("sensitiveMetadata" in event)) {
|
|
93
|
+
return event;
|
|
94
|
+
}
|
|
95
|
+
const existingMetadata = "metadata" in event ? stringRecord(event.metadata) : undefined;
|
|
96
|
+
const existingSensitiveMetadata = "sensitiveMetadata" in event
|
|
97
|
+
? stringRecord(event.sensitiveMetadata)
|
|
98
|
+
: undefined;
|
|
99
|
+
const { metadata, sensitiveMetadata } = normalizeTelemetryMetadataInputs(existingMetadata, existingSensitiveMetadata);
|
|
100
|
+
const normalized = { ...event };
|
|
101
|
+
if ("metadata" in normalized) {
|
|
102
|
+
if (metadata) {
|
|
103
|
+
normalized.metadata = metadata;
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
delete normalized.metadata;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
if (sensitiveMetadata) {
|
|
110
|
+
normalized.sensitiveMetadata = sensitiveMetadata;
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
delete normalized.sensitiveMetadata;
|
|
114
|
+
}
|
|
115
|
+
return normalized;
|
|
116
|
+
}
|
|
87
117
|
function isCanonicalTurnTelemetryEvent(event) {
|
|
88
118
|
return (event.type === "canonical-turn" && "model" in event && "tokens" in event);
|
|
89
119
|
}
|
|
@@ -195,6 +225,17 @@ function recordOpenTelemetrySpan(event) {
|
|
|
195
225
|
}
|
|
196
226
|
span.setStatus({ code: SpanStatusCode.OK });
|
|
197
227
|
break;
|
|
228
|
+
case "staged-rollout-surface":
|
|
229
|
+
span.setAttributes({
|
|
230
|
+
"maestro.staged_rollout.event": event.event,
|
|
231
|
+
"maestro.staged_rollout.surface_id": event.surfaceId,
|
|
232
|
+
"maestro.staged_rollout.surface_type": event.surfaceType,
|
|
233
|
+
});
|
|
234
|
+
if (event.metadata?.owner) {
|
|
235
|
+
span.setAttribute("maestro.staged_rollout.owner", String(event.metadata.owner));
|
|
236
|
+
}
|
|
237
|
+
span.setStatus({ code: SpanStatusCode.OK });
|
|
238
|
+
break;
|
|
198
239
|
case "sandbox-violation":
|
|
199
240
|
span.setAttributes({
|
|
200
241
|
"maestro.sandbox.event": event.event,
|
|
@@ -211,6 +252,22 @@ function recordOpenTelemetrySpan(event) {
|
|
|
211
252
|
: SpanStatusCode.OK,
|
|
212
253
|
});
|
|
213
254
|
break;
|
|
255
|
+
case "subagent-dispatch":
|
|
256
|
+
span.setAttributes({
|
|
257
|
+
"maestro.subagent.event": event.event,
|
|
258
|
+
"maestro.subagent.mode": event.mode,
|
|
259
|
+
"maestro.subagent.type": event.subagentType,
|
|
260
|
+
"maestro.subagent.reasoning_effort": event.reasoningEffort,
|
|
261
|
+
"maestro.subagent.source": event.source ?? "unknown",
|
|
262
|
+
"maestro.subagent.success": event.success,
|
|
263
|
+
"maestro.subagent.latency_ms": event.latencyMs,
|
|
264
|
+
"llm.model.id": event.model,
|
|
265
|
+
"llm.model.provider": event.provider,
|
|
266
|
+
});
|
|
267
|
+
span.setStatus({
|
|
268
|
+
code: event.success ? SpanStatusCode.OK : SpanStatusCode.ERROR,
|
|
269
|
+
});
|
|
270
|
+
break;
|
|
214
271
|
case "canonical-turn": {
|
|
215
272
|
const canonicalTurn = isCanonicalTurnTelemetryEvent(event)
|
|
216
273
|
? event
|
|
@@ -256,11 +313,64 @@ function recordOpenTelemetrySpan(event) {
|
|
|
256
313
|
// Never let tracing failures affect runtime
|
|
257
314
|
}
|
|
258
315
|
}
|
|
316
|
+
function recordOpenTelemetryMetric(event) {
|
|
317
|
+
try {
|
|
318
|
+
switch (event.type) {
|
|
319
|
+
case "tool-execution":
|
|
320
|
+
recordToolInvocationMetric({
|
|
321
|
+
toolName: event.toolName,
|
|
322
|
+
durationMs: event.durationMs,
|
|
323
|
+
success: event.success,
|
|
324
|
+
agentRunId: metadataString(event.metadata, [
|
|
325
|
+
"agentRunId",
|
|
326
|
+
"agent_run_id",
|
|
327
|
+
]),
|
|
328
|
+
skillName: skillNameFromMetadata(event.metadata),
|
|
329
|
+
});
|
|
330
|
+
break;
|
|
331
|
+
case "business-metric":
|
|
332
|
+
if (event.metric === "compaction.triggered") {
|
|
333
|
+
recordCompactionMetric({
|
|
334
|
+
"maestro.session_id": event.metadata?.sessionId,
|
|
335
|
+
"llm.model.id": event.metadata?.model,
|
|
336
|
+
"llm.model.provider": event.metadata?.provider,
|
|
337
|
+
});
|
|
338
|
+
}
|
|
339
|
+
break;
|
|
340
|
+
case "subagent-dispatch":
|
|
341
|
+
recordSubagentDispatchMetric({
|
|
342
|
+
mode: event.mode,
|
|
343
|
+
subagentType: event.subagentType,
|
|
344
|
+
provider: event.provider,
|
|
345
|
+
model: event.model,
|
|
346
|
+
reasoningEffort: event.reasoningEffort,
|
|
347
|
+
source: event.source,
|
|
348
|
+
success: event.success,
|
|
349
|
+
latencyMs: event.latencyMs,
|
|
350
|
+
agentRunId: metadataString(event.metadata, [
|
|
351
|
+
"agentRunId",
|
|
352
|
+
"agent_run_id",
|
|
353
|
+
]),
|
|
354
|
+
});
|
|
355
|
+
break;
|
|
356
|
+
default:
|
|
357
|
+
break;
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
catch {
|
|
361
|
+
// Never let metric recording affect runtime behavior.
|
|
362
|
+
}
|
|
363
|
+
}
|
|
259
364
|
function stringRecord(value) {
|
|
260
365
|
return value && typeof value === "object" && !Array.isArray(value)
|
|
261
366
|
? value
|
|
262
367
|
: undefined;
|
|
263
368
|
}
|
|
369
|
+
function skillNameFromMetadata(metadata) {
|
|
370
|
+
return (metadataString(metadata, ["skillName", "skill_name"]) ??
|
|
371
|
+
metadataString(stringRecord(metadata?.skillMetadata), ["name"]) ??
|
|
372
|
+
metadataString(stringRecord(metadata?.skill_metadata), ["name"]));
|
|
373
|
+
}
|
|
264
374
|
function metadataString(record, keys) {
|
|
265
375
|
for (const key of keys) {
|
|
266
376
|
const value = record?.[key];
|
|
@@ -303,8 +413,21 @@ function eventCorrelationOverrides(event) {
|
|
|
303
413
|
"tool_call_id",
|
|
304
414
|
]),
|
|
305
415
|
agent_id: metadataString(metadata, ["agentId", "agent_id"]),
|
|
416
|
+
actor_id: metadataString(metadata, ["actorId", "actor_id"]),
|
|
417
|
+
principal_id: metadataString(metadata, ["principalId", "principal_id"]),
|
|
306
418
|
trace_id: topLevelTraceId ?? metadataString(metadata, ["traceId", "trace_id"]),
|
|
419
|
+
traceparent: metadataString(metadata, ["traceparent", "trace_parent"]),
|
|
420
|
+
tracestate: metadataString(metadata, ["tracestate", "trace_state"]),
|
|
307
421
|
request_id: metadataString(metadata, ["requestId", "request_id"]),
|
|
422
|
+
remote_runner_session_id: metadataString(metadata, [
|
|
423
|
+
"remoteRunnerSessionId",
|
|
424
|
+
"remote_runner_session_id",
|
|
425
|
+
]),
|
|
426
|
+
objective_id: metadataString(metadata, ["objectiveId", "objective_id"]),
|
|
427
|
+
conversation_id: metadataString(metadata, [
|
|
428
|
+
"conversationId",
|
|
429
|
+
"conversation_id",
|
|
430
|
+
]),
|
|
308
431
|
};
|
|
309
432
|
}
|
|
310
433
|
function maestroCorrelationSpanAttributes(event) {
|
|
@@ -325,10 +448,17 @@ function maestroCorrelationSpanAttributes(event) {
|
|
|
325
448
|
"evalops.workspace_id": correlation.workspace_id ?? principal?.workspace_id,
|
|
326
449
|
"maestro.session_id": correlation.session_id,
|
|
327
450
|
"agent.id": correlation.agent_id,
|
|
451
|
+
"agent.actor.id": correlation.actor_id,
|
|
452
|
+
"evalops.principal_id": correlation.principal_id,
|
|
328
453
|
"maestro.agent_run_id": correlation.agent_run_id,
|
|
329
454
|
"maestro.agent_run_step_id": correlation.agent_run_step_id,
|
|
330
455
|
"trace.id": correlation.trace_id,
|
|
456
|
+
traceparent: correlation.traceparent,
|
|
457
|
+
tracestate: correlation.tracestate,
|
|
331
458
|
"request.id": correlation.request_id,
|
|
459
|
+
"evalops.remote_runner_session_id": correlation.remote_runner_session_id,
|
|
460
|
+
"evalops.objective_id": correlation.objective_id,
|
|
461
|
+
"evalops.conversation_id": correlation.conversation_id,
|
|
332
462
|
"maestro.surface": config.defaultSurface,
|
|
333
463
|
};
|
|
334
464
|
return Object.fromEntries(Object.entries(attributes).filter((entry) => typeof entry[1] === "string" &&
|
|
@@ -375,11 +505,16 @@ export function getBackgroundTaskHistory(limit = 10) {
|
|
|
375
505
|
.map((entry) => cloneBackgroundTaskTelemetry(entry));
|
|
376
506
|
}
|
|
377
507
|
export async function recordTelemetry(event) {
|
|
508
|
+
if (isInternalTelemetryDisabled()) {
|
|
509
|
+
return;
|
|
510
|
+
}
|
|
511
|
+
const normalizedEvent = normalizeTelemetryEventMetadata(event);
|
|
378
512
|
const openTelemetryEnabled = isOpenTelemetryEnabled();
|
|
379
513
|
if (openTelemetryEnabled) {
|
|
380
|
-
recordOpenTelemetrySpan(
|
|
514
|
+
recordOpenTelemetrySpan(normalizedEvent);
|
|
515
|
+
recordOpenTelemetryMetric(normalizedEvent);
|
|
381
516
|
}
|
|
382
|
-
const eventBusTask = mirrorTelemetryToMaestroEventBus(
|
|
517
|
+
const eventBusTask = mirrorTelemetryToMaestroEventBus(normalizedEvent);
|
|
383
518
|
const legacyEnabled = telemetryEnabled && samplingRate > 0;
|
|
384
519
|
if (!legacyEnabled) {
|
|
385
520
|
await eventBusTask;
|
|
@@ -390,7 +525,7 @@ export async function recordTelemetry(event) {
|
|
|
390
525
|
return;
|
|
391
526
|
}
|
|
392
527
|
try {
|
|
393
|
-
await Promise.all([persistTelemetry(
|
|
528
|
+
await Promise.all([persistTelemetry(normalizedEvent), eventBusTask]);
|
|
394
529
|
}
|
|
395
530
|
catch (_error) {
|
|
396
531
|
// Ignore telemetry persistence failures
|
|
@@ -552,6 +687,28 @@ export function recordModelSwitch(sessionId, fromModel, toModel, metadata) {
|
|
|
552
687
|
previousModel: fromModel,
|
|
553
688
|
});
|
|
554
689
|
}
|
|
690
|
+
export function recordStagedRolloutSurfaceUsage(event, options) {
|
|
691
|
+
return recordTelemetry({
|
|
692
|
+
type: "staged-rollout-surface",
|
|
693
|
+
timestamp: new Date().toISOString(),
|
|
694
|
+
event,
|
|
695
|
+
surfaceId: options.surfaceId,
|
|
696
|
+
surfaceType: options.surfaceType,
|
|
697
|
+
metadata: {
|
|
698
|
+
...options.metadata,
|
|
699
|
+
owner: options.owner,
|
|
700
|
+
source: options.source,
|
|
701
|
+
},
|
|
702
|
+
});
|
|
703
|
+
}
|
|
704
|
+
export function recordSubagentDispatch(event) {
|
|
705
|
+
void recordTelemetry({
|
|
706
|
+
...event,
|
|
707
|
+
type: "subagent-dispatch",
|
|
708
|
+
event: "subagent_dispatched",
|
|
709
|
+
timestamp: new Date().toISOString(),
|
|
710
|
+
});
|
|
711
|
+
}
|
|
555
712
|
/**
|
|
556
713
|
* Record session migration stats.
|
|
557
714
|
*/
|
package/dist/telemetry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"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","sourcesContent":["import { appendFile, mkdir } from \"node:fs/promises\";\nimport { dirname } from \"node:path\";\nimport { type Span, SpanStatusCode } from \"@opentelemetry/api\";\n\nimport { PATHS } from \"./config/constants.js\";\nimport {\n\tgetTelemetryTracer,\n\tinitOpenTelemetry,\n\tisOpenTelemetryEnabled,\n} from \"./opentelemetry.js\";\nimport {\n\ttype MaestroCorrelation,\n\tmirrorTelemetryToMaestroEventBus,\n\tresolveMaestroEventBusConfig,\n} from \"./telemetry/maestro-event-bus.js\";\nimport {\n\thasRemoteMeterDestination,\n\tmirrorCanonicalTurnEventToMeter,\n} from \"./telemetry/meter-service-client.js\";\nimport {\n\ttype CanonicalTurnEvent,\n\tsetDefaultTelemetryRecorder,\n} from \"./telemetry/wide-events.js\";\nimport { resolveEnvPath } from \"./utils/path-expansion.js\";\nimport {\n\tsanitizeOptionalWithStaticMask,\n\tsanitizeWithStaticMask,\n} from \"./utils/secret-redactor.js\";\n\ntype BaseTelemetryEvent = {\n\ttype:\n\t\t| \"tool-execution\"\n\t\t| \"evaluation\"\n\t\t| \"loader-stage\"\n\t\t| \"sse\"\n\t\t| \"background-task\"\n\t\t| \"api-request\"\n\t\t| \"business-metric\"\n\t\t| \"sandbox-violation\";\n\ttimestamp: string;\n};\n\nexport interface ApiRequestTelemetry extends BaseTelemetryEvent {\n\ttype: \"api-request\";\n\tmethod: string;\n\tpath: string;\n\tstatusCode: number;\n\tdurationMs: number;\n\tmetadata?: Record<string, unknown>;\n}\n\nexport interface ToolExecutionTelemetry extends BaseTelemetryEvent {\n\ttype: \"tool-execution\";\n\ttoolName: string;\n\tsuccess: boolean;\n\tdurationMs: number;\n\tmetadata?: Record<string, unknown>;\n}\n\nexport interface EvaluationTelemetry extends BaseTelemetryEvent {\n\ttype: \"evaluation\";\n\tscenario: string;\n\tsuccess: boolean;\n\tdetails?: Record<string, unknown>;\n}\n\nexport interface LoaderStageTelemetry extends BaseTelemetryEvent {\n\ttype: \"loader-stage\";\n\tstage: string;\n\tdurationMs: number;\n\tmetadata?: Record<string, unknown>;\n}\n\nexport interface SseTelemetry extends BaseTelemetryEvent {\n\ttype: \"sse\";\n\tevent: \"skip\";\n\tsent: number;\n\tskipped: number;\n\tmetadata?: Record<string, unknown>;\n}\n\ntype BackgroundTaskStatusTelemetry =\n\t| \"running\"\n\t| \"restarting\"\n\t| \"failed\"\n\t| \"exited\"\n\t| \"stopped\";\n\nexport interface BackgroundTaskTelemetry extends BaseTelemetryEvent {\n\ttype: \"background-task\";\n\tevent: \"started\" | \"restarted\" | \"exited\" | \"failed\" | \"stopped\";\n\ttaskId: string;\n\tstatus: BackgroundTaskStatusTelemetry;\n\tcommand: string;\n\tshellMode: \"shell\" | \"exec\";\n\tcwd?: string;\n\trestartAttempts: number;\n\tlogTruncated: boolean;\n\texitCode?: number | null;\n\tsignal?: string | null;\n\tresourceUsage?: {\n\t\tmaxRssKb?: number;\n\t\tuserMs?: number;\n\t\tsystemMs?: number;\n\t};\n\tfailureReason?: string;\n\tlimitBreach?: {\n\t\tkind: \"memory\" | \"cpu\";\n\t\tlimit: number;\n\t\tactual: number;\n\t};\n}\n\n/**\n * Business metrics for tracking usage patterns.\n * Inspired by Claude Code's telemetry events.\n */\nexport interface BusinessMetricTelemetry extends BaseTelemetryEvent {\n\ttype: \"business-metric\";\n\tmetric:\n\t\t| \"session.count\"\n\t\t| \"session.duration\"\n\t\t| \"session.migration\"\n\t\t| \"lines_of_code.count\"\n\t\t| \"tokens.input\"\n\t\t| \"tokens.output\"\n\t\t| \"tokens.cache_read\"\n\t\t| \"tokens.cache_write\"\n\t\t| \"cost.usd\"\n\t\t| \"compaction.triggered\"\n\t\t| \"model.switch\";\n\tvalue: number;\n\tmetadata?: {\n\t\tsessionId?: string;\n\t\tmodel?: string;\n\t\tprovider?: string;\n\t\tgitBranch?: string;\n\t\tgitCommitSha?: string;\n\t\t[key: string]: unknown;\n\t};\n}\n\n/**\n * Sandbox violation tracking for security auditing.\n */\nexport interface SandboxViolationTelemetry extends BaseTelemetryEvent {\n\ttype: \"sandbox-violation\";\n\tevent: \"blocked\" | \"warned\" | \"allowed\";\n\ttool: string;\n\taction: string;\n\treason: string;\n\tpath?: string;\n\tcommand?: string;\n\tmetadata?: {\n\t\tsessionId?: string;\n\t\tuserId?: string;\n\t\t[key: string]: unknown;\n\t};\n}\n\n/**\n * Canonical Turn Event - Wide event emitted once per agent turn.\n * Re-exported from telemetry/wide-events.ts for type union.\n */\nexport interface CanonicalTurnEventBase {\n\ttype: \"canonical-turn\";\n\ttimestamp: string;\n\tsessionId: string;\n\tturnId: string;\n\tturnNumber: number;\n\t[key: string]: unknown;\n}\n\ntype TelemetryEvent =\n\t| ToolExecutionTelemetry\n\t| EvaluationTelemetry\n\t| LoaderStageTelemetry\n\t| SseTelemetry\n\t| BackgroundTaskTelemetry\n\t| ApiRequestTelemetry\n\t| BusinessMetricTelemetry\n\t| SandboxViolationTelemetry\n\t| CanonicalTurnEventBase\n\t| CanonicalTurnEvent;\n\nconst telemetryFlag =\n\tprocess.env.MAESTRO_TELEMETRY ?? process.env.PLAYWRIGHT_TELEMETRY;\n\nconst telemetryFileEnv =\n\tresolveEnvPath(process.env.MAESTRO_TELEMETRY_FILE) ??\n\tresolveEnvPath(process.env.PLAYWRIGHT_TELEMETRY_FILE);\n\nconst telemetryEndpointEnv =\n\tprocess.env.MAESTRO_TELEMETRY_ENDPOINT ??\n\tprocess.env.PLAYWRIGHT_TELEMETRY_ENDPOINT;\n\nconst telemetrySampleEnv =\n\tprocess.env.MAESTRO_TELEMETRY_SAMPLE ??\n\tprocess.env.PLAYWRIGHT_TELEMETRY_SAMPLE;\n\nconst shouldEnableTelemetry = (): boolean => {\n\tconst flag = telemetryFlag?.toLowerCase();\n\tif (flag === \"0\" || flag === \"false\") {\n\t\treturn false;\n\t}\n\tif (flag === \"1\" || flag === \"true\") {\n\t\treturn true;\n\t}\n\treturn Boolean(\n\t\ttelemetryEndpointEnv || telemetryFileEnv || hasRemoteMeterDestination(),\n\t);\n};\nconst initialTelemetryEnabled = shouldEnableTelemetry();\nlet telemetryEnabled = initialTelemetryEnabled;\nlet telemetryOverride: boolean | null = null;\nlet telemetryOverrideReason: string | undefined;\n\nconst parseSamplingRate = (): number => {\n\tconst raw = telemetrySampleEnv;\n\tif (!raw) {\n\t\treturn 1;\n\t}\n\tconst rate = Number.parseFloat(raw);\n\tif (Number.isNaN(rate)) {\n\t\treturn 1;\n\t}\n\treturn Math.min(Math.max(rate, 0), 1);\n};\n\nconst samplingRate = parseSamplingRate();\n\nconst defaultTelemetryFile = PATHS.TELEMETRY_LOG;\nconst toolFailureLogFile = PATHS.TOOL_FAILURE_LOG;\nconst BACKGROUND_TASK_HISTORY_LIMIT = 50;\nconst backgroundTaskHistory: BackgroundTaskTelemetry[] = [];\n\nexport interface TelemetryStatus {\n\tenabled: boolean;\n\treason: string;\n\tendpoint?: string;\n\tfilePath?: string;\n\tsampleRate: number;\n\tflagValue?: string;\n\truntimeOverride?: \"enabled\" | \"disabled\";\n\toverrideReason?: string;\n}\n\nexport function getTelemetryStatus(): TelemetryStatus {\n\tlet reason = \"disabled\";\n\tconst baseEnabled = initialTelemetryEnabled && samplingRate > 0;\n\tif (!shouldEnableTelemetry()) {\n\t\treason = \"flag disabled\";\n\t} else if (samplingRate === 0) {\n\t\treason = \"sampling=0\";\n\t} else if (telemetryEndpointEnv) {\n\t\treason = \"endpoint\";\n\t} else if (hasRemoteMeterDestination()) {\n\t\treason = \"meter\";\n\t} else if (telemetryFileEnv || baseEnabled) {\n\t\treason = \"file\";\n\t}\n\tconst runtimeOverride =\n\t\ttelemetryOverride === null\n\t\t\t? undefined\n\t\t\t: telemetryOverride\n\t\t\t\t? \"enabled\"\n\t\t\t\t: \"disabled\";\n\n\treturn {\n\t\tenabled: telemetryEnabled && samplingRate > 0,\n\t\treason,\n\t\tendpoint: telemetryEndpointEnv,\n\t\tfilePath: telemetryFileEnv || defaultTelemetryFile,\n\t\tsampleRate: samplingRate,\n\t\tflagValue: telemetryFlag,\n\t\truntimeOverride,\n\t\toverrideReason: telemetryOverrideReason,\n\t};\n}\n\nexport function setTelemetryRuntimeOverride(\n\tenabled: boolean | null,\n\treason?: string,\n): void {\n\ttelemetryOverride = enabled;\n\ttelemetryOverrideReason = reason;\n\ttelemetryEnabled = enabled === null ? initialTelemetryEnabled : enabled;\n}\n\nfunction isCanonicalTurnTelemetryEvent(\n\tevent: TelemetryEvent,\n): event is CanonicalTurnEvent {\n\treturn (\n\t\tevent.type === \"canonical-turn\" && \"model\" in event && \"tokens\" in event\n\t);\n}\n\nasync function writeToFile(payload: string) {\n\tconst filePath = telemetryFileEnv || defaultTelemetryFile;\n\tawait mkdir(dirname(filePath), { recursive: true });\n\tawait appendFile(filePath, `${payload}\\n`, \"utf-8\");\n}\n\nasync function appendToolFailure(payload: string): Promise<void> {\n\tawait mkdir(dirname(toolFailureLogFile), { recursive: true });\n\tawait appendFile(toolFailureLogFile, `${payload}\\n`, \"utf-8\");\n}\n\nasync function postToEndpoint(payload: string) {\n\tconst endpoint = telemetryEndpointEnv;\n\tif (!endpoint) {\n\t\treturn;\n\t}\n\ttry {\n\t\tawait fetch(endpoint, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders: { \"content-type\": \"application/json\" },\n\t\t\tbody: payload,\n\t\t});\n\t} catch (_error) {\n\t\t// Swallow telemetry transport errors\n\t}\n}\n\nfunction recordOpenTelemetrySpan(event: TelemetryEvent): void {\n\ttry {\n\t\tconst correlationAttributes = maestroCorrelationSpanAttributes(event);\n\t\tconst tracer = getTelemetryTracer();\n\t\ttracer.startActiveSpan(`telemetry.${event.type}`, (span: Span) => {\n\t\t\tspan.setAttributes({\n\t\t\t\t...correlationAttributes,\n\t\t\t\t\"maestro.telemetry.type\": event.type,\n\t\t\t\t\"maestro.telemetry.timestamp\": event.timestamp,\n\t\t\t});\n\n\t\t\tswitch (event.type) {\n\t\t\t\tcase \"tool-execution\":\n\t\t\t\t\tspan.setAttributes({\n\t\t\t\t\t\t\"maestro.tool.name\": event.toolName,\n\t\t\t\t\t\t\"maestro.tool.success\": event.success,\n\t\t\t\t\t\t\"maestro.tool.duration_ms\": event.durationMs,\n\t\t\t\t\t});\n\t\t\t\t\tspan.setStatus({\n\t\t\t\t\t\tcode: event.success ? SpanStatusCode.OK : SpanStatusCode.ERROR,\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"evaluation\":\n\t\t\t\t\tspan.setAttributes({\n\t\t\t\t\t\t\"maestro.eval.scenario\": event.scenario,\n\t\t\t\t\t\t\"maestro.eval.success\": event.success,\n\t\t\t\t\t});\n\t\t\t\t\tspan.setStatus({\n\t\t\t\t\t\tcode: event.success ? SpanStatusCode.OK : SpanStatusCode.ERROR,\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"loader-stage\":\n\t\t\t\t\tspan.setAttributes({\n\t\t\t\t\t\t\"maestro.loader.stage\": event.stage,\n\t\t\t\t\t\t\"maestro.loader.duration_ms\": event.durationMs,\n\t\t\t\t\t});\n\t\t\t\t\tspan.setStatus({ code: SpanStatusCode.OK });\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"sse\":\n\t\t\t\t\tspan.setAttributes({\n\t\t\t\t\t\t\"maestro.sse.sent\": event.sent,\n\t\t\t\t\t\t\"maestro.sse.skipped\": event.skipped,\n\t\t\t\t\t});\n\t\t\t\t\tspan.setStatus({ code: SpanStatusCode.OK });\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"background-task\":\n\t\t\t\t\tspan.setAttributes({\n\t\t\t\t\t\t\"maestro.background.id\": event.taskId,\n\t\t\t\t\t\t\"maestro.background.event\": event.event,\n\t\t\t\t\t\t\"maestro.background.status\": event.status,\n\t\t\t\t\t\t\"maestro.background.restart_attempts\": event.restartAttempts,\n\t\t\t\t\t\t\"maestro.background.exit_code\": event.exitCode ?? -1,\n\t\t\t\t\t\t\"maestro.background.shell_mode\": event.shellMode,\n\t\t\t\t\t});\n\t\t\t\t\tspan.setStatus(\n\t\t\t\t\t\tevent.failureReason || event.status === \"failed\"\n\t\t\t\t\t\t\t? { code: SpanStatusCode.ERROR, message: event.failureReason }\n\t\t\t\t\t\t\t: { code: SpanStatusCode.OK },\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"api-request\":\n\t\t\t\t\tspan.setAttributes({\n\t\t\t\t\t\t\"http.method\": event.method,\n\t\t\t\t\t\t\"http.route\": event.path,\n\t\t\t\t\t\t\"http.status_code\": event.statusCode,\n\t\t\t\t\t\t\"maestro.api.duration_ms\": event.durationMs,\n\t\t\t\t\t});\n\t\t\t\t\tspan.setStatus({\n\t\t\t\t\t\tcode:\n\t\t\t\t\t\t\tevent.statusCode >= 500\n\t\t\t\t\t\t\t\t? SpanStatusCode.ERROR\n\t\t\t\t\t\t\t\t: SpanStatusCode.OK,\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"business-metric\":\n\t\t\t\t\tspan.setAttributes({\n\t\t\t\t\t\t\"maestro.metric.name\": event.metric,\n\t\t\t\t\t\t\"maestro.metric.value\": event.value,\n\t\t\t\t\t});\n\t\t\t\t\tif (event.metadata?.model) {\n\t\t\t\t\t\tspan.setAttribute(\"maestro.metric.model\", event.metadata.model);\n\t\t\t\t\t}\n\t\t\t\t\tif (event.metadata?.provider) {\n\t\t\t\t\t\tspan.setAttribute(\n\t\t\t\t\t\t\t\"maestro.metric.provider\",\n\t\t\t\t\t\t\tevent.metadata.provider,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tspan.setStatus({ code: SpanStatusCode.OK });\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"sandbox-violation\":\n\t\t\t\t\tspan.setAttributes({\n\t\t\t\t\t\t\"maestro.sandbox.event\": event.event,\n\t\t\t\t\t\t\"maestro.sandbox.tool\": event.tool,\n\t\t\t\t\t\t\"maestro.sandbox.action\": event.action,\n\t\t\t\t\t\t\"maestro.sandbox.reason\": event.reason,\n\t\t\t\t\t});\n\t\t\t\t\tif (event.path) {\n\t\t\t\t\t\tspan.setAttribute(\"maestro.sandbox.path\", event.path);\n\t\t\t\t\t}\n\t\t\t\t\tspan.setStatus({\n\t\t\t\t\t\tcode:\n\t\t\t\t\t\t\tevent.event === \"blocked\"\n\t\t\t\t\t\t\t\t? SpanStatusCode.ERROR\n\t\t\t\t\t\t\t\t: SpanStatusCode.OK,\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"canonical-turn\": {\n\t\t\t\t\tconst canonicalTurn = isCanonicalTurnTelemetryEvent(event)\n\t\t\t\t\t\t? event\n\t\t\t\t\t\t: undefined;\n\t\t\t\t\tspan.setAttributes({\n\t\t\t\t\t\t\"maestro.turn.id\": event.turnId,\n\t\t\t\t\t\t\"maestro.turn.number\": event.turnNumber,\n\t\t\t\t\t\t\"maestro.turn.session_id\": event.sessionId,\n\t\t\t\t\t\t\"agent.session.id\": event.sessionId,\n\t\t\t\t\t\t...(canonicalTurn\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\"llm.model.id\": canonicalTurn.model.id,\n\t\t\t\t\t\t\t\t\t\"llm.model.provider\": canonicalTurn.model.provider,\n\t\t\t\t\t\t\t\t\t\"llm.usage.input_tokens\": canonicalTurn.tokens.input,\n\t\t\t\t\t\t\t\t\t\"llm.usage.output_tokens\": canonicalTurn.tokens.output,\n\t\t\t\t\t\t\t\t\t\"llm.usage.cache_read_tokens\": canonicalTurn.tokens.cacheRead,\n\t\t\t\t\t\t\t\t\t\"llm.usage.cache_write_tokens\":\n\t\t\t\t\t\t\t\t\t\tcanonicalTurn.tokens.cacheWrite,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\"maestro.turn.status\": String(\n\t\t\t\t\t\t\t\"status\" in event ? event.status : \"unknown\",\n\t\t\t\t\t\t),\n\t\t\t\t\t\t\"maestro.turn.tool_count\": Number(\n\t\t\t\t\t\t\t\"toolCount\" in event ? event.toolCount : 0,\n\t\t\t\t\t\t),\n\t\t\t\t\t\t\"maestro.turn.total_duration_ms\": Number(\n\t\t\t\t\t\t\t\"totalDurationMs\" in event ? event.totalDurationMs : 0,\n\t\t\t\t\t\t),\n\t\t\t\t\t\t\"maestro.turn.cost_usd\": Number(\n\t\t\t\t\t\t\t\"costUsd\" in event ? event.costUsd : 0,\n\t\t\t\t\t\t),\n\t\t\t\t\t\t\"maestro.turn.sampled\": Boolean(\n\t\t\t\t\t\t\t\"sampled\" in event ? event.sampled : true,\n\t\t\t\t\t\t),\n\t\t\t\t\t});\n\t\t\t\t\tspan.setStatus({\n\t\t\t\t\t\tcode:\n\t\t\t\t\t\t\t\"status\" in event && event.status === \"error\"\n\t\t\t\t\t\t\t\t? SpanStatusCode.ERROR\n\t\t\t\t\t\t\t\t: SpanStatusCode.OK,\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\tspan.setStatus({ code: SpanStatusCode.UNSET });\n\t\t\t}\n\n\t\t\tif (\"metadata\" in event && event.metadata) {\n\t\t\t\tspan.setAttributes({ \"maestro.telemetry.has_metadata\": true });\n\t\t\t}\n\n\t\t\tspan.end();\n\t\t});\n\t} catch {\n\t\t// Never let tracing failures affect runtime\n\t}\n}\n\nfunction stringRecord(value: unknown): Record<string, unknown> | undefined {\n\treturn value && typeof value === \"object\" && !Array.isArray(value)\n\t\t? (value as Record<string, unknown>)\n\t\t: undefined;\n}\n\nfunction metadataString(\n\trecord: Record<string, unknown> | undefined,\n\tkeys: string[],\n): string | undefined {\n\tfor (const key of keys) {\n\t\tconst value = record?.[key];\n\t\tif (typeof value === \"string\" && value.trim().length > 0) {\n\t\t\treturn value;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nfunction eventCorrelationOverrides(\n\tevent: TelemetryEvent,\n): Partial<MaestroCorrelation> {\n\tconst metadata = stringRecord(\n\t\t\"metadata\" in event ? event.metadata : undefined,\n\t);\n\tconst topLevelTraceId =\n\t\t\"traceId\" in event &&\n\t\ttypeof event.traceId === \"string\" &&\n\t\tevent.traceId.trim().length > 0\n\t\t\t? event.traceId\n\t\t\t: undefined;\n\treturn {\n\t\torganization_id: metadataString(metadata, [\n\t\t\t\"organizationId\",\n\t\t\t\"organization_id\",\n\t\t\t\"orgId\",\n\t\t\t\"org_id\",\n\t\t]),\n\t\tuser_id: metadataString(metadata, [\"userId\", \"user_id\"]),\n\t\tworkspace_id: metadataString(metadata, [\"workspaceId\", \"workspace_id\"]),\n\t\tsession_id:\n\t\t\t(\"sessionId\" in event && typeof event.sessionId === \"string\"\n\t\t\t\t? event.sessionId\n\t\t\t\t: undefined) ??\n\t\t\tmetadataString(metadata, [\n\t\t\t\t\"sessionId\",\n\t\t\t\t\"session_id\",\n\t\t\t\t\"maestroSessionId\",\n\t\t\t\t\"maestro_session_id\",\n\t\t\t]),\n\t\tagent_run_id: metadataString(metadata, [\"agentRunId\", \"agent_run_id\"]),\n\t\tagent_run_step_id: metadataString(metadata, [\n\t\t\t\"agentRunStepId\",\n\t\t\t\"agent_run_step_id\",\n\t\t\t\"toolCallId\",\n\t\t\t\"tool_call_id\",\n\t\t]),\n\t\tagent_id: metadataString(metadata, [\"agentId\", \"agent_id\"]),\n\t\ttrace_id:\n\t\t\ttopLevelTraceId ?? metadataString(metadata, [\"traceId\", \"trace_id\"]),\n\t\trequest_id: metadataString(metadata, [\"requestId\", \"request_id\"]),\n\t};\n}\n\nfunction maestroCorrelationSpanAttributes(\n\tevent: TelemetryEvent,\n): Record<string, string> {\n\tconst config = resolveMaestroEventBusConfig();\n\tconst overrides = eventCorrelationOverrides(event);\n\tconst correlation = {\n\t\t...config.defaultCorrelation,\n\t\t...Object.fromEntries(\n\t\t\tObject.entries(overrides).filter(([, value]) => value !== undefined),\n\t\t),\n\t};\n\tconst principal = config.defaultPrincipal;\n\tconst attributes: Record<string, string | undefined> = {\n\t\t\"enduser.id\": correlation.user_id ?? principal?.user_id,\n\t\t\"user.id\": correlation.user_id ?? principal?.user_id,\n\t\t\"agent.user.id\": correlation.user_id ?? principal?.user_id,\n\t\t\"organization.id\":\n\t\t\tcorrelation.organization_id ?? principal?.organization_id,\n\t\t\"evalops.organization_id\":\n\t\t\tcorrelation.organization_id ?? principal?.organization_id,\n\t\t\"workspace.id\": correlation.workspace_id ?? principal?.workspace_id,\n\t\t\"evalops.workspace_id\": correlation.workspace_id ?? principal?.workspace_id,\n\t\t\"maestro.session_id\": correlation.session_id,\n\t\t\"agent.id\": correlation.agent_id,\n\t\t\"maestro.agent_run_id\": correlation.agent_run_id,\n\t\t\"maestro.agent_run_step_id\": correlation.agent_run_step_id,\n\t\t\"trace.id\": correlation.trace_id,\n\t\t\"request.id\": correlation.request_id,\n\t\t\"maestro.surface\": config.defaultSurface,\n\t};\n\n\treturn Object.fromEntries(\n\t\tObject.entries(attributes).filter(\n\t\t\t(entry): entry is [string, string] =>\n\t\t\t\ttypeof entry[1] === \"string\" &&\n\t\t\t\tentry[1].trim().length > 0 &&\n\t\t\t\tentry[1] !== \"unknown\",\n\t\t),\n\t);\n}\n\nasync function persistTelemetry(event: TelemetryEvent) {\n\tconst payload = JSON.stringify(event);\n\tconst tasks: Promise<void>[] = [];\n\n\tif (isCanonicalTurnTelemetryEvent(event)) {\n\t\ttasks.push(mirrorCanonicalTurnEventToMeter(event).then(() => undefined));\n\t}\n\n\tif (telemetryEndpointEnv) {\n\t\ttasks.push(postToEndpoint(payload));\n\t}\n\n\tif (telemetryEndpointEnv === undefined) {\n\t\t// Default to file storage when no endpoint is configured\n\t\ttasks.push(writeToFile(payload));\n\t} else if (telemetryFileEnv) {\n\t\ttasks.push(writeToFile(payload));\n\t}\n\n\tawait Promise.all(tasks);\n}\n\nfunction cloneBackgroundTaskTelemetry(\n\tevent: BackgroundTaskTelemetry,\n): BackgroundTaskTelemetry {\n\treturn {\n\t\t...event,\n\t\tresourceUsage: event.resourceUsage ? { ...event.resourceUsage } : undefined,\n\t\tlimitBreach: event.limitBreach ? { ...event.limitBreach } : undefined,\n\t};\n}\n\nfunction recordBackgroundHistory(event: BackgroundTaskTelemetry): void {\n\tbackgroundTaskHistory.push(cloneBackgroundTaskTelemetry(event));\n\tif (backgroundTaskHistory.length > BACKGROUND_TASK_HISTORY_LIMIT) {\n\t\tbackgroundTaskHistory.shift();\n\t}\n}\n\nexport function getBackgroundTaskHistory(\n\tlimit = 10,\n): BackgroundTaskTelemetry[] {\n\tif (limit <= 0) {\n\t\treturn [];\n\t}\n\treturn backgroundTaskHistory\n\t\t.slice(-limit)\n\t\t.map((entry) => cloneBackgroundTaskTelemetry(entry));\n}\n\nexport async function recordTelemetry(event: TelemetryEvent): Promise<void> {\n\tconst openTelemetryEnabled = isOpenTelemetryEnabled();\n\tif (openTelemetryEnabled) {\n\t\trecordOpenTelemetrySpan(event);\n\t}\n\tconst eventBusTask = mirrorTelemetryToMaestroEventBus(event);\n\n\tconst legacyEnabled = telemetryEnabled && samplingRate > 0;\n\tif (!legacyEnabled) {\n\t\tawait eventBusTask;\n\t\treturn;\n\t}\n\n\tif (samplingRate < 1 && Math.random() > samplingRate) {\n\t\tawait eventBusTask;\n\t\treturn;\n\t}\n\n\ttry {\n\t\tawait Promise.all([persistTelemetry(event), eventBusTask]);\n\t} catch (_error) {\n\t\t// Ignore telemetry persistence failures\n\t}\n}\n\nexport function recordToolExecution(\n\ttoolName: string,\n\tsuccess: boolean,\n\tdurationMs: number,\n\tmetadata?: Record<string, unknown>,\n): void {\n\tvoid recordTelemetry({\n\t\ttype: \"tool-execution\",\n\t\ttimestamp: new Date().toISOString(),\n\t\ttoolName,\n\t\tsuccess,\n\t\tdurationMs,\n\t\tmetadata,\n\t});\n}\n\nexport function recordEvaluationResult(\n\tscenario: string,\n\tsuccess: boolean,\n\tdetails?: Record<string, unknown>,\n): void {\n\tvoid recordTelemetry({\n\t\ttype: \"evaluation\",\n\t\ttimestamp: new Date().toISOString(),\n\t\tscenario,\n\t\tsuccess,\n\t\tdetails,\n\t});\n}\n\nexport function recordLoaderStage(\n\tstage: string,\n\tdurationMs: number,\n\tmetadata?: Record<string, unknown>,\n): void {\n\tvoid recordTelemetry({\n\t\ttype: \"loader-stage\",\n\t\ttimestamp: new Date().toISOString(),\n\t\tstage,\n\t\tdurationMs,\n\t\tmetadata,\n\t});\n}\n\nexport function recordSseSkip(\n\tsent: number,\n\tskipped: number,\n\tmetadata?: Record<string, unknown>,\n): void {\n\tvoid recordTelemetry({\n\t\ttype: \"sse\",\n\t\tevent: \"skip\",\n\t\ttimestamp: new Date().toISOString(),\n\t\tsent,\n\t\tskipped,\n\t\tmetadata,\n\t});\n}\n\nexport function logToolFailure(\n\ttoolName: string,\n\terrorMessage: string,\n\tmetadata?: Record<string, unknown>,\n): void {\n\tconst payload = {\n\t\ttool: toolName,\n\t\terror: errorMessage,\n\t\tmetadata,\n\t\ttimestamp: new Date().toISOString(),\n\t};\n\tvoid appendToolFailure(JSON.stringify(payload));\n}\n\nexport function recordBackgroundTaskEvent(\n\tevent: Omit<BackgroundTaskTelemetry, \"type\" | \"timestamp\">,\n): void {\n\tconst sanitizedCommand = sanitizeWithStaticMask(event.command);\n\tconst sanitizedFailure = sanitizeOptionalWithStaticMask(event.failureReason);\n\tconst payload: BackgroundTaskTelemetry = {\n\t\t...event,\n\t\tcommand: sanitizedCommand,\n\t\tfailureReason: sanitizedFailure,\n\t\ttype: \"background-task\",\n\t\ttimestamp: new Date().toISOString(),\n\t};\n\trecordBackgroundHistory(payload);\n\tvoid recordTelemetry(payload);\n}\n\nexport function recordApiRequest(\n\tmethod: string,\n\tpath: string,\n\tstatusCode: number,\n\tdurationMs: number,\n\tmetadata?: Record<string, unknown>,\n): void {\n\tvoid recordTelemetry({\n\t\ttype: \"api-request\",\n\t\ttimestamp: new Date().toISOString(),\n\t\tmethod,\n\t\tpath,\n\t\tstatusCode,\n\t\tdurationMs,\n\t\tmetadata,\n\t});\n}\n\n/**\n * Record a business metric for usage tracking.\n */\nexport function recordBusinessMetric(\n\tmetric: BusinessMetricTelemetry[\"metric\"],\n\tvalue: number,\n\tmetadata?: BusinessMetricTelemetry[\"metadata\"],\n): void {\n\tvoid recordTelemetry({\n\t\ttype: \"business-metric\",\n\t\ttimestamp: new Date().toISOString(),\n\t\tmetric,\n\t\tvalue,\n\t\tmetadata,\n\t});\n}\n\n/**\n * Record session start.\n */\nexport function recordSessionStart(\n\tsessionId: string,\n\tmetadata?: Omit<BusinessMetricTelemetry[\"metadata\"], \"sessionId\">,\n): void {\n\trecordBusinessMetric(\"session.count\", 1, { ...metadata, sessionId });\n}\n\n/**\n * Record session duration on end.\n */\nexport function recordSessionDuration(\n\tsessionId: string,\n\tdurationMs: number,\n\tmetadata?: Omit<BusinessMetricTelemetry[\"metadata\"], \"sessionId\">,\n): Promise<void> {\n\treturn recordTelemetry({\n\t\ttype: \"business-metric\",\n\t\ttimestamp: new Date().toISOString(),\n\t\tmetric: \"session.duration\",\n\t\tvalue: durationMs,\n\t\tmetadata: {\n\t\t\t...metadata,\n\t\t\tsessionId,\n\t\t},\n\t});\n}\n\n/**\n * Record token usage metrics.\n */\nexport function recordTokenUsage(\n\tsessionId: string,\n\ttokens: {\n\t\tinput?: number;\n\t\toutput?: number;\n\t\tcacheRead?: number;\n\t\tcacheWrite?: number;\n\t},\n\tmetadata?: Omit<BusinessMetricTelemetry[\"metadata\"], \"sessionId\">,\n): void {\n\tif (tokens.input !== undefined && tokens.input > 0) {\n\t\trecordBusinessMetric(\"tokens.input\", tokens.input, {\n\t\t\t...metadata,\n\t\t\tsessionId,\n\t\t});\n\t}\n\tif (tokens.output !== undefined && tokens.output > 0) {\n\t\trecordBusinessMetric(\"tokens.output\", tokens.output, {\n\t\t\t...metadata,\n\t\t\tsessionId,\n\t\t});\n\t}\n\tif (tokens.cacheRead !== undefined && tokens.cacheRead > 0) {\n\t\trecordBusinessMetric(\"tokens.cache_read\", tokens.cacheRead, {\n\t\t\t...metadata,\n\t\t\tsessionId,\n\t\t});\n\t}\n\tif (tokens.cacheWrite !== undefined && tokens.cacheWrite > 0) {\n\t\trecordBusinessMetric(\"tokens.cache_write\", tokens.cacheWrite, {\n\t\t\t...metadata,\n\t\t\tsessionId,\n\t\t});\n\t}\n}\n\n/**\n * Record cost in USD.\n */\nexport function recordCost(\n\tsessionId: string,\n\tcostUsd: number,\n\tmetadata?: Omit<BusinessMetricTelemetry[\"metadata\"], \"sessionId\">,\n): void {\n\trecordBusinessMetric(\"cost.usd\", costUsd, { ...metadata, sessionId });\n}\n\n/**\n * Record compaction event.\n */\nexport function recordCompaction(\n\tsessionId: string,\n\tmetadata?: Omit<BusinessMetricTelemetry[\"metadata\"], \"sessionId\">,\n): void {\n\trecordBusinessMetric(\"compaction.triggered\", 1, { ...metadata, sessionId });\n}\n\n/**\n * Record model switch.\n */\nexport function recordModelSwitch(\n\tsessionId: string,\n\tfromModel: string,\n\ttoModel: string,\n\tmetadata?: Omit<BusinessMetricTelemetry[\"metadata\"], \"sessionId\">,\n): void {\n\trecordBusinessMetric(\"model.switch\", 1, {\n\t\t...metadata,\n\t\tsessionId,\n\t\tmodel: toModel,\n\t\tpreviousModel: fromModel,\n\t});\n}\n\n/**\n * Record session migration stats.\n */\nexport function recordSessionMigration(stats: {\n\ttotal: number;\n\tmigrated: number;\n\tskipped: number;\n\tfailures: number;\n\tversion: number;\n}): void {\n\trecordBusinessMetric(\"session.migration\", stats.total, {\n\t\tmigrated: stats.migrated,\n\t\tskipped: stats.skipped,\n\t\tfailures: stats.failures,\n\t\tversion: stats.version,\n\t});\n}\n\n/**\n * Record a sandbox violation event.\n */\nexport function recordSandboxViolation(\n\tevent: SandboxViolationTelemetry[\"event\"],\n\ttool: string,\n\taction: string,\n\treason: string,\n\toptions?: {\n\t\tpath?: string;\n\t\tcommand?: string;\n\t\tsessionId?: string;\n\t\tmetadata?: Record<string, unknown>;\n\t},\n): void {\n\tvoid recordTelemetry({\n\t\ttype: \"sandbox-violation\",\n\t\ttimestamp: new Date().toISOString(),\n\t\tevent,\n\t\ttool,\n\t\taction,\n\t\treason,\n\t\tpath: options?.path,\n\t\tcommand: options?.command\n\t\t\t? sanitizeWithStaticMask(options.command)\n\t\t\t: undefined,\n\t\tmetadata: options?.metadata\n\t\t\t? { ...options.metadata, sessionId: options.sessionId }\n\t\t\t: options?.sessionId\n\t\t\t\t? { sessionId: options.sessionId }\n\t\t\t\t: undefined,\n\t});\n}\n\n// Initialize the wide-events telemetry recorder to break circular dependency\nsetDefaultTelemetryRecorder(recordTelemetry);\n"]}
|
|
1
|
+
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"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","sourcesContent":["import { appendFile, mkdir } from \"node:fs/promises\";\nimport { dirname } from \"node:path\";\nimport { type Span, SpanStatusCode } from \"@opentelemetry/api\";\n\nimport { PATHS } from \"./config/constants.js\";\nimport {\n\tgetTelemetryTracer,\n\tinitOpenTelemetry,\n\tisOpenTelemetryEnabled,\n} from \"./opentelemetry.js\";\nimport { isInternalTelemetryDisabled } from \"./telemetry/disablement.js\";\nimport {\n\ttype MaestroCorrelation,\n\tmirrorTelemetryToMaestroEventBus,\n\tresolveMaestroEventBusConfig,\n} from \"./telemetry/maestro-event-bus.js\";\nimport { normalizeTelemetryMetadataInputs } from \"./telemetry/metadata-normalization.js\";\nimport {\n\thasRemoteMeterDestination,\n\tmirrorCanonicalTurnEventToMeter,\n} from \"./telemetry/meter-service-client.js\";\nimport {\n\trecordCompactionMetric,\n\trecordSubagentDispatchMetric,\n\trecordToolInvocationMetric,\n} from \"./telemetry/metrics.js\";\nimport {\n\ttype CanonicalTurnEvent,\n\tsetDefaultTelemetryRecorder,\n} from \"./telemetry/wide-events.js\";\nimport { resolveEnvPath } from \"./utils/path-expansion.js\";\nimport {\n\tsanitizeOptionalWithStaticMask,\n\tsanitizeWithStaticMask,\n} from \"./utils/secret-redactor.js\";\n\nexport { splitTelemetryMetadata } from \"./telemetry/metadata-normalization.js\";\n\ntype BaseTelemetryEvent = {\n\ttype:\n\t\t| \"tool-execution\"\n\t\t| \"evaluation\"\n\t\t| \"loader-stage\"\n\t\t| \"sse\"\n\t\t| \"background-task\"\n\t\t| \"api-request\"\n\t\t| \"business-metric\"\n\t\t| \"staged-rollout-surface\"\n\t\t| \"sandbox-violation\"\n\t\t| \"subagent-dispatch\";\n\ttimestamp: string;\n\tsensitiveMetadata?: Record<string, unknown>;\n};\n\nexport interface ApiRequestTelemetry extends BaseTelemetryEvent {\n\ttype: \"api-request\";\n\tmethod: string;\n\tpath: string;\n\tstatusCode: number;\n\tdurationMs: number;\n\tmetadata?: Record<string, unknown>;\n}\n\nexport interface ToolExecutionTelemetry extends BaseTelemetryEvent {\n\ttype: \"tool-execution\";\n\ttoolName: string;\n\tsuccess: boolean;\n\tdurationMs: number;\n\tmetadata?: Record<string, unknown>;\n}\n\nexport interface EvaluationTelemetry extends BaseTelemetryEvent {\n\ttype: \"evaluation\";\n\tscenario: string;\n\tsuccess: boolean;\n\tdetails?: Record<string, unknown>;\n}\n\nexport interface LoaderStageTelemetry extends BaseTelemetryEvent {\n\ttype: \"loader-stage\";\n\tstage: string;\n\tdurationMs: number;\n\tmetadata?: Record<string, unknown>;\n}\n\nexport interface SseTelemetry extends BaseTelemetryEvent {\n\ttype: \"sse\";\n\tevent: \"skip\";\n\tsent: number;\n\tskipped: number;\n\tmetadata?: Record<string, unknown>;\n}\n\ntype BackgroundTaskStatusTelemetry =\n\t| \"running\"\n\t| \"restarting\"\n\t| \"failed\"\n\t| \"exited\"\n\t| \"stopped\";\n\nexport interface BackgroundTaskTelemetry extends BaseTelemetryEvent {\n\ttype: \"background-task\";\n\tevent: \"started\" | \"restarted\" | \"exited\" | \"failed\" | \"stopped\";\n\ttaskId: string;\n\tstatus: BackgroundTaskStatusTelemetry;\n\tcommand: string;\n\tshellMode: \"shell\" | \"exec\";\n\tcwd?: string;\n\trestartAttempts: number;\n\tlogTruncated: boolean;\n\texitCode?: number | null;\n\tsignal?: string | null;\n\tresourceUsage?: {\n\t\tmaxRssKb?: number;\n\t\tuserMs?: number;\n\t\tsystemMs?: number;\n\t};\n\tfailureReason?: string;\n\tlimitBreach?: {\n\t\tkind: \"memory\" | \"cpu\";\n\t\tlimit: number;\n\t\tactual: number;\n\t};\n}\n\n/**\n * Business metrics for tracking usage patterns.\n * Inspired by Claude Code's telemetry events.\n */\nexport interface BusinessMetricTelemetry extends BaseTelemetryEvent {\n\ttype: \"business-metric\";\n\tmetric:\n\t\t| \"session.count\"\n\t\t| \"session.duration\"\n\t\t| \"session.migration\"\n\t\t| \"lines_of_code.count\"\n\t\t| \"tokens.input\"\n\t\t| \"tokens.output\"\n\t\t| \"tokens.cache_read\"\n\t\t| \"tokens.cache_write\"\n\t\t| \"cost.usd\"\n\t\t| \"compaction.triggered\"\n\t\t| \"model.switch\";\n\tvalue: number;\n\tmetadata?: {\n\t\tsessionId?: string;\n\t\tmodel?: string;\n\t\tprovider?: string;\n\t\tgitBranch?: string;\n\t\tgitCommitSha?: string;\n\t\t[key: string]: unknown;\n\t};\n}\n\nexport interface StagedRolloutSurfaceTelemetry extends BaseTelemetryEvent {\n\ttype: \"staged-rollout-surface\";\n\tevent: \"hidden_flag_used\" | \"hidden_mode_used\" | \"internal_gate_used\";\n\tsurfaceId: string;\n\tsurfaceType: \"cli_flag\" | \"mode\" | \"internal_gate\" | \"protocol_capability\";\n\tmetadata?: {\n\t\towner?: string;\n\t\tsource?: string;\n\t\t[key: string]: unknown;\n\t};\n}\n\n/**\n * Sandbox violation tracking for security auditing.\n */\nexport interface SandboxViolationTelemetry extends BaseTelemetryEvent {\n\ttype: \"sandbox-violation\";\n\tevent: \"blocked\" | \"warned\" | \"allowed\";\n\ttool: string;\n\taction: string;\n\treason: string;\n\tpath?: string;\n\tcommand?: string;\n\tmetadata?: {\n\t\tsessionId?: string;\n\t\tuserId?: string;\n\t\t[key: string]: unknown;\n\t};\n}\n\n/**\n * Subagent dispatch tracking for multi-agent routing and audit.\n */\nexport interface SubagentDispatchTelemetry extends BaseTelemetryEvent {\n\ttype: \"subagent-dispatch\";\n\tevent: \"subagent_dispatched\";\n\tmode: string;\n\tsubagentType: string;\n\tmodel: string;\n\tprovider: string;\n\treasoningEffort: string;\n\tlatencyMs: number;\n\tsuccess: boolean;\n\tsource?: string;\n\tmetadata?: Record<string, unknown>;\n}\n\n/**\n * Canonical Turn Event - Wide event emitted once per agent turn.\n * Re-exported from telemetry/wide-events.ts for type union.\n */\nexport interface CanonicalTurnEventBase {\n\ttype: \"canonical-turn\";\n\ttimestamp: string;\n\tsessionId: string;\n\tturnId: string;\n\tturnNumber: number;\n\t[key: string]: unknown;\n}\n\ntype TelemetryEvent =\n\t| ToolExecutionTelemetry\n\t| EvaluationTelemetry\n\t| LoaderStageTelemetry\n\t| SseTelemetry\n\t| BackgroundTaskTelemetry\n\t| ApiRequestTelemetry\n\t| BusinessMetricTelemetry\n\t| StagedRolloutSurfaceTelemetry\n\t| SandboxViolationTelemetry\n\t| SubagentDispatchTelemetry\n\t| CanonicalTurnEventBase\n\t| CanonicalTurnEvent;\n\nconst telemetryFlag =\n\tprocess.env.MAESTRO_TELEMETRY ?? process.env.PLAYWRIGHT_TELEMETRY;\n\nconst telemetryFileEnv =\n\tresolveEnvPath(process.env.MAESTRO_TELEMETRY_FILE) ??\n\tresolveEnvPath(process.env.PLAYWRIGHT_TELEMETRY_FILE);\n\nconst telemetryEndpointEnv =\n\tprocess.env.MAESTRO_TELEMETRY_ENDPOINT ??\n\tprocess.env.PLAYWRIGHT_TELEMETRY_ENDPOINT;\n\nconst telemetrySampleEnv =\n\tprocess.env.MAESTRO_TELEMETRY_SAMPLE ??\n\tprocess.env.PLAYWRIGHT_TELEMETRY_SAMPLE;\n\nconst shouldEnableTelemetry = (): boolean => {\n\tconst flag = telemetryFlag?.toLowerCase();\n\tif (flag === \"0\" || flag === \"false\") {\n\t\treturn false;\n\t}\n\tif (flag === \"1\" || flag === \"true\") {\n\t\treturn true;\n\t}\n\treturn Boolean(\n\t\ttelemetryEndpointEnv || telemetryFileEnv || hasRemoteMeterDestination(),\n\t);\n};\nconst initialTelemetryEnabled = shouldEnableTelemetry();\nlet telemetryEnabled = initialTelemetryEnabled;\nlet telemetryOverride: boolean | null = null;\nlet telemetryOverrideReason: string | undefined;\n\nconst parseSamplingRate = (): number => {\n\tconst raw = telemetrySampleEnv;\n\tif (!raw) {\n\t\treturn 1;\n\t}\n\tconst rate = Number.parseFloat(raw);\n\tif (Number.isNaN(rate)) {\n\t\treturn 1;\n\t}\n\treturn Math.min(Math.max(rate, 0), 1);\n};\n\nconst samplingRate = parseSamplingRate();\n\nconst defaultTelemetryFile = PATHS.TELEMETRY_LOG;\nconst toolFailureLogFile = PATHS.TOOL_FAILURE_LOG;\nconst BACKGROUND_TASK_HISTORY_LIMIT = 50;\nconst backgroundTaskHistory: BackgroundTaskTelemetry[] = [];\n\nexport interface TelemetryStatus {\n\tenabled: boolean;\n\treason: string;\n\tendpoint?: string;\n\tfilePath?: string;\n\tsampleRate: number;\n\tflagValue?: string;\n\truntimeOverride?: \"enabled\" | \"disabled\";\n\toverrideReason?: string;\n}\n\nexport function getTelemetryStatus(): TelemetryStatus {\n\tlet reason = \"disabled\";\n\tconst baseEnabled = initialTelemetryEnabled && samplingRate > 0;\n\tif (!shouldEnableTelemetry()) {\n\t\treason = \"flag disabled\";\n\t} else if (samplingRate === 0) {\n\t\treason = \"sampling=0\";\n\t} else if (telemetryEndpointEnv) {\n\t\treason = \"endpoint\";\n\t} else if (hasRemoteMeterDestination()) {\n\t\treason = \"meter\";\n\t} else if (telemetryFileEnv || baseEnabled) {\n\t\treason = \"file\";\n\t}\n\tconst runtimeOverride =\n\t\ttelemetryOverride === null\n\t\t\t? undefined\n\t\t\t: telemetryOverride\n\t\t\t\t? \"enabled\"\n\t\t\t\t: \"disabled\";\n\n\treturn {\n\t\tenabled: telemetryEnabled && samplingRate > 0,\n\t\treason,\n\t\tendpoint: telemetryEndpointEnv,\n\t\tfilePath: telemetryFileEnv || defaultTelemetryFile,\n\t\tsampleRate: samplingRate,\n\t\tflagValue: telemetryFlag,\n\t\truntimeOverride,\n\t\toverrideReason: telemetryOverrideReason,\n\t};\n}\n\nexport function setTelemetryRuntimeOverride(\n\tenabled: boolean | null,\n\treason?: string,\n): void {\n\ttelemetryOverride = enabled;\n\ttelemetryOverrideReason = reason;\n\ttelemetryEnabled = enabled === null ? initialTelemetryEnabled : enabled;\n}\n\nfunction normalizeTelemetryEventMetadata(\n\tevent: TelemetryEvent,\n): TelemetryEvent {\n\tif (!(\"metadata\" in event) && !(\"sensitiveMetadata\" in event)) {\n\t\treturn event;\n\t}\n\tconst existingMetadata =\n\t\t\"metadata\" in event ? stringRecord(event.metadata) : undefined;\n\tconst existingSensitiveMetadata =\n\t\t\"sensitiveMetadata\" in event\n\t\t\t? stringRecord(event.sensitiveMetadata)\n\t\t\t: undefined;\n\tconst { metadata, sensitiveMetadata } = normalizeTelemetryMetadataInputs(\n\t\texistingMetadata,\n\t\texistingSensitiveMetadata,\n\t);\n\tconst normalized = { ...event };\n\tif (\"metadata\" in normalized) {\n\t\tif (metadata) {\n\t\t\tnormalized.metadata = metadata;\n\t\t} else {\n\t\t\tdelete normalized.metadata;\n\t\t}\n\t}\n\tif (sensitiveMetadata) {\n\t\tnormalized.sensitiveMetadata = sensitiveMetadata;\n\t} else {\n\t\tdelete normalized.sensitiveMetadata;\n\t}\n\treturn normalized;\n}\n\nfunction isCanonicalTurnTelemetryEvent(\n\tevent: TelemetryEvent,\n): event is CanonicalTurnEvent {\n\treturn (\n\t\tevent.type === \"canonical-turn\" && \"model\" in event && \"tokens\" in event\n\t);\n}\n\nasync function writeToFile(payload: string) {\n\tconst filePath = telemetryFileEnv || defaultTelemetryFile;\n\tawait mkdir(dirname(filePath), { recursive: true });\n\tawait appendFile(filePath, `${payload}\\n`, \"utf-8\");\n}\n\nasync function appendToolFailure(payload: string): Promise<void> {\n\tawait mkdir(dirname(toolFailureLogFile), { recursive: true });\n\tawait appendFile(toolFailureLogFile, `${payload}\\n`, \"utf-8\");\n}\n\nasync function postToEndpoint(payload: string) {\n\tconst endpoint = telemetryEndpointEnv;\n\tif (!endpoint) {\n\t\treturn;\n\t}\n\ttry {\n\t\tawait fetch(endpoint, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders: { \"content-type\": \"application/json\" },\n\t\t\tbody: payload,\n\t\t});\n\t} catch (_error) {\n\t\t// Swallow telemetry transport errors\n\t}\n}\n\nfunction recordOpenTelemetrySpan(event: TelemetryEvent): void {\n\ttry {\n\t\tconst correlationAttributes = maestroCorrelationSpanAttributes(event);\n\t\tconst tracer = getTelemetryTracer();\n\t\ttracer.startActiveSpan(`telemetry.${event.type}`, (span: Span) => {\n\t\t\tspan.setAttributes({\n\t\t\t\t...correlationAttributes,\n\t\t\t\t\"maestro.telemetry.type\": event.type,\n\t\t\t\t\"maestro.telemetry.timestamp\": event.timestamp,\n\t\t\t});\n\n\t\t\tswitch (event.type) {\n\t\t\t\tcase \"tool-execution\":\n\t\t\t\t\tspan.setAttributes({\n\t\t\t\t\t\t\"maestro.tool.name\": event.toolName,\n\t\t\t\t\t\t\"maestro.tool.success\": event.success,\n\t\t\t\t\t\t\"maestro.tool.duration_ms\": event.durationMs,\n\t\t\t\t\t});\n\t\t\t\t\tspan.setStatus({\n\t\t\t\t\t\tcode: event.success ? SpanStatusCode.OK : SpanStatusCode.ERROR,\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"evaluation\":\n\t\t\t\t\tspan.setAttributes({\n\t\t\t\t\t\t\"maestro.eval.scenario\": event.scenario,\n\t\t\t\t\t\t\"maestro.eval.success\": event.success,\n\t\t\t\t\t});\n\t\t\t\t\tspan.setStatus({\n\t\t\t\t\t\tcode: event.success ? SpanStatusCode.OK : SpanStatusCode.ERROR,\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"loader-stage\":\n\t\t\t\t\tspan.setAttributes({\n\t\t\t\t\t\t\"maestro.loader.stage\": event.stage,\n\t\t\t\t\t\t\"maestro.loader.duration_ms\": event.durationMs,\n\t\t\t\t\t});\n\t\t\t\t\tspan.setStatus({ code: SpanStatusCode.OK });\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"sse\":\n\t\t\t\t\tspan.setAttributes({\n\t\t\t\t\t\t\"maestro.sse.sent\": event.sent,\n\t\t\t\t\t\t\"maestro.sse.skipped\": event.skipped,\n\t\t\t\t\t});\n\t\t\t\t\tspan.setStatus({ code: SpanStatusCode.OK });\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"background-task\":\n\t\t\t\t\tspan.setAttributes({\n\t\t\t\t\t\t\"maestro.background.id\": event.taskId,\n\t\t\t\t\t\t\"maestro.background.event\": event.event,\n\t\t\t\t\t\t\"maestro.background.status\": event.status,\n\t\t\t\t\t\t\"maestro.background.restart_attempts\": event.restartAttempts,\n\t\t\t\t\t\t\"maestro.background.exit_code\": event.exitCode ?? -1,\n\t\t\t\t\t\t\"maestro.background.shell_mode\": event.shellMode,\n\t\t\t\t\t});\n\t\t\t\t\tspan.setStatus(\n\t\t\t\t\t\tevent.failureReason || event.status === \"failed\"\n\t\t\t\t\t\t\t? { code: SpanStatusCode.ERROR, message: event.failureReason }\n\t\t\t\t\t\t\t: { code: SpanStatusCode.OK },\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"api-request\":\n\t\t\t\t\tspan.setAttributes({\n\t\t\t\t\t\t\"http.method\": event.method,\n\t\t\t\t\t\t\"http.route\": event.path,\n\t\t\t\t\t\t\"http.status_code\": event.statusCode,\n\t\t\t\t\t\t\"maestro.api.duration_ms\": event.durationMs,\n\t\t\t\t\t});\n\t\t\t\t\tspan.setStatus({\n\t\t\t\t\t\tcode:\n\t\t\t\t\t\t\tevent.statusCode >= 500\n\t\t\t\t\t\t\t\t? SpanStatusCode.ERROR\n\t\t\t\t\t\t\t\t: SpanStatusCode.OK,\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"business-metric\":\n\t\t\t\t\tspan.setAttributes({\n\t\t\t\t\t\t\"maestro.metric.name\": event.metric,\n\t\t\t\t\t\t\"maestro.metric.value\": event.value,\n\t\t\t\t\t});\n\t\t\t\t\tif (event.metadata?.model) {\n\t\t\t\t\t\tspan.setAttribute(\"maestro.metric.model\", event.metadata.model);\n\t\t\t\t\t}\n\t\t\t\t\tif (event.metadata?.provider) {\n\t\t\t\t\t\tspan.setAttribute(\n\t\t\t\t\t\t\t\"maestro.metric.provider\",\n\t\t\t\t\t\t\tevent.metadata.provider,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tspan.setStatus({ code: SpanStatusCode.OK });\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"staged-rollout-surface\":\n\t\t\t\t\tspan.setAttributes({\n\t\t\t\t\t\t\"maestro.staged_rollout.event\": event.event,\n\t\t\t\t\t\t\"maestro.staged_rollout.surface_id\": event.surfaceId,\n\t\t\t\t\t\t\"maestro.staged_rollout.surface_type\": event.surfaceType,\n\t\t\t\t\t});\n\t\t\t\t\tif (event.metadata?.owner) {\n\t\t\t\t\t\tspan.setAttribute(\n\t\t\t\t\t\t\t\"maestro.staged_rollout.owner\",\n\t\t\t\t\t\t\tString(event.metadata.owner),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tspan.setStatus({ code: SpanStatusCode.OK });\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"sandbox-violation\":\n\t\t\t\t\tspan.setAttributes({\n\t\t\t\t\t\t\"maestro.sandbox.event\": event.event,\n\t\t\t\t\t\t\"maestro.sandbox.tool\": event.tool,\n\t\t\t\t\t\t\"maestro.sandbox.action\": event.action,\n\t\t\t\t\t\t\"maestro.sandbox.reason\": event.reason,\n\t\t\t\t\t});\n\t\t\t\t\tif (event.path) {\n\t\t\t\t\t\tspan.setAttribute(\"maestro.sandbox.path\", event.path);\n\t\t\t\t\t}\n\t\t\t\t\tspan.setStatus({\n\t\t\t\t\t\tcode:\n\t\t\t\t\t\t\tevent.event === \"blocked\"\n\t\t\t\t\t\t\t\t? SpanStatusCode.ERROR\n\t\t\t\t\t\t\t\t: SpanStatusCode.OK,\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"subagent-dispatch\":\n\t\t\t\t\tspan.setAttributes({\n\t\t\t\t\t\t\"maestro.subagent.event\": event.event,\n\t\t\t\t\t\t\"maestro.subagent.mode\": event.mode,\n\t\t\t\t\t\t\"maestro.subagent.type\": event.subagentType,\n\t\t\t\t\t\t\"maestro.subagent.reasoning_effort\": event.reasoningEffort,\n\t\t\t\t\t\t\"maestro.subagent.source\": event.source ?? \"unknown\",\n\t\t\t\t\t\t\"maestro.subagent.success\": event.success,\n\t\t\t\t\t\t\"maestro.subagent.latency_ms\": event.latencyMs,\n\t\t\t\t\t\t\"llm.model.id\": event.model,\n\t\t\t\t\t\t\"llm.model.provider\": event.provider,\n\t\t\t\t\t});\n\t\t\t\t\tspan.setStatus({\n\t\t\t\t\t\tcode: event.success ? SpanStatusCode.OK : SpanStatusCode.ERROR,\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"canonical-turn\": {\n\t\t\t\t\tconst canonicalTurn = isCanonicalTurnTelemetryEvent(event)\n\t\t\t\t\t\t? event\n\t\t\t\t\t\t: undefined;\n\t\t\t\t\tspan.setAttributes({\n\t\t\t\t\t\t\"maestro.turn.id\": event.turnId,\n\t\t\t\t\t\t\"maestro.turn.number\": event.turnNumber,\n\t\t\t\t\t\t\"maestro.turn.session_id\": event.sessionId,\n\t\t\t\t\t\t\"agent.session.id\": event.sessionId,\n\t\t\t\t\t\t...(canonicalTurn\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\"llm.model.id\": canonicalTurn.model.id,\n\t\t\t\t\t\t\t\t\t\"llm.model.provider\": canonicalTurn.model.provider,\n\t\t\t\t\t\t\t\t\t\"llm.usage.input_tokens\": canonicalTurn.tokens.input,\n\t\t\t\t\t\t\t\t\t\"llm.usage.output_tokens\": canonicalTurn.tokens.output,\n\t\t\t\t\t\t\t\t\t\"llm.usage.cache_read_tokens\": canonicalTurn.tokens.cacheRead,\n\t\t\t\t\t\t\t\t\t\"llm.usage.cache_write_tokens\":\n\t\t\t\t\t\t\t\t\t\tcanonicalTurn.tokens.cacheWrite,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\"maestro.turn.status\": String(\n\t\t\t\t\t\t\t\"status\" in event ? event.status : \"unknown\",\n\t\t\t\t\t\t),\n\t\t\t\t\t\t\"maestro.turn.tool_count\": Number(\n\t\t\t\t\t\t\t\"toolCount\" in event ? event.toolCount : 0,\n\t\t\t\t\t\t),\n\t\t\t\t\t\t\"maestro.turn.total_duration_ms\": Number(\n\t\t\t\t\t\t\t\"totalDurationMs\" in event ? event.totalDurationMs : 0,\n\t\t\t\t\t\t),\n\t\t\t\t\t\t\"maestro.turn.cost_usd\": Number(\n\t\t\t\t\t\t\t\"costUsd\" in event ? event.costUsd : 0,\n\t\t\t\t\t\t),\n\t\t\t\t\t\t\"maestro.turn.sampled\": Boolean(\n\t\t\t\t\t\t\t\"sampled\" in event ? event.sampled : true,\n\t\t\t\t\t\t),\n\t\t\t\t\t});\n\t\t\t\t\tspan.setStatus({\n\t\t\t\t\t\tcode:\n\t\t\t\t\t\t\t\"status\" in event && event.status === \"error\"\n\t\t\t\t\t\t\t\t? SpanStatusCode.ERROR\n\t\t\t\t\t\t\t\t: SpanStatusCode.OK,\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\tspan.setStatus({ code: SpanStatusCode.UNSET });\n\t\t\t}\n\n\t\t\tif (\"metadata\" in event && event.metadata) {\n\t\t\t\tspan.setAttributes({ \"maestro.telemetry.has_metadata\": true });\n\t\t\t}\n\n\t\t\tspan.end();\n\t\t});\n\t} catch {\n\t\t// Never let tracing failures affect runtime\n\t}\n}\n\nfunction recordOpenTelemetryMetric(event: TelemetryEvent): void {\n\ttry {\n\t\tswitch (event.type) {\n\t\t\tcase \"tool-execution\":\n\t\t\t\trecordToolInvocationMetric({\n\t\t\t\t\ttoolName: event.toolName,\n\t\t\t\t\tdurationMs: event.durationMs,\n\t\t\t\t\tsuccess: event.success,\n\t\t\t\t\tagentRunId: metadataString(event.metadata, [\n\t\t\t\t\t\t\"agentRunId\",\n\t\t\t\t\t\t\"agent_run_id\",\n\t\t\t\t\t]),\n\t\t\t\t\tskillName: skillNameFromMetadata(event.metadata),\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase \"business-metric\":\n\t\t\t\tif (event.metric === \"compaction.triggered\") {\n\t\t\t\t\trecordCompactionMetric({\n\t\t\t\t\t\t\"maestro.session_id\": event.metadata?.sessionId,\n\t\t\t\t\t\t\"llm.model.id\": event.metadata?.model,\n\t\t\t\t\t\t\"llm.model.provider\": event.metadata?.provider,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"subagent-dispatch\":\n\t\t\t\trecordSubagentDispatchMetric({\n\t\t\t\t\tmode: event.mode,\n\t\t\t\t\tsubagentType: event.subagentType,\n\t\t\t\t\tprovider: event.provider,\n\t\t\t\t\tmodel: event.model,\n\t\t\t\t\treasoningEffort: event.reasoningEffort,\n\t\t\t\t\tsource: event.source,\n\t\t\t\t\tsuccess: event.success,\n\t\t\t\t\tlatencyMs: event.latencyMs,\n\t\t\t\t\tagentRunId: metadataString(event.metadata, [\n\t\t\t\t\t\t\"agentRunId\",\n\t\t\t\t\t\t\"agent_run_id\",\n\t\t\t\t\t]),\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t} catch {\n\t\t// Never let metric recording affect runtime behavior.\n\t}\n}\n\nfunction stringRecord(value: unknown): Record<string, unknown> | undefined {\n\treturn value && typeof value === \"object\" && !Array.isArray(value)\n\t\t? (value as Record<string, unknown>)\n\t\t: undefined;\n}\n\nfunction skillNameFromMetadata(\n\tmetadata: Record<string, unknown> | undefined,\n): string | undefined {\n\treturn (\n\t\tmetadataString(metadata, [\"skillName\", \"skill_name\"]) ??\n\t\tmetadataString(stringRecord(metadata?.skillMetadata), [\"name\"]) ??\n\t\tmetadataString(stringRecord(metadata?.skill_metadata), [\"name\"])\n\t);\n}\n\nfunction metadataString(\n\trecord: Record<string, unknown> | undefined,\n\tkeys: string[],\n): string | undefined {\n\tfor (const key of keys) {\n\t\tconst value = record?.[key];\n\t\tif (typeof value === \"string\" && value.trim().length > 0) {\n\t\t\treturn value;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nfunction eventCorrelationOverrides(\n\tevent: TelemetryEvent,\n): Partial<MaestroCorrelation> {\n\tconst metadata = stringRecord(\n\t\t\"metadata\" in event ? event.metadata : undefined,\n\t);\n\tconst topLevelTraceId =\n\t\t\"traceId\" in event &&\n\t\ttypeof event.traceId === \"string\" &&\n\t\tevent.traceId.trim().length > 0\n\t\t\t? event.traceId\n\t\t\t: undefined;\n\treturn {\n\t\torganization_id: metadataString(metadata, [\n\t\t\t\"organizationId\",\n\t\t\t\"organization_id\",\n\t\t\t\"orgId\",\n\t\t\t\"org_id\",\n\t\t]),\n\t\tuser_id: metadataString(metadata, [\"userId\", \"user_id\"]),\n\t\tworkspace_id: metadataString(metadata, [\"workspaceId\", \"workspace_id\"]),\n\t\tsession_id:\n\t\t\t(\"sessionId\" in event && typeof event.sessionId === \"string\"\n\t\t\t\t? event.sessionId\n\t\t\t\t: undefined) ??\n\t\t\tmetadataString(metadata, [\n\t\t\t\t\"sessionId\",\n\t\t\t\t\"session_id\",\n\t\t\t\t\"maestroSessionId\",\n\t\t\t\t\"maestro_session_id\",\n\t\t\t]),\n\t\tagent_run_id: metadataString(metadata, [\"agentRunId\", \"agent_run_id\"]),\n\t\tagent_run_step_id: metadataString(metadata, [\n\t\t\t\"agentRunStepId\",\n\t\t\t\"agent_run_step_id\",\n\t\t\t\"toolCallId\",\n\t\t\t\"tool_call_id\",\n\t\t]),\n\t\tagent_id: metadataString(metadata, [\"agentId\", \"agent_id\"]),\n\t\tactor_id: metadataString(metadata, [\"actorId\", \"actor_id\"]),\n\t\tprincipal_id: metadataString(metadata, [\"principalId\", \"principal_id\"]),\n\t\ttrace_id:\n\t\t\ttopLevelTraceId ?? metadataString(metadata, [\"traceId\", \"trace_id\"]),\n\t\ttraceparent: metadataString(metadata, [\"traceparent\", \"trace_parent\"]),\n\t\ttracestate: metadataString(metadata, [\"tracestate\", \"trace_state\"]),\n\t\trequest_id: metadataString(metadata, [\"requestId\", \"request_id\"]),\n\t\tremote_runner_session_id: metadataString(metadata, [\n\t\t\t\"remoteRunnerSessionId\",\n\t\t\t\"remote_runner_session_id\",\n\t\t]),\n\t\tobjective_id: metadataString(metadata, [\"objectiveId\", \"objective_id\"]),\n\t\tconversation_id: metadataString(metadata, [\n\t\t\t\"conversationId\",\n\t\t\t\"conversation_id\",\n\t\t]),\n\t};\n}\n\nfunction maestroCorrelationSpanAttributes(\n\tevent: TelemetryEvent,\n): Record<string, string> {\n\tconst config = resolveMaestroEventBusConfig();\n\tconst overrides = eventCorrelationOverrides(event);\n\tconst correlation = {\n\t\t...config.defaultCorrelation,\n\t\t...Object.fromEntries(\n\t\t\tObject.entries(overrides).filter(([, value]) => value !== undefined),\n\t\t),\n\t};\n\tconst principal = config.defaultPrincipal;\n\tconst attributes: Record<string, string | undefined> = {\n\t\t\"enduser.id\": correlation.user_id ?? principal?.user_id,\n\t\t\"user.id\": correlation.user_id ?? principal?.user_id,\n\t\t\"agent.user.id\": correlation.user_id ?? principal?.user_id,\n\t\t\"organization.id\":\n\t\t\tcorrelation.organization_id ?? principal?.organization_id,\n\t\t\"evalops.organization_id\":\n\t\t\tcorrelation.organization_id ?? principal?.organization_id,\n\t\t\"workspace.id\": correlation.workspace_id ?? principal?.workspace_id,\n\t\t\"evalops.workspace_id\": correlation.workspace_id ?? principal?.workspace_id,\n\t\t\"maestro.session_id\": correlation.session_id,\n\t\t\"agent.id\": correlation.agent_id,\n\t\t\"agent.actor.id\": correlation.actor_id,\n\t\t\"evalops.principal_id\": correlation.principal_id,\n\t\t\"maestro.agent_run_id\": correlation.agent_run_id,\n\t\t\"maestro.agent_run_step_id\": correlation.agent_run_step_id,\n\t\t\"trace.id\": correlation.trace_id,\n\t\ttraceparent: correlation.traceparent,\n\t\ttracestate: correlation.tracestate,\n\t\t\"request.id\": correlation.request_id,\n\t\t\"evalops.remote_runner_session_id\": correlation.remote_runner_session_id,\n\t\t\"evalops.objective_id\": correlation.objective_id,\n\t\t\"evalops.conversation_id\": correlation.conversation_id,\n\t\t\"maestro.surface\": config.defaultSurface,\n\t};\n\n\treturn Object.fromEntries(\n\t\tObject.entries(attributes).filter(\n\t\t\t(entry): entry is [string, string] =>\n\t\t\t\ttypeof entry[1] === \"string\" &&\n\t\t\t\tentry[1].trim().length > 0 &&\n\t\t\t\tentry[1] !== \"unknown\",\n\t\t),\n\t);\n}\n\nasync function persistTelemetry(event: TelemetryEvent) {\n\tconst payload = JSON.stringify(event);\n\tconst tasks: Promise<void>[] = [];\n\n\tif (isCanonicalTurnTelemetryEvent(event)) {\n\t\ttasks.push(mirrorCanonicalTurnEventToMeter(event).then(() => undefined));\n\t}\n\n\tif (telemetryEndpointEnv) {\n\t\ttasks.push(postToEndpoint(payload));\n\t}\n\n\tif (telemetryEndpointEnv === undefined) {\n\t\t// Default to file storage when no endpoint is configured\n\t\ttasks.push(writeToFile(payload));\n\t} else if (telemetryFileEnv) {\n\t\ttasks.push(writeToFile(payload));\n\t}\n\n\tawait Promise.all(tasks);\n}\n\nfunction cloneBackgroundTaskTelemetry(\n\tevent: BackgroundTaskTelemetry,\n): BackgroundTaskTelemetry {\n\treturn {\n\t\t...event,\n\t\tresourceUsage: event.resourceUsage ? { ...event.resourceUsage } : undefined,\n\t\tlimitBreach: event.limitBreach ? { ...event.limitBreach } : undefined,\n\t};\n}\n\nfunction recordBackgroundHistory(event: BackgroundTaskTelemetry): void {\n\tbackgroundTaskHistory.push(cloneBackgroundTaskTelemetry(event));\n\tif (backgroundTaskHistory.length > BACKGROUND_TASK_HISTORY_LIMIT) {\n\t\tbackgroundTaskHistory.shift();\n\t}\n}\n\nexport function getBackgroundTaskHistory(\n\tlimit = 10,\n): BackgroundTaskTelemetry[] {\n\tif (limit <= 0) {\n\t\treturn [];\n\t}\n\treturn backgroundTaskHistory\n\t\t.slice(-limit)\n\t\t.map((entry) => cloneBackgroundTaskTelemetry(entry));\n}\n\nexport async function recordTelemetry(event: TelemetryEvent): Promise<void> {\n\tif (isInternalTelemetryDisabled()) {\n\t\treturn;\n\t}\n\n\tconst normalizedEvent = normalizeTelemetryEventMetadata(event);\n\tconst openTelemetryEnabled = isOpenTelemetryEnabled();\n\tif (openTelemetryEnabled) {\n\t\trecordOpenTelemetrySpan(normalizedEvent);\n\t\trecordOpenTelemetryMetric(normalizedEvent);\n\t}\n\tconst eventBusTask = mirrorTelemetryToMaestroEventBus(normalizedEvent);\n\n\tconst legacyEnabled = telemetryEnabled && samplingRate > 0;\n\tif (!legacyEnabled) {\n\t\tawait eventBusTask;\n\t\treturn;\n\t}\n\n\tif (samplingRate < 1 && Math.random() > samplingRate) {\n\t\tawait eventBusTask;\n\t\treturn;\n\t}\n\n\ttry {\n\t\tawait Promise.all([persistTelemetry(normalizedEvent), eventBusTask]);\n\t} catch (_error) {\n\t\t// Ignore telemetry persistence failures\n\t}\n}\n\nexport function recordToolExecution(\n\ttoolName: string,\n\tsuccess: boolean,\n\tdurationMs: number,\n\tmetadata?: Record<string, unknown>,\n): void {\n\tvoid recordTelemetry({\n\t\ttype: \"tool-execution\",\n\t\ttimestamp: new Date().toISOString(),\n\t\ttoolName,\n\t\tsuccess,\n\t\tdurationMs,\n\t\tmetadata,\n\t});\n}\n\nexport function recordEvaluationResult(\n\tscenario: string,\n\tsuccess: boolean,\n\tdetails?: Record<string, unknown>,\n): void {\n\tvoid recordTelemetry({\n\t\ttype: \"evaluation\",\n\t\ttimestamp: new Date().toISOString(),\n\t\tscenario,\n\t\tsuccess,\n\t\tdetails,\n\t});\n}\n\nexport function recordLoaderStage(\n\tstage: string,\n\tdurationMs: number,\n\tmetadata?: Record<string, unknown>,\n): void {\n\tvoid recordTelemetry({\n\t\ttype: \"loader-stage\",\n\t\ttimestamp: new Date().toISOString(),\n\t\tstage,\n\t\tdurationMs,\n\t\tmetadata,\n\t});\n}\n\nexport function recordSseSkip(\n\tsent: number,\n\tskipped: number,\n\tmetadata?: Record<string, unknown>,\n): void {\n\tvoid recordTelemetry({\n\t\ttype: \"sse\",\n\t\tevent: \"skip\",\n\t\ttimestamp: new Date().toISOString(),\n\t\tsent,\n\t\tskipped,\n\t\tmetadata,\n\t});\n}\n\nexport function logToolFailure(\n\ttoolName: string,\n\terrorMessage: string,\n\tmetadata?: Record<string, unknown>,\n): void {\n\tconst payload = {\n\t\ttool: toolName,\n\t\terror: errorMessage,\n\t\tmetadata,\n\t\ttimestamp: new Date().toISOString(),\n\t};\n\tvoid appendToolFailure(JSON.stringify(payload));\n}\n\nexport function recordBackgroundTaskEvent(\n\tevent: Omit<BackgroundTaskTelemetry, \"type\" | \"timestamp\">,\n): void {\n\tconst sanitizedCommand = sanitizeWithStaticMask(event.command);\n\tconst sanitizedFailure = sanitizeOptionalWithStaticMask(event.failureReason);\n\tconst payload: BackgroundTaskTelemetry = {\n\t\t...event,\n\t\tcommand: sanitizedCommand,\n\t\tfailureReason: sanitizedFailure,\n\t\ttype: \"background-task\",\n\t\ttimestamp: new Date().toISOString(),\n\t};\n\trecordBackgroundHistory(payload);\n\tvoid recordTelemetry(payload);\n}\n\nexport function recordApiRequest(\n\tmethod: string,\n\tpath: string,\n\tstatusCode: number,\n\tdurationMs: number,\n\tmetadata?: Record<string, unknown>,\n): void {\n\tvoid recordTelemetry({\n\t\ttype: \"api-request\",\n\t\ttimestamp: new Date().toISOString(),\n\t\tmethod,\n\t\tpath,\n\t\tstatusCode,\n\t\tdurationMs,\n\t\tmetadata,\n\t});\n}\n\n/**\n * Record a business metric for usage tracking.\n */\nexport function recordBusinessMetric(\n\tmetric: BusinessMetricTelemetry[\"metric\"],\n\tvalue: number,\n\tmetadata?: BusinessMetricTelemetry[\"metadata\"],\n): void {\n\tvoid recordTelemetry({\n\t\ttype: \"business-metric\",\n\t\ttimestamp: new Date().toISOString(),\n\t\tmetric,\n\t\tvalue,\n\t\tmetadata,\n\t});\n}\n\n/**\n * Record session start.\n */\nexport function recordSessionStart(\n\tsessionId: string,\n\tmetadata?: Omit<BusinessMetricTelemetry[\"metadata\"], \"sessionId\">,\n): void {\n\trecordBusinessMetric(\"session.count\", 1, { ...metadata, sessionId });\n}\n\n/**\n * Record session duration on end.\n */\nexport function recordSessionDuration(\n\tsessionId: string,\n\tdurationMs: number,\n\tmetadata?: Omit<BusinessMetricTelemetry[\"metadata\"], \"sessionId\">,\n): Promise<void> {\n\treturn recordTelemetry({\n\t\ttype: \"business-metric\",\n\t\ttimestamp: new Date().toISOString(),\n\t\tmetric: \"session.duration\",\n\t\tvalue: durationMs,\n\t\tmetadata: {\n\t\t\t...metadata,\n\t\t\tsessionId,\n\t\t},\n\t});\n}\n\n/**\n * Record token usage metrics.\n */\nexport function recordTokenUsage(\n\tsessionId: string,\n\ttokens: {\n\t\tinput?: number;\n\t\toutput?: number;\n\t\tcacheRead?: number;\n\t\tcacheWrite?: number;\n\t},\n\tmetadata?: Omit<BusinessMetricTelemetry[\"metadata\"], \"sessionId\">,\n): void {\n\tif (tokens.input !== undefined && tokens.input > 0) {\n\t\trecordBusinessMetric(\"tokens.input\", tokens.input, {\n\t\t\t...metadata,\n\t\t\tsessionId,\n\t\t});\n\t}\n\tif (tokens.output !== undefined && tokens.output > 0) {\n\t\trecordBusinessMetric(\"tokens.output\", tokens.output, {\n\t\t\t...metadata,\n\t\t\tsessionId,\n\t\t});\n\t}\n\tif (tokens.cacheRead !== undefined && tokens.cacheRead > 0) {\n\t\trecordBusinessMetric(\"tokens.cache_read\", tokens.cacheRead, {\n\t\t\t...metadata,\n\t\t\tsessionId,\n\t\t});\n\t}\n\tif (tokens.cacheWrite !== undefined && tokens.cacheWrite > 0) {\n\t\trecordBusinessMetric(\"tokens.cache_write\", tokens.cacheWrite, {\n\t\t\t...metadata,\n\t\t\tsessionId,\n\t\t});\n\t}\n}\n\n/**\n * Record cost in USD.\n */\nexport function recordCost(\n\tsessionId: string,\n\tcostUsd: number,\n\tmetadata?: Omit<BusinessMetricTelemetry[\"metadata\"], \"sessionId\">,\n): void {\n\trecordBusinessMetric(\"cost.usd\", costUsd, { ...metadata, sessionId });\n}\n\n/**\n * Record compaction event.\n */\nexport function recordCompaction(\n\tsessionId: string,\n\tmetadata?: Omit<BusinessMetricTelemetry[\"metadata\"], \"sessionId\">,\n): void {\n\trecordBusinessMetric(\"compaction.triggered\", 1, { ...metadata, sessionId });\n}\n\n/**\n * Record model switch.\n */\nexport function recordModelSwitch(\n\tsessionId: string,\n\tfromModel: string,\n\ttoModel: string,\n\tmetadata?: Omit<BusinessMetricTelemetry[\"metadata\"], \"sessionId\">,\n): void {\n\trecordBusinessMetric(\"model.switch\", 1, {\n\t\t...metadata,\n\t\tsessionId,\n\t\tmodel: toModel,\n\t\tpreviousModel: fromModel,\n\t});\n}\n\nexport function recordStagedRolloutSurfaceUsage(\n\tevent: StagedRolloutSurfaceTelemetry[\"event\"],\n\toptions: {\n\t\tsurfaceId: string;\n\t\tsurfaceType: StagedRolloutSurfaceTelemetry[\"surfaceType\"];\n\t\towner?: string;\n\t\tsource?: string;\n\t\tmetadata?: Record<string, unknown>;\n\t},\n): Promise<void> {\n\treturn recordTelemetry({\n\t\ttype: \"staged-rollout-surface\",\n\t\ttimestamp: new Date().toISOString(),\n\t\tevent,\n\t\tsurfaceId: options.surfaceId,\n\t\tsurfaceType: options.surfaceType,\n\t\tmetadata: {\n\t\t\t...options.metadata,\n\t\t\towner: options.owner,\n\t\t\tsource: options.source,\n\t\t},\n\t});\n}\n\nexport function recordSubagentDispatch(\n\tevent: Omit<SubagentDispatchTelemetry, \"type\" | \"timestamp\" | \"event\">,\n): void {\n\tvoid recordTelemetry({\n\t\t...event,\n\t\ttype: \"subagent-dispatch\",\n\t\tevent: \"subagent_dispatched\",\n\t\ttimestamp: new Date().toISOString(),\n\t});\n}\n\n/**\n * Record session migration stats.\n */\nexport function recordSessionMigration(stats: {\n\ttotal: number;\n\tmigrated: number;\n\tskipped: number;\n\tfailures: number;\n\tversion: number;\n}): void {\n\trecordBusinessMetric(\"session.migration\", stats.total, {\n\t\tmigrated: stats.migrated,\n\t\tskipped: stats.skipped,\n\t\tfailures: stats.failures,\n\t\tversion: stats.version,\n\t});\n}\n\n/**\n * Record a sandbox violation event.\n */\nexport function recordSandboxViolation(\n\tevent: SandboxViolationTelemetry[\"event\"],\n\ttool: string,\n\taction: string,\n\treason: string,\n\toptions?: {\n\t\tpath?: string;\n\t\tcommand?: string;\n\t\tsessionId?: string;\n\t\tmetadata?: Record<string, unknown>;\n\t},\n): void {\n\tvoid recordTelemetry({\n\t\ttype: \"sandbox-violation\",\n\t\ttimestamp: new Date().toISOString(),\n\t\tevent,\n\t\ttool,\n\t\taction,\n\t\treason,\n\t\tpath: options?.path,\n\t\tcommand: options?.command\n\t\t\t? sanitizeWithStaticMask(options.command)\n\t\t\t: undefined,\n\t\tmetadata: options?.metadata\n\t\t\t? { ...options.metadata, sessionId: options.sessionId }\n\t\t\t: options?.sessionId\n\t\t\t\t? { sessionId: options.sessionId }\n\t\t\t\t: undefined,\n\t});\n}\n\n// Initialize the wide-events telemetry recorder to break circular dependency\nsetDefaultTelemetryRecorder(recordTelemetry);\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-verification-hook.d.ts","sourceRoot":"","sources":["../../src/testing/test-verification-hook.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;
|
|
1
|
+
{"version":3,"file":"test-verification-hook.d.ts","sourceRoot":"","sources":["../../src/testing/test-verification-hook.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAYH,OAAO,EACN,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EAMf,MAAM,kBAAkB,CAAC;AA4G1B;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC3C,2BAA2B;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACnC,mCAAmC;IACnC,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;CAC9C;AAED;;;;;;;;;GASG;AACH,wBAAgB,6BAA6B,CAC5C,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,2BAAgC,GACvC,iBAAiB,CA6CnB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACrC,0CAA0C;IAC1C,SAAS,EAAE,OAAO,CAAC;IACnB,oCAAoC;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,gCAAgC;IAChC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B,4BAA4B;IAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AASD;;;;;GAKG;AACH,wBAAgB,kCAAkC,CACjD,OAAO,EAAE,iBAAiB,GACxB;IACF,QAAQ,IAAI,qBAAqB,CAAC;IAClC,OAAO,IAAI,IAAI,CAAC;CAChB,CAiCA;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC3C,KAAK,EAAE,qBAAqB,GAC1B,MAAM,GAAG,IAAI,CAiBf"}
|
|
@@ -13,13 +13,19 @@
|
|
|
13
13
|
*/
|
|
14
14
|
import { isAbsolute, join } from "node:path";
|
|
15
15
|
import { registerHook } from "../hooks/config.js";
|
|
16
|
+
import { parseApplyPatchPaths } from "../tools/apply-patch-parser.js";
|
|
16
17
|
import { createLogger } from "../utils/logger.js";
|
|
17
18
|
import { createAutoVerifyService, getAutoVerifyConfig, } from "./auto-verify.js";
|
|
18
19
|
const logger = createLogger("test-verification-hook");
|
|
19
20
|
/**
|
|
20
21
|
* Tools that modify files and should trigger test verification.
|
|
21
22
|
*/
|
|
22
|
-
const FILE_MODIFYING_TOOLS = new Set([
|
|
23
|
+
const FILE_MODIFYING_TOOLS = new Set([
|
|
24
|
+
"apply_patch",
|
|
25
|
+
"edit",
|
|
26
|
+
"write",
|
|
27
|
+
"notebook_edit",
|
|
28
|
+
]);
|
|
23
29
|
let registeredTestVerificationHookUnregisters = [];
|
|
24
30
|
let registeredTestVerificationService = null;
|
|
25
31
|
function clearRegisteredTestVerificationHooks() {
|
|
@@ -33,22 +39,27 @@ function clearRegisteredTestVerificationHooks() {
|
|
|
33
39
|
/**
|
|
34
40
|
* Extract file path from tool input based on tool type.
|
|
35
41
|
*/
|
|
36
|
-
function
|
|
42
|
+
function extractFilePaths(toolName, toolInput) {
|
|
37
43
|
switch (toolName) {
|
|
38
44
|
case "edit":
|
|
39
45
|
return typeof toolInput.file_path === "string"
|
|
40
|
-
? toolInput.file_path
|
|
41
|
-
:
|
|
46
|
+
? [toolInput.file_path]
|
|
47
|
+
: [];
|
|
48
|
+
case "apply_patch":
|
|
49
|
+
if (typeof toolInput.patch !== "string") {
|
|
50
|
+
return [];
|
|
51
|
+
}
|
|
52
|
+
return parseApplyPatchPaths(toolInput.patch);
|
|
42
53
|
case "write":
|
|
43
54
|
return typeof toolInput.file_path === "string"
|
|
44
|
-
? toolInput.file_path
|
|
45
|
-
:
|
|
55
|
+
? [toolInput.file_path]
|
|
56
|
+
: [];
|
|
46
57
|
case "notebook_edit":
|
|
47
58
|
return typeof toolInput.notebook_path === "string"
|
|
48
|
-
? toolInput.notebook_path
|
|
49
|
-
:
|
|
59
|
+
? [toolInput.notebook_path]
|
|
60
|
+
: [];
|
|
50
61
|
default:
|
|
51
|
-
return
|
|
62
|
+
return [];
|
|
52
63
|
}
|
|
53
64
|
}
|
|
54
65
|
/**
|
|
@@ -69,20 +80,22 @@ function createTestVerificationCallback(service) {
|
|
|
69
80
|
if (postInput.is_error) {
|
|
70
81
|
return null;
|
|
71
82
|
}
|
|
72
|
-
// Extract file
|
|
73
|
-
const
|
|
74
|
-
if (
|
|
83
|
+
// Extract file paths from tool input
|
|
84
|
+
const filePaths = extractFilePaths(postInput.tool_name, postInput.tool_input);
|
|
85
|
+
if (filePaths.length === 0) {
|
|
75
86
|
return null;
|
|
76
87
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
tool
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
88
|
+
for (const filePath of filePaths) {
|
|
89
|
+
// Record the file change (this will debounce and eventually trigger tests)
|
|
90
|
+
const absolutePath = isAbsolute(filePath)
|
|
91
|
+
? filePath
|
|
92
|
+
: join(postInput.cwd, filePath);
|
|
93
|
+
logger.debug("Recording file change from tool", {
|
|
94
|
+
tool: postInput.tool_name,
|
|
95
|
+
filePath: absolutePath,
|
|
96
|
+
});
|
|
97
|
+
service.recordFileChange(absolutePath);
|
|
98
|
+
}
|
|
86
99
|
// Return null to not interfere with the hook flow
|
|
87
100
|
// Tests will run asynchronously after debounce period
|
|
88
101
|
return null;
|