@evalops/maestro 0.10.8 → 0.10.10
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 +3 -1
- package/dist/agent/action-approval.d.ts +6 -0
- package/dist/agent/action-approval.d.ts.map +1 -1
- package/dist/agent/action-approval.js.map +1 -1
- package/dist/agent/agent.d.ts +13 -1
- package/dist/agent/agent.d.ts.map +1 -1
- package/dist/agent/agent.js +368 -1
- package/dist/agent/agent.js.map +1 -1
- package/dist/agent/auto-compaction.d.ts +4 -4
- package/dist/agent/auto-compaction.d.ts.map +1 -1
- package/dist/agent/auto-compaction.js.map +1 -1
- package/dist/agent/compaction-cleanup.d.ts +2 -0
- package/dist/agent/compaction-cleanup.d.ts.map +1 -1
- package/dist/agent/compaction-cleanup.js +17 -2
- package/dist/agent/compaction-cleanup.js.map +1 -1
- package/dist/agent/compaction.d.ts +3 -1
- package/dist/agent/compaction.d.ts.map +1 -1
- package/dist/agent/compaction.js +10 -2
- package/dist/agent/compaction.js.map +1 -1
- package/dist/agent/context-manager.d.ts +4 -0
- package/dist/agent/context-manager.d.ts.map +1 -1
- package/dist/agent/context-manager.js +8 -0
- package/dist/agent/context-manager.js.map +1 -1
- package/dist/agent/context-providers.d.ts +2 -0
- package/dist/agent/context-providers.d.ts.map +1 -1
- package/dist/agent/context-providers.js +3 -2
- package/dist/agent/context-providers.js.map +1 -1
- package/dist/agent/providers/google-gemini-cli.js +17 -5
- package/dist/agent/providers/google.js +174 -144
- package/dist/agent/providers/openai-codex-responses.d.ts +4 -0
- package/dist/agent/providers/openai-codex-responses.d.ts.map +1 -0
- package/dist/agent/providers/openai-codex-responses.js +637 -0
- package/dist/agent/providers/openai-codex-responses.js.map +1 -0
- package/dist/agent/providers/openai-codex-session.d.ts +18 -0
- package/dist/agent/providers/openai-codex-session.d.ts.map +1 -0
- package/dist/agent/providers/openai-codex-session.js +53 -0
- package/dist/agent/providers/openai-codex-session.js.map +1 -0
- package/dist/agent/providers/openai-responses-sdk.d.ts.map +1 -1
- package/dist/agent/providers/openai-responses-sdk.js +16 -6
- package/dist/agent/providers/openai-responses-sdk.js.map +1 -1
- package/dist/agent/providers/openai-shared.d.ts +12 -5
- package/dist/agent/providers/openai-shared.d.ts.map +1 -1
- package/dist/agent/providers/openai-shared.js +291 -2
- package/dist/agent/providers/openai-shared.js.map +1 -1
- package/dist/agent/providers/openai.d.ts +1 -1
- package/dist/agent/providers/openai.d.ts.map +1 -1
- package/dist/agent/providers/openai.js +48 -20
- package/dist/agent/providers/openai.js.map +1 -1
- package/dist/agent/providers/vertex.js +7 -0
- package/dist/agent/tracing.d.ts +16 -5
- package/dist/agent/tracing.d.ts.map +1 -1
- package/dist/agent/tracing.js +44 -2
- 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 +9 -0
- package/dist/agent/transport/create-provider-stream.js.map +1 -1
- package/dist/agent/transport/tool-execution-bridge.d.ts +86 -0
- package/dist/agent/transport/tool-execution-bridge.d.ts.map +1 -0
- package/dist/agent/transport/tool-execution-bridge.js +665 -0
- package/dist/agent/transport/tool-execution-bridge.js.map +1 -0
- package/dist/agent/transport/tool-execution.d.ts +3 -0
- package/dist/agent/transport/tool-execution.d.ts.map +1 -1
- package/dist/agent/transport/tool-execution.js +16 -1
- package/dist/agent/transport/tool-execution.js.map +1 -1
- package/dist/agent/transport/tool-safety-pipeline.d.ts +7 -1
- package/dist/agent/transport/tool-safety-pipeline.d.ts.map +1 -1
- package/dist/agent/transport/tool-safety-pipeline.js +207 -40
- package/dist/agent/transport/tool-safety-pipeline.js.map +1 -1
- package/dist/agent/transport/tool-update-queue.d.ts +2 -0
- package/dist/agent/transport/tool-update-queue.d.ts.map +1 -1
- package/dist/agent/transport/tool-update-queue.js.map +1 -1
- package/dist/agent/transport.d.ts +3 -0
- package/dist/agent/transport.d.ts.map +1 -1
- package/dist/agent/transport.js +96 -16
- package/dist/agent/transport.js.map +1 -1
- package/dist/agent/types.d.ts +50 -2
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js.map +1 -1
- package/dist/approvals/platform-action-approval.d.ts +32 -0
- package/dist/approvals/platform-action-approval.d.ts.map +1 -0
- package/dist/approvals/platform-action-approval.js +210 -0
- package/dist/approvals/platform-action-approval.js.map +1 -0
- package/dist/approvals/service-client.d.ts +56 -0
- package/dist/approvals/service-client.d.ts.map +1 -0
- package/dist/approvals/service-client.js +316 -0
- package/dist/approvals/service-client.js.map +1 -0
- package/dist/audit/logger.d.ts +4 -4
- package/dist/bootstrap/auth-setup.d.ts +2 -2
- package/dist/bootstrap/auth-setup.d.ts.map +1 -1
- package/dist/bootstrap/auth-setup.js +4 -7
- package/dist/bootstrap/auth-setup.js.map +1 -1
- package/dist/cli/args.d.ts +2 -0
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +28 -0
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/commands/codex.d.ts +2 -0
- package/dist/cli/commands/codex.d.ts.map +1 -0
- package/dist/cli/commands/codex.js +65 -0
- package/dist/cli/commands/codex.js.map +1 -0
- package/dist/cli/commands/config.js +1 -1
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/evalops.d.ts +2 -0
- package/dist/cli/commands/evalops.d.ts.map +1 -0
- package/dist/cli/commands/evalops.js +69 -0
- package/dist/cli/commands/evalops.js.map +1 -0
- package/dist/cli/commands/hosted-runner.d.ts +23 -0
- package/dist/cli/commands/hosted-runner.d.ts.map +1 -0
- package/dist/cli/commands/hosted-runner.js +241 -0
- package/dist/cli/commands/hosted-runner.js.map +1 -0
- package/dist/cli/commands/memory.d.ts.map +1 -1
- package/dist/cli/commands/memory.js +23 -30
- package/dist/cli/commands/memory.js.map +1 -1
- package/dist/cli/commands/remote.d.ts +3 -0
- package/dist/cli/commands/remote.d.ts.map +1 -0
- package/dist/cli/commands/remote.js +631 -0
- package/dist/cli/commands/remote.js.map +1 -0
- package/dist/cli/commands/stats.d.ts +7 -0
- package/dist/cli/commands/stats.d.ts.map +1 -0
- package/dist/cli/commands/stats.js +167 -0
- package/dist/cli/commands/stats.js.map +1 -0
- package/dist/cli/headless-protocol.d.ts +16 -1
- package/dist/cli/headless-protocol.d.ts.map +1 -1
- package/dist/cli/headless-protocol.js +60 -4
- package/dist/cli/headless-protocol.js.map +1 -1
- package/dist/cli/headless.d.ts.map +1 -1
- package/dist/cli/headless.js +1 -0
- package/dist/cli/headless.js.map +1 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +36 -1
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/jsonl-writer.d.ts.map +1 -1
- package/dist/cli/jsonl-writer.js +19 -6
- package/dist/cli/jsonl-writer.js.map +1 -1
- package/dist/cli-tui/client-tools/client-tool-controller.d.ts.map +1 -1
- package/dist/cli-tui/client-tools/client-tool-controller.js +17 -1
- package/dist/cli-tui/client-tools/client-tool-controller.js.map +1 -1
- package/dist/cli-tui/commands/access-command.js +1 -1
- package/dist/cli-tui/commands/access-command.js.map +1 -1
- package/dist/cli-tui/commands/audit-command.js +1 -1
- package/dist/cli-tui/commands/audit-command.js.map +1 -1
- package/dist/cli-tui/commands/command-catalog.d.ts +29 -0
- package/dist/cli-tui/commands/command-catalog.d.ts.map +1 -0
- package/dist/cli-tui/commands/command-catalog.js +645 -0
- package/dist/cli-tui/commands/command-catalog.js.map +1 -0
- package/dist/cli-tui/commands/command-registry-adapter.d.ts +12 -0
- package/dist/cli-tui/commands/command-registry-adapter.d.ts.map +1 -0
- package/dist/cli-tui/commands/command-registry-adapter.js +120 -0
- package/dist/cli-tui/commands/command-registry-adapter.js.map +1 -0
- package/dist/cli-tui/commands/command-suite-catalog.d.ts +14 -0
- package/dist/cli-tui/commands/command-suite-catalog.d.ts.map +1 -0
- package/dist/cli-tui/commands/command-suite-catalog.js +147 -0
- package/dist/cli-tui/commands/command-suite-catalog.js.map +1 -0
- package/dist/cli-tui/commands/{grouped-command-handlers.d.ts → command-suite-handlers.d.ts} +27 -26
- package/dist/cli-tui/commands/command-suite-handlers.d.ts.map +1 -0
- package/dist/cli-tui/commands/command-suite-handlers.js +110 -0
- package/dist/cli-tui/commands/command-suite-handlers.js.map +1 -0
- package/dist/cli-tui/commands/hotkeys-command.d.ts +1 -1
- package/dist/cli-tui/commands/hotkeys-command.d.ts.map +1 -1
- package/dist/cli-tui/commands/hotkeys-command.js +2 -2
- package/dist/cli-tui/commands/hotkeys-command.js.map +1 -1
- package/dist/cli-tui/commands/limits-command.js +1 -1
- package/dist/cli-tui/commands/limits-command.js.map +1 -1
- package/dist/cli-tui/commands/pii-command.js +1 -1
- package/dist/cli-tui/commands/pii-command.js.map +1 -1
- package/dist/cli-tui/commands/registry.d.ts +1 -1
- package/dist/cli-tui/commands/registry.d.ts.map +1 -1
- package/dist/cli-tui/commands/registry.js +29 -921
- package/dist/cli-tui/commands/registry.js.map +1 -1
- package/dist/cli-tui/commands/{grouped → subcommands}/auth-commands.d.ts +2 -1
- package/dist/cli-tui/commands/subcommands/auth-commands.d.ts.map +1 -0
- package/dist/cli-tui/commands/{grouped → subcommands}/auth-commands.js +22 -6
- package/dist/cli-tui/commands/subcommands/auth-commands.js.map +1 -0
- package/dist/cli-tui/commands/{grouped → subcommands}/config-commands.d.ts +0 -1
- package/dist/cli-tui/commands/subcommands/config-commands.d.ts.map +1 -0
- package/dist/cli-tui/commands/{grouped → subcommands}/config-commands.js +2 -2
- package/dist/cli-tui/commands/subcommands/config-commands.js.map +1 -0
- package/dist/cli-tui/commands/{grouped → subcommands}/diag-commands.d.ts +1 -2
- package/dist/cli-tui/commands/subcommands/diag-commands.d.ts.map +1 -0
- package/dist/cli-tui/commands/{grouped → subcommands}/diag-commands.js +5 -7
- package/dist/cli-tui/commands/subcommands/diag-commands.js.map +1 -0
- package/dist/cli-tui/commands/{grouped → subcommands}/git-commands.d.ts +0 -2
- package/dist/cli-tui/commands/subcommands/git-commands.d.ts.map +1 -0
- package/dist/cli-tui/commands/{grouped → subcommands}/git-commands.js +2 -2
- package/dist/cli-tui/commands/subcommands/git-commands.js.map +1 -0
- package/dist/cli-tui/commands/{grouped → subcommands}/index.d.ts +2 -2
- package/dist/cli-tui/commands/subcommands/index.d.ts.map +1 -0
- package/dist/cli-tui/commands/{grouped → subcommands}/index.js +2 -2
- package/dist/cli-tui/commands/subcommands/index.js.map +1 -0
- package/dist/cli-tui/commands/{grouped → subcommands}/safety-commands.d.ts +0 -1
- package/dist/cli-tui/commands/subcommands/safety-commands.d.ts.map +1 -0
- package/dist/cli-tui/commands/{grouped → subcommands}/safety-commands.js +12 -12
- package/dist/cli-tui/commands/subcommands/safety-commands.js.map +1 -0
- package/dist/cli-tui/commands/{grouped → subcommands}/session-commands.d.ts +1 -2
- package/dist/cli-tui/commands/subcommands/session-commands.d.ts.map +1 -0
- package/dist/cli-tui/commands/{grouped → subcommands}/session-commands.js +3 -3
- package/dist/cli-tui/commands/subcommands/session-commands.js.map +1 -0
- package/dist/cli-tui/commands/{grouped → subcommands}/tools-commands.d.ts +0 -1
- package/dist/cli-tui/commands/subcommands/tools-commands.d.ts.map +1 -0
- package/dist/cli-tui/commands/{grouped → subcommands}/tools-commands.js +2 -2
- package/dist/cli-tui/commands/subcommands/tools-commands.js.map +1 -0
- package/dist/cli-tui/commands/{grouped → subcommands}/ui-commands.d.ts +0 -1
- package/dist/cli-tui/commands/subcommands/ui-commands.d.ts.map +1 -0
- package/dist/cli-tui/commands/{grouped → subcommands}/ui-commands.js +5 -5
- package/dist/cli-tui/commands/subcommands/ui-commands.js.map +1 -0
- package/dist/cli-tui/commands/{grouped → subcommands}/undo-commands.d.ts +1 -2
- package/dist/cli-tui/commands/subcommands/undo-commands.d.ts.map +1 -0
- package/dist/cli-tui/commands/{grouped → subcommands}/undo-commands.js +6 -6
- package/dist/cli-tui/commands/subcommands/undo-commands.js.map +1 -0
- package/dist/cli-tui/commands/subcommands/usage-commands.d.ts.map +1 -0
- package/dist/cli-tui/commands/{grouped → subcommands}/usage-commands.js +2 -2
- package/dist/cli-tui/commands/subcommands/usage-commands.js.map +1 -0
- package/dist/cli-tui/commands/{grouped → subcommands}/utils.d.ts +15 -15
- package/dist/cli-tui/commands/subcommands/utils.d.ts.map +1 -0
- package/dist/cli-tui/commands/{grouped → subcommands}/utils.js +13 -8
- package/dist/cli-tui/commands/subcommands/utils.js.map +1 -0
- package/dist/cli-tui/commands/types.d.ts +3 -3
- 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/editor-view.d.ts +1 -1
- package/dist/cli-tui/editor-view.d.ts.map +1 -1
- package/dist/cli-tui/editor-view.js +1 -1
- package/dist/cli-tui/editor-view.js.map +1 -1
- package/dist/cli-tui/oauth/oauth-flow-controller.d.ts +4 -0
- package/dist/cli-tui/oauth/oauth-flow-controller.d.ts.map +1 -1
- package/dist/cli-tui/oauth/oauth-flow-controller.js +76 -5
- package/dist/cli-tui/oauth/oauth-flow-controller.js.map +1 -1
- package/dist/cli-tui/run/run-controller.d.ts +2 -2
- package/dist/cli-tui/run/run-controller.d.ts.map +1 -1
- package/dist/cli-tui/run/run-controller.js +3 -2
- package/dist/cli-tui/run/run-controller.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 +11 -3
- 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 +11 -3
- package/dist/cli-tui/run/streaming-shell-command.js.map +1 -1
- package/dist/cli-tui/selectors/model-selector.d.ts.map +1 -1
- package/dist/cli-tui/selectors/model-selector.js +1 -0
- package/dist/cli-tui/selectors/model-selector.js.map +1 -1
- package/dist/cli-tui/tui-renderer/agent-event-bridge.d.ts +8 -0
- package/dist/cli-tui/tui-renderer/agent-event-bridge.d.ts.map +1 -1
- package/dist/cli-tui/tui-renderer/agent-event-bridge.js +23 -2
- package/dist/cli-tui/tui-renderer/agent-event-bridge.js.map +1 -1
- package/dist/cli-tui/tui-renderer/command-registry-options.d.ts +3 -3
- package/dist/cli-tui/tui-renderer/command-registry-options.d.ts.map +1 -1
- package/dist/cli-tui/tui-renderer/command-registry-options.js +12 -2
- package/dist/cli-tui/tui-renderer/command-registry-options.js.map +1 -1
- package/dist/cli-tui/tui-renderer/command-suite-wiring.d.ts +32 -0
- package/dist/cli-tui/tui-renderer/command-suite-wiring.d.ts.map +1 -0
- package/dist/cli-tui/tui-renderer/command-suite-wiring.js +108 -0
- package/dist/cli-tui/tui-renderer/command-suite-wiring.js.map +1 -0
- package/dist/cli-tui/tui-renderer/input-controller.d.ts +2 -2
- package/dist/cli-tui/tui-renderer/input-controller.d.ts.map +1 -1
- package/dist/cli-tui/tui-renderer/input-controller.js +2 -2
- package/dist/cli-tui/tui-renderer/input-controller.js.map +1 -1
- package/dist/cli-tui/tui-renderer/ui-state-controller.d.ts +1 -1
- package/dist/cli-tui/tui-renderer/ui-state-controller.js +1 -1
- package/dist/cli-tui/tui-renderer/ui-state-controller.js.map +1 -1
- package/dist/cli-tui/tui-renderer.d.ts +1 -3
- package/dist/cli-tui/tui-renderer.d.ts.map +1 -1
- package/dist/cli-tui/tui-renderer.js +37 -83
- package/dist/cli-tui/tui-renderer.js.map +1 -1
- package/dist/cli-tui/utils/runtime-badges.d.ts +8 -0
- package/dist/cli-tui/utils/runtime-badges.d.ts.map +1 -1
- package/dist/cli-tui/utils/runtime-badges.js +58 -0
- package/dist/cli-tui/utils/runtime-badges.js.map +1 -1
- package/dist/cli.js +41771 -22892
- package/dist/cli.js.map +1 -1
- package/dist/config/env-vars.d.ts +4 -0
- package/dist/config/env-vars.d.ts.map +1 -1
- package/dist/config/env-vars.js +4 -0
- package/dist/config/env-vars.js.map +1 -1
- package/dist/config/feature-flags.d.ts +44 -0
- package/dist/config/feature-flags.d.ts.map +1 -1
- package/dist/config/feature-flags.js +214 -0
- package/dist/config/feature-flags.js.map +1 -1
- package/dist/connectors/service-client.d.ts +98 -0
- package/dist/connectors/service-client.d.ts.map +1 -0
- package/dist/connectors/service-client.js +459 -0
- package/dist/connectors/service-client.js.map +1 -0
- package/dist/conversation/render-model.d.ts.map +1 -1
- package/dist/conversation/render-model.js +53 -3
- package/dist/conversation/render-model.js.map +1 -1
- package/dist/db/health.d.ts +8 -0
- package/dist/db/health.d.ts.map +1 -0
- package/dist/db/health.js +64 -0
- package/dist/db/health.js.map +1 -0
- package/dist/db/migrate.d.ts +301 -0
- package/dist/db/migrate.d.ts.map +1 -1
- package/dist/db/migrate.js +186 -0
- package/dist/db/migrate.js.map +1 -1
- package/dist/db/migrations/0000_initial.sql +308 -0
- package/dist/db/migrations/0001_shared_sessions.sql +18 -0
- package/dist/db/migrations/0002_usage_metrics.sql +28 -0
- package/dist/db/migrations/0003_execution_traces.sql +18 -0
- package/dist/db/migrations/0004_workspace_config.sql +11 -0
- package/dist/db/migrations/0005_revenue_attribution.sql +31 -0
- package/dist/db/migrations/0006_hosted_session_storage.sql +51 -0
- package/dist/db/migrations/0007_reconcile_legacy_audit_hash_cache.sql +24 -0
- package/dist/db/migrations/0008_reconcile_legacy_webhook_deliveries.sql +290 -0
- package/dist/db/migrations/meta/0000_snapshot.json +2438 -0
- package/dist/db/migrations/meta/_journal.json +69 -0
- package/dist/db/schema.d.ts +2232 -844
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +187 -1
- package/dist/db/schema.js.map +1 -1
- package/dist/export-html.d.ts.map +1 -1
- package/dist/export-html.js +7 -4
- package/dist/export-html.js.map +1 -1
- package/dist/headless/utility-command-manager.d.ts +2 -1
- package/dist/headless/utility-command-manager.d.ts.map +1 -1
- package/dist/headless/utility-command-manager.js +12 -6
- package/dist/headless/utility-command-manager.js.map +1 -1
- package/dist/headless/utility-file-read.d.ts +1 -0
- package/dist/headless/utility-file-read.d.ts.map +1 -1
- package/dist/headless/utility-file-read.js +5 -1
- package/dist/headless/utility-file-read.js.map +1 -1
- package/dist/headless/utility-file-search.d.ts +1 -0
- package/dist/headless/utility-file-search.d.ts.map +1 -1
- package/dist/headless/utility-file-search.js +4 -1
- package/dist/headless/utility-file-search.js.map +1 -1
- package/dist/headless/utility-file-watch-manager.d.ts +2 -1
- package/dist/headless/utility-file-watch-manager.d.ts.map +1 -1
- package/dist/headless/utility-file-watch-manager.js +6 -2
- package/dist/headless/utility-file-watch-manager.js.map +1 -1
- package/dist/headless/workspace-root.d.ts +8 -0
- package/dist/headless/workspace-root.d.ts.map +1 -0
- package/dist/headless/workspace-root.js +74 -0
- package/dist/headless/workspace-root.js.map +1 -0
- package/dist/hooks/notification-hooks.d.ts +5 -0
- package/dist/hooks/notification-hooks.d.ts.map +1 -1
- package/dist/hooks/notification-hooks.js +4 -0
- package/dist/hooks/notification-hooks.js.map +1 -1
- package/dist/lsp/diagnostic-deltas.d.ts +20 -0
- package/dist/lsp/diagnostic-deltas.d.ts.map +1 -0
- package/dist/lsp/diagnostic-deltas.js +92 -0
- package/dist/lsp/diagnostic-deltas.js.map +1 -0
- package/dist/lsp/diagnostic-repair.d.ts +48 -0
- package/dist/lsp/diagnostic-repair.d.ts.map +1 -0
- package/dist/lsp/diagnostic-repair.js +143 -0
- package/dist/lsp/diagnostic-repair.js.map +1 -0
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +122 -37
- package/dist/main.js.map +1 -1
- package/dist/mcp/config.d.ts +4 -2
- package/dist/mcp/config.d.ts.map +1 -1
- package/dist/mcp/config.js +58 -14
- package/dist/mcp/config.js.map +1 -1
- package/dist/mcp/index.d.ts +1 -0
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +1 -0
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/manager.d.ts +1 -0
- package/dist/mcp/manager.d.ts.map +1 -1
- package/dist/mcp/manager.js +1 -0
- package/dist/mcp/manager.js.map +1 -1
- package/dist/mcp/platform-plugin.d.ts +3 -0
- package/dist/mcp/platform-plugin.d.ts.map +1 -0
- package/dist/mcp/platform-plugin.js +83 -0
- package/dist/mcp/platform-plugin.js.map +1 -0
- package/dist/mcp/tool-bridge.d.ts +15 -0
- package/dist/mcp/tool-bridge.d.ts.map +1 -1
- package/dist/mcp/tool-bridge.js +194 -6
- package/dist/mcp/tool-bridge.js.map +1 -1
- package/dist/memory/platform-memory-client.d.ts +130 -0
- package/dist/memory/platform-memory-client.d.ts.map +1 -0
- package/dist/memory/platform-memory-client.js +330 -0
- package/dist/memory/platform-memory-client.js.map +1 -0
- package/dist/memory/service-client.d.ts.map +1 -1
- package/dist/memory/service-client.js +1 -2
- package/dist/memory/service-client.js.map +1 -1
- package/dist/models/builtin.d.ts.map +1 -1
- package/dist/models/builtin.js +137 -0
- 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 +1 -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/connectors.d.ts +25 -0
- package/dist/oauth/connectors.d.ts.map +1 -0
- package/dist/oauth/connectors.js +253 -0
- package/dist/oauth/connectors.js.map +1 -0
- package/dist/oauth/device-identity.d.ts +18 -0
- package/dist/oauth/device-identity.d.ts.map +1 -0
- package/dist/oauth/device-identity.js +193 -0
- package/dist/oauth/device-identity.js.map +1 -0
- package/dist/oauth/evalops.d.ts.map +1 -1
- package/dist/oauth/evalops.js +73 -14
- package/dist/oauth/evalops.js.map +1 -1
- package/dist/oauth/index.d.ts +1 -1
- package/dist/oauth/index.d.ts.map +1 -1
- package/dist/oauth/index.js +31 -1
- package/dist/oauth/index.js.map +1 -1
- package/dist/oauth/openai-codex.d.ts +16 -0
- package/dist/oauth/openai-codex.d.ts.map +1 -0
- package/dist/oauth/openai-codex.js +300 -0
- package/dist/oauth/openai-codex.js.map +1 -0
- package/dist/opentelemetry.d.ts.map +1 -1
- package/dist/opentelemetry.js +9 -2
- package/dist/opentelemetry.js.map +1 -1
- package/dist/platform/agent-runtime-client.d.ts +279 -0
- package/dist/platform/agent-runtime-client.d.ts.map +1 -0
- package/dist/platform/agent-runtime-client.js +515 -0
- package/dist/platform/agent-runtime-client.js.map +1 -0
- package/dist/platform/cerebro-facts-client.d.ts +56 -0
- package/dist/platform/cerebro-facts-client.d.ts.map +1 -0
- package/dist/platform/cerebro-facts-client.js +297 -0
- package/dist/platform/cerebro-facts-client.js.map +1 -0
- package/dist/platform/client.d.ts +2 -1
- package/dist/platform/client.d.ts.map +1 -1
- package/dist/platform/client.js +9 -26
- package/dist/platform/client.js.map +1 -1
- package/dist/platform/core-services.d.ts +128 -0
- package/dist/platform/core-services.d.ts.map +1 -1
- package/dist/platform/core-services.js +128 -0
- package/dist/platform/core-services.js.map +1 -1
- package/dist/platform/maestro-timeline-client.d.ts +22 -0
- package/dist/platform/maestro-timeline-client.d.ts.map +1 -0
- package/dist/platform/maestro-timeline-client.js +373 -0
- package/dist/platform/maestro-timeline-client.js.map +1 -0
- package/dist/platform/tool-execution-client.d.ts +104 -0
- package/dist/platform/tool-execution-client.d.ts.map +1 -0
- package/dist/platform/tool-execution-client.js +284 -0
- package/dist/platform/tool-execution-client.js.map +1 -0
- package/dist/prompts/service-client.d.ts.map +1 -1
- package/dist/prompts/service-client.js +5 -2
- package/dist/prompts/service-client.js.map +1 -1
- package/dist/providers/anthropic-auth.d.ts.map +1 -1
- package/dist/providers/anthropic-auth.js +8 -6
- package/dist/providers/anthropic-auth.js.map +1 -1
- package/dist/providers/api-keys.d.ts +1 -0
- package/dist/providers/api-keys.d.ts.map +1 -1
- package/dist/providers/api-keys.js +5 -0
- package/dist/providers/api-keys.js.map +1 -1
- package/dist/providers/auth.d.ts +2 -1
- package/dist/providers/auth.d.ts.map +1 -1
- package/dist/providers/auth.js +26 -3
- package/dist/providers/auth.js.map +1 -1
- package/dist/remote-runner/attach-client.d.ts +41 -0
- package/dist/remote-runner/attach-client.d.ts.map +1 -0
- package/dist/remote-runner/attach-client.js +692 -0
- package/dist/remote-runner/attach-client.js.map +1 -0
- package/dist/remote-runner/client.d.ts +205 -0
- package/dist/remote-runner/client.d.ts.map +1 -0
- package/dist/remote-runner/client.js +633 -0
- package/dist/remote-runner/client.js.map +1 -0
- package/dist/safety/action-firewall.d.ts +6 -1
- package/dist/safety/action-firewall.d.ts.map +1 -1
- package/dist/safety/action-firewall.js +62 -26
- package/dist/safety/action-firewall.js.map +1 -1
- package/dist/safety/governance-service-client.d.ts +36 -0
- package/dist/safety/governance-service-client.d.ts.map +1 -0
- package/dist/safety/governance-service-client.js +279 -0
- package/dist/safety/governance-service-client.js.map +1 -0
- package/dist/safety/policy.d.ts +13 -2
- package/dist/safety/policy.d.ts.map +1 -1
- package/dist/safety/policy.js +474 -52
- package/dist/safety/policy.js.map +1 -1
- package/dist/sdk-tools.d.ts +21 -0
- package/dist/sdk-tools.d.ts.map +1 -1
- package/dist/sdk-tools.js +16 -0
- package/dist/sdk-tools.js.map +1 -1
- package/dist/server/app-context.d.ts +25 -0
- package/dist/server/app-context.d.ts.map +1 -1
- package/dist/server/app-context.js.map +1 -1
- package/dist/server/approval-service.d.ts +7 -8
- package/dist/server/approval-service.d.ts.map +1 -1
- package/dist/server/approval-service.js +12 -24
- package/dist/server/approval-service.js.map +1 -1
- package/dist/server/authz.d.ts +23 -2
- package/dist/server/authz.d.ts.map +1 -1
- package/dist/server/authz.js +153 -17
- package/dist/server/authz.js.map +1 -1
- package/dist/server/handlers/approvals.d.ts.map +1 -1
- package/dist/server/handlers/approvals.js +3 -10
- package/dist/server/handlers/approvals.js.map +1 -1
- package/dist/server/handlers/branch.d.ts.map +1 -1
- package/dist/server/handlers/branch.js +29 -20
- package/dist/server/handlers/branch.js.map +1 -1
- package/dist/server/handlers/bridge.d.ts.map +1 -1
- package/dist/server/handlers/bridge.js +3 -2
- package/dist/server/handlers/bridge.js.map +1 -1
- package/dist/server/handlers/chat-ws.d.ts.map +1 -1
- package/dist/server/handlers/chat-ws.js +23 -31
- package/dist/server/handlers/chat-ws.js.map +1 -1
- package/dist/server/handlers/chat.d.ts.map +1 -1
- package/dist/server/handlers/chat.js +105 -46
- package/dist/server/handlers/chat.js.map +1 -1
- package/dist/server/handlers/compliance.d.ts +3 -0
- package/dist/server/handlers/compliance.d.ts.map +1 -0
- package/dist/server/handlers/compliance.js +53 -0
- package/dist/server/handlers/compliance.js.map +1 -0
- package/dist/server/handlers/context.d.ts.map +1 -1
- package/dist/server/handlers/context.js +3 -8
- package/dist/server/handlers/context.js.map +1 -1
- package/dist/server/handlers/fleet.d.ts +4 -0
- package/dist/server/handlers/fleet.d.ts.map +1 -0
- package/dist/server/handlers/fleet.js +9 -0
- package/dist/server/handlers/fleet.js.map +1 -0
- package/dist/server/handlers/headless-sessions.d.ts +4 -0
- package/dist/server/handlers/headless-sessions.d.ts.map +1 -1
- package/dist/server/handlers/headless-sessions.js +168 -3
- package/dist/server/handlers/headless-sessions.js.map +1 -1
- package/dist/server/handlers/health.d.ts +31 -2
- package/dist/server/handlers/health.d.ts.map +1 -1
- package/dist/server/handlers/health.js +82 -8
- package/dist/server/handlers/health.js.map +1 -1
- package/dist/server/handlers/hosted-runner-drain.d.ts +128 -0
- package/dist/server/handlers/hosted-runner-drain.d.ts.map +1 -0
- package/dist/server/handlers/hosted-runner-drain.js +373 -0
- package/dist/server/handlers/hosted-runner-drain.js.map +1 -0
- package/dist/server/handlers/hosted-runner-identity.d.ts +17 -0
- package/dist/server/handlers/hosted-runner-identity.d.ts.map +1 -0
- package/dist/server/handlers/hosted-runner-identity.js +39 -0
- package/dist/server/handlers/hosted-runner-identity.js.map +1 -0
- package/dist/server/handlers/intelligent-router.d.ts +3 -0
- package/dist/server/handlers/intelligent-router.d.ts.map +1 -0
- package/dist/server/handlers/intelligent-router.js +141 -0
- package/dist/server/handlers/intelligent-router.js.map +1 -0
- package/dist/server/handlers/models.d.ts.map +1 -1
- package/dist/server/handlers/models.js +14 -0
- package/dist/server/handlers/models.js.map +1 -1
- package/dist/server/handlers/pending-requests.d.ts +8 -0
- package/dist/server/handlers/pending-requests.d.ts.map +1 -0
- package/dist/server/handlers/pending-requests.js +149 -0
- package/dist/server/handlers/pending-requests.js.map +1 -0
- package/dist/server/handlers/revenue-attribution.d.ts +3 -0
- package/dist/server/handlers/revenue-attribution.d.ts.map +1 -0
- package/dist/server/handlers/revenue-attribution.js +45 -0
- package/dist/server/handlers/revenue-attribution.js.map +1 -0
- package/dist/server/handlers/runtime-app-server-ws.d.ts +10 -0
- package/dist/server/handlers/runtime-app-server-ws.d.ts.map +1 -0
- package/dist/server/handlers/runtime-app-server-ws.js +206 -0
- package/dist/server/handlers/runtime-app-server-ws.js.map +1 -0
- package/dist/server/handlers/session-artifacts.js +2 -2
- package/dist/server/handlers/session-artifacts.js.map +1 -1
- package/dist/server/handlers/session-attachments.js +3 -3
- package/dist/server/handlers/session-attachments.js.map +1 -1
- package/dist/server/handlers/session-timeline.d.ts +11 -0
- package/dist/server/handlers/session-timeline.d.ts.map +1 -0
- package/dist/server/handlers/session-timeline.js +77 -0
- package/dist/server/handlers/session-timeline.js.map +1 -0
- package/dist/server/handlers/sessions.d.ts +11 -0
- package/dist/server/handlers/sessions.d.ts.map +1 -1
- package/dist/server/handlers/sessions.js +68 -100
- package/dist/server/handlers/sessions.js.map +1 -1
- package/dist/server/handlers/traces.d.ts +3 -0
- package/dist/server/handlers/traces.d.ts.map +1 -0
- package/dist/server/handlers/traces.js +60 -0
- package/dist/server/handlers/traces.js.map +1 -0
- package/dist/server/handlers/usage-analytics.d.ts +3 -0
- package/dist/server/handlers/usage-analytics.d.ts.map +1 -0
- package/dist/server/handlers/usage-analytics.js +40 -0
- package/dist/server/handlers/usage-analytics.js.map +1 -0
- package/dist/server/handlers/workspace-config.d.ts +3 -0
- package/dist/server/handlers/workspace-config.d.ts.map +1 -0
- package/dist/server/handlers/workspace-config.js +62 -0
- package/dist/server/handlers/workspace-config.js.map +1 -0
- package/dist/server/headless-in-process-host.d.ts +8 -1
- package/dist/server/headless-in-process-host.d.ts.map +1 -1
- package/dist/server/headless-in-process-host.js +6 -0
- package/dist/server/headless-in-process-host.js.map +1 -1
- package/dist/server/headless-runtime-service.d.ts +99 -1
- package/dist/server/headless-runtime-service.d.ts.map +1 -1
- package/dist/server/headless-runtime-service.js +286 -23
- package/dist/server/headless-runtime-service.js.map +1 -1
- package/dist/server/hosted-session-manager.d.ts +103 -0
- package/dist/server/hosted-session-manager.d.ts.map +1 -0
- package/dist/server/hosted-session-manager.js +629 -0
- package/dist/server/hosted-session-manager.js.map +1 -0
- package/dist/server/pending-request-payload.d.ts +4 -0
- package/dist/server/pending-request-payload.d.ts.map +1 -0
- package/dist/server/pending-request-payload.js +107 -0
- package/dist/server/pending-request-payload.js.map +1 -0
- package/dist/server/request-context.d.ts +4 -0
- package/dist/server/request-context.d.ts.map +1 -1
- package/dist/server/request-context.js +9 -0
- package/dist/server/request-context.js.map +1 -1
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +149 -1
- package/dist/server/routes.js.map +1 -1
- package/dist/server/runtime-ws-access.d.ts +16 -0
- package/dist/server/runtime-ws-access.d.ts.map +1 -0
- package/dist/server/runtime-ws-access.js +21 -0
- package/dist/server/runtime-ws-access.js.map +1 -0
- package/dist/server/server-middlewares.d.ts +1 -1
- package/dist/server/server-middlewares.d.ts.map +1 -1
- package/dist/server/server-middlewares.js +35 -27
- package/dist/server/server-middlewares.js.map +1 -1
- package/dist/server/server-request-manager.d.ts +8 -27
- package/dist/server/server-request-manager.d.ts.map +1 -1
- package/dist/server/server-request-manager.js +7 -0
- package/dist/server/server-request-manager.js.map +1 -1
- package/dist/server/server-utils.d.ts +2 -1
- package/dist/server/server-utils.d.ts.map +1 -1
- package/dist/server/server-utils.js +11 -1
- package/dist/server/server-utils.js.map +1 -1
- package/dist/server/session-event-env.d.ts +2 -0
- package/dist/server/session-event-env.d.ts.map +1 -0
- package/dist/server/session-event-env.js +8 -0
- package/dist/server/session-event-env.js.map +1 -0
- package/dist/server/session-initialization.d.ts +25 -4
- package/dist/server/session-initialization.d.ts.map +1 -1
- package/dist/server/session-initialization.js +22 -5
- package/dist/server/session-initialization.js.map +1 -1
- package/dist/server/session-scope.d.ts +4 -0
- package/dist/server/session-scope.d.ts.map +1 -1
- package/dist/server/session-scope.js +44 -4
- package/dist/server/session-scope.js.map +1 -1
- package/dist/server/session-timeline.d.ts +13 -0
- package/dist/server/session-timeline.d.ts.map +1 -0
- package/dist/server/session-timeline.js +566 -0
- package/dist/server/session-timeline.js.map +1 -0
- package/dist/services/compliance/controls.d.ts +6 -0
- package/dist/services/compliance/controls.d.ts.map +1 -0
- package/dist/services/compliance/controls.js +113 -0
- package/dist/services/compliance/controls.js.map +1 -0
- package/dist/services/compliance/index.d.ts +6 -0
- package/dist/services/compliance/index.d.ts.map +1 -0
- package/dist/services/compliance/index.js +5 -0
- package/dist/services/compliance/index.js.map +1 -0
- package/dist/services/compliance/normalize.d.ts +23 -0
- package/dist/services/compliance/normalize.d.ts.map +1 -0
- package/dist/services/compliance/normalize.js +226 -0
- package/dist/services/compliance/normalize.js.map +1 -0
- package/dist/services/compliance/recorder.d.ts +22 -0
- package/dist/services/compliance/recorder.d.ts.map +1 -0
- package/dist/services/compliance/recorder.js +89 -0
- package/dist/services/compliance/recorder.js.map +1 -0
- package/dist/services/compliance/service.d.ts +24 -0
- package/dist/services/compliance/service.d.ts.map +1 -0
- package/dist/services/compliance/service.js +426 -0
- package/dist/services/compliance/service.js.map +1 -0
- package/dist/services/compliance/types.d.ts +185 -0
- package/dist/services/compliance/types.d.ts.map +1 -0
- package/dist/services/compliance/types.js +2 -0
- package/dist/services/compliance/types.js.map +1 -0
- package/dist/services/intelligent-router/index.d.ts +5 -0
- package/dist/services/intelligent-router/index.d.ts.map +1 -0
- package/dist/services/intelligent-router/index.js +5 -0
- package/dist/services/intelligent-router/index.js.map +1 -0
- package/dist/services/intelligent-router/normalize.d.ts +9 -0
- package/dist/services/intelligent-router/normalize.d.ts.map +1 -0
- package/dist/services/intelligent-router/normalize.js +169 -0
- package/dist/services/intelligent-router/normalize.js.map +1 -0
- package/dist/services/intelligent-router/recorder.d.ts +24 -0
- package/dist/services/intelligent-router/recorder.d.ts.map +1 -0
- package/dist/services/intelligent-router/recorder.js +98 -0
- package/dist/services/intelligent-router/recorder.js.map +1 -0
- package/dist/services/intelligent-router/service.d.ts +22 -0
- package/dist/services/intelligent-router/service.d.ts.map +1 -0
- package/dist/services/intelligent-router/service.js +328 -0
- package/dist/services/intelligent-router/service.js.map +1 -0
- package/dist/services/intelligent-router/types.d.ts +98 -0
- package/dist/services/intelligent-router/types.d.ts.map +1 -0
- package/dist/services/intelligent-router/types.js +7 -0
- package/dist/services/intelligent-router/types.js.map +1 -0
- package/dist/services/revenue-attribution/index.d.ts +4 -0
- package/dist/services/revenue-attribution/index.d.ts.map +1 -0
- package/dist/services/revenue-attribution/index.js +4 -0
- package/dist/services/revenue-attribution/index.js.map +1 -0
- package/dist/services/revenue-attribution/normalize.d.ts +13 -0
- package/dist/services/revenue-attribution/normalize.d.ts.map +1 -0
- package/dist/services/revenue-attribution/normalize.js +155 -0
- package/dist/services/revenue-attribution/normalize.js.map +1 -0
- package/dist/services/revenue-attribution/service.d.ts +21 -0
- package/dist/services/revenue-attribution/service.d.ts.map +1 -0
- package/dist/services/revenue-attribution/service.js +248 -0
- package/dist/services/revenue-attribution/service.js.map +1 -0
- package/dist/services/revenue-attribution/types.d.ts +96 -0
- package/dist/services/revenue-attribution/types.d.ts.map +1 -0
- package/dist/services/revenue-attribution/types.js +7 -0
- package/dist/services/revenue-attribution/types.js.map +1 -0
- package/dist/services/traces/index.d.ts +5 -0
- package/dist/services/traces/index.d.ts.map +1 -0
- package/dist/services/traces/index.js +4 -0
- package/dist/services/traces/index.js.map +1 -0
- package/dist/services/traces/normalize.d.ts +20 -0
- package/dist/services/traces/normalize.d.ts.map +1 -0
- package/dist/services/traces/normalize.js +261 -0
- package/dist/services/traces/normalize.js.map +1 -0
- package/dist/services/traces/otel.d.ts +3 -0
- package/dist/services/traces/otel.d.ts.map +1 -0
- package/dist/services/traces/otel.js +173 -0
- package/dist/services/traces/otel.js.map +1 -0
- package/dist/services/traces/service.d.ts +17 -0
- package/dist/services/traces/service.d.ts.map +1 -0
- package/dist/services/traces/service.js +197 -0
- package/dist/services/traces/service.js.map +1 -0
- package/dist/services/traces/types.d.ts +130 -0
- package/dist/services/traces/types.d.ts.map +1 -0
- package/dist/services/traces/types.js +8 -0
- package/dist/services/traces/types.js.map +1 -0
- package/dist/services/usage-analytics/aggregation.d.ts +18 -0
- package/dist/services/usage-analytics/aggregation.d.ts.map +1 -0
- package/dist/services/usage-analytics/aggregation.js +130 -0
- package/dist/services/usage-analytics/aggregation.js.map +1 -0
- package/dist/services/usage-analytics/index.d.ts +5 -0
- package/dist/services/usage-analytics/index.d.ts.map +1 -0
- package/dist/services/usage-analytics/index.js +4 -0
- package/dist/services/usage-analytics/index.js.map +1 -0
- package/dist/services/usage-analytics/recorder.d.ts +16 -0
- package/dist/services/usage-analytics/recorder.d.ts.map +1 -0
- package/dist/services/usage-analytics/recorder.js +128 -0
- package/dist/services/usage-analytics/recorder.js.map +1 -0
- package/dist/services/usage-analytics/service.d.ts +15 -0
- package/dist/services/usage-analytics/service.d.ts.map +1 -0
- package/dist/services/usage-analytics/service.js +210 -0
- package/dist/services/usage-analytics/service.js.map +1 -0
- package/dist/services/usage-analytics/types.d.ts +80 -0
- package/dist/services/usage-analytics/types.d.ts.map +1 -0
- package/dist/services/usage-analytics/types.js +2 -0
- package/dist/services/usage-analytics/types.js.map +1 -0
- package/dist/services/workspace-config/index.d.ts +6 -0
- package/dist/services/workspace-config/index.d.ts.map +1 -0
- package/dist/services/workspace-config/index.js +5 -0
- package/dist/services/workspace-config/index.js.map +1 -0
- package/dist/services/workspace-config/middleware.d.ts +5 -0
- package/dist/services/workspace-config/middleware.d.ts.map +1 -0
- package/dist/services/workspace-config/middleware.js +98 -0
- package/dist/services/workspace-config/middleware.js.map +1 -0
- package/dist/services/workspace-config/normalize.d.ts +17 -0
- package/dist/services/workspace-config/normalize.d.ts.map +1 -0
- package/dist/services/workspace-config/normalize.js +148 -0
- package/dist/services/workspace-config/normalize.js.map +1 -0
- package/dist/services/workspace-config/policy.d.ts +16 -0
- package/dist/services/workspace-config/policy.d.ts.map +1 -0
- package/dist/services/workspace-config/policy.js +77 -0
- package/dist/services/workspace-config/policy.js.map +1 -0
- package/dist/services/workspace-config/service.d.ts +20 -0
- package/dist/services/workspace-config/service.d.ts.map +1 -0
- package/dist/services/workspace-config/service.js +162 -0
- package/dist/services/workspace-config/service.js.map +1 -0
- package/dist/services/workspace-config/types.d.ts +71 -0
- package/dist/services/workspace-config/types.d.ts.map +1 -0
- package/dist/services/workspace-config/types.js +2 -0
- package/dist/services/workspace-config/types.js.map +1 -0
- package/dist/session/manager.d.ts.map +1 -1
- package/dist/session/manager.js +10 -0
- package/dist/session/manager.js.map +1 -1
- package/dist/session/migration.d.ts.map +1 -1
- package/dist/session/migration.js +2 -1
- package/dist/session/migration.js.map +1 -1
- package/dist/session/session-memory.d.ts.map +1 -1
- package/dist/session/session-memory.js +7 -1
- package/dist/session/session-memory.js.map +1 -1
- package/dist/session/types.d.ts +1 -2
- package/dist/session/types.d.ts.map +1 -1
- package/dist/session/types.js +1 -22
- package/dist/session/types.js.map +1 -1
- package/dist/session/wire-format.d.ts +7 -0
- package/dist/session/wire-format.d.ts.map +1 -0
- package/dist/session/wire-format.generated.d.ts +95 -0
- package/dist/session/wire-format.generated.d.ts.map +1 -0
- package/dist/session/wire-format.generated.js +111 -0
- package/dist/session/wire-format.generated.js.map +1 -0
- package/dist/session/wire-format.js +145 -0
- package/dist/session/wire-format.js.map +1 -0
- package/dist/shared-memory/client.d.ts.map +1 -1
- package/dist/shared-memory/client.js +22 -22
- package/dist/shared-memory/client.js.map +1 -1
- package/dist/skills/artifact-metadata.d.ts +16 -0
- package/dist/skills/artifact-metadata.d.ts.map +1 -0
- package/dist/skills/artifact-metadata.js +86 -0
- package/dist/skills/artifact-metadata.js.map +1 -0
- package/dist/skills/loader.d.ts +2 -2
- package/dist/skills/loader.d.ts.map +1 -1
- package/dist/skills/loader.js +1 -0
- package/dist/skills/loader.js.map +1 -1
- package/dist/skills/service-client.d.ts +42 -0
- package/dist/skills/service-client.d.ts.map +1 -0
- package/dist/skills/service-client.js +258 -0
- package/dist/skills/service-client.js.map +1 -0
- package/dist/skills/tool.d.ts +3 -0
- package/dist/skills/tool.d.ts.map +1 -1
- package/dist/skills/tool.js +67 -5
- package/dist/skills/tool.js.map +1 -1
- package/dist/telemetry/index.d.ts +4 -0
- package/dist/telemetry/index.d.ts.map +1 -1
- package/dist/telemetry/index.js +5 -0
- package/dist/telemetry/index.js.map +1 -1
- package/dist/telemetry/maestro-event-bus.d.ts +440 -0
- package/dist/telemetry/maestro-event-bus.d.ts.map +1 -0
- package/dist/telemetry/maestro-event-bus.js +784 -0
- package/dist/telemetry/maestro-event-bus.js.map +1 -0
- package/dist/telemetry/maestro-event-catalog.d.ts +48 -0
- package/dist/telemetry/maestro-event-catalog.d.ts.map +1 -0
- package/dist/telemetry/maestro-event-catalog.js +69 -0
- package/dist/telemetry/maestro-event-catalog.js.map +1 -0
- package/dist/telemetry/maestro-platform-replay-fixture.d.ts +24 -0
- package/dist/telemetry/maestro-platform-replay-fixture.d.ts.map +1 -0
- package/dist/telemetry/maestro-platform-replay-fixture.js +400 -0
- package/dist/telemetry/maestro-platform-replay-fixture.js.map +1 -0
- package/dist/telemetry/maestro-publisher-conformance-fixture.d.ts +29 -0
- package/dist/telemetry/maestro-publisher-conformance-fixture.d.ts.map +1 -0
- package/dist/telemetry/maestro-publisher-conformance-fixture.js +240 -0
- package/dist/telemetry/maestro-publisher-conformance-fixture.js.map +1 -0
- package/dist/telemetry/meter-service-client.d.ts +0 -33
- package/dist/telemetry/meter-service-client.d.ts.map +1 -1
- package/dist/telemetry/meter-service-client.js +22 -50
- package/dist/telemetry/meter-service-client.js.map +1 -1
- package/dist/telemetry/turn-tracker.d.ts.map +1 -1
- package/dist/telemetry/turn-tracker.js +5 -5
- package/dist/telemetry/turn-tracker.js.map +1 -1
- package/dist/telemetry/wide-events.d.ts +8 -0
- package/dist/telemetry/wide-events.d.ts.map +1 -1
- package/dist/telemetry/wide-events.js +28 -0
- package/dist/telemetry/wide-events.js.map +1 -1
- package/dist/telemetry.d.ts +1 -1
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +14 -4
- package/dist/telemetry.js.map +1 -1
- package/dist/timeline/redaction.d.ts +5 -0
- package/dist/timeline/redaction.d.ts.map +1 -0
- package/dist/timeline/redaction.js +119 -0
- package/dist/timeline/redaction.js.map +1 -0
- package/dist/tools/ask-user.d.ts +26 -0
- package/dist/tools/ask-user.d.ts.map +1 -1
- package/dist/tools/ask-user.js +33 -1
- package/dist/tools/ask-user.js.map +1 -1
- package/dist/tools/background/task-types.d.ts +1 -1
- package/dist/tools/edit.d.ts +2 -0
- package/dist/tools/edit.d.ts.map +1 -1
- package/dist/tools/edit.js +27 -7
- package/dist/tools/edit.js.map +1 -1
- package/dist/tools/index.d.ts +9 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/pipeline.d.ts.map +1 -1
- package/dist/tools/pipeline.js +16 -7
- package/dist/tools/pipeline.js.map +1 -1
- package/dist/tools/write.d.ts +2 -0
- package/dist/tools/write.d.ts.map +1 -1
- package/dist/tools/write.js +24 -6
- package/dist/tools/write.js.map +1 -1
- package/dist/tracking/cost-tracker.d.ts +15 -12
- package/dist/tracking/cost-tracker.d.ts.map +1 -1
- package/dist/tracking/cost-tracker.js +29 -40
- package/dist/tracking/cost-tracker.js.map +1 -1
- package/dist/utils/checkpoint-profiler.d.ts +29 -0
- package/dist/utils/checkpoint-profiler.d.ts.map +1 -0
- package/dist/utils/checkpoint-profiler.js +118 -0
- package/dist/utils/checkpoint-profiler.js.map +1 -0
- package/dist/utils/downstream-http.d.ts +21 -0
- package/dist/utils/downstream-http.d.ts.map +1 -0
- package/dist/utils/downstream-http.js +151 -0
- package/dist/utils/downstream-http.js.map +1 -0
- package/dist/utils/downstream.d.ts +18 -0
- package/dist/utils/downstream.d.ts.map +1 -0
- package/dist/utils/downstream.js +47 -0
- package/dist/utils/downstream.js.map +1 -0
- package/dist/utils/logger.d.ts +3 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +12 -1
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/oauth-http.d.ts +8 -0
- package/dist/utils/oauth-http.d.ts.map +1 -0
- package/dist/utils/oauth-http.js +41 -0
- package/dist/utils/oauth-http.js.map +1 -0
- package/dist/utils/path-utils.d.ts +2 -0
- package/dist/utils/path-utils.d.ts.map +1 -0
- package/dist/utils/path-utils.js +12 -0
- package/dist/utils/path-utils.js.map +1 -0
- package/dist/utils/path-validation.d.ts +1 -1
- package/dist/utils/path-validation.d.ts.map +1 -1
- package/dist/utils/path-validation.js +3 -3
- package/dist/utils/path-validation.js.map +1 -1
- package/dist/version.json +2 -2
- package/dist/web-server.d.ts +7 -1
- package/dist/web-server.d.ts.map +1 -1
- package/dist/web-server.js +117 -15
- package/dist/web-server.js.map +1 -1
- package/dist/webhooks/delivery.d.ts.map +1 -1
- package/dist/webhooks/delivery.js +9 -12
- package/dist/webhooks/delivery.js.map +1 -1
- package/node_modules/@bufbuild/protobuf/dist/cjs/descriptors.d.ts +12 -5
- package/node_modules/@bufbuild/protobuf/dist/cjs/from-binary.js +7 -7
- package/node_modules/@bufbuild/protobuf/dist/cjs/from-json.d.ts +1 -1
- package/node_modules/@bufbuild/protobuf/dist/cjs/from-json.js +1 -1
- package/node_modules/@bufbuild/protobuf/dist/cjs/reflect/path.d.ts +1 -1
- package/node_modules/@bufbuild/protobuf/dist/cjs/registry.js +24 -1
- package/node_modules/@bufbuild/protobuf/dist/cjs/to-json.d.ts +1 -1
- package/node_modules/@bufbuild/protobuf/dist/cjs/to-json.js +9 -10
- package/node_modules/@bufbuild/protobuf/dist/cjs/types.d.ts +1 -1
- package/node_modules/@bufbuild/protobuf/dist/cjs/wire/binary-encoding.d.ts +9 -7
- package/node_modules/@bufbuild/protobuf/dist/cjs/wire/binary-encoding.js +18 -8
- package/node_modules/@bufbuild/protobuf/dist/cjs/wire/text-encoding.d.ts +4 -2
- package/node_modules/@bufbuild/protobuf/dist/cjs/wire/text-encoding.js +8 -1
- package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/api_pb.d.ts +1 -1
- package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/compiler/plugin_pb.d.ts +2 -2
- package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/descriptor_pb.d.ts +37 -23
- package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/descriptor_pb.js +1 -1
- package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/field_mask_pb.d.ts +32 -36
- package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/go_features_pb.d.ts +65 -0
- package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/go_features_pb.js +38 -2
- package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/timestamp_pb.d.ts +5 -5
- package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/type_pb.d.ts +3 -3
- package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/wrappers.d.ts +10 -0
- package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/wrappers.js +24 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/descriptors.d.ts +12 -5
- package/node_modules/@bufbuild/protobuf/dist/esm/from-binary.js +7 -7
- package/node_modules/@bufbuild/protobuf/dist/esm/from-json.d.ts +1 -1
- package/node_modules/@bufbuild/protobuf/dist/esm/from-json.js +2 -2
- package/node_modules/@bufbuild/protobuf/dist/esm/reflect/path.d.ts +1 -1
- package/node_modules/@bufbuild/protobuf/dist/esm/registry.js +24 -1
- package/node_modules/@bufbuild/protobuf/dist/esm/to-json.d.ts +1 -1
- package/node_modules/@bufbuild/protobuf/dist/esm/to-json.js +10 -11
- package/node_modules/@bufbuild/protobuf/dist/esm/types.d.ts +1 -1
- package/node_modules/@bufbuild/protobuf/dist/esm/wire/binary-encoding.d.ts +9 -7
- package/node_modules/@bufbuild/protobuf/dist/esm/wire/binary-encoding.js +18 -8
- package/node_modules/@bufbuild/protobuf/dist/esm/wire/text-encoding.d.ts +4 -2
- package/node_modules/@bufbuild/protobuf/dist/esm/wire/text-encoding.js +8 -1
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/api_pb.d.ts +1 -1
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/compiler/plugin_pb.d.ts +2 -2
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/descriptor_pb.d.ts +37 -23
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/descriptor_pb.js +1 -1
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/field_mask_pb.d.ts +32 -36
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/go_features_pb.d.ts +65 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/go_features_pb.js +37 -1
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/timestamp_pb.d.ts +5 -5
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/type_pb.d.ts +3 -3
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/wrappers.d.ts +10 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/wrappers.js +23 -0
- package/node_modules/@bufbuild/protobuf/package.json +1 -1
- package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.d.ts +305 -2
- 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 +34 -4
- package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.js.map +1 -1
- package/node_modules/@evalops/contracts/dist/index.d.ts +88 -0
- package/node_modules/@evalops/contracts/dist/index.d.ts.map +1 -1
- package/node_modules/@evalops/contracts/dist/index.js +2 -0
- package/node_modules/@evalops/contracts/dist/index.js.map +1 -1
- package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.d.ts +77 -77
- 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 +1 -1
- 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 +182 -0
- package/node_modules/@evalops/contracts/dist/runtime-app-server.d.ts.map +1 -0
- package/node_modules/@evalops/contracts/dist/runtime-app-server.js +83 -0
- package/node_modules/@evalops/contracts/dist/runtime-app-server.js.map +1 -0
- package/node_modules/@evalops/contracts/dist/runtime-server-request.d.ts +133 -0
- package/node_modules/@evalops/contracts/dist/runtime-server-request.d.ts.map +1 -0
- package/node_modules/@evalops/contracts/dist/runtime-server-request.js +68 -0
- package/node_modules/@evalops/contracts/dist/runtime-server-request.js.map +1 -0
- package/node_modules/@evalops/contracts/dist/schemas.d.ts +178 -0
- package/node_modules/@evalops/contracts/dist/schemas.d.ts.map +1 -1
- package/node_modules/@evalops/contracts/dist/schemas.js +165 -0
- package/node_modules/@evalops/contracts/dist/schemas.js.map +1 -1
- package/node_modules/@evalops/contracts/dist/typebox-utils.d.ts +2 -0
- package/node_modules/@evalops/contracts/dist/typebox-utils.d.ts.map +1 -0
- package/node_modules/@evalops/contracts/dist/typebox-utils.js +5 -0
- package/node_modules/@evalops/contracts/dist/typebox-utils.js.map +1 -0
- package/node_modules/@evalops/contracts/dist/validators.d.ts +4 -1
- package/node_modules/@evalops/contracts/dist/validators.d.ts.map +1 -1
- package/node_modules/@evalops/contracts/dist/validators.js +4 -1
- package/node_modules/@evalops/contracts/dist/validators.js.map +1 -1
- package/node_modules/@evalops/contracts/package.json +1 -1
- package/node_modules/@evalops/tui/package.json +1 -1
- package/node_modules/string-width/index.js +93 -9
- package/node_modules/string-width/package.json +1 -1
- package/package.json +32 -25
- package/dist/cli-tui/commands/grouped/auth-commands.d.ts.map +0 -1
- package/dist/cli-tui/commands/grouped/auth-commands.js.map +0 -1
- package/dist/cli-tui/commands/grouped/config-commands.d.ts.map +0 -1
- package/dist/cli-tui/commands/grouped/config-commands.js.map +0 -1
- package/dist/cli-tui/commands/grouped/diag-commands.d.ts.map +0 -1
- package/dist/cli-tui/commands/grouped/diag-commands.js.map +0 -1
- package/dist/cli-tui/commands/grouped/git-commands.d.ts.map +0 -1
- package/dist/cli-tui/commands/grouped/git-commands.js.map +0 -1
- package/dist/cli-tui/commands/grouped/index.d.ts.map +0 -1
- package/dist/cli-tui/commands/grouped/index.js.map +0 -1
- package/dist/cli-tui/commands/grouped/safety-commands.d.ts.map +0 -1
- package/dist/cli-tui/commands/grouped/safety-commands.js.map +0 -1
- package/dist/cli-tui/commands/grouped/session-commands.d.ts.map +0 -1
- package/dist/cli-tui/commands/grouped/session-commands.js.map +0 -1
- package/dist/cli-tui/commands/grouped/tools-commands.d.ts.map +0 -1
- package/dist/cli-tui/commands/grouped/tools-commands.js.map +0 -1
- package/dist/cli-tui/commands/grouped/ui-commands.d.ts.map +0 -1
- package/dist/cli-tui/commands/grouped/ui-commands.js.map +0 -1
- package/dist/cli-tui/commands/grouped/undo-commands.d.ts.map +0 -1
- package/dist/cli-tui/commands/grouped/undo-commands.js.map +0 -1
- package/dist/cli-tui/commands/grouped/usage-commands.d.ts.map +0 -1
- package/dist/cli-tui/commands/grouped/usage-commands.js.map +0 -1
- package/dist/cli-tui/commands/grouped/utils.d.ts.map +0 -1
- package/dist/cli-tui/commands/grouped/utils.js.map +0 -1
- package/dist/cli-tui/commands/grouped-command-handlers.d.ts.map +0 -1
- package/dist/cli-tui/commands/grouped-command-handlers.js +0 -135
- package/dist/cli-tui/commands/grouped-command-handlers.js.map +0 -1
- package/dist/cli-tui/tui-renderer/grouped-handlers-wiring.d.ts +0 -78
- package/dist/cli-tui/tui-renderer/grouped-handlers-wiring.d.ts.map +0 -1
- package/dist/cli-tui/tui-renderer/grouped-handlers-wiring.js +0 -129
- package/dist/cli-tui/tui-renderer/grouped-handlers-wiring.js.map +0 -1
- package/node_modules/@evalops/memory/dist/client.d.ts +0 -94
- package/node_modules/@evalops/memory/dist/client.js +0 -503
- package/node_modules/@evalops/memory/gen/proto/dist/memory/v1/memory_pb.d.ts +0 -608
- package/node_modules/@evalops/memory/gen/proto/dist/memory/v1/memory_pb.js +0 -187
- package/node_modules/@evalops/memory/package.json +0 -26
- /package/dist/cli-tui/commands/{grouped → subcommands}/usage-commands.d.ts +0 -0
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { canonicalSessionWireContentBlockType, canonicalSessionWireStopReason, getSessionWireContentBlockFieldAliases, isSessionWireCompactionContextEntryType, isSessionWireCompactionExcludedMessageRole, sessionWireFieldAliases, } from "./wire-format.generated.js";
|
|
2
|
+
function renameOwnProperty(value, from, to) {
|
|
3
|
+
if (!Object.prototype.hasOwnProperty.call(value, from) ||
|
|
4
|
+
Object.prototype.hasOwnProperty.call(value, to)) {
|
|
5
|
+
return;
|
|
6
|
+
}
|
|
7
|
+
value[to] = value[from];
|
|
8
|
+
delete value[from];
|
|
9
|
+
}
|
|
10
|
+
function renameOwnProperties(value, aliases) {
|
|
11
|
+
if (!aliases)
|
|
12
|
+
return;
|
|
13
|
+
for (const [from, to] of Object.entries(aliases)) {
|
|
14
|
+
renameOwnProperty(value, from, to);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
function normalizeModelMetadata(value) {
|
|
18
|
+
if (!value || typeof value !== "object")
|
|
19
|
+
return;
|
|
20
|
+
const metadata = value;
|
|
21
|
+
renameOwnProperties(metadata, sessionWireFieldAliases.modelMetadata);
|
|
22
|
+
}
|
|
23
|
+
export function normalizeStopReasonValue(value) {
|
|
24
|
+
if (typeof value !== "string")
|
|
25
|
+
return value;
|
|
26
|
+
return canonicalSessionWireStopReason(value);
|
|
27
|
+
}
|
|
28
|
+
function normalizeMessageContentBlocks(content) {
|
|
29
|
+
if (!Array.isArray(content))
|
|
30
|
+
return;
|
|
31
|
+
for (const block of content) {
|
|
32
|
+
if (!block || typeof block !== "object")
|
|
33
|
+
continue;
|
|
34
|
+
const record = block;
|
|
35
|
+
if (typeof record.type === "string") {
|
|
36
|
+
record.type = canonicalSessionWireContentBlockType(record.type);
|
|
37
|
+
}
|
|
38
|
+
if (typeof record.type !== "string")
|
|
39
|
+
continue;
|
|
40
|
+
renameOwnProperties(record, getSessionWireContentBlockFieldAliases(record.type));
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
function normalizeSessionMessage(message) {
|
|
44
|
+
if (!message || typeof message !== "object")
|
|
45
|
+
return;
|
|
46
|
+
const record = message;
|
|
47
|
+
if (record.role === "assistant") {
|
|
48
|
+
renameOwnProperties(record, sessionWireFieldAliases.assistantMessage);
|
|
49
|
+
record.stopReason = normalizeStopReasonValue(record.stopReason);
|
|
50
|
+
normalizeMessageContentBlocks(record.content);
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
if (record.role === "toolResult") {
|
|
54
|
+
renameOwnProperties(record, sessionWireFieldAliases.toolResultMessage);
|
|
55
|
+
if (typeof record.content === "string") {
|
|
56
|
+
record.content = [{ type: "text", text: record.content }];
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
export function normalizeSessionEntry(entry) {
|
|
61
|
+
if (!entry || typeof entry !== "object" || Array.isArray(entry)) {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
const record = entry;
|
|
65
|
+
if (typeof record.type !== "string") {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
switch (record.type) {
|
|
69
|
+
case "session":
|
|
70
|
+
renameOwnProperties(record, sessionWireFieldAliases.session);
|
|
71
|
+
normalizeModelMetadata(record.modelMetadata);
|
|
72
|
+
break;
|
|
73
|
+
case "session_meta":
|
|
74
|
+
renameOwnProperties(record, sessionWireFieldAliases.sessionMeta);
|
|
75
|
+
break;
|
|
76
|
+
case "attachment_extract":
|
|
77
|
+
renameOwnProperties(record, sessionWireFieldAliases.attachmentExtract);
|
|
78
|
+
break;
|
|
79
|
+
case "message":
|
|
80
|
+
normalizeSessionMessage(record.message);
|
|
81
|
+
break;
|
|
82
|
+
case "thinking_level_change":
|
|
83
|
+
renameOwnProperties(record, sessionWireFieldAliases.thinkingLevelChange);
|
|
84
|
+
break;
|
|
85
|
+
case "model_change":
|
|
86
|
+
renameOwnProperties(record, sessionWireFieldAliases.modelChange);
|
|
87
|
+
normalizeModelMetadata(record.modelMetadata);
|
|
88
|
+
break;
|
|
89
|
+
case "compaction":
|
|
90
|
+
renameOwnProperties(record, sessionWireFieldAliases.compaction);
|
|
91
|
+
break;
|
|
92
|
+
case "branch_summary":
|
|
93
|
+
renameOwnProperties(record, sessionWireFieldAliases.branchSummary);
|
|
94
|
+
break;
|
|
95
|
+
case "custom":
|
|
96
|
+
renameOwnProperties(record, sessionWireFieldAliases.custom);
|
|
97
|
+
break;
|
|
98
|
+
case "custom_message":
|
|
99
|
+
renameOwnProperties(record, sessionWireFieldAliases.customMessage);
|
|
100
|
+
normalizeMessageContentBlocks(record.content);
|
|
101
|
+
break;
|
|
102
|
+
case "label":
|
|
103
|
+
renameOwnProperties(record, sessionWireFieldAliases.label);
|
|
104
|
+
break;
|
|
105
|
+
default:
|
|
106
|
+
break;
|
|
107
|
+
}
|
|
108
|
+
return record;
|
|
109
|
+
}
|
|
110
|
+
export function isSessionWireCompactionContextEntry(entry) {
|
|
111
|
+
if (!entry || typeof entry !== "object" || Array.isArray(entry)) {
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
const record = entry;
|
|
115
|
+
if (record.type === "message") {
|
|
116
|
+
const message = record.message;
|
|
117
|
+
if (message && typeof message === "object" && !Array.isArray(message)) {
|
|
118
|
+
const role = message.role;
|
|
119
|
+
return (typeof role !== "string" ||
|
|
120
|
+
!isSessionWireCompactionExcludedMessageRole(role));
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return (typeof record.type === "string" &&
|
|
124
|
+
isSessionWireCompactionContextEntryType(record.type));
|
|
125
|
+
}
|
|
126
|
+
export function parseSessionEntry(line) {
|
|
127
|
+
const trimmed = line.trim();
|
|
128
|
+
if (!trimmed) {
|
|
129
|
+
throw new Error("Empty session entry");
|
|
130
|
+
}
|
|
131
|
+
const entry = normalizeSessionEntry(JSON.parse(trimmed));
|
|
132
|
+
if (!entry) {
|
|
133
|
+
throw new Error("Invalid session entry");
|
|
134
|
+
}
|
|
135
|
+
return entry;
|
|
136
|
+
}
|
|
137
|
+
export function tryParseSessionEntry(line) {
|
|
138
|
+
try {
|
|
139
|
+
return parseSessionEntry(line);
|
|
140
|
+
}
|
|
141
|
+
catch {
|
|
142
|
+
return null;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=wire-format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wire-format.js","sourceRoot":"","sources":["../../src/session/wire-format.ts"],"names":[],"mappings":"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","sourcesContent":["import type { SessionEntry } from \"./types.js\";\nimport {\n\tcanonicalSessionWireContentBlockType,\n\tcanonicalSessionWireStopReason,\n\tgetSessionWireContentBlockFieldAliases,\n\tisSessionWireCompactionContextEntryType,\n\tisSessionWireCompactionExcludedMessageRole,\n\tsessionWireFieldAliases,\n} from \"./wire-format.generated.js\";\n\ntype AliasMap = Readonly<Record<string, string>>;\n\nfunction renameOwnProperty(\n\tvalue: Record<string, unknown>,\n\tfrom: string,\n\tto: string,\n): void {\n\tif (\n\t\t!Object.prototype.hasOwnProperty.call(value, from) ||\n\t\tObject.prototype.hasOwnProperty.call(value, to)\n\t) {\n\t\treturn;\n\t}\n\tvalue[to] = value[from];\n\tdelete value[from];\n}\n\nfunction renameOwnProperties(\n\tvalue: Record<string, unknown>,\n\taliases: AliasMap | undefined,\n): void {\n\tif (!aliases) return;\n\tfor (const [from, to] of Object.entries(aliases)) {\n\t\trenameOwnProperty(value, from, to);\n\t}\n}\n\nfunction normalizeModelMetadata(value: unknown): void {\n\tif (!value || typeof value !== \"object\") return;\n\tconst metadata = value as Record<string, unknown>;\n\trenameOwnProperties(metadata, sessionWireFieldAliases.modelMetadata);\n}\n\nexport function normalizeStopReasonValue(value: unknown): unknown {\n\tif (typeof value !== \"string\") return value;\n\treturn canonicalSessionWireStopReason(value);\n}\n\nfunction normalizeMessageContentBlocks(content: unknown): void {\n\tif (!Array.isArray(content)) return;\n\tfor (const block of content) {\n\t\tif (!block || typeof block !== \"object\") continue;\n\t\tconst record = block as Record<string, unknown>;\n\t\tif (typeof record.type === \"string\") {\n\t\t\trecord.type = canonicalSessionWireContentBlockType(record.type);\n\t\t}\n\t\tif (typeof record.type !== \"string\") continue;\n\t\trenameOwnProperties(\n\t\t\trecord,\n\t\t\tgetSessionWireContentBlockFieldAliases(record.type),\n\t\t);\n\t}\n}\n\nfunction normalizeSessionMessage(message: unknown): void {\n\tif (!message || typeof message !== \"object\") return;\n\tconst record = message as Record<string, unknown>;\n\tif (record.role === \"assistant\") {\n\t\trenameOwnProperties(record, sessionWireFieldAliases.assistantMessage);\n\t\trecord.stopReason = normalizeStopReasonValue(record.stopReason);\n\t\tnormalizeMessageContentBlocks(record.content);\n\t\treturn;\n\t}\n\tif (record.role === \"toolResult\") {\n\t\trenameOwnProperties(record, sessionWireFieldAliases.toolResultMessage);\n\t\tif (typeof record.content === \"string\") {\n\t\t\trecord.content = [{ type: \"text\", text: record.content }];\n\t\t}\n\t}\n}\n\nexport function normalizeSessionEntry(entry: unknown): SessionEntry | null {\n\tif (!entry || typeof entry !== \"object\" || Array.isArray(entry)) {\n\t\treturn null;\n\t}\n\tconst record = entry as Record<string, unknown>;\n\tif (typeof record.type !== \"string\") {\n\t\treturn null;\n\t}\n\tswitch (record.type) {\n\t\tcase \"session\":\n\t\t\trenameOwnProperties(record, sessionWireFieldAliases.session);\n\t\t\tnormalizeModelMetadata(record.modelMetadata);\n\t\t\tbreak;\n\t\tcase \"session_meta\":\n\t\t\trenameOwnProperties(record, sessionWireFieldAliases.sessionMeta);\n\t\t\tbreak;\n\t\tcase \"attachment_extract\":\n\t\t\trenameOwnProperties(record, sessionWireFieldAliases.attachmentExtract);\n\t\t\tbreak;\n\t\tcase \"message\":\n\t\t\tnormalizeSessionMessage(record.message);\n\t\t\tbreak;\n\t\tcase \"thinking_level_change\":\n\t\t\trenameOwnProperties(record, sessionWireFieldAliases.thinkingLevelChange);\n\t\t\tbreak;\n\t\tcase \"model_change\":\n\t\t\trenameOwnProperties(record, sessionWireFieldAliases.modelChange);\n\t\t\tnormalizeModelMetadata(record.modelMetadata);\n\t\t\tbreak;\n\t\tcase \"compaction\":\n\t\t\trenameOwnProperties(record, sessionWireFieldAliases.compaction);\n\t\t\tbreak;\n\t\tcase \"branch_summary\":\n\t\t\trenameOwnProperties(record, sessionWireFieldAliases.branchSummary);\n\t\t\tbreak;\n\t\tcase \"custom\":\n\t\t\trenameOwnProperties(record, sessionWireFieldAliases.custom);\n\t\t\tbreak;\n\t\tcase \"custom_message\":\n\t\t\trenameOwnProperties(record, sessionWireFieldAliases.customMessage);\n\t\t\tnormalizeMessageContentBlocks(record.content);\n\t\t\tbreak;\n\t\tcase \"label\":\n\t\t\trenameOwnProperties(record, sessionWireFieldAliases.label);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t}\n\treturn record as unknown as SessionEntry;\n}\n\nexport function isSessionWireCompactionContextEntry(entry: unknown): boolean {\n\tif (!entry || typeof entry !== \"object\" || Array.isArray(entry)) {\n\t\treturn false;\n\t}\n\tconst record = entry as Record<string, unknown>;\n\tif (record.type === \"message\") {\n\t\tconst message = record.message;\n\t\tif (message && typeof message === \"object\" && !Array.isArray(message)) {\n\t\t\tconst role = (message as Record<string, unknown>).role;\n\t\t\treturn (\n\t\t\t\ttypeof role !== \"string\" ||\n\t\t\t\t!isSessionWireCompactionExcludedMessageRole(role)\n\t\t\t);\n\t\t}\n\t}\n\treturn (\n\t\ttypeof record.type === \"string\" &&\n\t\tisSessionWireCompactionContextEntryType(record.type)\n\t);\n}\n\nexport function parseSessionEntry(line: string): SessionEntry {\n\tconst trimmed = line.trim();\n\tif (!trimmed) {\n\t\tthrow new Error(\"Empty session entry\");\n\t}\n\tconst entry = normalizeSessionEntry(JSON.parse(trimmed));\n\tif (!entry) {\n\t\tthrow new Error(\"Invalid session entry\");\n\t}\n\treturn entry;\n}\n\nexport function tryParseSessionEntry(line: string): SessionEntry | null {\n\ttry {\n\t\treturn parseSessionEntry(line);\n\t} catch {\n\t\treturn null;\n\t}\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/shared-memory/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/shared-memory/client.ts"],"names":[],"mappings":"AAcA,KAAK,SAAS,GACX,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,EAAE,GACX;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAQhC,KAAK,iBAAiB,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAClC,KAAK,CAAC,EAAE,iBAAiB,CAAC;CAC1B,CAAC;AAy+BF,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAuHxE;AAwCD,wBAAgB,kCAAkC,IAAI,IAAI,CAEzD"}
|
|
@@ -5,6 +5,7 @@ import { join } from "node:path";
|
|
|
5
5
|
import { gzipSync } from "node:zlib";
|
|
6
6
|
import { PATHS } from "../config/constants.js";
|
|
7
7
|
import { scanOutboundSensitiveContent, summarizeOutboundSensitiveFindings, } from "../safety/outbound-secret-preflight.js";
|
|
8
|
+
import { fetchDownstream } from "../utils/downstream-http.js";
|
|
8
9
|
import { createLogger } from "../utils/logger.js";
|
|
9
10
|
import { DEFAULT_CAPABILITIES, SHARED_MEMORY_CONFIG } from "./contract.js";
|
|
10
11
|
const logger = createLogger("shared-memory");
|
|
@@ -36,6 +37,8 @@ const STATE_TRIM_KEYS = [
|
|
|
36
37
|
"body",
|
|
37
38
|
];
|
|
38
39
|
const REQUEST_ID_PREFIX = "maestro";
|
|
40
|
+
const CAPABILITIES_MAX_ATTEMPTS = 2;
|
|
41
|
+
const SYNC_MAX_ATTEMPTS = 1;
|
|
39
42
|
const instanceId = randomUUID();
|
|
40
43
|
const pendingBySession = new Map();
|
|
41
44
|
let eventCounter = 0;
|
|
@@ -192,21 +195,19 @@ function buildHeaders(apiKey, requestId) {
|
|
|
192
195
|
return headers;
|
|
193
196
|
}
|
|
194
197
|
async function safeFetch(url, init) {
|
|
195
|
-
const
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
finally {
|
|
209
|
-
clearTimeout(timeout);
|
|
198
|
+
const response = await fetchDownstream(url, init, {
|
|
199
|
+
serviceName: "shared memory service",
|
|
200
|
+
failureMode: "optional",
|
|
201
|
+
timeoutMs: REQUEST_TIMEOUT_MS,
|
|
202
|
+
maxAttempts: SYNC_MAX_ATTEMPTS,
|
|
203
|
+
});
|
|
204
|
+
if (!response.ok) {
|
|
205
|
+
const message = await response.text().catch(() => "");
|
|
206
|
+
const retryAfterMs = parseRetryAfterMs(response);
|
|
207
|
+
const requestId = response.headers.get("x-request-id") ?? undefined;
|
|
208
|
+
throw new SharedMemoryError(message
|
|
209
|
+
? `Shared memory error: ${response.status} ${message}`
|
|
210
|
+
: `Shared memory error: ${response.status}`, response.status, retryAfterMs ?? undefined, requestId ?? undefined);
|
|
210
211
|
}
|
|
211
212
|
}
|
|
212
213
|
function byteLength(value) {
|
|
@@ -320,13 +321,15 @@ async function getCapabilities(config) {
|
|
|
320
321
|
maxEventIdLength: DEFAULT_EVENT_ID_LENGTH,
|
|
321
322
|
};
|
|
322
323
|
capabilitiesPromise = (async () => {
|
|
323
|
-
const controller = new AbortController();
|
|
324
|
-
const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS);
|
|
325
324
|
try {
|
|
326
|
-
const response = await
|
|
325
|
+
const response = await fetchDownstream(`${config.baseUrl}/capabilities`, {
|
|
327
326
|
method: "GET",
|
|
328
327
|
headers: buildHeaders(config.apiKey, nextRequestId(REQUEST_ID_PREFIX)),
|
|
329
|
-
|
|
328
|
+
}, {
|
|
329
|
+
serviceName: "shared memory service",
|
|
330
|
+
failureMode: "optional",
|
|
331
|
+
timeoutMs: REQUEST_TIMEOUT_MS,
|
|
332
|
+
maxAttempts: CAPABILITIES_MAX_ATTEMPTS,
|
|
330
333
|
});
|
|
331
334
|
if (!response.ok) {
|
|
332
335
|
if (response.status === 404 || response.status === 405) {
|
|
@@ -365,9 +368,6 @@ async function getCapabilities(config) {
|
|
|
365
368
|
catch {
|
|
366
369
|
return fallback;
|
|
367
370
|
}
|
|
368
|
-
finally {
|
|
369
|
-
clearTimeout(timeout);
|
|
370
|
-
}
|
|
371
371
|
})();
|
|
372
372
|
const value = await capabilitiesPromise;
|
|
373
373
|
capabilitiesCache = { value, fetchedAt: Date.now() };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/shared-memory/client.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport { existsSync, readFileSync } from \"node:fs\";\nimport { mkdir, rename, writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { gzipSync } from \"node:zlib\";\nimport { PATHS } from \"../config/constants.js\";\nimport {\n\tscanOutboundSensitiveContent,\n\tsummarizeOutboundSensitiveFindings,\n} from \"../safety/outbound-secret-preflight.js\";\nimport { createLogger } from \"../utils/logger.js\";\nimport { DEFAULT_CAPABILITIES, SHARED_MEMORY_CONFIG } from \"./contract.js\";\n\ntype JsonValue =\n\t| string\n\t| number\n\t| boolean\n\t| null\n\t| JsonValue[]\n\t| { [key: string]: JsonValue };\n\ntype SharedMemoryConfig = {\n\tbaseUrl: string;\n\tapiKey?: string;\n\tsessionIdOverride?: string;\n};\n\ntype SharedMemoryEvent = {\n\ttype: string;\n\tpayload?: JsonValue;\n\ttags?: string[];\n\tid?: string;\n\tactor?: string;\n};\n\ntype SharedMemoryUpdate = {\n\tsessionId: string;\n\tstate?: Record<string, JsonValue>;\n\tevent?: SharedMemoryEvent;\n};\n\ntype PendingSession = {\n\tsessionKey: string;\n\tstate: Record<string, JsonValue> | null;\n\tevents: SharedMemoryEvent[];\n\tflushTimer: ReturnType<typeof setTimeout> | null;\n\tflushInFlight: boolean;\n\tblockedUntil: number | null;\n\tretryDelayMs: number;\n\tupdatedAt: number;\n};\n\ntype Capabilities = {\n\tsupportsSync: boolean;\n\tsupportsGzip: boolean;\n\tmaxBodyBytes: number;\n\tmaxEventsBatch: number;\n\tmaxEventPayloadBytes: number;\n\tmaxEventTypeLength: number;\n\tmaxEventIdLength: number;\n};\n\ntype QueueStatsSnapshot = {\n\ttrimmed_states: number;\n\ttrimmed_events: number;\n\tdropped_states: number;\n\tdropped_events: number;\n\tbatch_splits: number;\n\tgzip_requests: number;\n\tlast_sent_at: string;\n\tsource: \"maestro\";\n\tinstance_id: string;\n};\n\nconst logger = createLogger(\"shared-memory\");\n\n// Configuration constants from shared contract (cast to number to avoid literal type issues)\nconst FLUSH_DELAY_MS: number = SHARED_MEMORY_CONFIG.FLUSH_DELAY_MS;\nconst REQUEST_TIMEOUT_MS: number = SHARED_MEMORY_CONFIG.REQUEST_TIMEOUT_MS;\nconst MAX_PENDING_EVENTS: number = SHARED_MEMORY_CONFIG.MAX_PENDING_EVENTS;\nconst MAX_BACKOFF_MS: number = SHARED_MEMORY_CONFIG.MAX_BACKOFF_MS;\nconst MIN_GZIP_BYTES = 1024;\nconst AUTH_FAILURE_COOLDOWN_MS = 5 * 60 * 1000;\nconst DEFAULT_EVENTS_PER_BATCH: number =\n\tSHARED_MEMORY_CONFIG.DEFAULT_EVENTS_PER_BATCH;\nconst TARGET_MAX_BODY_BYTES: number =\n\tSHARED_MEMORY_CONFIG.TARGET_MAX_BODY_BYTES;\nconst MAX_STRING_LENGTH: number = SHARED_MEMORY_CONFIG.MAX_STRING_LENGTH;\nconst MAX_ARRAY_LENGTH: number = SHARED_MEMORY_CONFIG.MAX_ARRAY_LENGTH;\nconst PERSIST_DEBOUNCE_MS: number = SHARED_MEMORY_CONFIG.PERSIST_DEBOUNCE_MS;\nconst PERSIST_TTL_MS: number = SHARED_MEMORY_CONFIG.PERSIST_TTL_MS;\nconst CAPABILITIES_TTL_MS: number = SHARED_MEMORY_CONFIG.CAPABILITIES_TTL_MS;\n\n// Default capability values from shared contract\nconst DEFAULT_MAX_BODY_BYTES = DEFAULT_CAPABILITIES.maxBodyBytes;\nconst DEFAULT_EVENT_PAYLOAD_BYTES = DEFAULT_CAPABILITIES.maxEventPayloadBytes;\nconst DEFAULT_EVENT_TYPE_LENGTH = DEFAULT_CAPABILITIES.maxEventTypeLength;\nconst DEFAULT_EVENT_ID_LENGTH = DEFAULT_CAPABILITIES.maxEventIdLength;\nconst STATE_TRIM_KEYS = [\n\t\"summary\",\n\t\"content\",\n\t\"preview\",\n\t\"text\",\n\t\"message\",\n\t\"body\",\n];\nconst REQUEST_ID_PREFIX = \"maestro\";\nconst instanceId = randomUUID();\n\nconst pendingBySession = new Map<string, PendingSession>();\nlet eventCounter = 0;\nlet requestCounter = 0;\nlet persistTimer: ReturnType<typeof setTimeout> | null = null;\nlet missingConfigLogged = false;\nlet authFailureSignature: string | null = null;\nlet capabilitiesCache: { value: Capabilities; fetchedAt: number } | null = null;\nlet capabilitiesPromise: Promise<Capabilities> | null = null;\nconst queueStats = {\n\ttrimmedStates: 0,\n\ttrimmedEvents: 0,\n\tdroppedStates: 0,\n\tdroppedEvents: 0,\n\tbatchSplits: 0,\n\tgzipRequests: 0,\n\tlastSentAt: null as string | null,\n};\n\nclass SharedMemoryError extends Error {\n\tstatus?: number;\n\tretryAfterMs?: number;\n\trequestId?: string;\n\n\tconstructor(\n\t\tmessage: string,\n\t\tstatus?: number,\n\t\tretryAfterMs?: number,\n\t\trequestId?: string,\n\t) {\n\t\tsuper(message);\n\t\tthis.name = \"SharedMemoryError\";\n\t\tthis.status = status;\n\t\tthis.retryAfterMs = retryAfterMs;\n\t\tthis.requestId = requestId;\n\t}\n}\n\n// Keep in sync with Conductor's shared-memory retry parsing.\nfunction parseRateLimitResetMs(response: Response): number | null {\n\tconst resetHeader =\n\t\tresponse.headers.get(\"RateLimit-Reset\") ??\n\t\tresponse.headers.get(\"X-RateLimit-Reset\");\n\tif (!resetHeader) return null;\n\tconst resetValue = Number(resetHeader.trim());\n\tif (!Number.isFinite(resetValue)) return null;\n\tlet delayMs: number;\n\tif (resetValue >= 10_000_000_000) {\n\t\tdelayMs = resetValue - Date.now();\n\t} else if (resetValue >= 1_000_000_000) {\n\t\tdelayMs = resetValue * 1000 - Date.now();\n\t} else {\n\t\tdelayMs = resetValue * 1000;\n\t}\n\treturn Math.max(0, delayMs);\n}\n\nfunction parseRetryAfterMs(response: Response): number | null {\n\tconst retryAfter = response.headers.get(\"Retry-After\")?.trim();\n\tif (retryAfter) {\n\t\tconst asNumber = Number(retryAfter);\n\t\tif (Number.isFinite(asNumber)) {\n\t\t\treturn Math.max(0, asNumber * 1000);\n\t\t}\n\t\tconst asDate = Date.parse(retryAfter);\n\t\tif (!Number.isNaN(asDate)) {\n\t\t\treturn Math.max(0, asDate - Date.now());\n\t\t}\n\t}\n\treturn parseRateLimitResetMs(response);\n}\n\nfunction invalidateCapabilitiesCache(\n\toverride?: Partial<Capabilities>,\n): Capabilities {\n\tif (!override) {\n\t\tcapabilitiesCache = null;\n\t\tcapabilitiesPromise = null;\n\t\treturn {\n\t\t\tsupportsSync: true,\n\t\t\tsupportsGzip: true,\n\t\t\tmaxBodyBytes: DEFAULT_MAX_BODY_BYTES,\n\t\t\tmaxEventsBatch: DEFAULT_EVENTS_PER_BATCH,\n\t\t\tmaxEventPayloadBytes: DEFAULT_EVENT_PAYLOAD_BYTES,\n\t\t\tmaxEventTypeLength: DEFAULT_EVENT_TYPE_LENGTH,\n\t\t\tmaxEventIdLength: DEFAULT_EVENT_ID_LENGTH,\n\t\t};\n\t}\n\tconst base = capabilitiesCache?.value ?? {\n\t\tsupportsSync: true,\n\t\tsupportsGzip: true,\n\t\tmaxBodyBytes: DEFAULT_MAX_BODY_BYTES,\n\t\tmaxEventsBatch: DEFAULT_EVENTS_PER_BATCH,\n\t\tmaxEventPayloadBytes: DEFAULT_EVENT_PAYLOAD_BYTES,\n\t\tmaxEventTypeLength: DEFAULT_EVENT_TYPE_LENGTH,\n\t\tmaxEventIdLength: DEFAULT_EVENT_ID_LENGTH,\n\t};\n\tconst value = { ...base, ...override };\n\tcapabilitiesCache = { value, fetchedAt: Date.now() };\n\tcapabilitiesPromise = null;\n\treturn value;\n}\n\nfunction isUnsupportedEncoding(error: SharedMemoryError): boolean {\n\tif (error.status === 415) return true;\n\treturn error.message.toLowerCase().includes(\"unsupported content-encoding\");\n}\n\nfunction authSignature(config: SharedMemoryConfig): string {\n\tconst keyLength = config.apiKey ? config.apiKey.length : 0;\n\treturn `${config.baseUrl}|${config.sessionIdOverride ?? \"\"}|${keyLength}`;\n}\n\nfunction logAuthFailureOnce(\n\tconfig: SharedMemoryConfig,\n\terror: SharedMemoryError,\n): void {\n\tconst signature = authSignature(config);\n\tif (authFailureSignature === signature) return;\n\tauthFailureSignature = signature;\n\tlogger.warn(\"Shared memory auth failed; backing off\", {\n\t\tstatus: error.status,\n\t\trequestId: error.requestId,\n\t});\n}\n\nfunction classifyError(error: unknown): \"retriable\" | \"auth\" | \"drop\" {\n\tif (!(error instanceof SharedMemoryError)) return \"retriable\";\n\tif (error.status === 401 || error.status === 403) return \"auth\";\n\tif (error.status === undefined) return \"retriable\";\n\tif (error.status >= 500 || error.status === 408 || error.status === 429) {\n\t\treturn \"retriable\";\n\t}\n\treturn \"drop\";\n}\n\nfunction normalizeBaseUrl(value: string): string {\n\treturn value.replace(/\\/+$/, \"\");\n}\n\nfunction readConfig(): SharedMemoryConfig | null {\n\tconst base = process.env.MAESTRO_SHARED_MEMORY_BASE?.trim();\n\tif (!base) return null;\n\tconst apiKey = process.env.MAESTRO_SHARED_MEMORY_API_KEY?.trim();\n\tconst override = process.env.MAESTRO_SHARED_MEMORY_SESSION_ID?.trim();\n\treturn {\n\t\tbaseUrl: normalizeBaseUrl(base),\n\t\tapiKey: apiKey || undefined,\n\t\tsessionIdOverride: override || undefined,\n\t};\n}\n\nfunction nextRequestId(prefix: string): string {\n\ttry {\n\t\treturn `${prefix}-${randomUUID()}`;\n\t} catch {\n\t\trequestCounter = (requestCounter + 1) % 1_000_000;\n\t\treturn `${prefix}-${Date.now()}-${requestCounter}`;\n\t}\n}\n\nfunction buildHeaders(apiKey?: string, requestId?: string): Headers {\n\tconst headers = new Headers({\n\t\t\"Content-Type\": \"application/json; charset=utf-8\",\n\t});\n\tif (apiKey) headers.set(\"Authorization\", `Bearer ${apiKey}`);\n\tif (requestId) headers.set(\"X-Request-Id\", requestId);\n\treturn headers;\n}\n\nasync function safeFetch(url: string, init: RequestInit): Promise<void> {\n\tconst controller = new AbortController();\n\tconst timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS);\n\ttry {\n\t\tconst response = await fetch(url, { ...init, signal: controller.signal });\n\t\tif (!response.ok) {\n\t\t\tconst message = await response.text().catch(() => \"\");\n\t\t\tconst retryAfterMs = parseRetryAfterMs(response);\n\t\t\tconst requestId = response.headers.get(\"x-request-id\") ?? undefined;\n\t\t\tthrow new SharedMemoryError(\n\t\t\t\tmessage\n\t\t\t\t\t? `Shared memory error: ${response.status} ${message}`\n\t\t\t\t\t: `Shared memory error: ${response.status}`,\n\t\t\t\tresponse.status,\n\t\t\t\tretryAfterMs ?? undefined,\n\t\t\t\trequestId ?? undefined,\n\t\t\t);\n\t\t}\n\t} finally {\n\t\tclearTimeout(timeout);\n\t}\n}\n\nfunction byteLength(value: string): number {\n\treturn Buffer.byteLength(value);\n}\n\nfunction truncateString(value: string, maxLength: number): string {\n\tif (value.length <= maxLength) return value;\n\treturn `${value.slice(0, Math.max(0, maxLength - 3))}...`;\n}\n\nfunction shrinkValue(value: unknown): unknown {\n\tif (typeof value === \"string\") {\n\t\treturn truncateString(value, MAX_STRING_LENGTH);\n\t}\n\tif (Array.isArray(value)) {\n\t\tif (value.length > MAX_ARRAY_LENGTH) {\n\t\t\treturn value.slice(0, MAX_ARRAY_LENGTH).map(shrinkValue);\n\t\t}\n\t\treturn value.map(shrinkValue);\n\t}\n\tif (value && typeof value === \"object\") {\n\t\tconst record = value as Record<string, unknown>;\n\t\tconst out: Record<string, unknown> = {};\n\t\tfor (const [key, entry] of Object.entries(record)) {\n\t\t\tout[key] = shrinkValue(entry);\n\t\t}\n\t\treturn out;\n\t}\n\treturn value;\n}\n\nfunction dropKeys(value: unknown, keys: string[], maxBytes: number): unknown {\n\tif (!value || typeof value !== \"object\" || Array.isArray(value)) return value;\n\tconst record = { ...(value as Record<string, unknown>) };\n\tfor (const key of keys) {\n\t\tif (key in record) {\n\t\t\tdelete record[key];\n\t\t\tconst size = byteLength(JSON.stringify(record));\n\t\t\tif (size <= maxBytes) {\n\t\t\t\treturn record;\n\t\t\t}\n\t\t}\n\t}\n\treturn record;\n}\n\nfunction fitJsonToBytes(\n\tvalue: unknown,\n\tmaxBytes: number,\n\tdropList: string[],\n): { value: unknown; trimmed: boolean } {\n\tconst shrunk = shrinkValue(value);\n\tlet serialized = JSON.stringify(shrunk);\n\tif (byteLength(serialized) <= maxBytes)\n\t\treturn { value: shrunk, trimmed: false };\n\tconst dropped = dropKeys(shrunk, dropList, maxBytes);\n\tserialized = JSON.stringify(dropped);\n\tif (byteLength(serialized) <= maxBytes)\n\t\treturn { value: dropped, trimmed: true };\n\tif (Array.isArray(dropped)) {\n\t\tlet trimmed = dropped.slice(0, Math.max(1, Math.floor(dropped.length / 2)));\n\t\twhile (\n\t\t\ttrimmed.length > 1 &&\n\t\t\tbyteLength(JSON.stringify(trimmed)) > maxBytes\n\t\t) {\n\t\t\ttrimmed = trimmed.slice(0, Math.max(1, Math.floor(trimmed.length / 2)));\n\t\t}\n\t\treturn { value: trimmed, trimmed: true };\n\t}\n\treturn { value: {}, trimmed: true };\n}\n\nfunction currentEventPayloadLimit(): number {\n\tconst max =\n\t\tcapabilitiesCache?.value?.maxEventPayloadBytes ??\n\t\tDEFAULT_EVENT_PAYLOAD_BYTES;\n\treturn Math.min(max, TARGET_MAX_BODY_BYTES);\n}\n\nfunction normalizeEventType(eventType: string): string | null {\n\tconst trimmed = eventType.trim();\n\tif (!trimmed) return null;\n\tconst max =\n\t\tcapabilitiesCache?.value?.maxEventTypeLength ?? DEFAULT_EVENT_TYPE_LENGTH;\n\tif (trimmed.length > max) return null;\n\treturn trimmed;\n}\n\nfunction clampEventId(prefix: string, suffix: string): string {\n\tconst max =\n\t\tcapabilitiesCache?.value?.maxEventIdLength ?? DEFAULT_EVENT_ID_LENGTH;\n\tif (max <= 0) {\n\t\treturn \"\";\n\t}\n\tif (suffix.length >= max) {\n\t\treturn suffix.slice(0, max);\n\t}\n\tif (prefix.length + suffix.length + 1 <= max) {\n\t\treturn `${prefix}-${suffix}`;\n\t}\n\tconst prefixMax = Math.max(0, max - suffix.length - 1);\n\tconst clippedPrefix = prefix.slice(0, prefixMax);\n\tif (!clippedPrefix) {\n\t\treturn suffix;\n\t}\n\treturn `${clippedPrefix}-${suffix}`;\n}\n\nasync function getCapabilities(\n\tconfig: SharedMemoryConfig,\n): Promise<Capabilities> {\n\tconst cachedAt = capabilitiesCache?.fetchedAt ?? 0;\n\tif (capabilitiesCache && Date.now() - cachedAt < CAPABILITIES_TTL_MS) {\n\t\treturn capabilitiesCache.value;\n\t}\n\tif (capabilitiesPromise) return capabilitiesPromise;\n\tconst fallback: Capabilities = {\n\t\tsupportsSync: true,\n\t\tsupportsGzip: true,\n\t\tmaxBodyBytes: DEFAULT_MAX_BODY_BYTES,\n\t\tmaxEventsBatch: DEFAULT_EVENTS_PER_BATCH,\n\t\tmaxEventPayloadBytes: DEFAULT_EVENT_PAYLOAD_BYTES,\n\t\tmaxEventTypeLength: DEFAULT_EVENT_TYPE_LENGTH,\n\t\tmaxEventIdLength: DEFAULT_EVENT_ID_LENGTH,\n\t};\n\n\tcapabilitiesPromise = (async () => {\n\t\tconst controller = new AbortController();\n\t\tconst timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS);\n\t\ttry {\n\t\t\tconst response = await fetch(`${config.baseUrl}/capabilities`, {\n\t\t\t\tmethod: \"GET\",\n\t\t\t\theaders: buildHeaders(config.apiKey, nextRequestId(REQUEST_ID_PREFIX)),\n\t\t\t\tsignal: controller.signal,\n\t\t\t});\n\t\t\tif (!response.ok) {\n\t\t\t\tif (response.status === 404 || response.status === 405) {\n\t\t\t\t\treturn { ...fallback, supportsSync: false };\n\t\t\t\t}\n\t\t\t\treturn fallback;\n\t\t\t}\n\t\t\tconst data = (await response.json()) as Partial<{\n\t\t\t\tsupports_sync: boolean;\n\t\t\t\tsupports_gzip: boolean;\n\t\t\t\tmax_body_bytes: number;\n\t\t\t\tmax_events_batch: number;\n\t\t\t\tmax_event_payload_bytes: number;\n\t\t\t\tmax_event_type_length: number;\n\t\t\t\tmax_event_id_length: number;\n\t\t\t}>;\n\t\t\tconst supportsSync = data.supports_sync !== false;\n\t\t\tconst supportsGzip = data.supports_gzip !== false;\n\t\t\tconst maxBodyBytes =\n\t\t\t\ttypeof data.max_body_bytes === \"number\"\n\t\t\t\t\t? data.max_body_bytes\n\t\t\t\t\t: DEFAULT_MAX_BODY_BYTES;\n\t\t\tconst maxEventsBatch =\n\t\t\t\ttypeof data.max_events_batch === \"number\"\n\t\t\t\t\t? data.max_events_batch\n\t\t\t\t\t: DEFAULT_EVENTS_PER_BATCH;\n\t\t\tconst maxEventPayloadBytes =\n\t\t\t\ttypeof data.max_event_payload_bytes === \"number\"\n\t\t\t\t\t? data.max_event_payload_bytes\n\t\t\t\t\t: DEFAULT_EVENT_PAYLOAD_BYTES;\n\t\t\tconst maxEventTypeLength =\n\t\t\t\ttypeof data.max_event_type_length === \"number\"\n\t\t\t\t\t? data.max_event_type_length\n\t\t\t\t\t: DEFAULT_EVENT_TYPE_LENGTH;\n\t\t\tconst maxEventIdLength =\n\t\t\t\ttypeof data.max_event_id_length === \"number\"\n\t\t\t\t\t? data.max_event_id_length\n\t\t\t\t\t: DEFAULT_EVENT_ID_LENGTH;\n\t\t\treturn {\n\t\t\t\tsupportsSync,\n\t\t\t\tsupportsGzip,\n\t\t\t\tmaxBodyBytes,\n\t\t\t\tmaxEventsBatch,\n\t\t\t\tmaxEventPayloadBytes,\n\t\t\t\tmaxEventTypeLength,\n\t\t\t\tmaxEventIdLength,\n\t\t\t};\n\t\t} catch {\n\t\t\treturn fallback;\n\t\t} finally {\n\t\t\tclearTimeout(timeout);\n\t\t}\n\t})();\n\n\tconst value = await capabilitiesPromise;\n\tcapabilitiesCache = { value, fetchedAt: Date.now() };\n\tcapabilitiesPromise = null;\n\treturn value;\n}\n\nfunction schedulePersist(): void {\n\tif (persistTimer) return;\n\tpersistTimer = setTimeout(() => {\n\t\tpersistTimer = null;\n\t\tvoid persistQueue();\n\t}, PERSIST_DEBOUNCE_MS);\n}\n\nfunction getQueueFilePath(): string {\n\treturn join(PATHS.MAESTRO_HOME, \"shared-memory-queue.json\");\n}\n\nasync function persistQueue(): Promise<void> {\n\ttry {\n\t\tconst path = getQueueFilePath();\n\t\tif (!pendingBySession.size) {\n\t\t\tif (existsSync(path)) {\n\t\t\t\tawait writeFile(path, \"\");\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tconst sessions: Record<\n\t\t\tstring,\n\t\t\t{\n\t\t\t\tstate: Record<string, JsonValue> | null;\n\t\t\t\tevents: SharedMemoryEvent[];\n\t\t\t\tblockedUntil: number | null;\n\t\t\t\tupdatedAt: number;\n\t\t\t}\n\t\t> = {};\n\t\tfor (const [key, pending] of pendingBySession) {\n\t\t\tsessions[key] = {\n\t\t\t\tstate: pending.state,\n\t\t\t\tevents: pending.events,\n\t\t\t\tblockedUntil: pending.blockedUntil,\n\t\t\t\tupdatedAt: pending.updatedAt,\n\t\t\t};\n\t\t}\n\t\tconst payload = {\n\t\t\tversion: 1,\n\t\t\tupdatedAt: Date.now(),\n\t\t\tsessions,\n\t\t\tstats: queueStats,\n\t\t};\n\t\tawait mkdir(PATHS.MAESTRO_HOME, { recursive: true });\n\t\tconst tmp = `${path}.tmp`;\n\t\tawait writeFile(tmp, JSON.stringify(payload), \"utf8\");\n\t\tawait rename(tmp, path);\n\t} catch {\n\t\t// ignore persistence failures\n\t}\n}\n\nfunction loadPersistedQueue(): void {\n\ttry {\n\t\tconst path = getQueueFilePath();\n\t\tif (!existsSync(path)) return;\n\t\tconst raw = readFileSync(path, \"utf8\").trim();\n\t\tif (!raw) return;\n\t\tconst parsed = JSON.parse(raw) as {\n\t\t\tversion?: number;\n\t\t\tupdatedAt?: number;\n\t\t\tsessions?: Record<\n\t\t\t\tstring,\n\t\t\t\t{\n\t\t\t\t\tstate: Record<string, JsonValue> | null;\n\t\t\t\t\tevents: SharedMemoryEvent[];\n\t\t\t\t\tblockedUntil?: number | null;\n\t\t\t\t\tupdatedAt?: number;\n\t\t\t\t}\n\t\t\t>;\n\t\t\tstats?: Partial<typeof queueStats>;\n\t\t};\n\t\tif (parsed.stats) {\n\t\t\tqueueStats.trimmedStates =\n\t\t\t\tparsed.stats.trimmedStates ?? queueStats.trimmedStates;\n\t\t\tqueueStats.trimmedEvents =\n\t\t\t\tparsed.stats.trimmedEvents ?? queueStats.trimmedEvents;\n\t\t\tqueueStats.droppedStates =\n\t\t\t\tparsed.stats.droppedStates ?? queueStats.droppedStates;\n\t\t\tqueueStats.droppedEvents =\n\t\t\t\tparsed.stats.droppedEvents ?? queueStats.droppedEvents;\n\t\t\tqueueStats.batchSplits =\n\t\t\t\tparsed.stats.batchSplits ?? queueStats.batchSplits;\n\t\t\tqueueStats.gzipRequests =\n\t\t\t\tparsed.stats.gzipRequests ?? queueStats.gzipRequests;\n\t\t\tqueueStats.lastSentAt = parsed.stats.lastSentAt ?? queueStats.lastSentAt;\n\t\t}\n\t\tconst sessions = parsed.sessions ?? {};\n\t\tconst cutoff = Date.now() - PERSIST_TTL_MS;\n\t\tfor (const [sessionKey, entry] of Object.entries(sessions)) {\n\t\t\tconst updatedAt = entry.updatedAt ?? parsed.updatedAt ?? Date.now();\n\t\t\tif (updatedAt < cutoff) continue;\n\t\t\tconst pending = getPendingSession(sessionKey);\n\t\t\tpending.state = entry.state ?? null;\n\t\t\tpending.events = entry.events ?? [];\n\t\t\tconst blockedUntil =\n\t\t\t\ttypeof entry.blockedUntil === \"number\" ? entry.blockedUntil : null;\n\t\t\tpending.blockedUntil =\n\t\t\t\tblockedUntil && blockedUntil > Date.now() ? blockedUntil : null;\n\t\t\tpending.updatedAt = updatedAt;\n\t\t\tscheduleFlush(pending);\n\t\t}\n\t} catch {\n\t\t// ignore malformed cache\n\t}\n}\n\nfunction normalizeEvent(event: SharedMemoryEvent): SharedMemoryEvent {\n\treturn {\n\t\t...event,\n\t\tactor: event.actor ?? \"maestro\",\n\t};\n}\n\nfunction buildStatsSnapshot(): QueueStatsSnapshot {\n\tconst sentAt = new Date().toISOString();\n\tqueueStats.lastSentAt = sentAt;\n\treturn {\n\t\ttrimmed_states: queueStats.trimmedStates,\n\t\ttrimmed_events: queueStats.trimmedEvents,\n\t\tdropped_states: queueStats.droppedStates,\n\t\tdropped_events: queueStats.droppedEvents,\n\t\tbatch_splits: queueStats.batchSplits,\n\t\tgzip_requests: queueStats.gzipRequests,\n\t\tlast_sent_at: sentAt,\n\t\tsource: \"maestro\",\n\t\tinstance_id: instanceId,\n\t};\n}\n\nasync function trySync(\n\tconfig: SharedMemoryConfig,\n\tsessionId: string,\n\tstate: Record<string, JsonValue> | null,\n\tevents: SharedMemoryEvent[],\n\tcapabilities: Capabilities,\n\tstats?: QueueStatsSnapshot,\n): Promise<void> {\n\tconst payload: Record<string, JsonValue> = {};\n\tif (state) {\n\t\tpayload.state = { maestro: state } as JsonValue;\n\t}\n\tif (events.length) {\n\t\tpayload.events = events as JsonValue;\n\t}\n\tif (stats) {\n\t\tpayload.stats = stats as JsonValue;\n\t}\n\tconst requestId = nextRequestId(REQUEST_ID_PREFIX);\n\tconst { body, headers } = prepareRequestBody(\n\t\tpayload,\n\t\tMath.min(capabilities.maxBodyBytes, TARGET_MAX_BODY_BYTES),\n\t\tcapabilities.supportsGzip,\n\t\tconfig.apiKey,\n\t\trequestId,\n\t);\n\tawait safeFetch(\n\t\t`${config.baseUrl}/sessions/${encodeURIComponent(sessionId)}/sync`,\n\t\t{\n\t\t\tmethod: \"PATCH\",\n\t\t\theaders,\n\t\t\tbody,\n\t\t},\n\t);\n}\n\nasync function fallbackSync(\n\tconfig: SharedMemoryConfig,\n\tsessionId: string,\n\tstate: Record<string, JsonValue> | null,\n\tevents: SharedMemoryEvent[],\n\tsupportsGzip: boolean,\n): Promise<void> {\n\tif (state) {\n\t\ttry {\n\t\t\tconst requestId = nextRequestId(REQUEST_ID_PREFIX);\n\t\t\tconst { body, headers } = prepareRequestBody(\n\t\t\t\t{ state: { maestro: state } },\n\t\t\t\tTARGET_MAX_BODY_BYTES,\n\t\t\t\tsupportsGzip,\n\t\t\t\tconfig.apiKey,\n\t\t\t\trequestId,\n\t\t\t);\n\t\t\tawait safeFetch(\n\t\t\t\t`${config.baseUrl}/sessions/${encodeURIComponent(sessionId)}/state`,\n\t\t\t\t{\n\t\t\t\t\tmethod: \"PATCH\",\n\t\t\t\t\theaders,\n\t\t\t\t\tbody,\n\t\t\t\t},\n\t\t\t);\n\t\t} catch (error) {\n\t\t\tif (error instanceof SharedMemoryError && error.status === 413) {\n\t\t\t\tlogger.debug(\"Dropped oversized shared memory state payload\");\n\t\t\t} else {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\t}\n\tfor (const event of events) {\n\t\ttry {\n\t\t\tconst requestId = nextRequestId(REQUEST_ID_PREFIX);\n\t\t\tconst { body, headers } = prepareRequestBody(\n\t\t\t\tevent as Record<string, JsonValue>,\n\t\t\t\tTARGET_MAX_BODY_BYTES,\n\t\t\t\tsupportsGzip,\n\t\t\t\tconfig.apiKey,\n\t\t\t\trequestId,\n\t\t\t);\n\t\t\tawait safeFetch(\n\t\t\t\t`${config.baseUrl}/sessions/${encodeURIComponent(sessionId)}/events`,\n\t\t\t\t{\n\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\theaders,\n\t\t\t\t\tbody,\n\t\t\t\t},\n\t\t\t);\n\t\t} catch (error) {\n\t\t\tif (error instanceof SharedMemoryError && error.status === 413) {\n\t\t\t\tlogger.debug(\"Dropped oversized shared memory event\", {\n\t\t\t\t\ttype: event.type,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\t}\n}\n\nasync function sendSyncBatch(\n\tconfig: SharedMemoryConfig,\n\tsessionId: string,\n\tstate: Record<string, JsonValue> | null,\n\tevents: SharedMemoryEvent[],\n\tcapabilities: Capabilities,\n\tstats?: QueueStatsSnapshot,\n): Promise<void> {\n\tif (!state && events.length === 0) return;\n\ttry {\n\t\tif (capabilities.supportsSync) {\n\t\t\tawait trySync(config, sessionId, state, events, capabilities, stats);\n\t\t\treturn;\n\t\t}\n\t\tawait fallbackSync(\n\t\t\tconfig,\n\t\t\tsessionId,\n\t\t\tstate,\n\t\t\tevents,\n\t\t\tcapabilities.supportsGzip,\n\t\t);\n\t\treturn;\n\t} catch (error) {\n\t\tif (error instanceof SharedMemoryError) {\n\t\t\tif (isUnsupportedEncoding(error) && capabilities.supportsGzip) {\n\t\t\t\tconst updated = invalidateCapabilitiesCache({ supportsGzip: false });\n\t\t\t\tawait sendSyncBatch(config, sessionId, state, events, updated, stats);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (error.status === 404 || error.status === 405) {\n\t\t\t\tinvalidateCapabilitiesCache({ supportsSync: false });\n\t\t\t\tawait fallbackSync(\n\t\t\t\t\tconfig,\n\t\t\t\t\tsessionId,\n\t\t\t\t\tstate,\n\t\t\t\t\tevents,\n\t\t\t\t\tcapabilities.supportsGzip,\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (error.status === 413) {\n\t\t\t\tif (state && events.length > 0) {\n\t\t\t\t\tqueueStats.batchSplits += 1;\n\t\t\t\t\tawait sendSyncBatch(\n\t\t\t\t\t\tconfig,\n\t\t\t\t\t\tsessionId,\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\t[],\n\t\t\t\t\t\tcapabilities,\n\t\t\t\t\t\tstats,\n\t\t\t\t\t);\n\t\t\t\t\tawait sendSyncBatch(config, sessionId, null, events, capabilities);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (events.length > 1) {\n\t\t\t\t\tconst mid = Math.ceil(events.length / 2);\n\t\t\t\t\tqueueStats.batchSplits += 1;\n\t\t\t\t\tawait sendSyncBatch(\n\t\t\t\t\t\tconfig,\n\t\t\t\t\t\tsessionId,\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\tevents.slice(0, mid),\n\t\t\t\t\t\tcapabilities,\n\t\t\t\t\t\tstats,\n\t\t\t\t\t);\n\t\t\t\t\tawait sendSyncBatch(\n\t\t\t\t\t\tconfig,\n\t\t\t\t\t\tsessionId,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\tevents.slice(mid),\n\t\t\t\t\t\tcapabilities,\n\t\t\t\t\t);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (events.length === 1) {\n\t\t\t\t\tconst [firstEvent] = events;\n\t\t\t\t\tif (firstEvent) {\n\t\t\t\t\t\tqueueStats.droppedEvents += 1;\n\t\t\t\t\t\tlogger.debug(\"Dropped oversized shared memory event\", {\n\t\t\t\t\t\t\ttype: firstEvent.type,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (state) {\n\t\t\t\t\tqueueStats.droppedStates += 1;\n\t\t\t\t\tlogger.debug(\"Dropped oversized shared memory state payload\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthrow error;\n\t}\n}\n\nasync function sendSyncBatches(\n\tconfig: SharedMemoryConfig,\n\tsessionId: string,\n\tstate: Record<string, JsonValue> | null,\n\tevents: SharedMemoryEvent[],\n\tcapabilities: Capabilities,\n): Promise<void> {\n\tif (!state && events.length === 0) return;\n\tconst normalizedEvents = events.map(normalizeEvent);\n\tif (!normalizedEvents.length) {\n\t\tawait sendSyncBatch(\n\t\t\tconfig,\n\t\t\tsessionId,\n\t\t\tstate,\n\t\t\t[],\n\t\t\tcapabilities,\n\t\t\tbuildStatsSnapshot(),\n\t\t);\n\t\treturn;\n\t}\n\n\tlet stats: QueueStatsSnapshot | undefined = buildStatsSnapshot();\n\tlet includeState = state;\n\tconst maxEventsPerBatch = Math.max(\n\t\t1,\n\t\tMath.min(DEFAULT_EVENTS_PER_BATCH, capabilities.maxEventsBatch),\n\t);\n\tfor (let i = 0; i < normalizedEvents.length; i += maxEventsPerBatch) {\n\t\tconst batch = normalizedEvents.slice(i, i + maxEventsPerBatch);\n\t\tawait sendSyncBatch(\n\t\t\tconfig,\n\t\t\tsessionId,\n\t\t\tincludeState,\n\t\t\tbatch,\n\t\t\tcapabilities,\n\t\t\tstats,\n\t\t);\n\t\tstats = undefined;\n\t\tincludeState = null;\n\t}\n}\n\nfunction nextEventId(prefix: string): string {\n\teventCounter = (eventCounter + 1) % 1_000_000;\n\tconst suffix = `${Date.now()}-${eventCounter}`;\n\treturn clampEventId(prefix, suffix);\n}\n\nfunction resolveRetryDelayMs(pending: PendingSession, error?: unknown): number {\n\tif (error instanceof SharedMemoryError) {\n\t\tconst retryAfterMs = error.retryAfterMs;\n\t\tif (typeof retryAfterMs === \"number\" && Number.isFinite(retryAfterMs)) {\n\t\t\treturn Math.min(MAX_BACKOFF_MS, Math.max(FLUSH_DELAY_MS, retryAfterMs));\n\t\t}\n\t}\n\treturn Math.min(\n\t\tMAX_BACKOFF_MS,\n\t\tMath.max(FLUSH_DELAY_MS, pending.retryDelayMs * 2),\n\t);\n}\n\nfunction getPendingSession(sessionKey: string): PendingSession {\n\tconst existing = pendingBySession.get(sessionKey);\n\tif (existing) return existing;\n\tconst pending: PendingSession = {\n\t\tsessionKey,\n\t\tstate: null,\n\t\tevents: [],\n\t\tflushTimer: null,\n\t\tflushInFlight: false,\n\t\tblockedUntil: null,\n\t\tretryDelayMs: FLUSH_DELAY_MS,\n\t\tupdatedAt: Date.now(),\n\t};\n\tpendingBySession.set(sessionKey, pending);\n\treturn pending;\n}\n\nfunction scheduleFlush(\n\tpending: PendingSession,\n\tdelayMs = FLUSH_DELAY_MS,\n): void {\n\tif (pending.flushTimer) return;\n\tconst now = Date.now();\n\tconst blockedDelay =\n\t\tpending.blockedUntil && pending.blockedUntil > now\n\t\t\t? pending.blockedUntil - now\n\t\t\t: 0;\n\tconst actualDelay = Math.max(delayMs, blockedDelay);\n\tpending.flushTimer = setTimeout(() => {\n\t\tpending.flushTimer = null;\n\t\tvoid flushSession(pending);\n\t}, actualDelay);\n}\n\nfunction requeueState(\n\tpending: PendingSession,\n\tstate: Record<string, JsonValue>,\n): void {\n\tconst mergedState = { ...state, ...(pending.state ?? {}) };\n\tconst fittedState = fitJsonToBytes(\n\t\tmergedState,\n\t\tTARGET_MAX_BODY_BYTES,\n\t\tSTATE_TRIM_KEYS,\n\t);\n\tif (fittedState.trimmed) {\n\t\tqueueStats.trimmedStates += 1;\n\t}\n\tif (\n\t\tfittedState.value &&\n\t\ttypeof fittedState.value === \"object\" &&\n\t\t!Array.isArray(fittedState.value)\n\t) {\n\t\tpending.state = fittedState.value as Record<string, JsonValue>;\n\t} else {\n\t\tpending.state = state;\n\t}\n}\n\nfunction requeueEvents(\n\tpending: PendingSession,\n\tevents: SharedMemoryEvent[],\n): void {\n\tpending.events = events.concat(pending.events).slice(-MAX_PENDING_EVENTS);\n}\n\nasync function flushSession(pending: PendingSession): Promise<void> {\n\tif (pending.flushInFlight) {\n\t\tscheduleFlush(pending);\n\t\treturn;\n\t}\n\tconst now = Date.now();\n\tif (pending.blockedUntil && pending.blockedUntil > now) {\n\t\tscheduleFlush(pending, pending.blockedUntil - now);\n\t\treturn;\n\t}\n\tpending.blockedUntil = null;\n\tif (!pending.state && pending.events.length === 0) {\n\t\tpendingBySession.delete(pending.sessionKey);\n\t\treturn;\n\t}\n\n\tconst config = readConfig();\n\tif (!config) {\n\t\tpending.retryDelayMs = Math.min(\n\t\t\tMAX_BACKOFF_MS,\n\t\t\tMath.max(FLUSH_DELAY_MS, pending.retryDelayMs * 2),\n\t\t);\n\t\tconst jitter = Math.floor(Math.random() * 100);\n\t\tscheduleFlush(pending, pending.retryDelayMs + jitter);\n\t\treturn;\n\t}\n\n\tpending.flushInFlight = true;\n\tconst state = pending.state;\n\tconst events = pending.events.slice();\n\tpending.state = null;\n\tpending.events = [];\n\n\ttry {\n\t\tconst capabilities = await getCapabilities(config);\n\t\tawait sendSyncBatches(\n\t\t\tconfig,\n\t\t\tpending.sessionKey,\n\t\t\tstate,\n\t\t\tevents,\n\t\t\tcapabilities,\n\t\t);\n\t\tpending.retryDelayMs = FLUSH_DELAY_MS;\n\t\tpending.updatedAt = Date.now();\n\t\tschedulePersist();\n\t} catch (error) {\n\t\tconst classification = classifyError(error);\n\t\tif (classification === \"auth\") {\n\t\t\tif (state) requeueState(pending, state);\n\t\t\tif (events.length) requeueEvents(pending, events);\n\t\t\tpending.retryDelayMs = AUTH_FAILURE_COOLDOWN_MS;\n\t\t\tpending.blockedUntil = Date.now() + AUTH_FAILURE_COOLDOWN_MS;\n\t\t\tpending.updatedAt = Date.now();\n\t\t\tif (error instanceof SharedMemoryError) {\n\t\t\t\tlogAuthFailureOnce(config, error);\n\t\t\t}\n\t\t\tschedulePersist();\n\t\t} else if (classification === \"drop\") {\n\t\t\tif (state) queueStats.droppedStates += 1;\n\t\t\tif (events.length) queueStats.droppedEvents += events.length;\n\t\t\tpending.retryDelayMs = FLUSH_DELAY_MS;\n\t\t\tpending.blockedUntil = null;\n\t\t\tpending.updatedAt = Date.now();\n\t\t\tschedulePersist();\n\t\t\tlogger.warn(\"Dropped shared memory update after non-retriable error\", {\n\t\t\t\terror,\n\t\t\t});\n\t\t} else {\n\t\t\tif (state) requeueState(pending, state);\n\t\t\tif (events.length) requeueEvents(pending, events);\n\t\t\tpending.retryDelayMs = resolveRetryDelayMs(pending, error);\n\t\t\tpending.updatedAt = Date.now();\n\t\t\tschedulePersist();\n\t\t\tlogger.debug(\"Shared memory update failed\", { error });\n\t\t}\n\t} finally {\n\t\tpending.flushInFlight = false;\n\t\tif (pending.state || pending.events.length) {\n\t\t\tconst jitter = Math.floor(Math.random() * 100);\n\t\t\tscheduleFlush(pending, pending.retryDelayMs + jitter);\n\t\t} else {\n\t\t\tpendingBySession.delete(pending.sessionKey);\n\t\t\tschedulePersist();\n\t\t}\n\t}\n}\n\nexport function queueSharedMemoryUpdate(update: SharedMemoryUpdate): void {\n\tconst config = readConfig();\n\tif (!config) {\n\t\tif (!missingConfigLogged) {\n\t\t\tmissingConfigLogged = true;\n\t\t\tlogger.debug(\"Shared memory update skipped: missing config\");\n\t\t}\n\t\tauthFailureSignature = null;\n\t\treturn;\n\t}\n\tmissingConfigLogged = false;\n\tconst sessionKey = config.sessionIdOverride ?? update.sessionId;\n\tconst pending = getPendingSession(sessionKey);\n\n\tif (update.state) {\n\t\tconst scan = scanOutboundSensitiveContent(update.state);\n\t\tif (scan.blockingFindings.length > 0) {\n\t\t\tqueueStats.droppedStates += 1;\n\t\t\tlogger.warn(\"Blocked shared memory state containing sensitive content\", {\n\t\t\t\tsessionId: sessionKey,\n\t\t\t\tfindings: summarizeOutboundSensitiveFindings(scan.blockingFindings),\n\t\t\t});\n\t\t} else {\n\t\t\tconst mergedState = {\n\t\t\t\t...(pending.state ?? {}),\n\t\t\t\t...update.state,\n\t\t\t\tinstanceId,\n\t\t\t\tsource: \"maestro\",\n\t\t\t};\n\t\t\tconst fitted = fitJsonToBytes(\n\t\t\t\tmergedState,\n\t\t\t\tTARGET_MAX_BODY_BYTES,\n\t\t\t\tSTATE_TRIM_KEYS,\n\t\t\t);\n\t\t\tif (fitted.trimmed) {\n\t\t\t\tqueueStats.trimmedStates += 1;\n\t\t\t}\n\t\t\tif (\n\t\t\t\tfitted.value &&\n\t\t\t\ttypeof fitted.value === \"object\" &&\n\t\t\t\t!Array.isArray(fitted.value)\n\t\t\t) {\n\t\t\t\tpending.state = fitted.value as Record<string, JsonValue>;\n\t\t\t} else {\n\t\t\t\tpending.state = {\n\t\t\t\t\t...(pending.state ?? {}),\n\t\t\t\t\tinstanceId,\n\t\t\t\t\tsource: \"maestro\",\n\t\t\t\t};\n\t\t\t}\n\t\t\tpending.updatedAt = Date.now();\n\t\t}\n\t}\n\tif (update.event) {\n\t\tconst scan = scanOutboundSensitiveContent(update.event.payload ?? null);\n\t\tif (scan.blockingFindings.length > 0) {\n\t\t\tqueueStats.droppedEvents += 1;\n\t\t\tpending.updatedAt = Date.now();\n\t\t\tscheduleFlush(pending);\n\t\t\tschedulePersist();\n\t\t\tlogger.warn(\"Blocked shared memory event containing sensitive content\", {\n\t\t\t\tsessionId: sessionKey,\n\t\t\t\ttype: update.event.type,\n\t\t\t\tfindings: summarizeOutboundSensitiveFindings(scan.blockingFindings),\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tconst normalizedType = normalizeEventType(update.event.type);\n\t\tif (!normalizedType) {\n\t\t\tqueueStats.droppedEvents += 1;\n\t\t\tpending.updatedAt = Date.now();\n\t\t\tscheduleFlush(pending);\n\t\t\tschedulePersist();\n\t\t\tlogger.debug(\"Dropped shared memory event with invalid type\", {\n\t\t\t\ttype: update.event.type,\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tconst payload: Record<string, JsonValue> =\n\t\t\tupdate.event.payload &&\n\t\t\ttypeof update.event.payload === \"object\" &&\n\t\t\t!Array.isArray(update.event.payload)\n\t\t\t\t? {\n\t\t\t\t\t\t...(update.event.payload as Record<string, JsonValue>),\n\t\t\t\t\t\tinstanceId,\n\t\t\t\t\t\tsource: \"maestro\",\n\t\t\t\t\t}\n\t\t\t\t: {\n\t\t\t\t\t\tinstanceId,\n\t\t\t\t\t\tsource: \"maestro\",\n\t\t\t\t\t\tvalue: update.event.payload ?? null,\n\t\t\t\t\t};\n\t\tconst fittedPayload = fitJsonToBytes(payload, currentEventPayloadLimit(), [\n\t\t\t\"summary\",\n\t\t\t\"content\",\n\t\t\t\"preview\",\n\t\t\t\"text\",\n\t\t\t\"message\",\n\t\t\t\"body\",\n\t\t\t\"markdown\",\n\t\t\t\"html\",\n\t\t]);\n\t\tif (fittedPayload.trimmed) {\n\t\t\tqueueStats.trimmedEvents += 1;\n\t\t}\n\t\tpending.events.push({\n\t\t\t...update.event,\n\t\t\ttype: normalizedType,\n\t\t\tpayload: fittedPayload.value as JsonValue,\n\t\t\tid: update.event.id ?? nextEventId(`maestro-${sessionKey}`),\n\t\t});\n\t\tif (pending.events.length > MAX_PENDING_EVENTS) {\n\t\t\tpending.events = pending.events.slice(-MAX_PENDING_EVENTS);\n\t\t}\n\t\tpending.updatedAt = Date.now();\n\t}\n\n\tscheduleFlush(pending);\n\tschedulePersist();\n}\n\nfunction prepareRequestBody(\n\tpayload: Record<string, JsonValue>,\n\tmaxBytes: number,\n\tsupportsGzip: boolean,\n\tapiKey?: string,\n\trequestId?: string,\n): { body: string | Uint8Array; headers: Headers } {\n\tconst shrunk = shrinkValue(payload) as Record<string, JsonValue>;\n\tlet candidate = shrunk;\n\tlet json = JSON.stringify(candidate);\n\tif (byteLength(json) > maxBytes && \"stats\" in candidate) {\n\t\tconst { stats: _stats, ...rest } = candidate;\n\t\tconst withoutStats = rest as Record<string, JsonValue>;\n\t\tconst withoutStatsJson = JSON.stringify(withoutStats);\n\t\tif (byteLength(withoutStatsJson) <= maxBytes) {\n\t\t\tcandidate = withoutStats;\n\t\t\tjson = withoutStatsJson;\n\t\t}\n\t}\n\tconst headers = buildHeaders(apiKey, requestId);\n\tif (!supportsGzip || byteLength(json) < MIN_GZIP_BYTES) {\n\t\treturn { body: json, headers };\n\t}\n\ttry {\n\t\tconst zipped = gzipSync(Buffer.from(json));\n\t\theaders.set(\"Content-Encoding\", \"gzip\");\n\t\tqueueStats.gzipRequests += 1;\n\t\treturn {\n\t\t\tbody: new Uint8Array(zipped.buffer, zipped.byteOffset, zipped.byteLength),\n\t\t\theaders,\n\t\t};\n\t} catch {\n\t\treturn { body: json, headers };\n\t}\n}\n\nloadPersistedQueue();\n\nexport function invalidateSharedMemoryCapabilities(): void {\n\tinvalidateCapabilitiesCache();\n}\n"]}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/shared-memory/client.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport { existsSync, readFileSync } from \"node:fs\";\nimport { mkdir, rename, writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { gzipSync } from \"node:zlib\";\nimport { PATHS } from \"../config/constants.js\";\nimport {\n\tscanOutboundSensitiveContent,\n\tsummarizeOutboundSensitiveFindings,\n} from \"../safety/outbound-secret-preflight.js\";\nimport { fetchDownstream } from \"../utils/downstream-http.js\";\nimport { createLogger } from \"../utils/logger.js\";\nimport { DEFAULT_CAPABILITIES, SHARED_MEMORY_CONFIG } from \"./contract.js\";\n\ntype JsonValue =\n\t| string\n\t| number\n\t| boolean\n\t| null\n\t| JsonValue[]\n\t| { [key: string]: JsonValue };\n\ntype SharedMemoryConfig = {\n\tbaseUrl: string;\n\tapiKey?: string;\n\tsessionIdOverride?: string;\n};\n\ntype SharedMemoryEvent = {\n\ttype: string;\n\tpayload?: JsonValue;\n\ttags?: string[];\n\tid?: string;\n\tactor?: string;\n};\n\ntype SharedMemoryUpdate = {\n\tsessionId: string;\n\tstate?: Record<string, JsonValue>;\n\tevent?: SharedMemoryEvent;\n};\n\ntype PendingSession = {\n\tsessionKey: string;\n\tstate: Record<string, JsonValue> | null;\n\tevents: SharedMemoryEvent[];\n\tflushTimer: ReturnType<typeof setTimeout> | null;\n\tflushInFlight: boolean;\n\tblockedUntil: number | null;\n\tretryDelayMs: number;\n\tupdatedAt: number;\n};\n\ntype Capabilities = {\n\tsupportsSync: boolean;\n\tsupportsGzip: boolean;\n\tmaxBodyBytes: number;\n\tmaxEventsBatch: number;\n\tmaxEventPayloadBytes: number;\n\tmaxEventTypeLength: number;\n\tmaxEventIdLength: number;\n};\n\ntype QueueStatsSnapshot = {\n\ttrimmed_states: number;\n\ttrimmed_events: number;\n\tdropped_states: number;\n\tdropped_events: number;\n\tbatch_splits: number;\n\tgzip_requests: number;\n\tlast_sent_at: string;\n\tsource: \"maestro\";\n\tinstance_id: string;\n};\n\nconst logger = createLogger(\"shared-memory\");\n\n// Configuration constants from shared contract (cast to number to avoid literal type issues)\nconst FLUSH_DELAY_MS: number = SHARED_MEMORY_CONFIG.FLUSH_DELAY_MS;\nconst REQUEST_TIMEOUT_MS: number = SHARED_MEMORY_CONFIG.REQUEST_TIMEOUT_MS;\nconst MAX_PENDING_EVENTS: number = SHARED_MEMORY_CONFIG.MAX_PENDING_EVENTS;\nconst MAX_BACKOFF_MS: number = SHARED_MEMORY_CONFIG.MAX_BACKOFF_MS;\nconst MIN_GZIP_BYTES = 1024;\nconst AUTH_FAILURE_COOLDOWN_MS = 5 * 60 * 1000;\nconst DEFAULT_EVENTS_PER_BATCH: number =\n\tSHARED_MEMORY_CONFIG.DEFAULT_EVENTS_PER_BATCH;\nconst TARGET_MAX_BODY_BYTES: number =\n\tSHARED_MEMORY_CONFIG.TARGET_MAX_BODY_BYTES;\nconst MAX_STRING_LENGTH: number = SHARED_MEMORY_CONFIG.MAX_STRING_LENGTH;\nconst MAX_ARRAY_LENGTH: number = SHARED_MEMORY_CONFIG.MAX_ARRAY_LENGTH;\nconst PERSIST_DEBOUNCE_MS: number = SHARED_MEMORY_CONFIG.PERSIST_DEBOUNCE_MS;\nconst PERSIST_TTL_MS: number = SHARED_MEMORY_CONFIG.PERSIST_TTL_MS;\nconst CAPABILITIES_TTL_MS: number = SHARED_MEMORY_CONFIG.CAPABILITIES_TTL_MS;\n\n// Default capability values from shared contract\nconst DEFAULT_MAX_BODY_BYTES = DEFAULT_CAPABILITIES.maxBodyBytes;\nconst DEFAULT_EVENT_PAYLOAD_BYTES = DEFAULT_CAPABILITIES.maxEventPayloadBytes;\nconst DEFAULT_EVENT_TYPE_LENGTH = DEFAULT_CAPABILITIES.maxEventTypeLength;\nconst DEFAULT_EVENT_ID_LENGTH = DEFAULT_CAPABILITIES.maxEventIdLength;\nconst STATE_TRIM_KEYS = [\n\t\"summary\",\n\t\"content\",\n\t\"preview\",\n\t\"text\",\n\t\"message\",\n\t\"body\",\n];\nconst REQUEST_ID_PREFIX = \"maestro\";\nconst CAPABILITIES_MAX_ATTEMPTS = 2;\nconst SYNC_MAX_ATTEMPTS = 1;\nconst instanceId = randomUUID();\n\nconst pendingBySession = new Map<string, PendingSession>();\nlet eventCounter = 0;\nlet requestCounter = 0;\nlet persistTimer: ReturnType<typeof setTimeout> | null = null;\nlet missingConfigLogged = false;\nlet authFailureSignature: string | null = null;\nlet capabilitiesCache: { value: Capabilities; fetchedAt: number } | null = null;\nlet capabilitiesPromise: Promise<Capabilities> | null = null;\nconst queueStats = {\n\ttrimmedStates: 0,\n\ttrimmedEvents: 0,\n\tdroppedStates: 0,\n\tdroppedEvents: 0,\n\tbatchSplits: 0,\n\tgzipRequests: 0,\n\tlastSentAt: null as string | null,\n};\n\nclass SharedMemoryError extends Error {\n\tstatus?: number;\n\tretryAfterMs?: number;\n\trequestId?: string;\n\n\tconstructor(\n\t\tmessage: string,\n\t\tstatus?: number,\n\t\tretryAfterMs?: number,\n\t\trequestId?: string,\n\t) {\n\t\tsuper(message);\n\t\tthis.name = \"SharedMemoryError\";\n\t\tthis.status = status;\n\t\tthis.retryAfterMs = retryAfterMs;\n\t\tthis.requestId = requestId;\n\t}\n}\n\n// Keep in sync with Conductor's shared-memory retry parsing.\nfunction parseRateLimitResetMs(response: Response): number | null {\n\tconst resetHeader =\n\t\tresponse.headers.get(\"RateLimit-Reset\") ??\n\t\tresponse.headers.get(\"X-RateLimit-Reset\");\n\tif (!resetHeader) return null;\n\tconst resetValue = Number(resetHeader.trim());\n\tif (!Number.isFinite(resetValue)) return null;\n\tlet delayMs: number;\n\tif (resetValue >= 10_000_000_000) {\n\t\tdelayMs = resetValue - Date.now();\n\t} else if (resetValue >= 1_000_000_000) {\n\t\tdelayMs = resetValue * 1000 - Date.now();\n\t} else {\n\t\tdelayMs = resetValue * 1000;\n\t}\n\treturn Math.max(0, delayMs);\n}\n\nfunction parseRetryAfterMs(response: Response): number | null {\n\tconst retryAfter = response.headers.get(\"Retry-After\")?.trim();\n\tif (retryAfter) {\n\t\tconst asNumber = Number(retryAfter);\n\t\tif (Number.isFinite(asNumber)) {\n\t\t\treturn Math.max(0, asNumber * 1000);\n\t\t}\n\t\tconst asDate = Date.parse(retryAfter);\n\t\tif (!Number.isNaN(asDate)) {\n\t\t\treturn Math.max(0, asDate - Date.now());\n\t\t}\n\t}\n\treturn parseRateLimitResetMs(response);\n}\n\nfunction invalidateCapabilitiesCache(\n\toverride?: Partial<Capabilities>,\n): Capabilities {\n\tif (!override) {\n\t\tcapabilitiesCache = null;\n\t\tcapabilitiesPromise = null;\n\t\treturn {\n\t\t\tsupportsSync: true,\n\t\t\tsupportsGzip: true,\n\t\t\tmaxBodyBytes: DEFAULT_MAX_BODY_BYTES,\n\t\t\tmaxEventsBatch: DEFAULT_EVENTS_PER_BATCH,\n\t\t\tmaxEventPayloadBytes: DEFAULT_EVENT_PAYLOAD_BYTES,\n\t\t\tmaxEventTypeLength: DEFAULT_EVENT_TYPE_LENGTH,\n\t\t\tmaxEventIdLength: DEFAULT_EVENT_ID_LENGTH,\n\t\t};\n\t}\n\tconst base = capabilitiesCache?.value ?? {\n\t\tsupportsSync: true,\n\t\tsupportsGzip: true,\n\t\tmaxBodyBytes: DEFAULT_MAX_BODY_BYTES,\n\t\tmaxEventsBatch: DEFAULT_EVENTS_PER_BATCH,\n\t\tmaxEventPayloadBytes: DEFAULT_EVENT_PAYLOAD_BYTES,\n\t\tmaxEventTypeLength: DEFAULT_EVENT_TYPE_LENGTH,\n\t\tmaxEventIdLength: DEFAULT_EVENT_ID_LENGTH,\n\t};\n\tconst value = { ...base, ...override };\n\tcapabilitiesCache = { value, fetchedAt: Date.now() };\n\tcapabilitiesPromise = null;\n\treturn value;\n}\n\nfunction isUnsupportedEncoding(error: SharedMemoryError): boolean {\n\tif (error.status === 415) return true;\n\treturn error.message.toLowerCase().includes(\"unsupported content-encoding\");\n}\n\nfunction authSignature(config: SharedMemoryConfig): string {\n\tconst keyLength = config.apiKey ? config.apiKey.length : 0;\n\treturn `${config.baseUrl}|${config.sessionIdOverride ?? \"\"}|${keyLength}`;\n}\n\nfunction logAuthFailureOnce(\n\tconfig: SharedMemoryConfig,\n\terror: SharedMemoryError,\n): void {\n\tconst signature = authSignature(config);\n\tif (authFailureSignature === signature) return;\n\tauthFailureSignature = signature;\n\tlogger.warn(\"Shared memory auth failed; backing off\", {\n\t\tstatus: error.status,\n\t\trequestId: error.requestId,\n\t});\n}\n\nfunction classifyError(error: unknown): \"retriable\" | \"auth\" | \"drop\" {\n\tif (!(error instanceof SharedMemoryError)) return \"retriable\";\n\tif (error.status === 401 || error.status === 403) return \"auth\";\n\tif (error.status === undefined) return \"retriable\";\n\tif (error.status >= 500 || error.status === 408 || error.status === 429) {\n\t\treturn \"retriable\";\n\t}\n\treturn \"drop\";\n}\n\nfunction normalizeBaseUrl(value: string): string {\n\treturn value.replace(/\\/+$/, \"\");\n}\n\nfunction readConfig(): SharedMemoryConfig | null {\n\tconst base = process.env.MAESTRO_SHARED_MEMORY_BASE?.trim();\n\tif (!base) return null;\n\tconst apiKey = process.env.MAESTRO_SHARED_MEMORY_API_KEY?.trim();\n\tconst override = process.env.MAESTRO_SHARED_MEMORY_SESSION_ID?.trim();\n\treturn {\n\t\tbaseUrl: normalizeBaseUrl(base),\n\t\tapiKey: apiKey || undefined,\n\t\tsessionIdOverride: override || undefined,\n\t};\n}\n\nfunction nextRequestId(prefix: string): string {\n\ttry {\n\t\treturn `${prefix}-${randomUUID()}`;\n\t} catch {\n\t\trequestCounter = (requestCounter + 1) % 1_000_000;\n\t\treturn `${prefix}-${Date.now()}-${requestCounter}`;\n\t}\n}\n\nfunction buildHeaders(apiKey?: string, requestId?: string): Headers {\n\tconst headers = new Headers({\n\t\t\"Content-Type\": \"application/json; charset=utf-8\",\n\t});\n\tif (apiKey) headers.set(\"Authorization\", `Bearer ${apiKey}`);\n\tif (requestId) headers.set(\"X-Request-Id\", requestId);\n\treturn headers;\n}\n\nasync function safeFetch(url: string, init: RequestInit): Promise<void> {\n\tconst response = await fetchDownstream(url, init, {\n\t\tserviceName: \"shared memory service\",\n\t\tfailureMode: \"optional\",\n\t\ttimeoutMs: REQUEST_TIMEOUT_MS,\n\t\tmaxAttempts: SYNC_MAX_ATTEMPTS,\n\t});\n\tif (!response.ok) {\n\t\tconst message = await response.text().catch(() => \"\");\n\t\tconst retryAfterMs = parseRetryAfterMs(response);\n\t\tconst requestId = response.headers.get(\"x-request-id\") ?? undefined;\n\t\tthrow new SharedMemoryError(\n\t\t\tmessage\n\t\t\t\t? `Shared memory error: ${response.status} ${message}`\n\t\t\t\t: `Shared memory error: ${response.status}`,\n\t\t\tresponse.status,\n\t\t\tretryAfterMs ?? undefined,\n\t\t\trequestId ?? undefined,\n\t\t);\n\t}\n}\n\nfunction byteLength(value: string): number {\n\treturn Buffer.byteLength(value);\n}\n\nfunction truncateString(value: string, maxLength: number): string {\n\tif (value.length <= maxLength) return value;\n\treturn `${value.slice(0, Math.max(0, maxLength - 3))}...`;\n}\n\nfunction shrinkValue(value: unknown): unknown {\n\tif (typeof value === \"string\") {\n\t\treturn truncateString(value, MAX_STRING_LENGTH);\n\t}\n\tif (Array.isArray(value)) {\n\t\tif (value.length > MAX_ARRAY_LENGTH) {\n\t\t\treturn value.slice(0, MAX_ARRAY_LENGTH).map(shrinkValue);\n\t\t}\n\t\treturn value.map(shrinkValue);\n\t}\n\tif (value && typeof value === \"object\") {\n\t\tconst record = value as Record<string, unknown>;\n\t\tconst out: Record<string, unknown> = {};\n\t\tfor (const [key, entry] of Object.entries(record)) {\n\t\t\tout[key] = shrinkValue(entry);\n\t\t}\n\t\treturn out;\n\t}\n\treturn value;\n}\n\nfunction dropKeys(value: unknown, keys: string[], maxBytes: number): unknown {\n\tif (!value || typeof value !== \"object\" || Array.isArray(value)) return value;\n\tconst record = { ...(value as Record<string, unknown>) };\n\tfor (const key of keys) {\n\t\tif (key in record) {\n\t\t\tdelete record[key];\n\t\t\tconst size = byteLength(JSON.stringify(record));\n\t\t\tif (size <= maxBytes) {\n\t\t\t\treturn record;\n\t\t\t}\n\t\t}\n\t}\n\treturn record;\n}\n\nfunction fitJsonToBytes(\n\tvalue: unknown,\n\tmaxBytes: number,\n\tdropList: string[],\n): { value: unknown; trimmed: boolean } {\n\tconst shrunk = shrinkValue(value);\n\tlet serialized = JSON.stringify(shrunk);\n\tif (byteLength(serialized) <= maxBytes)\n\t\treturn { value: shrunk, trimmed: false };\n\tconst dropped = dropKeys(shrunk, dropList, maxBytes);\n\tserialized = JSON.stringify(dropped);\n\tif (byteLength(serialized) <= maxBytes)\n\t\treturn { value: dropped, trimmed: true };\n\tif (Array.isArray(dropped)) {\n\t\tlet trimmed = dropped.slice(0, Math.max(1, Math.floor(dropped.length / 2)));\n\t\twhile (\n\t\t\ttrimmed.length > 1 &&\n\t\t\tbyteLength(JSON.stringify(trimmed)) > maxBytes\n\t\t) {\n\t\t\ttrimmed = trimmed.slice(0, Math.max(1, Math.floor(trimmed.length / 2)));\n\t\t}\n\t\treturn { value: trimmed, trimmed: true };\n\t}\n\treturn { value: {}, trimmed: true };\n}\n\nfunction currentEventPayloadLimit(): number {\n\tconst max =\n\t\tcapabilitiesCache?.value?.maxEventPayloadBytes ??\n\t\tDEFAULT_EVENT_PAYLOAD_BYTES;\n\treturn Math.min(max, TARGET_MAX_BODY_BYTES);\n}\n\nfunction normalizeEventType(eventType: string): string | null {\n\tconst trimmed = eventType.trim();\n\tif (!trimmed) return null;\n\tconst max =\n\t\tcapabilitiesCache?.value?.maxEventTypeLength ?? DEFAULT_EVENT_TYPE_LENGTH;\n\tif (trimmed.length > max) return null;\n\treturn trimmed;\n}\n\nfunction clampEventId(prefix: string, suffix: string): string {\n\tconst max =\n\t\tcapabilitiesCache?.value?.maxEventIdLength ?? DEFAULT_EVENT_ID_LENGTH;\n\tif (max <= 0) {\n\t\treturn \"\";\n\t}\n\tif (suffix.length >= max) {\n\t\treturn suffix.slice(0, max);\n\t}\n\tif (prefix.length + suffix.length + 1 <= max) {\n\t\treturn `${prefix}-${suffix}`;\n\t}\n\tconst prefixMax = Math.max(0, max - suffix.length - 1);\n\tconst clippedPrefix = prefix.slice(0, prefixMax);\n\tif (!clippedPrefix) {\n\t\treturn suffix;\n\t}\n\treturn `${clippedPrefix}-${suffix}`;\n}\n\nasync function getCapabilities(\n\tconfig: SharedMemoryConfig,\n): Promise<Capabilities> {\n\tconst cachedAt = capabilitiesCache?.fetchedAt ?? 0;\n\tif (capabilitiesCache && Date.now() - cachedAt < CAPABILITIES_TTL_MS) {\n\t\treturn capabilitiesCache.value;\n\t}\n\tif (capabilitiesPromise) return capabilitiesPromise;\n\tconst fallback: Capabilities = {\n\t\tsupportsSync: true,\n\t\tsupportsGzip: true,\n\t\tmaxBodyBytes: DEFAULT_MAX_BODY_BYTES,\n\t\tmaxEventsBatch: DEFAULT_EVENTS_PER_BATCH,\n\t\tmaxEventPayloadBytes: DEFAULT_EVENT_PAYLOAD_BYTES,\n\t\tmaxEventTypeLength: DEFAULT_EVENT_TYPE_LENGTH,\n\t\tmaxEventIdLength: DEFAULT_EVENT_ID_LENGTH,\n\t};\n\n\tcapabilitiesPromise = (async () => {\n\t\ttry {\n\t\t\tconst response = await fetchDownstream(\n\t\t\t\t`${config.baseUrl}/capabilities`,\n\t\t\t\t{\n\t\t\t\t\tmethod: \"GET\",\n\t\t\t\t\theaders: buildHeaders(\n\t\t\t\t\t\tconfig.apiKey,\n\t\t\t\t\t\tnextRequestId(REQUEST_ID_PREFIX),\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tserviceName: \"shared memory service\",\n\t\t\t\t\tfailureMode: \"optional\",\n\t\t\t\t\ttimeoutMs: REQUEST_TIMEOUT_MS,\n\t\t\t\t\tmaxAttempts: CAPABILITIES_MAX_ATTEMPTS,\n\t\t\t\t},\n\t\t\t);\n\t\t\tif (!response.ok) {\n\t\t\t\tif (response.status === 404 || response.status === 405) {\n\t\t\t\t\treturn { ...fallback, supportsSync: false };\n\t\t\t\t}\n\t\t\t\treturn fallback;\n\t\t\t}\n\t\t\tconst data = (await response.json()) as Partial<{\n\t\t\t\tsupports_sync: boolean;\n\t\t\t\tsupports_gzip: boolean;\n\t\t\t\tmax_body_bytes: number;\n\t\t\t\tmax_events_batch: number;\n\t\t\t\tmax_event_payload_bytes: number;\n\t\t\t\tmax_event_type_length: number;\n\t\t\t\tmax_event_id_length: number;\n\t\t\t}>;\n\t\t\tconst supportsSync = data.supports_sync !== false;\n\t\t\tconst supportsGzip = data.supports_gzip !== false;\n\t\t\tconst maxBodyBytes =\n\t\t\t\ttypeof data.max_body_bytes === \"number\"\n\t\t\t\t\t? data.max_body_bytes\n\t\t\t\t\t: DEFAULT_MAX_BODY_BYTES;\n\t\t\tconst maxEventsBatch =\n\t\t\t\ttypeof data.max_events_batch === \"number\"\n\t\t\t\t\t? data.max_events_batch\n\t\t\t\t\t: DEFAULT_EVENTS_PER_BATCH;\n\t\t\tconst maxEventPayloadBytes =\n\t\t\t\ttypeof data.max_event_payload_bytes === \"number\"\n\t\t\t\t\t? data.max_event_payload_bytes\n\t\t\t\t\t: DEFAULT_EVENT_PAYLOAD_BYTES;\n\t\t\tconst maxEventTypeLength =\n\t\t\t\ttypeof data.max_event_type_length === \"number\"\n\t\t\t\t\t? data.max_event_type_length\n\t\t\t\t\t: DEFAULT_EVENT_TYPE_LENGTH;\n\t\t\tconst maxEventIdLength =\n\t\t\t\ttypeof data.max_event_id_length === \"number\"\n\t\t\t\t\t? data.max_event_id_length\n\t\t\t\t\t: DEFAULT_EVENT_ID_LENGTH;\n\t\t\treturn {\n\t\t\t\tsupportsSync,\n\t\t\t\tsupportsGzip,\n\t\t\t\tmaxBodyBytes,\n\t\t\t\tmaxEventsBatch,\n\t\t\t\tmaxEventPayloadBytes,\n\t\t\t\tmaxEventTypeLength,\n\t\t\t\tmaxEventIdLength,\n\t\t\t};\n\t\t} catch {\n\t\t\treturn fallback;\n\t\t}\n\t})();\n\n\tconst value = await capabilitiesPromise;\n\tcapabilitiesCache = { value, fetchedAt: Date.now() };\n\tcapabilitiesPromise = null;\n\treturn value;\n}\n\nfunction schedulePersist(): void {\n\tif (persistTimer) return;\n\tpersistTimer = setTimeout(() => {\n\t\tpersistTimer = null;\n\t\tvoid persistQueue();\n\t}, PERSIST_DEBOUNCE_MS);\n}\n\nfunction getQueueFilePath(): string {\n\treturn join(PATHS.MAESTRO_HOME, \"shared-memory-queue.json\");\n}\n\nasync function persistQueue(): Promise<void> {\n\ttry {\n\t\tconst path = getQueueFilePath();\n\t\tif (!pendingBySession.size) {\n\t\t\tif (existsSync(path)) {\n\t\t\t\tawait writeFile(path, \"\");\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tconst sessions: Record<\n\t\t\tstring,\n\t\t\t{\n\t\t\t\tstate: Record<string, JsonValue> | null;\n\t\t\t\tevents: SharedMemoryEvent[];\n\t\t\t\tblockedUntil: number | null;\n\t\t\t\tupdatedAt: number;\n\t\t\t}\n\t\t> = {};\n\t\tfor (const [key, pending] of pendingBySession) {\n\t\t\tsessions[key] = {\n\t\t\t\tstate: pending.state,\n\t\t\t\tevents: pending.events,\n\t\t\t\tblockedUntil: pending.blockedUntil,\n\t\t\t\tupdatedAt: pending.updatedAt,\n\t\t\t};\n\t\t}\n\t\tconst payload = {\n\t\t\tversion: 1,\n\t\t\tupdatedAt: Date.now(),\n\t\t\tsessions,\n\t\t\tstats: queueStats,\n\t\t};\n\t\tawait mkdir(PATHS.MAESTRO_HOME, { recursive: true });\n\t\tconst tmp = `${path}.tmp`;\n\t\tawait writeFile(tmp, JSON.stringify(payload), \"utf8\");\n\t\tawait rename(tmp, path);\n\t} catch {\n\t\t// ignore persistence failures\n\t}\n}\n\nfunction loadPersistedQueue(): void {\n\ttry {\n\t\tconst path = getQueueFilePath();\n\t\tif (!existsSync(path)) return;\n\t\tconst raw = readFileSync(path, \"utf8\").trim();\n\t\tif (!raw) return;\n\t\tconst parsed = JSON.parse(raw) as {\n\t\t\tversion?: number;\n\t\t\tupdatedAt?: number;\n\t\t\tsessions?: Record<\n\t\t\t\tstring,\n\t\t\t\t{\n\t\t\t\t\tstate: Record<string, JsonValue> | null;\n\t\t\t\t\tevents: SharedMemoryEvent[];\n\t\t\t\t\tblockedUntil?: number | null;\n\t\t\t\t\tupdatedAt?: number;\n\t\t\t\t}\n\t\t\t>;\n\t\t\tstats?: Partial<typeof queueStats>;\n\t\t};\n\t\tif (parsed.stats) {\n\t\t\tqueueStats.trimmedStates =\n\t\t\t\tparsed.stats.trimmedStates ?? queueStats.trimmedStates;\n\t\t\tqueueStats.trimmedEvents =\n\t\t\t\tparsed.stats.trimmedEvents ?? queueStats.trimmedEvents;\n\t\t\tqueueStats.droppedStates =\n\t\t\t\tparsed.stats.droppedStates ?? queueStats.droppedStates;\n\t\t\tqueueStats.droppedEvents =\n\t\t\t\tparsed.stats.droppedEvents ?? queueStats.droppedEvents;\n\t\t\tqueueStats.batchSplits =\n\t\t\t\tparsed.stats.batchSplits ?? queueStats.batchSplits;\n\t\t\tqueueStats.gzipRequests =\n\t\t\t\tparsed.stats.gzipRequests ?? queueStats.gzipRequests;\n\t\t\tqueueStats.lastSentAt = parsed.stats.lastSentAt ?? queueStats.lastSentAt;\n\t\t}\n\t\tconst sessions = parsed.sessions ?? {};\n\t\tconst cutoff = Date.now() - PERSIST_TTL_MS;\n\t\tfor (const [sessionKey, entry] of Object.entries(sessions)) {\n\t\t\tconst updatedAt = entry.updatedAt ?? parsed.updatedAt ?? Date.now();\n\t\t\tif (updatedAt < cutoff) continue;\n\t\t\tconst pending = getPendingSession(sessionKey);\n\t\t\tpending.state = entry.state ?? null;\n\t\t\tpending.events = entry.events ?? [];\n\t\t\tconst blockedUntil =\n\t\t\t\ttypeof entry.blockedUntil === \"number\" ? entry.blockedUntil : null;\n\t\t\tpending.blockedUntil =\n\t\t\t\tblockedUntil && blockedUntil > Date.now() ? blockedUntil : null;\n\t\t\tpending.updatedAt = updatedAt;\n\t\t\tscheduleFlush(pending);\n\t\t}\n\t} catch {\n\t\t// ignore malformed cache\n\t}\n}\n\nfunction normalizeEvent(event: SharedMemoryEvent): SharedMemoryEvent {\n\treturn {\n\t\t...event,\n\t\tactor: event.actor ?? \"maestro\",\n\t};\n}\n\nfunction buildStatsSnapshot(): QueueStatsSnapshot {\n\tconst sentAt = new Date().toISOString();\n\tqueueStats.lastSentAt = sentAt;\n\treturn {\n\t\ttrimmed_states: queueStats.trimmedStates,\n\t\ttrimmed_events: queueStats.trimmedEvents,\n\t\tdropped_states: queueStats.droppedStates,\n\t\tdropped_events: queueStats.droppedEvents,\n\t\tbatch_splits: queueStats.batchSplits,\n\t\tgzip_requests: queueStats.gzipRequests,\n\t\tlast_sent_at: sentAt,\n\t\tsource: \"maestro\",\n\t\tinstance_id: instanceId,\n\t};\n}\n\nasync function trySync(\n\tconfig: SharedMemoryConfig,\n\tsessionId: string,\n\tstate: Record<string, JsonValue> | null,\n\tevents: SharedMemoryEvent[],\n\tcapabilities: Capabilities,\n\tstats?: QueueStatsSnapshot,\n): Promise<void> {\n\tconst payload: Record<string, JsonValue> = {};\n\tif (state) {\n\t\tpayload.state = { maestro: state } as JsonValue;\n\t}\n\tif (events.length) {\n\t\tpayload.events = events as JsonValue;\n\t}\n\tif (stats) {\n\t\tpayload.stats = stats as JsonValue;\n\t}\n\tconst requestId = nextRequestId(REQUEST_ID_PREFIX);\n\tconst { body, headers } = prepareRequestBody(\n\t\tpayload,\n\t\tMath.min(capabilities.maxBodyBytes, TARGET_MAX_BODY_BYTES),\n\t\tcapabilities.supportsGzip,\n\t\tconfig.apiKey,\n\t\trequestId,\n\t);\n\tawait safeFetch(\n\t\t`${config.baseUrl}/sessions/${encodeURIComponent(sessionId)}/sync`,\n\t\t{\n\t\t\tmethod: \"PATCH\",\n\t\t\theaders,\n\t\t\tbody,\n\t\t},\n\t);\n}\n\nasync function fallbackSync(\n\tconfig: SharedMemoryConfig,\n\tsessionId: string,\n\tstate: Record<string, JsonValue> | null,\n\tevents: SharedMemoryEvent[],\n\tsupportsGzip: boolean,\n): Promise<void> {\n\tif (state) {\n\t\ttry {\n\t\t\tconst requestId = nextRequestId(REQUEST_ID_PREFIX);\n\t\t\tconst { body, headers } = prepareRequestBody(\n\t\t\t\t{ state: { maestro: state } },\n\t\t\t\tTARGET_MAX_BODY_BYTES,\n\t\t\t\tsupportsGzip,\n\t\t\t\tconfig.apiKey,\n\t\t\t\trequestId,\n\t\t\t);\n\t\t\tawait safeFetch(\n\t\t\t\t`${config.baseUrl}/sessions/${encodeURIComponent(sessionId)}/state`,\n\t\t\t\t{\n\t\t\t\t\tmethod: \"PATCH\",\n\t\t\t\t\theaders,\n\t\t\t\t\tbody,\n\t\t\t\t},\n\t\t\t);\n\t\t} catch (error) {\n\t\t\tif (error instanceof SharedMemoryError && error.status === 413) {\n\t\t\t\tlogger.debug(\"Dropped oversized shared memory state payload\");\n\t\t\t} else {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\t}\n\tfor (const event of events) {\n\t\ttry {\n\t\t\tconst requestId = nextRequestId(REQUEST_ID_PREFIX);\n\t\t\tconst { body, headers } = prepareRequestBody(\n\t\t\t\tevent as Record<string, JsonValue>,\n\t\t\t\tTARGET_MAX_BODY_BYTES,\n\t\t\t\tsupportsGzip,\n\t\t\t\tconfig.apiKey,\n\t\t\t\trequestId,\n\t\t\t);\n\t\t\tawait safeFetch(\n\t\t\t\t`${config.baseUrl}/sessions/${encodeURIComponent(sessionId)}/events`,\n\t\t\t\t{\n\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\theaders,\n\t\t\t\t\tbody,\n\t\t\t\t},\n\t\t\t);\n\t\t} catch (error) {\n\t\t\tif (error instanceof SharedMemoryError && error.status === 413) {\n\t\t\t\tlogger.debug(\"Dropped oversized shared memory event\", {\n\t\t\t\t\ttype: event.type,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\t}\n}\n\nasync function sendSyncBatch(\n\tconfig: SharedMemoryConfig,\n\tsessionId: string,\n\tstate: Record<string, JsonValue> | null,\n\tevents: SharedMemoryEvent[],\n\tcapabilities: Capabilities,\n\tstats?: QueueStatsSnapshot,\n): Promise<void> {\n\tif (!state && events.length === 0) return;\n\ttry {\n\t\tif (capabilities.supportsSync) {\n\t\t\tawait trySync(config, sessionId, state, events, capabilities, stats);\n\t\t\treturn;\n\t\t}\n\t\tawait fallbackSync(\n\t\t\tconfig,\n\t\t\tsessionId,\n\t\t\tstate,\n\t\t\tevents,\n\t\t\tcapabilities.supportsGzip,\n\t\t);\n\t\treturn;\n\t} catch (error) {\n\t\tif (error instanceof SharedMemoryError) {\n\t\t\tif (isUnsupportedEncoding(error) && capabilities.supportsGzip) {\n\t\t\t\tconst updated = invalidateCapabilitiesCache({ supportsGzip: false });\n\t\t\t\tawait sendSyncBatch(config, sessionId, state, events, updated, stats);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (error.status === 404 || error.status === 405) {\n\t\t\t\tinvalidateCapabilitiesCache({ supportsSync: false });\n\t\t\t\tawait fallbackSync(\n\t\t\t\t\tconfig,\n\t\t\t\t\tsessionId,\n\t\t\t\t\tstate,\n\t\t\t\t\tevents,\n\t\t\t\t\tcapabilities.supportsGzip,\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (error.status === 413) {\n\t\t\t\tif (state && events.length > 0) {\n\t\t\t\t\tqueueStats.batchSplits += 1;\n\t\t\t\t\tawait sendSyncBatch(\n\t\t\t\t\t\tconfig,\n\t\t\t\t\t\tsessionId,\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\t[],\n\t\t\t\t\t\tcapabilities,\n\t\t\t\t\t\tstats,\n\t\t\t\t\t);\n\t\t\t\t\tawait sendSyncBatch(config, sessionId, null, events, capabilities);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (events.length > 1) {\n\t\t\t\t\tconst mid = Math.ceil(events.length / 2);\n\t\t\t\t\tqueueStats.batchSplits += 1;\n\t\t\t\t\tawait sendSyncBatch(\n\t\t\t\t\t\tconfig,\n\t\t\t\t\t\tsessionId,\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\tevents.slice(0, mid),\n\t\t\t\t\t\tcapabilities,\n\t\t\t\t\t\tstats,\n\t\t\t\t\t);\n\t\t\t\t\tawait sendSyncBatch(\n\t\t\t\t\t\tconfig,\n\t\t\t\t\t\tsessionId,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\tevents.slice(mid),\n\t\t\t\t\t\tcapabilities,\n\t\t\t\t\t);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (events.length === 1) {\n\t\t\t\t\tconst [firstEvent] = events;\n\t\t\t\t\tif (firstEvent) {\n\t\t\t\t\t\tqueueStats.droppedEvents += 1;\n\t\t\t\t\t\tlogger.debug(\"Dropped oversized shared memory event\", {\n\t\t\t\t\t\t\ttype: firstEvent.type,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (state) {\n\t\t\t\t\tqueueStats.droppedStates += 1;\n\t\t\t\t\tlogger.debug(\"Dropped oversized shared memory state payload\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthrow error;\n\t}\n}\n\nasync function sendSyncBatches(\n\tconfig: SharedMemoryConfig,\n\tsessionId: string,\n\tstate: Record<string, JsonValue> | null,\n\tevents: SharedMemoryEvent[],\n\tcapabilities: Capabilities,\n): Promise<void> {\n\tif (!state && events.length === 0) return;\n\tconst normalizedEvents = events.map(normalizeEvent);\n\tif (!normalizedEvents.length) {\n\t\tawait sendSyncBatch(\n\t\t\tconfig,\n\t\t\tsessionId,\n\t\t\tstate,\n\t\t\t[],\n\t\t\tcapabilities,\n\t\t\tbuildStatsSnapshot(),\n\t\t);\n\t\treturn;\n\t}\n\n\tlet stats: QueueStatsSnapshot | undefined = buildStatsSnapshot();\n\tlet includeState = state;\n\tconst maxEventsPerBatch = Math.max(\n\t\t1,\n\t\tMath.min(DEFAULT_EVENTS_PER_BATCH, capabilities.maxEventsBatch),\n\t);\n\tfor (let i = 0; i < normalizedEvents.length; i += maxEventsPerBatch) {\n\t\tconst batch = normalizedEvents.slice(i, i + maxEventsPerBatch);\n\t\tawait sendSyncBatch(\n\t\t\tconfig,\n\t\t\tsessionId,\n\t\t\tincludeState,\n\t\t\tbatch,\n\t\t\tcapabilities,\n\t\t\tstats,\n\t\t);\n\t\tstats = undefined;\n\t\tincludeState = null;\n\t}\n}\n\nfunction nextEventId(prefix: string): string {\n\teventCounter = (eventCounter + 1) % 1_000_000;\n\tconst suffix = `${Date.now()}-${eventCounter}`;\n\treturn clampEventId(prefix, suffix);\n}\n\nfunction resolveRetryDelayMs(pending: PendingSession, error?: unknown): number {\n\tif (error instanceof SharedMemoryError) {\n\t\tconst retryAfterMs = error.retryAfterMs;\n\t\tif (typeof retryAfterMs === \"number\" && Number.isFinite(retryAfterMs)) {\n\t\t\treturn Math.min(MAX_BACKOFF_MS, Math.max(FLUSH_DELAY_MS, retryAfterMs));\n\t\t}\n\t}\n\treturn Math.min(\n\t\tMAX_BACKOFF_MS,\n\t\tMath.max(FLUSH_DELAY_MS, pending.retryDelayMs * 2),\n\t);\n}\n\nfunction getPendingSession(sessionKey: string): PendingSession {\n\tconst existing = pendingBySession.get(sessionKey);\n\tif (existing) return existing;\n\tconst pending: PendingSession = {\n\t\tsessionKey,\n\t\tstate: null,\n\t\tevents: [],\n\t\tflushTimer: null,\n\t\tflushInFlight: false,\n\t\tblockedUntil: null,\n\t\tretryDelayMs: FLUSH_DELAY_MS,\n\t\tupdatedAt: Date.now(),\n\t};\n\tpendingBySession.set(sessionKey, pending);\n\treturn pending;\n}\n\nfunction scheduleFlush(\n\tpending: PendingSession,\n\tdelayMs = FLUSH_DELAY_MS,\n): void {\n\tif (pending.flushTimer) return;\n\tconst now = Date.now();\n\tconst blockedDelay =\n\t\tpending.blockedUntil && pending.blockedUntil > now\n\t\t\t? pending.blockedUntil - now\n\t\t\t: 0;\n\tconst actualDelay = Math.max(delayMs, blockedDelay);\n\tpending.flushTimer = setTimeout(() => {\n\t\tpending.flushTimer = null;\n\t\tvoid flushSession(pending);\n\t}, actualDelay);\n}\n\nfunction requeueState(\n\tpending: PendingSession,\n\tstate: Record<string, JsonValue>,\n): void {\n\tconst mergedState = { ...state, ...(pending.state ?? {}) };\n\tconst fittedState = fitJsonToBytes(\n\t\tmergedState,\n\t\tTARGET_MAX_BODY_BYTES,\n\t\tSTATE_TRIM_KEYS,\n\t);\n\tif (fittedState.trimmed) {\n\t\tqueueStats.trimmedStates += 1;\n\t}\n\tif (\n\t\tfittedState.value &&\n\t\ttypeof fittedState.value === \"object\" &&\n\t\t!Array.isArray(fittedState.value)\n\t) {\n\t\tpending.state = fittedState.value as Record<string, JsonValue>;\n\t} else {\n\t\tpending.state = state;\n\t}\n}\n\nfunction requeueEvents(\n\tpending: PendingSession,\n\tevents: SharedMemoryEvent[],\n): void {\n\tpending.events = events.concat(pending.events).slice(-MAX_PENDING_EVENTS);\n}\n\nasync function flushSession(pending: PendingSession): Promise<void> {\n\tif (pending.flushInFlight) {\n\t\tscheduleFlush(pending);\n\t\treturn;\n\t}\n\tconst now = Date.now();\n\tif (pending.blockedUntil && pending.blockedUntil > now) {\n\t\tscheduleFlush(pending, pending.blockedUntil - now);\n\t\treturn;\n\t}\n\tpending.blockedUntil = null;\n\tif (!pending.state && pending.events.length === 0) {\n\t\tpendingBySession.delete(pending.sessionKey);\n\t\treturn;\n\t}\n\n\tconst config = readConfig();\n\tif (!config) {\n\t\tpending.retryDelayMs = Math.min(\n\t\t\tMAX_BACKOFF_MS,\n\t\t\tMath.max(FLUSH_DELAY_MS, pending.retryDelayMs * 2),\n\t\t);\n\t\tconst jitter = Math.floor(Math.random() * 100);\n\t\tscheduleFlush(pending, pending.retryDelayMs + jitter);\n\t\treturn;\n\t}\n\n\tpending.flushInFlight = true;\n\tconst state = pending.state;\n\tconst events = pending.events.slice();\n\tpending.state = null;\n\tpending.events = [];\n\n\ttry {\n\t\tconst capabilities = await getCapabilities(config);\n\t\tawait sendSyncBatches(\n\t\t\tconfig,\n\t\t\tpending.sessionKey,\n\t\t\tstate,\n\t\t\tevents,\n\t\t\tcapabilities,\n\t\t);\n\t\tpending.retryDelayMs = FLUSH_DELAY_MS;\n\t\tpending.updatedAt = Date.now();\n\t\tschedulePersist();\n\t} catch (error) {\n\t\tconst classification = classifyError(error);\n\t\tif (classification === \"auth\") {\n\t\t\tif (state) requeueState(pending, state);\n\t\t\tif (events.length) requeueEvents(pending, events);\n\t\t\tpending.retryDelayMs = AUTH_FAILURE_COOLDOWN_MS;\n\t\t\tpending.blockedUntil = Date.now() + AUTH_FAILURE_COOLDOWN_MS;\n\t\t\tpending.updatedAt = Date.now();\n\t\t\tif (error instanceof SharedMemoryError) {\n\t\t\t\tlogAuthFailureOnce(config, error);\n\t\t\t}\n\t\t\tschedulePersist();\n\t\t} else if (classification === \"drop\") {\n\t\t\tif (state) queueStats.droppedStates += 1;\n\t\t\tif (events.length) queueStats.droppedEvents += events.length;\n\t\t\tpending.retryDelayMs = FLUSH_DELAY_MS;\n\t\t\tpending.blockedUntil = null;\n\t\t\tpending.updatedAt = Date.now();\n\t\t\tschedulePersist();\n\t\t\tlogger.warn(\"Dropped shared memory update after non-retriable error\", {\n\t\t\t\terror,\n\t\t\t});\n\t\t} else {\n\t\t\tif (state) requeueState(pending, state);\n\t\t\tif (events.length) requeueEvents(pending, events);\n\t\t\tpending.retryDelayMs = resolveRetryDelayMs(pending, error);\n\t\t\tpending.updatedAt = Date.now();\n\t\t\tschedulePersist();\n\t\t\tlogger.debug(\"Shared memory update failed\", { error });\n\t\t}\n\t} finally {\n\t\tpending.flushInFlight = false;\n\t\tif (pending.state || pending.events.length) {\n\t\t\tconst jitter = Math.floor(Math.random() * 100);\n\t\t\tscheduleFlush(pending, pending.retryDelayMs + jitter);\n\t\t} else {\n\t\t\tpendingBySession.delete(pending.sessionKey);\n\t\t\tschedulePersist();\n\t\t}\n\t}\n}\n\nexport function queueSharedMemoryUpdate(update: SharedMemoryUpdate): void {\n\tconst config = readConfig();\n\tif (!config) {\n\t\tif (!missingConfigLogged) {\n\t\t\tmissingConfigLogged = true;\n\t\t\tlogger.debug(\"Shared memory update skipped: missing config\");\n\t\t}\n\t\tauthFailureSignature = null;\n\t\treturn;\n\t}\n\tmissingConfigLogged = false;\n\tconst sessionKey = config.sessionIdOverride ?? update.sessionId;\n\tconst pending = getPendingSession(sessionKey);\n\n\tif (update.state) {\n\t\tconst scan = scanOutboundSensitiveContent(update.state);\n\t\tif (scan.blockingFindings.length > 0) {\n\t\t\tqueueStats.droppedStates += 1;\n\t\t\tlogger.warn(\"Blocked shared memory state containing sensitive content\", {\n\t\t\t\tsessionId: sessionKey,\n\t\t\t\tfindings: summarizeOutboundSensitiveFindings(scan.blockingFindings),\n\t\t\t});\n\t\t} else {\n\t\t\tconst mergedState = {\n\t\t\t\t...(pending.state ?? {}),\n\t\t\t\t...update.state,\n\t\t\t\tinstanceId,\n\t\t\t\tsource: \"maestro\",\n\t\t\t};\n\t\t\tconst fitted = fitJsonToBytes(\n\t\t\t\tmergedState,\n\t\t\t\tTARGET_MAX_BODY_BYTES,\n\t\t\t\tSTATE_TRIM_KEYS,\n\t\t\t);\n\t\t\tif (fitted.trimmed) {\n\t\t\t\tqueueStats.trimmedStates += 1;\n\t\t\t}\n\t\t\tif (\n\t\t\t\tfitted.value &&\n\t\t\t\ttypeof fitted.value === \"object\" &&\n\t\t\t\t!Array.isArray(fitted.value)\n\t\t\t) {\n\t\t\t\tpending.state = fitted.value as Record<string, JsonValue>;\n\t\t\t} else {\n\t\t\t\tpending.state = {\n\t\t\t\t\t...(pending.state ?? {}),\n\t\t\t\t\tinstanceId,\n\t\t\t\t\tsource: \"maestro\",\n\t\t\t\t};\n\t\t\t}\n\t\t\tpending.updatedAt = Date.now();\n\t\t}\n\t}\n\tif (update.event) {\n\t\tconst scan = scanOutboundSensitiveContent(update.event.payload ?? null);\n\t\tif (scan.blockingFindings.length > 0) {\n\t\t\tqueueStats.droppedEvents += 1;\n\t\t\tpending.updatedAt = Date.now();\n\t\t\tscheduleFlush(pending);\n\t\t\tschedulePersist();\n\t\t\tlogger.warn(\"Blocked shared memory event containing sensitive content\", {\n\t\t\t\tsessionId: sessionKey,\n\t\t\t\ttype: update.event.type,\n\t\t\t\tfindings: summarizeOutboundSensitiveFindings(scan.blockingFindings),\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tconst normalizedType = normalizeEventType(update.event.type);\n\t\tif (!normalizedType) {\n\t\t\tqueueStats.droppedEvents += 1;\n\t\t\tpending.updatedAt = Date.now();\n\t\t\tscheduleFlush(pending);\n\t\t\tschedulePersist();\n\t\t\tlogger.debug(\"Dropped shared memory event with invalid type\", {\n\t\t\t\ttype: update.event.type,\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tconst payload: Record<string, JsonValue> =\n\t\t\tupdate.event.payload &&\n\t\t\ttypeof update.event.payload === \"object\" &&\n\t\t\t!Array.isArray(update.event.payload)\n\t\t\t\t? {\n\t\t\t\t\t\t...(update.event.payload as Record<string, JsonValue>),\n\t\t\t\t\t\tinstanceId,\n\t\t\t\t\t\tsource: \"maestro\",\n\t\t\t\t\t}\n\t\t\t\t: {\n\t\t\t\t\t\tinstanceId,\n\t\t\t\t\t\tsource: \"maestro\",\n\t\t\t\t\t\tvalue: update.event.payload ?? null,\n\t\t\t\t\t};\n\t\tconst fittedPayload = fitJsonToBytes(payload, currentEventPayloadLimit(), [\n\t\t\t\"summary\",\n\t\t\t\"content\",\n\t\t\t\"preview\",\n\t\t\t\"text\",\n\t\t\t\"message\",\n\t\t\t\"body\",\n\t\t\t\"markdown\",\n\t\t\t\"html\",\n\t\t]);\n\t\tif (fittedPayload.trimmed) {\n\t\t\tqueueStats.trimmedEvents += 1;\n\t\t}\n\t\tpending.events.push({\n\t\t\t...update.event,\n\t\t\ttype: normalizedType,\n\t\t\tpayload: fittedPayload.value as JsonValue,\n\t\t\tid: update.event.id ?? nextEventId(`maestro-${sessionKey}`),\n\t\t});\n\t\tif (pending.events.length > MAX_PENDING_EVENTS) {\n\t\t\tpending.events = pending.events.slice(-MAX_PENDING_EVENTS);\n\t\t}\n\t\tpending.updatedAt = Date.now();\n\t}\n\n\tscheduleFlush(pending);\n\tschedulePersist();\n}\n\nfunction prepareRequestBody(\n\tpayload: Record<string, JsonValue>,\n\tmaxBytes: number,\n\tsupportsGzip: boolean,\n\tapiKey?: string,\n\trequestId?: string,\n): { body: string | Uint8Array; headers: Headers } {\n\tconst shrunk = shrinkValue(payload) as Record<string, JsonValue>;\n\tlet candidate = shrunk;\n\tlet json = JSON.stringify(candidate);\n\tif (byteLength(json) > maxBytes && \"stats\" in candidate) {\n\t\tconst { stats: _stats, ...rest } = candidate;\n\t\tconst withoutStats = rest as Record<string, JsonValue>;\n\t\tconst withoutStatsJson = JSON.stringify(withoutStats);\n\t\tif (byteLength(withoutStatsJson) <= maxBytes) {\n\t\t\tcandidate = withoutStats;\n\t\t\tjson = withoutStatsJson;\n\t\t}\n\t}\n\tconst headers = buildHeaders(apiKey, requestId);\n\tif (!supportsGzip || byteLength(json) < MIN_GZIP_BYTES) {\n\t\treturn { body: json, headers };\n\t}\n\ttry {\n\t\tconst zipped = gzipSync(Buffer.from(json));\n\t\theaders.set(\"Content-Encoding\", \"gzip\");\n\t\tqueueStats.gzipRequests += 1;\n\t\treturn {\n\t\t\tbody: new Uint8Array(zipped.buffer, zipped.byteOffset, zipped.byteLength),\n\t\t\theaders,\n\t\t};\n\t} catch {\n\t\treturn { body: json, headers };\n\t}\n}\n\nloadPersistedQueue();\n\nexport function invalidateSharedMemoryCapabilities(): void {\n\tinvalidateCapabilitiesCache();\n}\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { LoadedSkill } from "./loader.js";
|
|
2
|
+
export type SkillArtifactSource = LoadedSkill["sourceType"];
|
|
3
|
+
export interface SkillArtifactMetadata {
|
|
4
|
+
name: string;
|
|
5
|
+
hash: string;
|
|
6
|
+
source: SkillArtifactSource;
|
|
7
|
+
artifactId?: string;
|
|
8
|
+
version?: string;
|
|
9
|
+
sourcePath?: string;
|
|
10
|
+
scope?: string;
|
|
11
|
+
workspaceId?: string;
|
|
12
|
+
ownerId?: string;
|
|
13
|
+
}
|
|
14
|
+
export declare function buildSkillArtifactMetadata(skill: LoadedSkill): SkillArtifactMetadata;
|
|
15
|
+
export declare function getSkillArtifactMetadataFromDetails(details: unknown): SkillArtifactMetadata | undefined;
|
|
16
|
+
//# sourceMappingURL=artifact-metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact-metadata.d.ts","sourceRoot":"","sources":["../../src/skills/artifact-metadata.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,MAAM,mBAAmB,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;AAE5D,MAAM,WAAW,qBAAqB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,mBAAmB,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AA8DD,wBAAgB,0BAA0B,CACzC,KAAK,EAAE,WAAW,GAChB,qBAAqB,CA6BvB;AAED,wBAAgB,mCAAmC,CAClD,OAAO,EAAE,OAAO,GACd,qBAAqB,GAAG,SAAS,CAOnC"}
|