@evalops/maestro 0.10.50 → 0.10.51
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/dist/agent/agent-outcome.d.ts +54 -0
- package/dist/agent/agent-outcome.d.ts.map +1 -0
- package/dist/agent/agent-outcome.js +142 -0
- package/dist/agent/agent-outcome.js.map +1 -0
- package/dist/agent/agent-resume.d.ts.map +1 -1
- package/dist/agent/agent-resume.js +3 -3
- package/dist/agent/agent-resume.js.map +1 -1
- package/dist/agent/agent-run-summary.d.ts +37 -0
- package/dist/agent/agent-run-summary.d.ts.map +1 -0
- package/dist/agent/agent-run-summary.js +15 -0
- package/dist/agent/agent-run-summary.js.map +1 -0
- package/dist/agent/agent-work-board.d.ts +82 -0
- package/dist/agent/agent-work-board.d.ts.map +1 -0
- package/dist/agent/agent-work-board.js +312 -0
- package/dist/agent/agent-work-board.js.map +1 -0
- package/dist/agent/auto-compaction.d.ts +7 -2
- package/dist/agent/auto-compaction.d.ts.map +1 -1
- package/dist/agent/auto-compaction.js +23 -10
- package/dist/agent/auto-compaction.js.map +1 -1
- package/dist/agent/mission-artifacts.d.ts +62 -0
- package/dist/agent/mission-artifacts.d.ts.map +1 -0
- package/dist/agent/mission-artifacts.js +438 -0
- package/dist/agent/mission-artifacts.js.map +1 -0
- package/dist/agent/mission-manifest.d.ts +139 -3
- package/dist/agent/mission-manifest.d.ts.map +1 -1
- package/dist/agent/mission-manifest.js +549 -3
- package/dist/agent/mission-manifest.js.map +1 -1
- package/dist/agent/mission-store.d.ts +80 -0
- package/dist/agent/mission-store.d.ts.map +1 -0
- package/dist/agent/mission-store.js +603 -0
- package/dist/agent/mission-store.js.map +1 -0
- package/dist/agent/modes.d.ts +2 -2
- package/dist/agent/modes.d.ts.map +1 -1
- package/dist/agent/modes.js +10 -3
- package/dist/agent/modes.js.map +1 -1
- package/dist/agent/providers/codex-app-server.d.ts.map +1 -1
- package/dist/agent/providers/codex-app-server.js +1 -3
- package/dist/agent/providers/codex-app-server.js.map +1 -1
- package/dist/agent/providers/google-gemini-cli.js +203 -107
- package/dist/agent/providers/google.js +100 -41
- package/dist/agent/providers/scripted.d.ts.map +1 -1
- package/dist/agent/providers/scripted.js +1 -3
- package/dist/agent/providers/scripted.js.map +1 -1
- package/dist/agent/providers/validation.d.ts.map +1 -1
- package/dist/agent/providers/validation.js +1 -3
- package/dist/agent/providers/validation.js.map +1 -1
- package/dist/agent/providers/vertex.js +203 -107
- package/dist/agent/snapshot-store.d.ts +32 -0
- package/dist/agent/snapshot-store.d.ts.map +1 -0
- package/dist/agent/snapshot-store.js +195 -0
- package/dist/agent/snapshot-store.js.map +1 -0
- package/dist/agent/specialist-profiles.d.ts +36 -0
- package/dist/agent/specialist-profiles.d.ts.map +1 -0
- package/dist/agent/specialist-profiles.js +159 -0
- package/dist/agent/specialist-profiles.js.map +1 -0
- package/dist/agent/subagent-specs.d.ts +4 -1
- package/dist/agent/subagent-specs.d.ts.map +1 -1
- package/dist/agent/subagent-specs.js +81 -8
- package/dist/agent/subagent-specs.js.map +1 -1
- package/dist/agent/swarm/coverage-gate.d.ts +37 -0
- package/dist/agent/swarm/coverage-gate.d.ts.map +1 -0
- package/dist/agent/swarm/coverage-gate.js +48 -0
- package/dist/agent/swarm/coverage-gate.js.map +1 -0
- package/dist/agent/swarm/executor.d.ts +1 -0
- package/dist/agent/swarm/executor.d.ts.map +1 -1
- package/dist/agent/swarm/executor.js +151 -15
- package/dist/agent/swarm/executor.js.map +1 -1
- package/dist/agent/swarm/orchestrator-prompt.d.ts +25 -0
- package/dist/agent/swarm/orchestrator-prompt.d.ts.map +1 -0
- package/dist/agent/swarm/orchestrator-prompt.js +48 -0
- package/dist/agent/swarm/orchestrator-prompt.js.map +1 -0
- package/dist/agent/swarm/plan-parser.d.ts.map +1 -1
- package/dist/agent/swarm/plan-parser.js +27 -2
- package/dist/agent/swarm/plan-parser.js.map +1 -1
- package/dist/agent/swarm/types.d.ts +17 -0
- package/dist/agent/swarm/types.d.ts.map +1 -1
- package/dist/agent/swarm/types.js.map +1 -1
- package/dist/agent/swarm/validation-directive.d.ts +21 -0
- package/dist/agent/swarm/validation-directive.d.ts.map +1 -0
- package/dist/agent/swarm/validation-directive.js +25 -0
- package/dist/agent/swarm/validation-directive.js.map +1 -0
- package/dist/agent/transport/tool-execution-bridge.d.ts.map +1 -1
- package/dist/agent/transport/tool-execution-bridge.js +4 -1
- package/dist/agent/transport/tool-execution-bridge.js.map +1 -1
- package/dist/api/enterprise-routes.d.ts.map +1 -1
- package/dist/api/enterprise-routes.js +87 -10
- package/dist/api/enterprise-routes.js.map +1 -1
- package/dist/api/org-settings-merge.d.ts +12 -0
- package/dist/api/org-settings-merge.d.ts.map +1 -0
- package/dist/api/org-settings-merge.js +38 -0
- package/dist/api/org-settings-merge.js.map +1 -0
- package/dist/api/user-settings-merge.d.ts +16 -0
- package/dist/api/user-settings-merge.d.ts.map +1 -0
- package/dist/api/user-settings-merge.js +37 -0
- package/dist/api/user-settings-merge.js.map +1 -0
- package/dist/app-server/daemon-lifecycle-api.d.ts.map +1 -1
- package/dist/app-server/daemon-lifecycle-api.js +1 -3
- package/dist/app-server/daemon-lifecycle-api.js.map +1 -1
- package/dist/app-server/external-agent-import-api.d.ts.map +1 -1
- package/dist/app-server/external-agent-import-api.js +1 -3
- package/dist/app-server/external-agent-import-api.js.map +1 -1
- package/dist/app-server/network-governance-api.d.ts.map +1 -1
- package/dist/app-server/network-governance-api.js +1 -3
- package/dist/app-server/network-governance-api.js.map +1 -1
- package/dist/app-server/plugin-bundle-api.d.ts.map +1 -1
- package/dist/app-server/plugin-bundle-api.js +1 -3
- package/dist/app-server/plugin-bundle-api.js.map +1 -1
- package/dist/app-server/policy-control-api.d.ts.map +1 -1
- package/dist/app-server/policy-control-api.js +1 -3
- package/dist/app-server/policy-control-api.js.map +1 -1
- package/dist/app-server/protocol-modes-api.d.ts.map +1 -1
- package/dist/app-server/protocol-modes-api.js +1 -3
- package/dist/app-server/protocol-modes-api.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 +15 -0
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/commands/a2a.d.ts.map +1 -1
- package/dist/cli/commands/a2a.js +1 -3
- package/dist/cli/commands/a2a.js.map +1 -1
- package/dist/cli/commands/agents.d.ts +4 -0
- package/dist/cli/commands/agents.d.ts.map +1 -1
- package/dist/cli/commands/agents.js +149 -0
- package/dist/cli/commands/agents.js.map +1 -1
- package/dist/cli/commands/mission.d.ts +4 -0
- package/dist/cli/commands/mission.d.ts.map +1 -0
- package/dist/cli/commands/mission.js +196 -0
- package/dist/cli/commands/mission.js.map +1 -0
- package/dist/cli/commands/value.d.ts +10 -0
- package/dist/cli/commands/value.d.ts.map +1 -0
- package/dist/cli/commands/value.js +33 -0
- package/dist/cli/commands/value.js.map +1 -0
- package/dist/cli/headless-protocol.d.ts.map +1 -1
- package/dist/cli/headless-protocol.js +1 -3
- package/dist/cli/headless-protocol.js.map +1 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +10 -0
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/system-prompt.d.ts.map +1 -1
- package/dist/cli/system-prompt.js +38 -7
- package/dist/cli/system-prompt.js.map +1 -1
- package/dist/cli-runtime.js +7756 -2800
- package/dist/cli-tui/client-tools/client-tool-controller.d.ts.map +1 -1
- package/dist/cli-tui/client-tools/client-tool-controller.js +1 -3
- package/dist/cli-tui/client-tools/client-tool-controller.js.map +1 -1
- package/dist/cli-tui/commands/undo-handlers.d.ts.map +1 -1
- package/dist/cli-tui/commands/undo-handlers.js +7 -2
- package/dist/cli-tui/commands/undo-handlers.js.map +1 -1
- package/dist/cli-tui/tui-renderer/skills-controller.d.ts +3 -0
- package/dist/cli-tui/tui-renderer/skills-controller.d.ts.map +1 -1
- package/dist/cli-tui/tui-renderer/skills-controller.js +77 -33
- package/dist/cli-tui/tui-renderer/skills-controller.js.map +1 -1
- package/dist/codex/app-server-client.d.ts.map +1 -1
- package/dist/codex/app-server-client.js +1 -3
- package/dist/codex/app-server-client.js.map +1 -1
- package/dist/codex/compatibility.d.ts.map +1 -1
- package/dist/codex/compatibility.js +1 -3
- package/dist/codex/compatibility.js.map +1 -1
- package/dist/codex/subagent-dispatch-table.d.ts +8 -0
- package/dist/codex/subagent-dispatch-table.d.ts.map +1 -1
- package/dist/codex/subagent-dispatch-table.js +23 -0
- package/dist/codex/subagent-dispatch-table.js.map +1 -1
- package/dist/context/manifest.d.ts.map +1 -1
- package/dist/context/manifest.js +1 -3
- package/dist/context/manifest.js.map +1 -1
- package/dist/conversation/render-model.d.ts +0 -36
- package/dist/conversation/render-model.d.ts.map +1 -1
- package/dist/conversation/render-model.js +1 -3
- package/dist/conversation/render-model.js.map +1 -1
- package/dist/customer-value/ambient-learning.d.ts +75 -0
- package/dist/customer-value/ambient-learning.d.ts.map +1 -0
- package/dist/customer-value/ambient-learning.js +472 -0
- package/dist/customer-value/ambient-learning.js.map +1 -0
- package/dist/customer-value/internal-helpers.d.ts +13 -0
- package/dist/customer-value/internal-helpers.d.ts.map +1 -0
- package/dist/customer-value/internal-helpers.js +70 -0
- package/dist/customer-value/internal-helpers.js.map +1 -0
- package/dist/customer-value/report.d.ts +282 -0
- package/dist/customer-value/report.d.ts.map +1 -0
- package/dist/customer-value/report.js +2085 -0
- package/dist/customer-value/report.js.map +1 -0
- package/dist/db/schema.d.ts +5 -1
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js.map +1 -1
- package/dist/evalops/agent-bootstrap.d.ts.map +1 -1
- package/dist/evalops/agent-bootstrap.js +1 -3
- package/dist/evalops/agent-bootstrap.js.map +1 -1
- package/dist/evalops/agent-mcp-metadata.d.ts.map +1 -1
- package/dist/evalops/agent-mcp-metadata.js +1 -3
- package/dist/evalops/agent-mcp-metadata.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/installers/maestro-review-workflow.d.ts +38 -0
- package/dist/installers/maestro-review-workflow.d.ts.map +1 -0
- package/dist/installers/maestro-review-workflow.js +163 -0
- package/dist/installers/maestro-review-workflow.js.map +1 -0
- package/dist/load-env.d.ts.map +1 -1
- package/dist/load-env.js +2 -1
- package/dist/load-env.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +92 -3
- package/dist/main.js.map +1 -1
- package/dist/mcp/config.d.ts.map +1 -1
- package/dist/mcp/config.js +1 -3
- package/dist/mcp/config.js.map +1 -1
- package/dist/mcp/elicitation.d.ts.map +1 -1
- package/dist/mcp/elicitation.js +1 -3
- package/dist/mcp/elicitation.js.map +1 -1
- package/dist/mcp/official-registry.d.ts.map +1 -1
- package/dist/mcp/official-registry.js +1 -3
- package/dist/mcp/official-registry.js.map +1 -1
- package/dist/mcp/workspace-trust.d.ts.map +1 -1
- package/dist/mcp/workspace-trust.js +1 -3
- package/dist/mcp/workspace-trust.js.map +1 -1
- package/dist/memory/service-client.d.ts.map +1 -1
- package/dist/memory/service-client.js +1 -3
- package/dist/memory/service-client.js.map +1 -1
- package/dist/models/config-loader.d.ts.map +1 -1
- package/dist/models/config-loader.js +1 -3
- package/dist/models/config-loader.js.map +1 -1
- package/dist/node_modules/@evalops/contracts/dist/index.d.ts +1 -0
- package/dist/node_modules/@evalops/contracts/dist/index.d.ts.map +1 -1
- package/dist/node_modules/@evalops/contracts/dist/index.js +1 -0
- package/dist/node_modules/@evalops/contracts/dist/index.js.map +1 -1
- package/dist/node_modules/@evalops/contracts/dist/maestro-settings.d.ts +61 -0
- package/dist/node_modules/@evalops/contracts/dist/maestro-settings.d.ts.map +1 -0
- package/dist/node_modules/@evalops/contracts/dist/maestro-settings.js +183 -0
- package/dist/node_modules/@evalops/contracts/dist/maestro-settings.js.map +1 -0
- package/dist/node_modules/@evalops/contracts/package.json +1 -1
- package/dist/node_modules/@evalops/tui/package.json +1 -1
- package/dist/oauth/connectors.d.ts.map +1 -1
- package/dist/oauth/connectors.js +1 -3
- package/dist/oauth/connectors.js.map +1 -1
- package/dist/oauth/evalops.d.ts.map +1 -1
- package/dist/oauth/evalops.js +1 -3
- package/dist/oauth/evalops.js.map +1 -1
- package/dist/platform/a2a-client.d.ts.map +1 -1
- package/dist/platform/a2a-client.js +1 -3
- package/dist/platform/a2a-client.js.map +1 -1
- package/dist/platform/a2a-cockpit.d.ts +1 -0
- package/dist/platform/a2a-cockpit.d.ts.map +1 -1
- package/dist/platform/a2a-cockpit.js +42 -11
- package/dist/platform/a2a-cockpit.js.map +1 -1
- package/dist/platform/a2a-completion-audit.d.ts +1 -1
- package/dist/platform/a2a-completion-audit.d.ts.map +1 -1
- package/dist/platform/a2a-completion-audit.js +7 -11
- package/dist/platform/a2a-completion-audit.js.map +1 -1
- package/dist/platform/a2a-maestro-peer.js +16 -0
- package/dist/platform/a2a-maestro-peer.js.map +1 -1
- package/dist/platform/a2a-peer-pairing.d.ts.map +1 -1
- package/dist/platform/a2a-peer-pairing.js +1 -3
- package/dist/platform/a2a-peer-pairing.js.map +1 -1
- package/dist/platform/a2a-peer-registry.d.ts.map +1 -1
- package/dist/platform/a2a-peer-registry.js +1 -3
- package/dist/platform/a2a-peer-registry.js.map +1 -1
- package/dist/platform/a2a-task-ledger.d.ts +20 -0
- package/dist/platform/a2a-task-ledger.d.ts.map +1 -1
- package/dist/platform/a2a-task-ledger.js +207 -11
- package/dist/platform/a2a-task-ledger.js.map +1 -1
- package/dist/platform/a2a-work-graph.d.ts.map +1 -1
- package/dist/platform/a2a-work-graph.js +1 -3
- package/dist/platform/a2a-work-graph.js.map +1 -1
- package/dist/platform/operating-layer.d.ts.map +1 -1
- package/dist/platform/operating-layer.js +14 -8
- package/dist/platform/operating-layer.js.map +1 -1
- package/dist/platform/tool-execution-client.d.ts.map +1 -1
- package/dist/platform/tool-execution-client.js +19 -2
- package/dist/platform/tool-execution-client.js.map +1 -1
- package/dist/providers/auth.d.ts.map +1 -1
- package/dist/providers/auth.js +1 -3
- package/dist/providers/auth.js.map +1 -1
- package/dist/runtime/env.d.ts +9 -1
- package/dist/runtime/env.d.ts.map +1 -1
- package/dist/runtime/env.js +63 -1
- package/dist/runtime/env.js.map +1 -1
- package/dist/safety/policy.d.ts.map +1 -1
- package/dist/safety/policy.js +1 -4
- package/dist/safety/policy.js.map +1 -1
- package/dist/sandbox/docker-sandbox.d.ts.map +1 -1
- package/dist/sandbox/docker-sandbox.js +6 -1
- package/dist/sandbox/docker-sandbox.js.map +1 -1
- package/dist/server/handlers/hosted-runner-drain.d.ts.map +1 -1
- package/dist/server/handlers/hosted-runner-drain.js +1 -3
- package/dist/server/handlers/hosted-runner-drain.js.map +1 -1
- package/dist/server/handlers/platform-a2a-push.d.ts.map +1 -1
- package/dist/server/handlers/platform-a2a-push.js +53 -2
- package/dist/server/handlers/platform-a2a-push.js.map +1 -1
- package/dist/server/handlers/runtime-app-server-ws.d.ts.map +1 -1
- package/dist/server/handlers/runtime-app-server-ws.js +1 -3
- package/dist/server/handlers/runtime-app-server-ws.js.map +1 -1
- package/dist/server/headless-runtime-service.d.ts +16 -0
- package/dist/server/headless-runtime-service.d.ts.map +1 -1
- package/dist/server/headless-runtime-service.js +232 -206
- package/dist/server/headless-runtime-service.js.map +1 -1
- package/dist/server/hosted-agent-runtime-progress.d.ts.map +1 -1
- package/dist/server/hosted-agent-runtime-progress.js +12 -3
- package/dist/server/hosted-agent-runtime-progress.js.map +1 -1
- package/dist/server/pending-request-payload.d.ts.map +1 -1
- package/dist/server/pending-request-payload.js +1 -3
- package/dist/server/pending-request-payload.js.map +1 -1
- package/dist/server/route-auth.d.ts.map +1 -1
- package/dist/server/route-auth.js +2 -0
- package/dist/server/route-auth.js.map +1 -1
- package/dist/server/session-serialization.d.ts.map +1 -1
- package/dist/server/session-serialization.js +1 -3
- package/dist/server/session-serialization.js.map +1 -1
- package/dist/services/compliance/normalize.d.ts.map +1 -1
- package/dist/services/compliance/normalize.js +1 -3
- package/dist/services/compliance/normalize.js.map +1 -1
- package/dist/services/intelligent-router/normalize.d.ts.map +1 -1
- package/dist/services/intelligent-router/normalize.js +1 -3
- package/dist/services/intelligent-router/normalize.js.map +1 -1
- package/dist/services/revenue-attribution/normalize.d.ts.map +1 -1
- package/dist/services/revenue-attribution/normalize.js +1 -3
- package/dist/services/revenue-attribution/normalize.js.map +1 -1
- package/dist/services/traces/normalize.d.ts.map +1 -1
- package/dist/services/traces/normalize.js +1 -3
- package/dist/services/traces/normalize.js.map +1 -1
- package/dist/services/workspace-config/normalize.d.ts.map +1 -1
- package/dist/services/workspace-config/normalize.js +1 -3
- package/dist/services/workspace-config/normalize.js.map +1 -1
- package/dist/skills/composer.d.ts.map +1 -1
- package/dist/skills/composer.js +13 -1
- package/dist/skills/composer.js.map +1 -1
- package/dist/skills/index.d.ts +1 -0
- package/dist/skills/index.d.ts.map +1 -1
- package/dist/skills/index.js +1 -0
- package/dist/skills/index.js.map +1 -1
- package/dist/skills/learned-guidelines.d.ts +33 -0
- package/dist/skills/learned-guidelines.d.ts.map +1 -0
- package/dist/skills/learned-guidelines.js +291 -0
- package/dist/skills/learned-guidelines.js.map +1 -0
- package/dist/skills/linter.d.ts.map +1 -1
- package/dist/skills/linter.js +1 -3
- package/dist/skills/linter.js.map +1 -1
- package/dist/skills/runtime-activation.d.ts +1 -0
- package/dist/skills/runtime-activation.d.ts.map +1 -1
- package/dist/skills/runtime-activation.js +2 -3
- package/dist/skills/runtime-activation.js.map +1 -1
- package/dist/skills/tool.d.ts.map +1 -1
- package/dist/skills/tool.js +26 -21
- package/dist/skills/tool.js.map +1 -1
- package/dist/skills/trust-cache.d.ts +7 -0
- package/dist/skills/trust-cache.d.ts.map +1 -1
- package/dist/skills/trust-cache.js +16 -0
- package/dist/skills/trust-cache.js.map +1 -1
- package/dist/telemetry/agent-workforce-native-event.d.ts.map +1 -1
- package/dist/telemetry/agent-workforce-native-event.js +1 -3
- package/dist/telemetry/agent-workforce-native-event.js.map +1 -1
- package/dist/telemetry/maestro-event-bus.d.ts.map +1 -1
- package/dist/telemetry/maestro-event-bus.js +42 -81
- package/dist/telemetry/maestro-event-bus.js.map +1 -1
- package/dist/telemetry/maestro-platform-replay-fixture.d.ts.map +1 -1
- package/dist/telemetry/maestro-platform-replay-fixture.js +1 -3
- package/dist/telemetry/maestro-platform-replay-fixture.js.map +1 -1
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +54 -43
- package/dist/telemetry.js.map +1 -1
- package/dist/theme/theme-loader.d.ts.map +1 -1
- package/dist/theme/theme-loader.js +1 -3
- package/dist/theme/theme-loader.js.map +1 -1
- package/dist/tools/apply-patch.d.ts.map +1 -1
- package/dist/tools/apply-patch.js +76 -8
- package/dist/tools/apply-patch.js.map +1 -1
- package/dist/tools/diff-preview.d.ts.map +1 -1
- package/dist/tools/diff-preview.js +10 -1
- package/dist/tools/diff-preview.js.map +1 -1
- package/dist/tools/edit.d.ts.map +1 -1
- package/dist/tools/edit.js +17 -0
- package/dist/tools/edit.js.map +1 -1
- package/dist/tools/write.d.ts.map +1 -1
- package/dist/tools/write.js +9 -0
- package/dist/tools/write.js.map +1 -1
- package/dist/undo/tracker.d.ts +5 -0
- package/dist/undo/tracker.d.ts.map +1 -1
- package/dist/undo/tracker.js +13 -0
- package/dist/undo/tracker.js.map +1 -1
- package/dist/utils/fs.d.ts +1 -1
- package/dist/utils/fs.d.ts.map +1 -1
- package/dist/utils/fs.js +29 -2
- package/dist/utils/fs.js.map +1 -1
- package/dist/utils/git-stash.d.ts.map +1 -1
- package/dist/utils/git-stash.js +15 -8
- package/dist/utils/git-stash.js.map +1 -1
- package/dist/utils/json.d.ts +11 -0
- package/dist/utils/json.d.ts.map +1 -1
- package/dist/utils/json.js +9 -0
- package/dist/utils/json.js.map +1 -1
- package/dist/utils/shell-env.d.ts.map +1 -1
- package/dist/utils/shell-env.js +2 -0
- package/dist/utils/shell-env.js.map +1 -1
- package/dist/utils/url-extractor-git.d.ts +26 -0
- package/dist/utils/url-extractor-git.d.ts.map +1 -0
- package/dist/utils/url-extractor-git.js +259 -0
- package/dist/utils/url-extractor-git.js.map +1 -0
- package/dist/utils/url-extractor.d.ts.map +1 -1
- package/dist/utils/url-extractor.js +23 -251
- package/dist/utils/url-extractor.js.map +1 -1
- package/dist/version.json +2 -2
- package/package.json +310 -306
- package/skills/incident-triage/SKILL.md +19 -1
- package/skills/install-code-review/SKILL.md +69 -0
- package/skills/security-review/SKILL.md +68 -0
- package/skills/security-review/reference/rubric.md +85 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compatibility.d.ts","sourceRoot":"","sources":["../../src/codex/compatibility.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"compatibility.d.ts","sourceRoot":"","sources":["../../src/codex/compatibility.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAG9C,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAG1C,KAAK,mBAAmB,GAAG,IAAI,CAC9B,IAAI,EACJ,MAAM,GAAG,aAAa,GAAG,YAAY,GAAG,oBAAoB,CAC5D,GAAG;IACH,iBAAiB,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,UAAU,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IAC1C,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACzC,KAAK,EAAE,oBAAoB,EAAE,CAAC;IAC9B,QAAQ,EAAE,uBAAuB,EAAE,CAAC;IACpC,WAAW,EAAE,4BAA4B,EAAE,CAAC;CAC5C,CAAC;AAEF,eAAO,MAAM,8BAA8B;;;;;;;;;CAwBjC,CAAC;AAEX,eAAO,MAAM,gCAAgC,2CAInC,CAAC;AAEX,eAAO,MAAM,4BAA4B,+DAO/B,CAAC;AAEX,eAAO,MAAM,0BAA0B,wHAa7B,CAAC;AAEX,eAAO,MAAM,2BAA2B,uLAiB9B,CAAC;AAEX,eAAO,MAAM,mBAAmB;;;;;;CAMtB,CAAC;AAEX,MAAM,MAAM,oBAAoB,GAAG,MAAM,OAAO,mBAAmB,CAAC;AAYpE,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAEzD;AAED,wBAAgB,uBAAuB,CAAC,KAAK,SAAS;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EACrE,KAAK,EAAE,SAAS,KAAK,EAAE,GACrB,KAAK,EAAE,CAET;AAED,wBAAgB,sBAAsB,CAAC,KAAK,SAAS;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EACpE,KAAK,EAAE,SAAS,KAAK,EAAE,EACvB,WAAW,EAAE,oBAAoB,GAC/B,KAAK,EAAE,CAMT;AAED,wBAAgB,2BAA2B,CAC1C,KAAK,EAAE,MAAM,GAAG,SAAS,GACvB,oBAAoB,CAWtB;AAED,wBAAgB,wBAAwB,IAAI,oBAAoB,EAAE,CAEjE;AAMD,wBAAgB,4BAA4B,CAC3C,KAAK,EAAE,SAAS,mBAAmB,EAAE,GACnC,2BAA2B,CAqC7B;AAED,wBAAgB,6BAA6B,CAC5C,QAAQ,EAAE,SAAS,uBAAuB,EAAE,GAC1C,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAIrB;AAED,wBAAgB,oCAAoC,CACnD,MAAM,EAAE,OAAO,GACb,UAAU,CAyBZ"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isRecord } from "../utils/json.js";
|
|
1
2
|
export const CODEX_DYNAMIC_TOOL_CONFORMANCE = {
|
|
2
3
|
nameMaxLength: 128,
|
|
3
4
|
namespaceMaxLength: 64,
|
|
@@ -394,7 +395,4 @@ function readSchemaType(schema) {
|
|
|
394
395
|
? schema.type
|
|
395
396
|
: undefined;
|
|
396
397
|
}
|
|
397
|
-
function isRecord(value) {
|
|
398
|
-
return Boolean(value && typeof value === "object" && !Array.isArray(value));
|
|
399
|
-
}
|
|
400
398
|
//# sourceMappingURL=compatibility.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compatibility.js","sourceRoot":"","sources":["../../src/codex/compatibility.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Tool } from \"../agent/types.js\";\n\ntype JsonObject = Record<string, unknown>;\ntype AdditionalPropertiesConstraint = boolean | JsonObject;\n\ntype CodexCompatibleTool = Pick<\n\tTool,\n\t\"name\" | \"description\" | \"parameters\" | \"deferApiDefinition\"\n> & {\n\texecutionLocation?: \"server\" | \"client\";\n};\n\nexport type CodexDynamicToolSpec = {\n\tnamespace?: string;\n\tname: string;\n\tdescription: string;\n\tinputSchema: JsonObject;\n\tdeferLoading?: boolean;\n};\n\nexport type CodexCompatibilityDiagnostic = {\n\tseverity: \"info\" | \"warning\" | \"error\";\n\tcode: string;\n\tmessage: string;\n\ttoolName?: string;\n\tcodexName?: string;\n};\n\nexport type CodexDynamicToolBinding = {\n\tcodexName: string;\n\toriginalName: string;\n};\n\nexport type CodexDynamicToolCompilation = {\n\tspecs: CodexDynamicToolSpec[];\n\tbindings: CodexDynamicToolBinding[];\n\tdiagnostics: CodexCompatibilityDiagnostic[];\n};\n\nexport const CODEX_DYNAMIC_TOOL_CONFORMANCE = {\n\tnameMaxLength: 128,\n\tnamespaceMaxLength: 64,\n\tidentifierPattern: /^[a-zA-Z0-9_-]+$/,\n\treservedNamespaces: [\n\t\t\"api_tool\",\n\t\t\"browser\",\n\t\t\"computer\",\n\t\t\"container\",\n\t\t\"file_search\",\n\t\t\"functions\",\n\t\t\"image_gen\",\n\t\t\"multi_tool_use\",\n\t\t\"python\",\n\t\t\"python_user_visible\",\n\t\t\"submodel_delegator\",\n\t\t\"terminal\",\n\t\t\"tool_search\",\n\t\t\"web\",\n\t],\n\treservedNames: [\"mcp\"],\n\treservedNamePrefixes: [\"mcp__\"],\n\tunsupportedTopLevelSchemaKeywords: [\"anyOf\", \"oneOf\", \"allOf\", \"enum\", \"not\"],\n\tdynamicToolCallMethod: \"item/tool/call\",\n} as const;\n\nexport const CODEX_FILE_MUTATION_TOOL_PROFILE = [\n\t\"apply_patch\",\n\t\"edit\",\n\t\"write\",\n] as const;\n\nexport const CODEX_READ_ONLY_TOOL_PROFILE = [\n\t\"read\",\n\t\"list\",\n\t\"find\",\n\t\"search\",\n\t\"diff\",\n\t\"status\",\n] as const;\n\nexport const CODEX_DEFAULT_TOOL_PROFILE = [\n\t\"read\",\n\t\"list\",\n\t\"find\",\n\t\"search\",\n\t\"diff\",\n\t\"bash\",\n\t\"apply_patch\",\n\t\"edit\",\n\t\"write\",\n\t\"todo\",\n\t\"status\",\n\t\"gh_pr\",\n] as const;\n\nexport const CODEX_EXTENDED_TOOL_PROFILE = [\n\t\"read\",\n\t\"list\",\n\t\"find\",\n\t\"search\",\n\t\"parallel_ripgrep\",\n\t\"diff\",\n\t\"bash\",\n\t\"background_tasks\",\n\t\"apply_patch\",\n\t\"edit\",\n\t\"write\",\n\t\"todo\",\n\t\"status\",\n\t\"gh_pr\",\n\t\"gh_issue\",\n\t\"gh_repo\",\n] as const;\n\nexport const CODEX_TOOL_PROFILES = {\n\tlean: CODEX_DEFAULT_TOOL_PROFILE,\n\tdefault: CODEX_DEFAULT_TOOL_PROFILE,\n\t\"read-only\": CODEX_READ_ONLY_TOOL_PROFILE,\n\treadonly: CODEX_READ_ONLY_TOOL_PROFILE,\n\textended: CODEX_EXTENDED_TOOL_PROFILE,\n} as const;\n\nexport type CodexToolProfileName = keyof typeof CODEX_TOOL_PROFILES;\n\nconst CODEX_DYNAMIC_TOOL_COMPOSITION_SCHEMA_KEYS = [\n\t\"anyOf\",\n\t\"oneOf\",\n\t\"allOf\",\n] as const;\n\nconst UNSUPPORTED_CODEX_DYNAMIC_TOOL_TOP_LEVEL_SCHEMA_KEYS = new Set<string>(\n\tCODEX_DYNAMIC_TOOL_CONFORMANCE.unsupportedTopLevelSchemaKeywords,\n);\n\nexport function isCodexAppServerApi(api: unknown): boolean {\n\treturn api === \"openai-codex-app-server\";\n}\n\nexport function selectCodexDefaultTools<TTool extends { name: string }>(\n\ttools: readonly TTool[],\n): TTool[] {\n\treturn selectCodexToolProfile(tools, \"lean\");\n}\n\nexport function selectCodexToolProfile<TTool extends { name: string }>(\n\ttools: readonly TTool[],\n\tprofileName: CodexToolProfileName,\n): TTool[] {\n\tconst profile = CODEX_TOOL_PROFILES[profileName];\n\tconst byName = new Map(tools.map((tool) => [tool.name, tool]));\n\treturn profile\n\t\t.map((name) => byName.get(name))\n\t\t.filter((tool): tool is TTool => Boolean(tool));\n}\n\nexport function resolveCodexToolProfileName(\n\tvalue: string | undefined,\n): CodexToolProfileName {\n\tif (!value || value.trim().length === 0) {\n\t\treturn \"lean\";\n\t}\n\tconst normalized = value.trim().toLowerCase().replace(/_/g, \"-\");\n\tif (isCodexToolProfileName(normalized)) {\n\t\treturn normalized;\n\t}\n\tthrow new Error(\n\t\t`Unknown Codex tool profile \"${value}\". Available profiles: ${getCodexToolProfileNames().join(\", \")}`,\n\t);\n}\n\nexport function getCodexToolProfileNames(): CodexToolProfileName[] {\n\treturn Object.keys(CODEX_TOOL_PROFILES) as CodexToolProfileName[];\n}\n\nfunction isCodexToolProfileName(value: string): value is CodexToolProfileName {\n\treturn Object.hasOwn(CODEX_TOOL_PROFILES, value);\n}\n\nexport function compileCodexDynamicToolSpecs(\n\ttools: readonly CodexCompatibleTool[],\n): CodexDynamicToolCompilation {\n\tconst specs: CodexDynamicToolSpec[] = [];\n\tconst bindings: CodexDynamicToolBinding[] = [];\n\tconst diagnostics: CodexCompatibilityDiagnostic[] = [];\n\tconst seenOriginalNames = new Set<string>();\n\tconst seenCodexNames = new Set<string>();\n\n\tfor (const tool of tools) {\n\t\tif (tool.deferApiDefinition || tool.executionLocation === \"client\") {\n\t\t\tcontinue;\n\t\t}\n\t\tif (seenOriginalNames.has(tool.name)) {\n\t\t\tcontinue;\n\t\t}\n\t\tseenOriginalNames.add(tool.name);\n\n\t\tconst codexName = toUniqueCodexDynamicToolName(tool.name, seenCodexNames);\n\t\tif (codexName !== tool.name) {\n\t\t\tdiagnostics.push({\n\t\t\t\tseverity: \"warning\",\n\t\t\t\tcode: \"renamed_tool\",\n\t\t\t\tmessage: `Tool \"${tool.name}\" is exposed to Codex as \"${codexName}\" to match app-server dynamic tool identifier rules.`,\n\t\t\t\ttoolName: tool.name,\n\t\t\t\tcodexName,\n\t\t\t});\n\t\t}\n\n\t\tseenCodexNames.add(codexName);\n\t\tspecs.push({\n\t\t\tname: codexName,\n\t\t\tdescription: tool.description,\n\t\t\tinputSchema: normalizeCodexDynamicToolInputSchema(tool.parameters),\n\t\t});\n\t\tbindings.push({ codexName, originalName: tool.name });\n\t}\n\n\treturn { specs, bindings, diagnostics };\n}\n\nexport function createCodexDynamicToolNameMap(\n\tbindings: readonly CodexDynamicToolBinding[],\n): Map<string, string> {\n\treturn new Map(\n\t\tbindings.map((binding) => [binding.codexName, binding.originalName]),\n\t);\n}\n\nexport function normalizeCodexDynamicToolInputSchema(\n\tschema: unknown,\n): JsonObject {\n\tif (!isRecord(schema)) {\n\t\treturn emptyCodexDynamicToolInputSchema();\n\t}\n\n\tconst flattened = flattenTopLevelCompositionSchema(schema);\n\tif (flattened) {\n\t\treturn flattened;\n\t}\n\n\tconst normalized: JsonObject = {};\n\tfor (const [key, value] of Object.entries(schema)) {\n\t\tif (UNSUPPORTED_CODEX_DYNAMIC_TOOL_TOP_LEVEL_SCHEMA_KEYS.has(key)) {\n\t\t\tcontinue;\n\t\t}\n\t\tnormalized[key] = value;\n\t}\n\tnormalized.type = \"object\";\n\tif (!isRecord(normalized.properties)) {\n\t\tnormalized.properties = {};\n\t}\n\tif (!(\"additionalProperties\" in normalized)) {\n\t\tnormalized.additionalProperties = false;\n\t}\n\treturn normalized;\n}\n\nfunction toUniqueCodexDynamicToolName(\n\ttoolName: string,\n\tseenCodexNames: ReadonlySet<string>,\n): string {\n\tconst baseName = toCodexDynamicToolName(toolName);\n\tif (!seenCodexNames.has(baseName)) {\n\t\treturn baseName;\n\t}\n\tfor (let index = 2; ; index += 1) {\n\t\tconst suffix = `_${index}`;\n\t\tconst candidate = `${truncateIdentifier(\n\t\t\tbaseName,\n\t\t\tCODEX_DYNAMIC_TOOL_CONFORMANCE.nameMaxLength - suffix.length,\n\t\t)}${suffix}`;\n\t\tif (!seenCodexNames.has(candidate)) {\n\t\t\treturn candidate;\n\t\t}\n\t}\n}\n\nfunction toCodexDynamicToolName(toolName: string): string {\n\tconst trimmed = toolName.trim();\n\tlet codexName = trimmed.replace(/[^a-zA-Z0-9_-]/g, \"_\");\n\tif (codexName.length === 0) {\n\t\tcodexName = \"maestro_tool\";\n\t}\n\tif (isReservedCodexDynamicToolIdentifier(codexName)) {\n\t\tcodexName = `maestro_${codexName}`;\n\t}\n\treturn truncateIdentifier(\n\t\tcodexName,\n\t\tCODEX_DYNAMIC_TOOL_CONFORMANCE.nameMaxLength,\n\t);\n}\n\nfunction isReservedCodexDynamicToolIdentifier(value: string): boolean {\n\treturn (\n\t\tCODEX_DYNAMIC_TOOL_CONFORMANCE.reservedNames.some(\n\t\t\t(reservedName) => value === reservedName,\n\t\t) ||\n\t\tCODEX_DYNAMIC_TOOL_CONFORMANCE.reservedNamePrefixes.some((prefix) =>\n\t\t\tvalue.startsWith(prefix),\n\t\t)\n\t);\n}\n\nfunction truncateIdentifier(value: string, maxLength: number): string {\n\tif (value.length <= maxLength) {\n\t\treturn value;\n\t}\n\treturn value.slice(0, Math.max(1, maxLength));\n}\n\nfunction emptyCodexDynamicToolInputSchema(): JsonObject {\n\treturn {\n\t\ttype: \"object\",\n\t\tproperties: {},\n\t\tadditionalProperties: false,\n\t};\n}\n\nfunction flattenTopLevelCompositionSchema(\n\tschema: JsonObject,\n): JsonObject | null {\n\tfor (const key of CODEX_DYNAMIC_TOOL_COMPOSITION_SCHEMA_KEYS) {\n\t\tconst branches = schema[key];\n\t\tif (!Array.isArray(branches)) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (branches.length === 0 || !branches.every(isRecord)) {\n\t\t\treturn emptyCodexDynamicToolInputSchema();\n\t\t}\n\t\treturn flattenObjectSchemaBranches(schema, key, branches);\n\t}\n\treturn null;\n}\n\nfunction flattenObjectSchemaBranches(\n\tschema: JsonObject,\n\tcompositionKey: (typeof CODEX_DYNAMIC_TOOL_COMPOSITION_SCHEMA_KEYS)[number],\n\tbranches: JsonObject[],\n): JsonObject {\n\tconst propertySchemas = new Map<string, unknown[]>();\n\tconst topLevelProperties = schema.properties;\n\tif (isRecord(topLevelProperties)) {\n\t\tfor (const [name, propertySchema] of Object.entries(topLevelProperties)) {\n\t\t\taddPropertySchema(propertySchemas, name, propertySchema);\n\t\t}\n\t}\n\n\tconst branchRequiredSets: Array<Set<string>> = [];\n\tfor (const branch of branches) {\n\t\tconst branchProperties = branch.properties;\n\t\tif (isRecord(branchProperties)) {\n\t\t\tfor (const [name, propertySchema] of Object.entries(branchProperties)) {\n\t\t\t\taddPropertySchema(propertySchemas, name, propertySchema);\n\t\t\t}\n\t\t}\n\t\tbranchRequiredSets.push(new Set(readStringArray(branch.required)));\n\t}\n\n\tconst properties: JsonObject = {};\n\tfor (const [name, schemas] of propertySchemas.entries()) {\n\t\tproperties[name] = mergePropertySchemas(schemas);\n\t}\n\n\tconst required = computeFlattenedRequired(\n\t\tschema,\n\t\tcompositionKey,\n\t\tbranchRequiredSets,\n\t).filter((name) => name in properties);\n\tconst flattened: JsonObject = {\n\t\ttype: \"object\",\n\t\tproperties,\n\t\tadditionalProperties: computeFlattenedAdditionalProperties(\n\t\t\tschema,\n\t\t\tcompositionKey,\n\t\t\tbranches,\n\t\t),\n\t};\n\tif (typeof schema.description === \"string\") {\n\t\tflattened.description = schema.description;\n\t}\n\tif (required.length > 0) {\n\t\tflattened.required = required;\n\t}\n\treturn flattened;\n}\n\nfunction addPropertySchema(\n\tpropertySchemas: Map<string, unknown[]>,\n\tname: string,\n\tpropertySchema: unknown,\n): void {\n\tconst schemas = propertySchemas.get(name);\n\tif (schemas) {\n\t\tschemas.push(propertySchema);\n\t\treturn;\n\t}\n\tpropertySchemas.set(name, [propertySchema]);\n}\n\nfunction computeFlattenedRequired(\n\tschema: JsonObject,\n\tcompositionKey: (typeof CODEX_DYNAMIC_TOOL_COMPOSITION_SCHEMA_KEYS)[number],\n\tbranchRequiredSets: Array<Set<string>>,\n): string[] {\n\tconst topLevelRequired = readStringArray(schema.required);\n\tif (branchRequiredSets.length === 0) {\n\t\treturn topLevelRequired;\n\t}\n\tif (compositionKey === \"allOf\") {\n\t\treturn uniqueStrings([\n\t\t\t...topLevelRequired,\n\t\t\t...branchRequiredSets.flatMap((set) => [...set]),\n\t\t]);\n\t}\n\tconst firstBranchRequired = branchRequiredSets[0] ?? new Set<string>();\n\tconst requiredByEveryBranch = [...firstBranchRequired].filter((name) =>\n\t\tbranchRequiredSets.every((set) => set.has(name)),\n\t);\n\treturn uniqueStrings([...topLevelRequired, ...requiredByEveryBranch]);\n}\n\nfunction mergePropertySchemas(schemas: unknown[]): unknown {\n\tconst uniqueSchemas = uniqueJsonItems(schemas);\n\tif (uniqueSchemas.length <= 1) {\n\t\treturn uniqueSchemas[0] ?? {};\n\t}\n\n\tconst constValues = uniqueSchemas.map(readConstValue);\n\tif (constValues.every((entry) => entry.found)) {\n\t\tconst schemaTypes = uniqueSchemas.map(readSchemaType);\n\t\tconst commonType = schemaTypes.every((type) => type === schemaTypes[0])\n\t\t\t? schemaTypes[0]\n\t\t\t: undefined;\n\t\treturn {\n\t\t\t...(commonType ? { type: commonType } : {}),\n\t\t\tenum: uniqueJsonItems(constValues.map((entry) => entry.value)),\n\t\t};\n\t}\n\n\treturn { anyOf: uniqueSchemas };\n}\n\nfunction computeFlattenedAdditionalProperties(\n\tschema: JsonObject,\n\tcompositionKey: (typeof CODEX_DYNAMIC_TOOL_COMPOSITION_SCHEMA_KEYS)[number],\n\tbranches: JsonObject[],\n): AdditionalPropertiesConstraint {\n\tconst topLevelConstraint = readAdditionalPropertiesConstraint(\n\t\tschema.additionalProperties,\n\t);\n\tif (topLevelConstraint === false) {\n\t\treturn false;\n\t}\n\tconst branchConstraint =\n\t\tcompositionKey === \"allOf\"\n\t\t\t? intersectAdditionalPropertiesConstraints(\n\t\t\t\t\tbranches.map((branch) =>\n\t\t\t\t\t\treadAdditionalPropertiesConstraint(branch.additionalProperties),\n\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t: unionAdditionalPropertiesConstraints(\n\t\t\t\t\tbranches.map((branch) =>\n\t\t\t\t\t\treadAdditionalPropertiesConstraint(branch.additionalProperties),\n\t\t\t\t\t),\n\t\t\t\t);\n\treturn intersectAdditionalPropertiesConstraints([\n\t\ttopLevelConstraint,\n\t\tbranchConstraint,\n\t]);\n}\n\nfunction readAdditionalPropertiesConstraint(\n\tvalue: unknown,\n): AdditionalPropertiesConstraint {\n\tif (value === false) {\n\t\treturn false;\n\t}\n\tif (isRecord(value)) {\n\t\treturn value;\n\t}\n\treturn true;\n}\n\nfunction unionAdditionalPropertiesConstraints(\n\tconstraints: AdditionalPropertiesConstraint[],\n): AdditionalPropertiesConstraint {\n\tif (constraints.some((constraint) => constraint === false)) {\n\t\treturn false;\n\t}\n\tif (constraints.some((constraint) => constraint === true)) {\n\t\treturn true;\n\t}\n\tconst schemas = constraints.filter(isRecord);\n\tif (schemas.length === 0) {\n\t\treturn false;\n\t}\n\treturn combineAdditionalPropertiesSchemas(\"anyOf\", schemas);\n}\n\nfunction intersectAdditionalPropertiesConstraints(\n\tconstraints: AdditionalPropertiesConstraint[],\n): AdditionalPropertiesConstraint {\n\tif (constraints.some((constraint) => constraint === false)) {\n\t\treturn false;\n\t}\n\tconst schemas = constraints.filter(isRecord);\n\tif (schemas.length === 0) {\n\t\treturn true;\n\t}\n\treturn combineAdditionalPropertiesSchemas(\"allOf\", schemas);\n}\n\nfunction combineAdditionalPropertiesSchemas(\n\tcompositionKey: \"allOf\" | \"anyOf\",\n\tschemas: JsonObject[],\n): JsonObject {\n\tconst uniqueSchemas = uniqueJsonItems(schemas).filter(isRecord);\n\tif (uniqueSchemas.length <= 1) {\n\t\treturn uniqueSchemas[0] ?? {};\n\t}\n\treturn { [compositionKey]: uniqueSchemas };\n}\n\nfunction readStringArray(value: unknown): string[] {\n\treturn Array.isArray(value)\n\t\t? value.filter((item): item is string => typeof item === \"string\")\n\t\t: [];\n}\n\nfunction uniqueStrings(values: string[]): string[] {\n\treturn Array.from(new Set(values));\n}\n\nfunction uniqueJsonItems(values: unknown[]): unknown[] {\n\tconst seen = new Set<string>();\n\tconst unique: unknown[] = [];\n\tfor (const value of values) {\n\t\tconst key = schemaJsonKey(value);\n\t\tif (seen.has(key)) {\n\t\t\tcontinue;\n\t\t}\n\t\tseen.add(key);\n\t\tunique.push(value);\n\t}\n\treturn unique;\n}\n\nfunction schemaJsonKey(value: unknown): string {\n\ttry {\n\t\treturn JSON.stringify(value);\n\t} catch {\n\t\treturn String(value);\n\t}\n}\n\nfunction readConstValue(schema: unknown): { found: boolean; value?: unknown } {\n\tif (!isRecord(schema) || !(\"const\" in schema)) {\n\t\treturn { found: false };\n\t}\n\treturn { found: true, value: schema.const };\n}\n\nfunction readSchemaType(schema: unknown): string | undefined {\n\treturn isRecord(schema) && typeof schema.type === \"string\"\n\t\t? schema.type\n\t\t: undefined;\n}\n\nfunction isRecord(value: unknown): value is JsonObject {\n\treturn Boolean(value && typeof value === \"object\" && !Array.isArray(value));\n}\n"]}
|
|
1
|
+
{"version":3,"file":"compatibility.js","sourceRoot":"","sources":["../../src/codex/compatibility.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Tool } from \"../agent/types.js\";\nimport { isRecord } from \"../utils/json.js\";\n\ntype JsonObject = Record<string, unknown>;\ntype AdditionalPropertiesConstraint = boolean | JsonObject;\n\ntype CodexCompatibleTool = Pick<\n\tTool,\n\t\"name\" | \"description\" | \"parameters\" | \"deferApiDefinition\"\n> & {\n\texecutionLocation?: \"server\" | \"client\";\n};\n\nexport type CodexDynamicToolSpec = {\n\tnamespace?: string;\n\tname: string;\n\tdescription: string;\n\tinputSchema: JsonObject;\n\tdeferLoading?: boolean;\n};\n\nexport type CodexCompatibilityDiagnostic = {\n\tseverity: \"info\" | \"warning\" | \"error\";\n\tcode: string;\n\tmessage: string;\n\ttoolName?: string;\n\tcodexName?: string;\n};\n\nexport type CodexDynamicToolBinding = {\n\tcodexName: string;\n\toriginalName: string;\n};\n\nexport type CodexDynamicToolCompilation = {\n\tspecs: CodexDynamicToolSpec[];\n\tbindings: CodexDynamicToolBinding[];\n\tdiagnostics: CodexCompatibilityDiagnostic[];\n};\n\nexport const CODEX_DYNAMIC_TOOL_CONFORMANCE = {\n\tnameMaxLength: 128,\n\tnamespaceMaxLength: 64,\n\tidentifierPattern: /^[a-zA-Z0-9_-]+$/,\n\treservedNamespaces: [\n\t\t\"api_tool\",\n\t\t\"browser\",\n\t\t\"computer\",\n\t\t\"container\",\n\t\t\"file_search\",\n\t\t\"functions\",\n\t\t\"image_gen\",\n\t\t\"multi_tool_use\",\n\t\t\"python\",\n\t\t\"python_user_visible\",\n\t\t\"submodel_delegator\",\n\t\t\"terminal\",\n\t\t\"tool_search\",\n\t\t\"web\",\n\t],\n\treservedNames: [\"mcp\"],\n\treservedNamePrefixes: [\"mcp__\"],\n\tunsupportedTopLevelSchemaKeywords: [\"anyOf\", \"oneOf\", \"allOf\", \"enum\", \"not\"],\n\tdynamicToolCallMethod: \"item/tool/call\",\n} as const;\n\nexport const CODEX_FILE_MUTATION_TOOL_PROFILE = [\n\t\"apply_patch\",\n\t\"edit\",\n\t\"write\",\n] as const;\n\nexport const CODEX_READ_ONLY_TOOL_PROFILE = [\n\t\"read\",\n\t\"list\",\n\t\"find\",\n\t\"search\",\n\t\"diff\",\n\t\"status\",\n] as const;\n\nexport const CODEX_DEFAULT_TOOL_PROFILE = [\n\t\"read\",\n\t\"list\",\n\t\"find\",\n\t\"search\",\n\t\"diff\",\n\t\"bash\",\n\t\"apply_patch\",\n\t\"edit\",\n\t\"write\",\n\t\"todo\",\n\t\"status\",\n\t\"gh_pr\",\n] as const;\n\nexport const CODEX_EXTENDED_TOOL_PROFILE = [\n\t\"read\",\n\t\"list\",\n\t\"find\",\n\t\"search\",\n\t\"parallel_ripgrep\",\n\t\"diff\",\n\t\"bash\",\n\t\"background_tasks\",\n\t\"apply_patch\",\n\t\"edit\",\n\t\"write\",\n\t\"todo\",\n\t\"status\",\n\t\"gh_pr\",\n\t\"gh_issue\",\n\t\"gh_repo\",\n] as const;\n\nexport const CODEX_TOOL_PROFILES = {\n\tlean: CODEX_DEFAULT_TOOL_PROFILE,\n\tdefault: CODEX_DEFAULT_TOOL_PROFILE,\n\t\"read-only\": CODEX_READ_ONLY_TOOL_PROFILE,\n\treadonly: CODEX_READ_ONLY_TOOL_PROFILE,\n\textended: CODEX_EXTENDED_TOOL_PROFILE,\n} as const;\n\nexport type CodexToolProfileName = keyof typeof CODEX_TOOL_PROFILES;\n\nconst CODEX_DYNAMIC_TOOL_COMPOSITION_SCHEMA_KEYS = [\n\t\"anyOf\",\n\t\"oneOf\",\n\t\"allOf\",\n] as const;\n\nconst UNSUPPORTED_CODEX_DYNAMIC_TOOL_TOP_LEVEL_SCHEMA_KEYS = new Set<string>(\n\tCODEX_DYNAMIC_TOOL_CONFORMANCE.unsupportedTopLevelSchemaKeywords,\n);\n\nexport function isCodexAppServerApi(api: unknown): boolean {\n\treturn api === \"openai-codex-app-server\";\n}\n\nexport function selectCodexDefaultTools<TTool extends { name: string }>(\n\ttools: readonly TTool[],\n): TTool[] {\n\treturn selectCodexToolProfile(tools, \"lean\");\n}\n\nexport function selectCodexToolProfile<TTool extends { name: string }>(\n\ttools: readonly TTool[],\n\tprofileName: CodexToolProfileName,\n): TTool[] {\n\tconst profile = CODEX_TOOL_PROFILES[profileName];\n\tconst byName = new Map(tools.map((tool) => [tool.name, tool]));\n\treturn profile\n\t\t.map((name) => byName.get(name))\n\t\t.filter((tool): tool is TTool => Boolean(tool));\n}\n\nexport function resolveCodexToolProfileName(\n\tvalue: string | undefined,\n): CodexToolProfileName {\n\tif (!value || value.trim().length === 0) {\n\t\treturn \"lean\";\n\t}\n\tconst normalized = value.trim().toLowerCase().replace(/_/g, \"-\");\n\tif (isCodexToolProfileName(normalized)) {\n\t\treturn normalized;\n\t}\n\tthrow new Error(\n\t\t`Unknown Codex tool profile \"${value}\". Available profiles: ${getCodexToolProfileNames().join(\", \")}`,\n\t);\n}\n\nexport function getCodexToolProfileNames(): CodexToolProfileName[] {\n\treturn Object.keys(CODEX_TOOL_PROFILES) as CodexToolProfileName[];\n}\n\nfunction isCodexToolProfileName(value: string): value is CodexToolProfileName {\n\treturn Object.hasOwn(CODEX_TOOL_PROFILES, value);\n}\n\nexport function compileCodexDynamicToolSpecs(\n\ttools: readonly CodexCompatibleTool[],\n): CodexDynamicToolCompilation {\n\tconst specs: CodexDynamicToolSpec[] = [];\n\tconst bindings: CodexDynamicToolBinding[] = [];\n\tconst diagnostics: CodexCompatibilityDiagnostic[] = [];\n\tconst seenOriginalNames = new Set<string>();\n\tconst seenCodexNames = new Set<string>();\n\n\tfor (const tool of tools) {\n\t\tif (tool.deferApiDefinition || tool.executionLocation === \"client\") {\n\t\t\tcontinue;\n\t\t}\n\t\tif (seenOriginalNames.has(tool.name)) {\n\t\t\tcontinue;\n\t\t}\n\t\tseenOriginalNames.add(tool.name);\n\n\t\tconst codexName = toUniqueCodexDynamicToolName(tool.name, seenCodexNames);\n\t\tif (codexName !== tool.name) {\n\t\t\tdiagnostics.push({\n\t\t\t\tseverity: \"warning\",\n\t\t\t\tcode: \"renamed_tool\",\n\t\t\t\tmessage: `Tool \"${tool.name}\" is exposed to Codex as \"${codexName}\" to match app-server dynamic tool identifier rules.`,\n\t\t\t\ttoolName: tool.name,\n\t\t\t\tcodexName,\n\t\t\t});\n\t\t}\n\n\t\tseenCodexNames.add(codexName);\n\t\tspecs.push({\n\t\t\tname: codexName,\n\t\t\tdescription: tool.description,\n\t\t\tinputSchema: normalizeCodexDynamicToolInputSchema(tool.parameters),\n\t\t});\n\t\tbindings.push({ codexName, originalName: tool.name });\n\t}\n\n\treturn { specs, bindings, diagnostics };\n}\n\nexport function createCodexDynamicToolNameMap(\n\tbindings: readonly CodexDynamicToolBinding[],\n): Map<string, string> {\n\treturn new Map(\n\t\tbindings.map((binding) => [binding.codexName, binding.originalName]),\n\t);\n}\n\nexport function normalizeCodexDynamicToolInputSchema(\n\tschema: unknown,\n): JsonObject {\n\tif (!isRecord(schema)) {\n\t\treturn emptyCodexDynamicToolInputSchema();\n\t}\n\n\tconst flattened = flattenTopLevelCompositionSchema(schema);\n\tif (flattened) {\n\t\treturn flattened;\n\t}\n\n\tconst normalized: JsonObject = {};\n\tfor (const [key, value] of Object.entries(schema)) {\n\t\tif (UNSUPPORTED_CODEX_DYNAMIC_TOOL_TOP_LEVEL_SCHEMA_KEYS.has(key)) {\n\t\t\tcontinue;\n\t\t}\n\t\tnormalized[key] = value;\n\t}\n\tnormalized.type = \"object\";\n\tif (!isRecord(normalized.properties)) {\n\t\tnormalized.properties = {};\n\t}\n\tif (!(\"additionalProperties\" in normalized)) {\n\t\tnormalized.additionalProperties = false;\n\t}\n\treturn normalized;\n}\n\nfunction toUniqueCodexDynamicToolName(\n\ttoolName: string,\n\tseenCodexNames: ReadonlySet<string>,\n): string {\n\tconst baseName = toCodexDynamicToolName(toolName);\n\tif (!seenCodexNames.has(baseName)) {\n\t\treturn baseName;\n\t}\n\tfor (let index = 2; ; index += 1) {\n\t\tconst suffix = `_${index}`;\n\t\tconst candidate = `${truncateIdentifier(\n\t\t\tbaseName,\n\t\t\tCODEX_DYNAMIC_TOOL_CONFORMANCE.nameMaxLength - suffix.length,\n\t\t)}${suffix}`;\n\t\tif (!seenCodexNames.has(candidate)) {\n\t\t\treturn candidate;\n\t\t}\n\t}\n}\n\nfunction toCodexDynamicToolName(toolName: string): string {\n\tconst trimmed = toolName.trim();\n\tlet codexName = trimmed.replace(/[^a-zA-Z0-9_-]/g, \"_\");\n\tif (codexName.length === 0) {\n\t\tcodexName = \"maestro_tool\";\n\t}\n\tif (isReservedCodexDynamicToolIdentifier(codexName)) {\n\t\tcodexName = `maestro_${codexName}`;\n\t}\n\treturn truncateIdentifier(\n\t\tcodexName,\n\t\tCODEX_DYNAMIC_TOOL_CONFORMANCE.nameMaxLength,\n\t);\n}\n\nfunction isReservedCodexDynamicToolIdentifier(value: string): boolean {\n\treturn (\n\t\tCODEX_DYNAMIC_TOOL_CONFORMANCE.reservedNames.some(\n\t\t\t(reservedName) => value === reservedName,\n\t\t) ||\n\t\tCODEX_DYNAMIC_TOOL_CONFORMANCE.reservedNamePrefixes.some((prefix) =>\n\t\t\tvalue.startsWith(prefix),\n\t\t)\n\t);\n}\n\nfunction truncateIdentifier(value: string, maxLength: number): string {\n\tif (value.length <= maxLength) {\n\t\treturn value;\n\t}\n\treturn value.slice(0, Math.max(1, maxLength));\n}\n\nfunction emptyCodexDynamicToolInputSchema(): JsonObject {\n\treturn {\n\t\ttype: \"object\",\n\t\tproperties: {},\n\t\tadditionalProperties: false,\n\t};\n}\n\nfunction flattenTopLevelCompositionSchema(\n\tschema: JsonObject,\n): JsonObject | null {\n\tfor (const key of CODEX_DYNAMIC_TOOL_COMPOSITION_SCHEMA_KEYS) {\n\t\tconst branches = schema[key];\n\t\tif (!Array.isArray(branches)) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (branches.length === 0 || !branches.every(isRecord)) {\n\t\t\treturn emptyCodexDynamicToolInputSchema();\n\t\t}\n\t\treturn flattenObjectSchemaBranches(schema, key, branches);\n\t}\n\treturn null;\n}\n\nfunction flattenObjectSchemaBranches(\n\tschema: JsonObject,\n\tcompositionKey: (typeof CODEX_DYNAMIC_TOOL_COMPOSITION_SCHEMA_KEYS)[number],\n\tbranches: JsonObject[],\n): JsonObject {\n\tconst propertySchemas = new Map<string, unknown[]>();\n\tconst topLevelProperties = schema.properties;\n\tif (isRecord(topLevelProperties)) {\n\t\tfor (const [name, propertySchema] of Object.entries(topLevelProperties)) {\n\t\t\taddPropertySchema(propertySchemas, name, propertySchema);\n\t\t}\n\t}\n\n\tconst branchRequiredSets: Array<Set<string>> = [];\n\tfor (const branch of branches) {\n\t\tconst branchProperties = branch.properties;\n\t\tif (isRecord(branchProperties)) {\n\t\t\tfor (const [name, propertySchema] of Object.entries(branchProperties)) {\n\t\t\t\taddPropertySchema(propertySchemas, name, propertySchema);\n\t\t\t}\n\t\t}\n\t\tbranchRequiredSets.push(new Set(readStringArray(branch.required)));\n\t}\n\n\tconst properties: JsonObject = {};\n\tfor (const [name, schemas] of propertySchemas.entries()) {\n\t\tproperties[name] = mergePropertySchemas(schemas);\n\t}\n\n\tconst required = computeFlattenedRequired(\n\t\tschema,\n\t\tcompositionKey,\n\t\tbranchRequiredSets,\n\t).filter((name) => name in properties);\n\tconst flattened: JsonObject = {\n\t\ttype: \"object\",\n\t\tproperties,\n\t\tadditionalProperties: computeFlattenedAdditionalProperties(\n\t\t\tschema,\n\t\t\tcompositionKey,\n\t\t\tbranches,\n\t\t),\n\t};\n\tif (typeof schema.description === \"string\") {\n\t\tflattened.description = schema.description;\n\t}\n\tif (required.length > 0) {\n\t\tflattened.required = required;\n\t}\n\treturn flattened;\n}\n\nfunction addPropertySchema(\n\tpropertySchemas: Map<string, unknown[]>,\n\tname: string,\n\tpropertySchema: unknown,\n): void {\n\tconst schemas = propertySchemas.get(name);\n\tif (schemas) {\n\t\tschemas.push(propertySchema);\n\t\treturn;\n\t}\n\tpropertySchemas.set(name, [propertySchema]);\n}\n\nfunction computeFlattenedRequired(\n\tschema: JsonObject,\n\tcompositionKey: (typeof CODEX_DYNAMIC_TOOL_COMPOSITION_SCHEMA_KEYS)[number],\n\tbranchRequiredSets: Array<Set<string>>,\n): string[] {\n\tconst topLevelRequired = readStringArray(schema.required);\n\tif (branchRequiredSets.length === 0) {\n\t\treturn topLevelRequired;\n\t}\n\tif (compositionKey === \"allOf\") {\n\t\treturn uniqueStrings([\n\t\t\t...topLevelRequired,\n\t\t\t...branchRequiredSets.flatMap((set) => [...set]),\n\t\t]);\n\t}\n\tconst firstBranchRequired = branchRequiredSets[0] ?? new Set<string>();\n\tconst requiredByEveryBranch = [...firstBranchRequired].filter((name) =>\n\t\tbranchRequiredSets.every((set) => set.has(name)),\n\t);\n\treturn uniqueStrings([...topLevelRequired, ...requiredByEveryBranch]);\n}\n\nfunction mergePropertySchemas(schemas: unknown[]): unknown {\n\tconst uniqueSchemas = uniqueJsonItems(schemas);\n\tif (uniqueSchemas.length <= 1) {\n\t\treturn uniqueSchemas[0] ?? {};\n\t}\n\n\tconst constValues = uniqueSchemas.map(readConstValue);\n\tif (constValues.every((entry) => entry.found)) {\n\t\tconst schemaTypes = uniqueSchemas.map(readSchemaType);\n\t\tconst commonType = schemaTypes.every((type) => type === schemaTypes[0])\n\t\t\t? schemaTypes[0]\n\t\t\t: undefined;\n\t\treturn {\n\t\t\t...(commonType ? { type: commonType } : {}),\n\t\t\tenum: uniqueJsonItems(constValues.map((entry) => entry.value)),\n\t\t};\n\t}\n\n\treturn { anyOf: uniqueSchemas };\n}\n\nfunction computeFlattenedAdditionalProperties(\n\tschema: JsonObject,\n\tcompositionKey: (typeof CODEX_DYNAMIC_TOOL_COMPOSITION_SCHEMA_KEYS)[number],\n\tbranches: JsonObject[],\n): AdditionalPropertiesConstraint {\n\tconst topLevelConstraint = readAdditionalPropertiesConstraint(\n\t\tschema.additionalProperties,\n\t);\n\tif (topLevelConstraint === false) {\n\t\treturn false;\n\t}\n\tconst branchConstraint =\n\t\tcompositionKey === \"allOf\"\n\t\t\t? intersectAdditionalPropertiesConstraints(\n\t\t\t\t\tbranches.map((branch) =>\n\t\t\t\t\t\treadAdditionalPropertiesConstraint(branch.additionalProperties),\n\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t: unionAdditionalPropertiesConstraints(\n\t\t\t\t\tbranches.map((branch) =>\n\t\t\t\t\t\treadAdditionalPropertiesConstraint(branch.additionalProperties),\n\t\t\t\t\t),\n\t\t\t\t);\n\treturn intersectAdditionalPropertiesConstraints([\n\t\ttopLevelConstraint,\n\t\tbranchConstraint,\n\t]);\n}\n\nfunction readAdditionalPropertiesConstraint(\n\tvalue: unknown,\n): AdditionalPropertiesConstraint {\n\tif (value === false) {\n\t\treturn false;\n\t}\n\tif (isRecord(value)) {\n\t\treturn value;\n\t}\n\treturn true;\n}\n\nfunction unionAdditionalPropertiesConstraints(\n\tconstraints: AdditionalPropertiesConstraint[],\n): AdditionalPropertiesConstraint {\n\tif (constraints.some((constraint) => constraint === false)) {\n\t\treturn false;\n\t}\n\tif (constraints.some((constraint) => constraint === true)) {\n\t\treturn true;\n\t}\n\tconst schemas = constraints.filter(isRecord);\n\tif (schemas.length === 0) {\n\t\treturn false;\n\t}\n\treturn combineAdditionalPropertiesSchemas(\"anyOf\", schemas);\n}\n\nfunction intersectAdditionalPropertiesConstraints(\n\tconstraints: AdditionalPropertiesConstraint[],\n): AdditionalPropertiesConstraint {\n\tif (constraints.some((constraint) => constraint === false)) {\n\t\treturn false;\n\t}\n\tconst schemas = constraints.filter(isRecord);\n\tif (schemas.length === 0) {\n\t\treturn true;\n\t}\n\treturn combineAdditionalPropertiesSchemas(\"allOf\", schemas);\n}\n\nfunction combineAdditionalPropertiesSchemas(\n\tcompositionKey: \"allOf\" | \"anyOf\",\n\tschemas: JsonObject[],\n): JsonObject {\n\tconst uniqueSchemas = uniqueJsonItems(schemas).filter(isRecord);\n\tif (uniqueSchemas.length <= 1) {\n\t\treturn uniqueSchemas[0] ?? {};\n\t}\n\treturn { [compositionKey]: uniqueSchemas };\n}\n\nfunction readStringArray(value: unknown): string[] {\n\treturn Array.isArray(value)\n\t\t? value.filter((item): item is string => typeof item === \"string\")\n\t\t: [];\n}\n\nfunction uniqueStrings(values: string[]): string[] {\n\treturn Array.from(new Set(values));\n}\n\nfunction uniqueJsonItems(values: unknown[]): unknown[] {\n\tconst seen = new Set<string>();\n\tconst unique: unknown[] = [];\n\tfor (const value of values) {\n\t\tconst key = schemaJsonKey(value);\n\t\tif (seen.has(key)) {\n\t\t\tcontinue;\n\t\t}\n\t\tseen.add(key);\n\t\tunique.push(value);\n\t}\n\treturn unique;\n}\n\nfunction schemaJsonKey(value: unknown): string {\n\ttry {\n\t\treturn JSON.stringify(value);\n\t} catch {\n\t\treturn String(value);\n\t}\n}\n\nfunction readConstValue(schema: unknown): { found: boolean; value?: unknown } {\n\tif (!isRecord(schema) || !(\"const\" in schema)) {\n\t\treturn { found: false };\n\t}\n\treturn { found: true, value: schema.const };\n}\n\nfunction readSchemaType(schema: unknown): string | undefined {\n\treturn isRecord(schema) && typeof schema.type === \"string\"\n\t\t? schema.type\n\t\t: undefined;\n}\n"]}
|
|
@@ -39,6 +39,14 @@ export declare const CODEX_SUBAGENT_DISPATCH_TABLE: {
|
|
|
39
39
|
readonly tags: readonly ["maestro", "subagent", "test", "ci"];
|
|
40
40
|
readonly typeAliases: readonly ["test", "qa", "ci", "ci-monitor", "test-runner"];
|
|
41
41
|
readonly capabilityAliases: readonly ["code:test", "code-test", "test:run", "test-run", "test-runner"];
|
|
42
|
+
}, {
|
|
43
|
+
readonly laneId: "browser-qa";
|
|
44
|
+
readonly skillId: "maestro.subagent.browser-qa";
|
|
45
|
+
readonly displayName: "Maestro browser QA subagent";
|
|
46
|
+
readonly description: "Delegate browser-based product QA, console inspection, screenshots, repro videos, and evidence-backed bug reports to a target-owned Maestro child agent.";
|
|
47
|
+
readonly tags: readonly ["maestro", "subagent", "browser", "qa", "evidence"];
|
|
48
|
+
readonly typeAliases: readonly ["browser-qa", "browser", "dogfood", "product-qa", "e2e-qa", "ux-qa"];
|
|
49
|
+
readonly capabilityAliases: readonly ["product:qa", "product-qa", "browser:qa", "browser-qa", "e2e:qa", "e2e-qa"];
|
|
42
50
|
}, {
|
|
43
51
|
readonly laneId: "repo-explorer";
|
|
44
52
|
readonly skillId: "maestro.subagent.repo-explorer";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subagent-dispatch-table.d.ts","sourceRoot":"","sources":["../../src/codex/subagent-dispatch-table.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,yBAAyB;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,0BAA0B;IAC1C,aAAa,EAAE,kDAAkD,CAAC;IAClE,iBAAiB,EAAE,YAAY,CAAC;IAChC,aAAa,EAAE,SAAS,yBAAyB,EAAE,CAAC;CACpD;AAED,eAAO,MAAM,6BAA6B
|
|
1
|
+
{"version":3,"file":"subagent-dispatch-table.d.ts","sourceRoot":"","sources":["../../src/codex/subagent-dispatch-table.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,yBAAyB;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,0BAA0B;IAC1C,aAAa,EAAE,kDAAkD,CAAC;IAClE,iBAAiB,EAAE,YAAY,CAAC;IAChC,aAAa,EAAE,SAAS,yBAAyB,EAAE,CAAC;CACpD;AAED,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoHK,CAAC;AAEhD,eAAO,MAAM,4CAA4C,cACT,CAAC;AAyBjD,wBAAgB,wBAAwB,CACvC,KAAK,EAAE,MAAM,GAAG,SAAS,GACvB,yBAAyB,GAAG,SAAS,CAGvC;AAED,wBAAgB,8BAA8B,CAC7C,KAAK,EAAE,MAAM,GAAG,SAAS,GACvB,yBAAyB,GAAG,SAAS,CAGvC;AAED,wBAAgB,2BAA2B,CAC1C,KAAK,EAAE,MAAM,GAAG,SAAS,GACvB,MAAM,GAAG,SAAS,CAKpB;AAED,wBAAgB,iCAAiC,CAChD,KAAK,EAAE,MAAM,GAAG,SAAS,GACvB,MAAM,GAAG,SAAS,CAKpB;AAED,wBAAgB,uBAAuB,CACtC,KAAK,EAAE,MAAM,GAAG,SAAS,GACvB,MAAM,GAAG,SAAS,CAQpB"}
|
|
@@ -48,6 +48,29 @@ export const CODEX_SUBAGENT_DISPATCH_TABLE = {
|
|
|
48
48
|
"test-runner",
|
|
49
49
|
],
|
|
50
50
|
},
|
|
51
|
+
{
|
|
52
|
+
laneId: "browser-qa",
|
|
53
|
+
skillId: "maestro.subagent.browser-qa",
|
|
54
|
+
displayName: "Maestro browser QA subagent",
|
|
55
|
+
description: "Delegate browser-based product QA, console inspection, screenshots, repro videos, and evidence-backed bug reports to a target-owned Maestro child agent.",
|
|
56
|
+
tags: ["maestro", "subagent", "browser", "qa", "evidence"],
|
|
57
|
+
typeAliases: [
|
|
58
|
+
"browser-qa",
|
|
59
|
+
"browser",
|
|
60
|
+
"dogfood",
|
|
61
|
+
"product-qa",
|
|
62
|
+
"e2e-qa",
|
|
63
|
+
"ux-qa",
|
|
64
|
+
],
|
|
65
|
+
capabilityAliases: [
|
|
66
|
+
"product:qa",
|
|
67
|
+
"product-qa",
|
|
68
|
+
"browser:qa",
|
|
69
|
+
"browser-qa",
|
|
70
|
+
"e2e:qa",
|
|
71
|
+
"e2e-qa",
|
|
72
|
+
],
|
|
73
|
+
},
|
|
51
74
|
{
|
|
52
75
|
laneId: "repo-explorer",
|
|
53
76
|
skillId: "maestro.subagent.repo-explorer",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subagent-dispatch-table.js","sourceRoot":"","sources":["../../src/codex/subagent-dispatch-table.ts"],"names":[],"mappings":"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","sourcesContent":["export interface CodexSubagentDispatchLane {\n\tlaneId: string;\n\tskillId: string;\n\tdisplayName: string;\n\tdescription: string;\n\ttags: readonly string[];\n\ttypeAliases: readonly string[];\n\tcapabilityAliases: readonly string[];\n}\n\nexport interface CodexSubagentDispatchTable {\n\tschemaVersion: \"evalops.maestro.codex.subagent-dispatch-table.v1\";\n\tdefaultCapability: \"code:write\";\n\ta2aSkillLanes: readonly CodexSubagentDispatchLane[];\n}\n\nexport const CODEX_SUBAGENT_DISPATCH_TABLE = {\n\tschemaVersion: \"evalops.maestro.codex.subagent-dispatch-table.v1\",\n\tdefaultCapability: \"code:write\",\n\ta2aSkillLanes: [\n\t\t{\n\t\t\tlaneId: \"code-writer\",\n\t\t\tskillId: \"maestro.subagent.code-writer\",\n\t\t\tdisplayName: \"Maestro code writer subagent\",\n\t\t\tdescription:\n\t\t\t\t\"Delegate bounded implementation work to a target-owned Maestro coding child agent.\",\n\t\t\ttags: [\"maestro\", \"subagent\", \"code\", \"write\"],\n\t\t\ttypeAliases: [\"worker\", \"coder\", \"code\", \"code-writer\", \"default\"],\n\t\t\tcapabilityAliases: [\n\t\t\t\t\"code:write\",\n\t\t\t\t\"code-write\",\n\t\t\t\t\"code:edit\",\n\t\t\t\t\"code-edit\",\n\t\t\t\t\"code:implement\",\n\t\t\t\t\"code-implement\",\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tlaneId: \"code-review\",\n\t\t\tskillId: \"maestro.subagent.code-review\",\n\t\t\tdisplayName: \"Maestro code review subagent\",\n\t\t\tdescription:\n\t\t\t\t\"Delegate code review and risk analysis to a target-owned Maestro review child agent.\",\n\t\t\ttags: [\"maestro\", \"subagent\", \"code\", \"review\"],\n\t\t\ttypeAliases: [\n\t\t\t\t\"pr-review\",\n\t\t\t\t\"review\",\n\t\t\t\t\"reviewer\",\n\t\t\t\t\"code-review\",\n\t\t\t\t\"code-reviewer\",\n\t\t\t],\n\t\t\tcapabilityAliases: [\"code:review\", \"code-review\"],\n\t\t},\n\t\t{\n\t\t\tlaneId: \"test-runner\",\n\t\t\tskillId: \"maestro.subagent.test-runner\",\n\t\t\tdisplayName: \"Maestro test runner subagent\",\n\t\t\tdescription:\n\t\t\t\t\"Delegate test execution, failure triage, and result artifact capture to a target-owned Maestro child agent.\",\n\t\t\ttags: [\"maestro\", \"subagent\", \"test\", \"ci\"],\n\t\t\ttypeAliases: [\"test\", \"qa\", \"ci\", \"ci-monitor\", \"test-runner\"],\n\t\t\tcapabilityAliases: [\n\t\t\t\t\"code:test\",\n\t\t\t\t\"code-test\",\n\t\t\t\t\"test:run\",\n\t\t\t\t\"test-run\",\n\t\t\t\t\"test-runner\",\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tlaneId: \"repo-explorer\",\n\t\t\tskillId: \"maestro.subagent.repo-explorer\",\n\t\t\tdisplayName: \"Maestro repo explorer subagent\",\n\t\t\tdescription:\n\t\t\t\t\"Delegate repository inspection and context gathering to a target-owned Maestro exploration child agent.\",\n\t\t\ttags: [\"maestro\", \"subagent\", \"repo\", \"explore\"],\n\t\t\ttypeAliases: [\n\t\t\t\t\"explore\",\n\t\t\t\t\"explorer\",\n\t\t\t\t\"repo-explorer\",\n\t\t\t\t\"research\",\n\t\t\t\t\"competitive-intel\",\n\t\t\t\t\"people-research\",\n\t\t\t],\n\t\t\tcapabilityAliases: [\n\t\t\t\t\"repo:explore\",\n\t\t\t\t\"repo-explore\",\n\t\t\t\t\"repo-explorer\",\n\t\t\t\t\"code:search\",\n\t\t\t\t\"code-search\",\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tlaneId: \"release-shepherd\",\n\t\t\tskillId: \"maestro.subagent.release-shepherd\",\n\t\t\tdisplayName: \"Maestro release shepherd subagent\",\n\t\t\tdescription:\n\t\t\t\t\"Delegate release, rollout, and merge-follow-through work to a target-owned Maestro child agent.\",\n\t\t\ttags: [\"maestro\", \"subagent\", \"release\", \"deploy\"],\n\t\t\ttypeAliases: [\"release\", \"release-shepherd\"],\n\t\t\tcapabilityAliases: [\n\t\t\t\t\"release:shepherd\",\n\t\t\t\t\"release-shepherd\",\n\t\t\t\t\"release:manage\",\n\t\t\t\t\"release-manage\",\n\t\t\t],\n\t\t},\n\t],\n} as const satisfies CodexSubagentDispatchTable;\n\nexport const DEFAULT_CODEX_SUBAGENT_DELEGATION_CAPABILITY =\n\tCODEX_SUBAGENT_DISPATCH_TABLE.defaultCapability;\n\nfunction tokenSet(values: readonly string[]): ReadonlySet<string> {\n\treturn new Set(\n\t\tvalues\n\t\t\t.map((value) => codexSubagentSkillToken(value))\n\t\t\t.filter((token): token is string => Boolean(token)),\n\t);\n}\n\nconst lanesByTypeToken = new Map(\n\tCODEX_SUBAGENT_DISPATCH_TABLE.a2aSkillLanes.flatMap((lane) =>\n\t\tArray.from(tokenSet(lane.typeAliases), (token) => [token, lane] as const),\n\t),\n);\n\nconst lanesByCapabilityToken = new Map(\n\tCODEX_SUBAGENT_DISPATCH_TABLE.a2aSkillLanes.flatMap((lane) =>\n\t\tArray.from(\n\t\t\ttokenSet(lane.capabilityAliases),\n\t\t\t(token) => [token, lane] as const,\n\t\t),\n\t),\n);\n\nexport function codexSubagentLaneForType(\n\tvalue: string | undefined,\n): CodexSubagentDispatchLane | undefined {\n\tconst token = codexSubagentSkillToken(value);\n\treturn token ? lanesByTypeToken.get(token) : undefined;\n}\n\nexport function codexSubagentLaneForCapability(\n\tvalue: string | undefined,\n): CodexSubagentDispatchLane | undefined {\n\tconst token = codexSubagentSkillToken(value);\n\treturn token ? lanesByCapabilityToken.get(token) : undefined;\n}\n\nexport function codexSubagentTypeA2ASkillID(\n\tvalue: string | undefined,\n): string | undefined {\n\treturn codexSubagentA2ASkillID(\n\t\tvalue,\n\t\tcodexSubagentLaneForType(value)?.skillId,\n\t);\n}\n\nexport function codexSubagentCapabilityA2ASkillID(\n\tvalue: string | undefined,\n): string | undefined {\n\treturn codexSubagentA2ASkillID(\n\t\tvalue,\n\t\tcodexSubagentLaneForCapability(value)?.skillId,\n\t);\n}\n\nexport function codexSubagentSkillToken(\n\tvalue: string | undefined,\n): string | undefined {\n\tconst token = value\n\t\t?.trim()\n\t\t.toLowerCase()\n\t\t.replace(/[:_/. ]+/g, \"-\")\n\t\t.replace(/-{2,}/g, \"-\")\n\t\t.replace(/^-|-$/g, \"\");\n\treturn token || undefined;\n}\n\nfunction codexSubagentA2ASkillID(\n\tvalue: string | undefined,\n\tmappedSkillId: string | undefined,\n): string | undefined {\n\tconst token = codexSubagentSkillToken(value);\n\tif (!token) {\n\t\treturn undefined;\n\t}\n\treturn mappedSkillId ?? `maestro.subagent.${token}`;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"subagent-dispatch-table.js","sourceRoot":"","sources":["../../src/codex/subagent-dispatch-table.ts"],"names":[],"mappings":"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","sourcesContent":["export interface CodexSubagentDispatchLane {\n\tlaneId: string;\n\tskillId: string;\n\tdisplayName: string;\n\tdescription: string;\n\ttags: readonly string[];\n\ttypeAliases: readonly string[];\n\tcapabilityAliases: readonly string[];\n}\n\nexport interface CodexSubagentDispatchTable {\n\tschemaVersion: \"evalops.maestro.codex.subagent-dispatch-table.v1\";\n\tdefaultCapability: \"code:write\";\n\ta2aSkillLanes: readonly CodexSubagentDispatchLane[];\n}\n\nexport const CODEX_SUBAGENT_DISPATCH_TABLE = {\n\tschemaVersion: \"evalops.maestro.codex.subagent-dispatch-table.v1\",\n\tdefaultCapability: \"code:write\",\n\ta2aSkillLanes: [\n\t\t{\n\t\t\tlaneId: \"code-writer\",\n\t\t\tskillId: \"maestro.subagent.code-writer\",\n\t\t\tdisplayName: \"Maestro code writer subagent\",\n\t\t\tdescription:\n\t\t\t\t\"Delegate bounded implementation work to a target-owned Maestro coding child agent.\",\n\t\t\ttags: [\"maestro\", \"subagent\", \"code\", \"write\"],\n\t\t\ttypeAliases: [\"worker\", \"coder\", \"code\", \"code-writer\", \"default\"],\n\t\t\tcapabilityAliases: [\n\t\t\t\t\"code:write\",\n\t\t\t\t\"code-write\",\n\t\t\t\t\"code:edit\",\n\t\t\t\t\"code-edit\",\n\t\t\t\t\"code:implement\",\n\t\t\t\t\"code-implement\",\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tlaneId: \"code-review\",\n\t\t\tskillId: \"maestro.subagent.code-review\",\n\t\t\tdisplayName: \"Maestro code review subagent\",\n\t\t\tdescription:\n\t\t\t\t\"Delegate code review and risk analysis to a target-owned Maestro review child agent.\",\n\t\t\ttags: [\"maestro\", \"subagent\", \"code\", \"review\"],\n\t\t\ttypeAliases: [\n\t\t\t\t\"pr-review\",\n\t\t\t\t\"review\",\n\t\t\t\t\"reviewer\",\n\t\t\t\t\"code-review\",\n\t\t\t\t\"code-reviewer\",\n\t\t\t],\n\t\t\tcapabilityAliases: [\"code:review\", \"code-review\"],\n\t\t},\n\t\t{\n\t\t\tlaneId: \"test-runner\",\n\t\t\tskillId: \"maestro.subagent.test-runner\",\n\t\t\tdisplayName: \"Maestro test runner subagent\",\n\t\t\tdescription:\n\t\t\t\t\"Delegate test execution, failure triage, and result artifact capture to a target-owned Maestro child agent.\",\n\t\t\ttags: [\"maestro\", \"subagent\", \"test\", \"ci\"],\n\t\t\ttypeAliases: [\"test\", \"qa\", \"ci\", \"ci-monitor\", \"test-runner\"],\n\t\t\tcapabilityAliases: [\n\t\t\t\t\"code:test\",\n\t\t\t\t\"code-test\",\n\t\t\t\t\"test:run\",\n\t\t\t\t\"test-run\",\n\t\t\t\t\"test-runner\",\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tlaneId: \"browser-qa\",\n\t\t\tskillId: \"maestro.subagent.browser-qa\",\n\t\t\tdisplayName: \"Maestro browser QA subagent\",\n\t\t\tdescription:\n\t\t\t\t\"Delegate browser-based product QA, console inspection, screenshots, repro videos, and evidence-backed bug reports to a target-owned Maestro child agent.\",\n\t\t\ttags: [\"maestro\", \"subagent\", \"browser\", \"qa\", \"evidence\"],\n\t\t\ttypeAliases: [\n\t\t\t\t\"browser-qa\",\n\t\t\t\t\"browser\",\n\t\t\t\t\"dogfood\",\n\t\t\t\t\"product-qa\",\n\t\t\t\t\"e2e-qa\",\n\t\t\t\t\"ux-qa\",\n\t\t\t],\n\t\t\tcapabilityAliases: [\n\t\t\t\t\"product:qa\",\n\t\t\t\t\"product-qa\",\n\t\t\t\t\"browser:qa\",\n\t\t\t\t\"browser-qa\",\n\t\t\t\t\"e2e:qa\",\n\t\t\t\t\"e2e-qa\",\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tlaneId: \"repo-explorer\",\n\t\t\tskillId: \"maestro.subagent.repo-explorer\",\n\t\t\tdisplayName: \"Maestro repo explorer subagent\",\n\t\t\tdescription:\n\t\t\t\t\"Delegate repository inspection and context gathering to a target-owned Maestro exploration child agent.\",\n\t\t\ttags: [\"maestro\", \"subagent\", \"repo\", \"explore\"],\n\t\t\ttypeAliases: [\n\t\t\t\t\"explore\",\n\t\t\t\t\"explorer\",\n\t\t\t\t\"repo-explorer\",\n\t\t\t\t\"research\",\n\t\t\t\t\"competitive-intel\",\n\t\t\t\t\"people-research\",\n\t\t\t],\n\t\t\tcapabilityAliases: [\n\t\t\t\t\"repo:explore\",\n\t\t\t\t\"repo-explore\",\n\t\t\t\t\"repo-explorer\",\n\t\t\t\t\"code:search\",\n\t\t\t\t\"code-search\",\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tlaneId: \"release-shepherd\",\n\t\t\tskillId: \"maestro.subagent.release-shepherd\",\n\t\t\tdisplayName: \"Maestro release shepherd subagent\",\n\t\t\tdescription:\n\t\t\t\t\"Delegate release, rollout, and merge-follow-through work to a target-owned Maestro child agent.\",\n\t\t\ttags: [\"maestro\", \"subagent\", \"release\", \"deploy\"],\n\t\t\ttypeAliases: [\"release\", \"release-shepherd\"],\n\t\t\tcapabilityAliases: [\n\t\t\t\t\"release:shepherd\",\n\t\t\t\t\"release-shepherd\",\n\t\t\t\t\"release:manage\",\n\t\t\t\t\"release-manage\",\n\t\t\t],\n\t\t},\n\t],\n} as const satisfies CodexSubagentDispatchTable;\n\nexport const DEFAULT_CODEX_SUBAGENT_DELEGATION_CAPABILITY =\n\tCODEX_SUBAGENT_DISPATCH_TABLE.defaultCapability;\n\nfunction tokenSet(values: readonly string[]): ReadonlySet<string> {\n\treturn new Set(\n\t\tvalues\n\t\t\t.map((value) => codexSubagentSkillToken(value))\n\t\t\t.filter((token): token is string => Boolean(token)),\n\t);\n}\n\nconst lanesByTypeToken = new Map(\n\tCODEX_SUBAGENT_DISPATCH_TABLE.a2aSkillLanes.flatMap((lane) =>\n\t\tArray.from(tokenSet(lane.typeAliases), (token) => [token, lane] as const),\n\t),\n);\n\nconst lanesByCapabilityToken = new Map(\n\tCODEX_SUBAGENT_DISPATCH_TABLE.a2aSkillLanes.flatMap((lane) =>\n\t\tArray.from(\n\t\t\ttokenSet(lane.capabilityAliases),\n\t\t\t(token) => [token, lane] as const,\n\t\t),\n\t),\n);\n\nexport function codexSubagentLaneForType(\n\tvalue: string | undefined,\n): CodexSubagentDispatchLane | undefined {\n\tconst token = codexSubagentSkillToken(value);\n\treturn token ? lanesByTypeToken.get(token) : undefined;\n}\n\nexport function codexSubagentLaneForCapability(\n\tvalue: string | undefined,\n): CodexSubagentDispatchLane | undefined {\n\tconst token = codexSubagentSkillToken(value);\n\treturn token ? lanesByCapabilityToken.get(token) : undefined;\n}\n\nexport function codexSubagentTypeA2ASkillID(\n\tvalue: string | undefined,\n): string | undefined {\n\treturn codexSubagentA2ASkillID(\n\t\tvalue,\n\t\tcodexSubagentLaneForType(value)?.skillId,\n\t);\n}\n\nexport function codexSubagentCapabilityA2ASkillID(\n\tvalue: string | undefined,\n): string | undefined {\n\treturn codexSubagentA2ASkillID(\n\t\tvalue,\n\t\tcodexSubagentLaneForCapability(value)?.skillId,\n\t);\n}\n\nexport function codexSubagentSkillToken(\n\tvalue: string | undefined,\n): string | undefined {\n\tconst token = value\n\t\t?.trim()\n\t\t.toLowerCase()\n\t\t.replace(/[:_/. ]+/g, \"-\")\n\t\t.replace(/-{2,}/g, \"-\")\n\t\t.replace(/^-|-$/g, \"\");\n\treturn token || undefined;\n}\n\nfunction codexSubagentA2ASkillID(\n\tvalue: string | undefined,\n\tmappedSkillId: string | undefined,\n): string | undefined {\n\tconst token = codexSubagentSkillToken(value);\n\tif (!token) {\n\t\treturn undefined;\n\t}\n\treturn mappedSkillId ?? `maestro.subagent.${token}`;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/context/manifest.ts"],"names":[],"mappings":"AAEA,OAAO,EACN,KAAK,cAAc,EACnB,KAAK,wBAAwB,EAE7B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EACX,SAAS,EACT,gBAAgB,EAIhB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/context/manifest.ts"],"names":[],"mappings":"AAEA,OAAO,EACN,KAAK,cAAc,EACnB,KAAK,wBAAwB,EAE7B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EACX,SAAS,EACT,gBAAgB,EAIhB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAKN,KAAK,sBAAsB,EAC3B,KAAK,mCAAmC,EAExC,KAAK,0BAA0B,EAG/B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACN,iCAAiC,EACjC,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,EAC9B,KAAK,yBAAyB,EAC9B,KAAK,sBAAsB,EAC3B,KAAK,mCAAmC,EACxC,KAAK,gCAAgC,EACrC,KAAK,0BAA0B,EAC/B,KAAK,+BAA+B,EACpC,KAAK,2BAA2B,GAChC,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,iCAAiC;IACjD,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,WAAW,CAAC,EAAE,wBAAwB,CAAC;IACvC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC3B;AAiMD,wBAAgB,sCAAsC,CACrD,QAAQ,EAAE,sBAAsB,GAC9B,mCAAmC,EAAE,CA4CvC;AAED,wBAAgB,oCAAoC,CACnD,QAAQ,EAAE,sBAAsB,GAC9B,IAAI,CAWN;AAoSD,wBAAgB,0BAA0B,CACzC,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,GAAE,iCAAsC,GAC7C,sBAAsB,CAsBxB;AAED,wBAAgB,2BAA2B,CAC1C,MAAM,EAAE,sBAAsB,EAC9B,KAAK,EAAE,sBAAsB,GAC3B,0BAA0B,CAmE5B"}
|
package/dist/context/manifest.js
CHANGED
|
@@ -2,6 +2,7 @@ import { createHash } from "node:crypto";
|
|
|
2
2
|
import { relative, resolve } from "node:path";
|
|
3
3
|
import { loadPromptProjectDocManifest, } from "../config/index.js";
|
|
4
4
|
import { loadMcpConfig } from "../mcp/config.js";
|
|
5
|
+
import { isRecord } from "../utils/json.js";
|
|
5
6
|
import { UNIFIED_CONTEXT_MANIFEST_PROTOCOL, } from "./manifest-types.js";
|
|
6
7
|
export { UNIFIED_CONTEXT_MANIFEST_PROTOCOL, } from "./manifest-types.js";
|
|
7
8
|
const ENTRY_KINDS = new Set([
|
|
@@ -65,9 +66,6 @@ function stableJson(value) {
|
|
|
65
66
|
function hashValue(value) {
|
|
66
67
|
return createHash("sha256").update(stableJson(value)).digest("hex");
|
|
67
68
|
}
|
|
68
|
-
function isRecord(value) {
|
|
69
|
-
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
70
|
-
}
|
|
71
69
|
function hasRedactedTrue(value) {
|
|
72
70
|
return isRecord(value) && value.redacted === true;
|
|
73
71
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/context/manifest.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from \"node:crypto\";\nimport { relative, resolve } from \"node:path\";\nimport {\n\ttype ComposerConfig,\n\ttype PromptProjectDocManifest,\n\tloadPromptProjectDocManifest,\n} from \"../config/index.js\";\nimport { loadMcpConfig } from \"../mcp/config.js\";\nimport type {\n\tMcpConfig,\n\tMcpManagerStatus,\n\tMcpPromptDefinition,\n\tMcpServerConfig,\n\tMcpServerStatus,\n} from \"../mcp/types.js\";\nimport {\n\tUNIFIED_CONTEXT_MANIFEST_PROTOCOL,\n\ttype UnifiedContextEntryKind,\n\ttype UnifiedContextEntrySource,\n\ttype UnifiedContextEntryStatus,\n\ttype UnifiedContextManifest,\n\ttype UnifiedContextManifestContractIssue,\n\ttype UnifiedContextManifestDiagnostic,\n\ttype UnifiedContextManifestDiff,\n\ttype UnifiedContextManifestDiffEntry,\n\ttype UnifiedContextManifestEntry,\n} from \"./manifest-types.js\";\n\nexport {\n\tUNIFIED_CONTEXT_MANIFEST_PROTOCOL,\n\ttype UnifiedContextEntryKind,\n\ttype UnifiedContextEntrySource,\n\ttype UnifiedContextEntryStatus,\n\ttype UnifiedContextManifest,\n\ttype UnifiedContextManifestContractIssue,\n\ttype UnifiedContextManifestDiagnostic,\n\ttype UnifiedContextManifestDiff,\n\ttype UnifiedContextManifestDiffEntry,\n\ttype UnifiedContextManifestEntry,\n} from \"./manifest-types.js\";\n\nexport interface LoadUnifiedContextManifestOptions {\n\tconfig?: ComposerConfig;\n\tprojectDocs?: PromptProjectDocManifest;\n\tmcpConfig?: McpConfig;\n\tmcpStatus?: McpManagerStatus;\n\tincludeMcpConfig?: boolean;\n}\n\nconst ENTRY_KINDS: ReadonlySet<UnifiedContextEntryKind> = new Set([\n\t\"project_doc\",\n\t\"mcp_server\",\n\t\"mcp_resource\",\n\t\"mcp_prompt\",\n]);\n\nconst ENTRY_SOURCES: ReadonlySet<UnifiedContextEntrySource> = new Set([\n\t\"filesystem\",\n\t\"mcp_config\",\n\t\"mcp_runtime\",\n]);\n\nconst ENTRY_STATUSES: ReadonlySet<UnifiedContextEntryStatus> = new Set([\n\t\"available\",\n\t\"configured\",\n\t\"connected\",\n\t\"disconnected\",\n\t\"error\",\n\t\"loaded\",\n]);\n\nconst METADATA_KEYS_BY_KIND: Record<\n\tUnifiedContextEntryKind,\n\tReadonlySet<string>\n> = {\n\tproject_doc: new Set([\"sourceKind\", \"truncated\", \"originalSize\", \"maxBytes\"]),\n\tmcp_server: new Set([\n\t\t\"transport\",\n\t\t\"scope\",\n\t\t\"command\",\n\t\t\"args\",\n\t\t\"cwdConfigured\",\n\t\t\"url\",\n\t\t\"remoteUrl\",\n\t\t\"remoteHost\",\n\t\t\"envKeys\",\n\t\t\"headerKeys\",\n\t\t\"headersHelperConfigured\",\n\t\t\"authPreset\",\n\t\t\"timeout\",\n\t\t\"remoteTrust\",\n\t\t\"projectApproval\",\n\t\t\"toolCount\",\n\t\t\"resourceCount\",\n\t\t\"promptCount\",\n\t\t\"error\",\n\t]),\n\tmcp_resource: new Set(),\n\tmcp_prompt: new Set([\"title\", \"description\", \"arguments\"]),\n};\n\nfunction stableJson(value: unknown): string {\n\tif (value === null || typeof value !== \"object\") {\n\t\treturn JSON.stringify(value);\n\t}\n\tif (Array.isArray(value)) {\n\t\treturn `[${value.map(stableJson).join(\",\")}]`;\n\t}\n\n\tconst record = value as Record<string, unknown>;\n\treturn `{${Object.keys(record)\n\t\t.sort()\n\t\t.map((key) => `${JSON.stringify(key)}:${stableJson(record[key])}`)\n\t\t.join(\",\")}}`;\n}\n\nfunction hashValue(value: unknown): string {\n\treturn createHash(\"sha256\").update(stableJson(value)).digest(\"hex\");\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction hasRedactedTrue(value: unknown): boolean {\n\treturn isRecord(value) && value.redacted === true;\n}\n\nfunction validateRedactedObject(\n\tissues: UnifiedContextManifestContractIssue[],\n\tvalue: unknown,\n\tpath: string,\n\trequiredFlag: \"configured\" | \"present\" | null,\n): void {\n\tif (!isRecord(value) || value.redacted !== true) {\n\t\tissues.push({\n\t\t\tpath,\n\t\t\tmessage: \"must be summarized as a redacted object\",\n\t\t});\n\t\treturn;\n\t}\n\tif (requiredFlag && value[requiredFlag] !== true) {\n\t\tissues.push({\n\t\t\tpath,\n\t\t\tmessage: `must include ${requiredFlag}: true`,\n\t\t});\n\t}\n}\n\nfunction validateRedactedUrlObject(\n\tissues: UnifiedContextManifestContractIssue[],\n\tvalue: unknown,\n\tpath: string,\n): void {\n\tif (!hasRedactedTrue(value)) {\n\t\tissues.push({\n\t\t\tpath,\n\t\t\tmessage: \"must be summarized as a redacted URL object\",\n\t\t});\n\t\treturn;\n\t}\n\tif (isRecord(value)) {\n\t\tfor (const key of Object.keys(value)) {\n\t\t\tif (![\"scheme\", \"host\", \"redacted\"].includes(key)) {\n\t\t\t\tissues.push({\n\t\t\t\t\tpath: `${path}.${key}`,\n\t\t\t\t\tmessage: \"is not allowed in redacted URL metadata\",\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction validateEntryMetadata(\n\tissues: UnifiedContextManifestContractIssue[],\n\tentry: UnifiedContextManifestEntry,\n\tentryPath: string,\n): void {\n\tconst metadata = entry.metadata;\n\tif (!metadata) {\n\t\treturn;\n\t}\n\tconst allowedKeys =\n\t\tMETADATA_KEYS_BY_KIND[entry.kind as UnifiedContextEntryKind];\n\tif (!allowedKeys) {\n\t\treturn;\n\t}\n\tfor (const key of Object.keys(metadata)) {\n\t\tif (!allowedKeys.has(key)) {\n\t\t\tissues.push({\n\t\t\t\tpath: `${entryPath}.metadata.${key}`,\n\t\t\t\tmessage: `is not allowed for ${entry.kind} entries`,\n\t\t\t});\n\t\t}\n\t}\n\tif (entry.kind !== \"mcp_server\") {\n\t\treturn;\n\t}\n\n\tif (\"command\" in metadata) {\n\t\tvalidateRedactedObject(\n\t\t\tissues,\n\t\t\tmetadata.command,\n\t\t\t`${entryPath}.metadata.command`,\n\t\t\t\"configured\",\n\t\t);\n\t}\n\tif (\"args\" in metadata) {\n\t\tif (!isRecord(metadata.args) || metadata.args.redacted !== true) {\n\t\t\tissues.push({\n\t\t\t\tpath: `${entryPath}.metadata.args`,\n\t\t\t\tmessage: \"must be summarized as a redacted args object\",\n\t\t\t});\n\t\t} else if (typeof metadata.args.count !== \"number\") {\n\t\t\tissues.push({\n\t\t\t\tpath: `${entryPath}.metadata.args.count`,\n\t\t\t\tmessage: \"must include the redacted argument count\",\n\t\t\t});\n\t\t}\n\t}\n\tif (\"url\" in metadata) {\n\t\tvalidateRedactedUrlObject(\n\t\t\tissues,\n\t\t\tmetadata.url,\n\t\t\t`${entryPath}.metadata.url`,\n\t\t);\n\t}\n\tif (\"remoteUrl\" in metadata) {\n\t\tvalidateRedactedUrlObject(\n\t\t\tissues,\n\t\t\tmetadata.remoteUrl,\n\t\t\t`${entryPath}.metadata.remoteUrl`,\n\t\t);\n\t}\n\tif (\"error\" in metadata) {\n\t\tvalidateRedactedObject(\n\t\t\tissues,\n\t\t\tmetadata.error,\n\t\t\t`${entryPath}.metadata.error`,\n\t\t\t\"present\",\n\t\t);\n\t}\n}\n\nexport function validateUnifiedContextManifestContract(\n\tmanifest: UnifiedContextManifest,\n): UnifiedContextManifestContractIssue[] {\n\tconst issues: UnifiedContextManifestContractIssue[] = [];\n\tif (manifest.protocolVersion !== UNIFIED_CONTEXT_MANIFEST_PROTOCOL) {\n\t\tissues.push({\n\t\t\tpath: \"protocolVersion\",\n\t\t\tmessage: `must be ${UNIFIED_CONTEXT_MANIFEST_PROTOCOL}`,\n\t\t});\n\t}\n\tif (manifest.version !== 1) {\n\t\tissues.push({ path: \"version\", message: \"must be 1\" });\n\t}\n\n\tconst seenIds = new Set<string>();\n\tmanifest.entries.forEach((entry, index) => {\n\t\tconst entryPath = `entries[${index}]`;\n\t\tif (!entry.id) {\n\t\t\tissues.push({ path: `${entryPath}.id`, message: \"is required\" });\n\t\t} else if (seenIds.has(entry.id)) {\n\t\t\tissues.push({ path: `${entryPath}.id`, message: \"must be unique\" });\n\t\t}\n\t\tseenIds.add(entry.id);\n\n\t\tif (!ENTRY_KINDS.has(entry.kind)) {\n\t\t\tissues.push({ path: `${entryPath}.kind`, message: \"is unsupported\" });\n\t\t}\n\t\tif (!ENTRY_SOURCES.has(entry.source)) {\n\t\t\tissues.push({ path: `${entryPath}.source`, message: \"is unsupported\" });\n\t\t}\n\t\tif (!ENTRY_STATUSES.has(entry.status)) {\n\t\t\tissues.push({ path: `${entryPath}.status`, message: \"is unsupported\" });\n\t\t}\n\t\tif (\n\t\t\tentry.kind === \"project_doc\" &&\n\t\t\tentry.id.startsWith(\"project_doc:project:/\")\n\t\t) {\n\t\t\tissues.push({\n\t\t\t\tpath: `${entryPath}.id`,\n\t\t\t\tmessage: \"must use a workspace-relative project document identity\",\n\t\t\t});\n\t\t}\n\t\tvalidateEntryMetadata(issues, entry, entryPath);\n\t});\n\n\treturn issues;\n}\n\nexport function assertUnifiedContextManifestContract(\n\tmanifest: UnifiedContextManifest,\n): void {\n\tconst issues = validateUnifiedContextManifestContract(manifest);\n\tif (issues.length === 0) {\n\t\treturn;\n\t}\n\tthrow new Error(\n\t\t[\n\t\t\t\"Unified context manifest contract failed:\",\n\t\t\t...issues.map((issue) => `- ${issue.path}: ${issue.message}`),\n\t\t].join(\"\\n\"),\n\t);\n}\n\nfunction normalizeMetadata(\n\tmetadata: Record<string, unknown>,\n): Record<string, unknown> {\n\treturn Object.fromEntries(\n\t\tObject.entries(metadata).filter(([, value]) => value !== undefined),\n\t);\n}\n\nfunction summarizeRedactedArgs(args: string[] | undefined):\n\t| {\n\t\t\tcount: number;\n\t\t\tredacted: true;\n\t }\n\t| undefined {\n\treturn args ? { count: args.length, redacted: true } : undefined;\n}\n\nfunction summarizeRedactedCommand(command: string | undefined):\n\t| {\n\t\t\tconfigured: true;\n\t\t\tredacted: true;\n\t }\n\t| undefined {\n\treturn command ? { configured: true, redacted: true } : undefined;\n}\n\nfunction summarizeRedactedError(error: string | undefined):\n\t| {\n\t\t\tpresent: true;\n\t\t\tredacted: true;\n\t }\n\t| undefined {\n\treturn error ? { present: true, redacted: true } : undefined;\n}\n\nfunction summarizeRedactedUrl(url: string | undefined):\n\t| {\n\t\t\tscheme?: string;\n\t\t\thost?: string;\n\t\t\tredacted: true;\n\t }\n\t| undefined {\n\tif (!url) {\n\t\treturn undefined;\n\t}\n\ttry {\n\t\tconst parsed = new URL(url);\n\t\treturn {\n\t\t\tscheme: parsed.protocol.replace(/:$/, \"\"),\n\t\t\thost: parsed.host,\n\t\t\tredacted: true,\n\t\t};\n\t} catch {\n\t\treturn { redacted: true };\n\t}\n}\n\nfunction compareEntry(\n\tbefore: UnifiedContextManifestEntry,\n\tafter: UnifiedContextManifestEntry,\n): string[] {\n\tconst fields: Array<keyof UnifiedContextManifestEntry> = [\n\t\t\"source\",\n\t\t\"status\",\n\t\t\"label\",\n\t\t\"path\",\n\t\t\"scopeDir\",\n\t\t\"serverName\",\n\t\t\"uri\",\n\t\t\"promptName\",\n\t\t\"precedenceIndex\",\n\t\t\"bytesRead\",\n\t\t\"contentHash\",\n\t\t\"metadata\",\n\t];\n\tif (before.kind === \"project_doc\" && after.kind === \"project_doc\") {\n\t\treturn fields\n\t\t\t.filter((field) => field !== \"path\" && field !== \"scopeDir\")\n\t\t\t.filter(\n\t\t\t\t(field) => stableJson(before[field]) !== stableJson(after[field]),\n\t\t\t);\n\t}\n\treturn fields.filter(\n\t\t(field) => stableJson(before[field]) !== stableJson(after[field]),\n\t);\n}\n\nfunction projectDocEntryId(\n\tcwd: string,\n\tentry: PromptProjectDocManifest[\"entries\"][number],\n): string {\n\tif (entry.sourceKind === \"project\") {\n\t\tconst relativePath = relative(cwd, entry.path) || entry.candidateName;\n\t\treturn `project_doc:${entry.sourceKind}:${relativePath}`;\n\t}\n\treturn `project_doc:${entry.sourceKind}:${entry.path}`;\n}\n\nfunction projectDocEntries(\n\tmanifest: PromptProjectDocManifest,\n): UnifiedContextManifestEntry[] {\n\treturn manifest.entries.map((entry) => ({\n\t\tid: projectDocEntryId(manifest.cwd, entry),\n\t\tkind: \"project_doc\",\n\t\tsource: \"filesystem\",\n\t\tstatus: \"loaded\",\n\t\tlabel: entry.candidateName,\n\t\tpath: entry.path,\n\t\tscopeDir: entry.scopeDir,\n\t\tprecedenceIndex: entry.precedenceIndex,\n\t\tbytesRead: entry.bytesRead,\n\t\tcontentHash: entry.contentHash,\n\t\tmetadata: normalizeMetadata({\n\t\t\tsourceKind: entry.sourceKind,\n\t\t\ttruncated: entry.truncated,\n\t\t\toriginalSize: entry.originalSize,\n\t\t\tmaxBytes: entry.maxBytes,\n\t\t}),\n\t}));\n}\n\nfunction mcpServerConfigEntry(\n\tserver: McpServerConfig,\n): UnifiedContextManifestEntry {\n\tconst metadata = normalizeMetadata({\n\t\ttransport: server.transport,\n\t\tscope: server.scope,\n\t\tcommand: summarizeRedactedCommand(server.command),\n\t\targs: summarizeRedactedArgs(server.args),\n\t\tcwdConfigured: server.cwd ? true : undefined,\n\t\turl: summarizeRedactedUrl(server.url),\n\t\tenvKeys: server.env ? Object.keys(server.env).sort() : undefined,\n\t\theaderKeys: server.headers ? Object.keys(server.headers).sort() : undefined,\n\t\theadersHelperConfigured: server.headersHelper ? true : undefined,\n\t\tauthPreset: server.authPreset,\n\t\ttimeout: server.timeout,\n\t});\n\treturn {\n\t\tid: `mcp_server:${server.name}`,\n\t\tkind: \"mcp_server\",\n\t\tsource: \"mcp_config\",\n\t\tstatus: \"configured\",\n\t\tlabel: server.name,\n\t\tserverName: server.name,\n\t\tcontentHash: hashValue(metadata),\n\t\tmetadata,\n\t};\n}\n\nfunction mcpServerStatusEntry(\n\tserver: McpServerStatus,\n): UnifiedContextManifestEntry {\n\tconst metadata = normalizeMetadata({\n\t\ttransport: server.transport,\n\t\tscope: server.scope,\n\t\tcommand: summarizeRedactedCommand(server.command),\n\t\targs: summarizeRedactedArgs(server.args),\n\t\tcwdConfigured: server.cwd ? true : undefined,\n\t\tremoteUrl: summarizeRedactedUrl(server.remoteUrl),\n\t\tremoteHost: server.remoteHost,\n\t\tenvKeys: server.envKeys,\n\t\theaderKeys: server.headerKeys,\n\t\theadersHelperConfigured: server.headersHelper ? true : undefined,\n\t\tauthPreset: server.authPreset,\n\t\ttimeout: server.timeout,\n\t\tremoteTrust: server.remoteTrust,\n\t\tprojectApproval: server.projectApproval,\n\t\ttoolCount: server.tools.length,\n\t\tresourceCount: server.resources.length,\n\t\tpromptCount: server.prompts.length,\n\t\terror: summarizeRedactedError(server.error),\n\t});\n\treturn {\n\t\tid: `mcp_server:${server.name}`,\n\t\tkind: \"mcp_server\",\n\t\tsource: \"mcp_runtime\",\n\t\tstatus: server.error\n\t\t\t? \"error\"\n\t\t\t: server.connected\n\t\t\t\t? \"connected\"\n\t\t\t\t: \"disconnected\",\n\t\tlabel: server.name,\n\t\tserverName: server.name,\n\t\tcontentHash: hashValue(metadata),\n\t\tmetadata,\n\t};\n}\n\nfunction mcpResourceEntry(\n\tserverName: string,\n\turi: string,\n): UnifiedContextManifestEntry {\n\treturn {\n\t\tid: `mcp_resource:${serverName}:${uri}`,\n\t\tkind: \"mcp_resource\",\n\t\tsource: \"mcp_runtime\",\n\t\tstatus: \"available\",\n\t\tlabel: uri,\n\t\tserverName,\n\t\turi,\n\t\tcontentHash: hashValue({ serverName, uri }),\n\t};\n}\n\nfunction mcpPromptEntry(\n\tserverName: string,\n\tpromptName: string,\n\tprompt?: McpPromptDefinition,\n): UnifiedContextManifestEntry {\n\tconst metadata = normalizeMetadata({\n\t\ttitle: prompt?.title,\n\t\tdescription: prompt?.description,\n\t\targuments: prompt?.arguments,\n\t});\n\treturn {\n\t\tid: `mcp_prompt:${serverName}:${promptName}`,\n\t\tkind: \"mcp_prompt\",\n\t\tsource: \"mcp_runtime\",\n\t\tstatus: \"available\",\n\t\tlabel: prompt?.title ?? promptName,\n\t\tserverName,\n\t\tpromptName,\n\t\tcontentHash: hashValue({ serverName, promptName, metadata }),\n\t\tmetadata,\n\t};\n}\n\nfunction loadConfiguredMcpEntries(\n\tcwd: string,\n\toptions: LoadUnifiedContextManifestOptions,\n\tdiagnostics: UnifiedContextManifestDiagnostic[],\n): UnifiedContextManifestEntry[] {\n\tif (options.includeMcpConfig === false || options.mcpStatus) {\n\t\treturn [];\n\t}\n\n\ttry {\n\t\tconst config = options.mcpConfig ?? loadMcpConfig(cwd);\n\t\tif (config.servers.length > 0) {\n\t\t\tdiagnostics.push({\n\t\t\t\tcode: \"mcp_config_loaded\",\n\t\t\t\tseverity: \"info\",\n\t\t\t\tmessage: `${config.servers.length} configured MCP server${config.servers.length === 1 ? \"\" : \"s\"} included from config.`,\n\t\t\t});\n\t\t}\n\t\treturn config.servers.map(mcpServerConfigEntry);\n\t} catch (error) {\n\t\tdiagnostics.push({\n\t\t\tcode: \"mcp_config_unreadable\",\n\t\t\tseverity: \"warning\",\n\t\t\tmessage: `Could not load MCP config: ${error instanceof Error ? error.message : String(error)}`,\n\t\t});\n\t\treturn [];\n\t}\n}\n\nfunction loadRuntimeMcpEntries(\n\tstatus: McpManagerStatus | undefined,\n\tdiagnostics: UnifiedContextManifestDiagnostic[],\n): UnifiedContextManifestEntry[] {\n\tif (!status) {\n\t\treturn [];\n\t}\n\n\tconst entries: UnifiedContextManifestEntry[] = [];\n\tfor (const server of status.servers) {\n\t\tentries.push(mcpServerStatusEntry(server));\n\t\tfor (const uri of server.resources) {\n\t\t\tentries.push(mcpResourceEntry(server.name, uri));\n\t\t}\n\t\tconst promptDetails = new Map(\n\t\t\t(server.promptDetails ?? []).map((prompt) => [prompt.name, prompt]),\n\t\t);\n\t\tfor (const promptName of server.prompts) {\n\t\t\tentries.push(\n\t\t\t\tmcpPromptEntry(server.name, promptName, promptDetails.get(promptName)),\n\t\t\t);\n\t\t}\n\t\tif (!server.connected && server.error) {\n\t\t\tdiagnostics.push({\n\t\t\t\tcode: \"mcp_runtime_unavailable\",\n\t\t\t\tseverity: \"warning\",\n\t\t\t\tmessage: `MCP server ${server.name} is unavailable; error details redacted.`,\n\t\t\t\tentryId: `mcp_server:${server.name}`,\n\t\t\t});\n\t\t}\n\t}\n\treturn entries;\n}\n\nexport function loadUnifiedContextManifest(\n\tcwdOverride?: string,\n\toptions: LoadUnifiedContextManifestOptions = {},\n): UnifiedContextManifest {\n\tconst cwd = resolve(cwdOverride ?? process.cwd());\n\tconst projectDocs =\n\t\toptions.projectDocs ?? loadPromptProjectDocManifest(cwd, options.config);\n\tconst diagnostics: UnifiedContextManifestDiagnostic[] =\n\t\tprojectDocs.diagnostics.map((diagnostic) => ({ ...diagnostic }));\n\tconst entries = [\n\t\t...projectDocEntries(projectDocs),\n\t\t...loadConfiguredMcpEntries(cwd, options, diagnostics),\n\t\t...loadRuntimeMcpEntries(options.mcpStatus, diagnostics),\n\t];\n\n\tconst manifest: UnifiedContextManifest = {\n\t\tprotocolVersion: UNIFIED_CONTEXT_MANIFEST_PROTOCOL,\n\t\tversion: 1,\n\t\tcwd,\n\t\tprojectDocs,\n\t\tentries,\n\t\tdiagnostics,\n\t};\n\tassertUnifiedContextManifestContract(manifest);\n\treturn manifest;\n}\n\nexport function diffUnifiedContextManifests(\n\tbefore: UnifiedContextManifest,\n\tafter: UnifiedContextManifest,\n): UnifiedContextManifestDiff {\n\tconst beforeEntries = new Map(\n\t\tbefore.entries.map((entry) => [entry.id, entry]),\n\t);\n\tconst afterEntries = new Map(after.entries.map((entry) => [entry.id, entry]));\n\tconst added: UnifiedContextManifestDiffEntry[] = [];\n\tconst removed: UnifiedContextManifestDiffEntry[] = [];\n\tconst changed: UnifiedContextManifestDiffEntry[] = [];\n\tconst unchanged: UnifiedContextManifestDiffEntry[] = [];\n\n\tfor (const [id, afterEntry] of afterEntries) {\n\t\tconst beforeEntry = beforeEntries.get(id);\n\t\tif (!beforeEntry) {\n\t\t\tadded.push({\n\t\t\t\tid,\n\t\t\t\tkind: afterEntry.kind,\n\t\t\t\tlabel: afterEntry.label,\n\t\t\t\tafter: afterEntry,\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tconst changes = compareEntry(beforeEntry, afterEntry);\n\t\tif (changes.length > 0) {\n\t\t\tchanged.push({\n\t\t\t\tid,\n\t\t\t\tkind: afterEntry.kind,\n\t\t\t\tlabel: afterEntry.label,\n\t\t\t\tbefore: beforeEntry,\n\t\t\t\tafter: afterEntry,\n\t\t\t\tchanges,\n\t\t\t});\n\t\t} else {\n\t\t\tunchanged.push({\n\t\t\t\tid,\n\t\t\t\tkind: afterEntry.kind,\n\t\t\t\tlabel: afterEntry.label,\n\t\t\t\tbefore: beforeEntry,\n\t\t\t\tafter: afterEntry,\n\t\t\t});\n\t\t}\n\t}\n\n\tfor (const [id, beforeEntry] of beforeEntries) {\n\t\tif (!afterEntries.has(id)) {\n\t\t\tremoved.push({\n\t\t\t\tid,\n\t\t\t\tkind: beforeEntry.kind,\n\t\t\t\tlabel: beforeEntry.label,\n\t\t\t\tbefore: beforeEntry,\n\t\t\t});\n\t\t}\n\t}\n\n\tconst sortById = (\n\t\ta: UnifiedContextManifestDiffEntry,\n\t\tb: UnifiedContextManifestDiffEntry,\n\t) => a.id.localeCompare(b.id);\n\n\treturn {\n\t\tbeforeCwd: before.cwd,\n\t\tafterCwd: after.cwd,\n\t\tadded: added.sort(sortById),\n\t\tremoved: removed.sort(sortById),\n\t\tchanged: changed.sort(sortById),\n\t\tunchanged: unchanged.sort(sortById),\n\t\tdiagnostics: [...before.diagnostics, ...after.diagnostics],\n\t};\n}\n"]}
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/context/manifest.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from \"node:crypto\";\nimport { relative, resolve } from \"node:path\";\nimport {\n\ttype ComposerConfig,\n\ttype PromptProjectDocManifest,\n\tloadPromptProjectDocManifest,\n} from \"../config/index.js\";\nimport { loadMcpConfig } from \"../mcp/config.js\";\nimport type {\n\tMcpConfig,\n\tMcpManagerStatus,\n\tMcpPromptDefinition,\n\tMcpServerConfig,\n\tMcpServerStatus,\n} from \"../mcp/types.js\";\nimport { isRecord } from \"../utils/json.js\";\nimport {\n\tUNIFIED_CONTEXT_MANIFEST_PROTOCOL,\n\ttype UnifiedContextEntryKind,\n\ttype UnifiedContextEntrySource,\n\ttype UnifiedContextEntryStatus,\n\ttype UnifiedContextManifest,\n\ttype UnifiedContextManifestContractIssue,\n\ttype UnifiedContextManifestDiagnostic,\n\ttype UnifiedContextManifestDiff,\n\ttype UnifiedContextManifestDiffEntry,\n\ttype UnifiedContextManifestEntry,\n} from \"./manifest-types.js\";\n\nexport {\n\tUNIFIED_CONTEXT_MANIFEST_PROTOCOL,\n\ttype UnifiedContextEntryKind,\n\ttype UnifiedContextEntrySource,\n\ttype UnifiedContextEntryStatus,\n\ttype UnifiedContextManifest,\n\ttype UnifiedContextManifestContractIssue,\n\ttype UnifiedContextManifestDiagnostic,\n\ttype UnifiedContextManifestDiff,\n\ttype UnifiedContextManifestDiffEntry,\n\ttype UnifiedContextManifestEntry,\n} from \"./manifest-types.js\";\n\nexport interface LoadUnifiedContextManifestOptions {\n\tconfig?: ComposerConfig;\n\tprojectDocs?: PromptProjectDocManifest;\n\tmcpConfig?: McpConfig;\n\tmcpStatus?: McpManagerStatus;\n\tincludeMcpConfig?: boolean;\n}\n\nconst ENTRY_KINDS: ReadonlySet<UnifiedContextEntryKind> = new Set([\n\t\"project_doc\",\n\t\"mcp_server\",\n\t\"mcp_resource\",\n\t\"mcp_prompt\",\n]);\n\nconst ENTRY_SOURCES: ReadonlySet<UnifiedContextEntrySource> = new Set([\n\t\"filesystem\",\n\t\"mcp_config\",\n\t\"mcp_runtime\",\n]);\n\nconst ENTRY_STATUSES: ReadonlySet<UnifiedContextEntryStatus> = new Set([\n\t\"available\",\n\t\"configured\",\n\t\"connected\",\n\t\"disconnected\",\n\t\"error\",\n\t\"loaded\",\n]);\n\nconst METADATA_KEYS_BY_KIND: Record<\n\tUnifiedContextEntryKind,\n\tReadonlySet<string>\n> = {\n\tproject_doc: new Set([\"sourceKind\", \"truncated\", \"originalSize\", \"maxBytes\"]),\n\tmcp_server: new Set([\n\t\t\"transport\",\n\t\t\"scope\",\n\t\t\"command\",\n\t\t\"args\",\n\t\t\"cwdConfigured\",\n\t\t\"url\",\n\t\t\"remoteUrl\",\n\t\t\"remoteHost\",\n\t\t\"envKeys\",\n\t\t\"headerKeys\",\n\t\t\"headersHelperConfigured\",\n\t\t\"authPreset\",\n\t\t\"timeout\",\n\t\t\"remoteTrust\",\n\t\t\"projectApproval\",\n\t\t\"toolCount\",\n\t\t\"resourceCount\",\n\t\t\"promptCount\",\n\t\t\"error\",\n\t]),\n\tmcp_resource: new Set(),\n\tmcp_prompt: new Set([\"title\", \"description\", \"arguments\"]),\n};\n\nfunction stableJson(value: unknown): string {\n\tif (value === null || typeof value !== \"object\") {\n\t\treturn JSON.stringify(value);\n\t}\n\tif (Array.isArray(value)) {\n\t\treturn `[${value.map(stableJson).join(\",\")}]`;\n\t}\n\n\tconst record = value as Record<string, unknown>;\n\treturn `{${Object.keys(record)\n\t\t.sort()\n\t\t.map((key) => `${JSON.stringify(key)}:${stableJson(record[key])}`)\n\t\t.join(\",\")}}`;\n}\n\nfunction hashValue(value: unknown): string {\n\treturn createHash(\"sha256\").update(stableJson(value)).digest(\"hex\");\n}\n\nfunction hasRedactedTrue(value: unknown): boolean {\n\treturn isRecord(value) && value.redacted === true;\n}\n\nfunction validateRedactedObject(\n\tissues: UnifiedContextManifestContractIssue[],\n\tvalue: unknown,\n\tpath: string,\n\trequiredFlag: \"configured\" | \"present\" | null,\n): void {\n\tif (!isRecord(value) || value.redacted !== true) {\n\t\tissues.push({\n\t\t\tpath,\n\t\t\tmessage: \"must be summarized as a redacted object\",\n\t\t});\n\t\treturn;\n\t}\n\tif (requiredFlag && value[requiredFlag] !== true) {\n\t\tissues.push({\n\t\t\tpath,\n\t\t\tmessage: `must include ${requiredFlag}: true`,\n\t\t});\n\t}\n}\n\nfunction validateRedactedUrlObject(\n\tissues: UnifiedContextManifestContractIssue[],\n\tvalue: unknown,\n\tpath: string,\n): void {\n\tif (!hasRedactedTrue(value)) {\n\t\tissues.push({\n\t\t\tpath,\n\t\t\tmessage: \"must be summarized as a redacted URL object\",\n\t\t});\n\t\treturn;\n\t}\n\tif (isRecord(value)) {\n\t\tfor (const key of Object.keys(value)) {\n\t\t\tif (![\"scheme\", \"host\", \"redacted\"].includes(key)) {\n\t\t\t\tissues.push({\n\t\t\t\t\tpath: `${path}.${key}`,\n\t\t\t\t\tmessage: \"is not allowed in redacted URL metadata\",\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction validateEntryMetadata(\n\tissues: UnifiedContextManifestContractIssue[],\n\tentry: UnifiedContextManifestEntry,\n\tentryPath: string,\n): void {\n\tconst metadata = entry.metadata;\n\tif (!metadata) {\n\t\treturn;\n\t}\n\tconst allowedKeys =\n\t\tMETADATA_KEYS_BY_KIND[entry.kind as UnifiedContextEntryKind];\n\tif (!allowedKeys) {\n\t\treturn;\n\t}\n\tfor (const key of Object.keys(metadata)) {\n\t\tif (!allowedKeys.has(key)) {\n\t\t\tissues.push({\n\t\t\t\tpath: `${entryPath}.metadata.${key}`,\n\t\t\t\tmessage: `is not allowed for ${entry.kind} entries`,\n\t\t\t});\n\t\t}\n\t}\n\tif (entry.kind !== \"mcp_server\") {\n\t\treturn;\n\t}\n\n\tif (\"command\" in metadata) {\n\t\tvalidateRedactedObject(\n\t\t\tissues,\n\t\t\tmetadata.command,\n\t\t\t`${entryPath}.metadata.command`,\n\t\t\t\"configured\",\n\t\t);\n\t}\n\tif (\"args\" in metadata) {\n\t\tif (!isRecord(metadata.args) || metadata.args.redacted !== true) {\n\t\t\tissues.push({\n\t\t\t\tpath: `${entryPath}.metadata.args`,\n\t\t\t\tmessage: \"must be summarized as a redacted args object\",\n\t\t\t});\n\t\t} else if (typeof metadata.args.count !== \"number\") {\n\t\t\tissues.push({\n\t\t\t\tpath: `${entryPath}.metadata.args.count`,\n\t\t\t\tmessage: \"must include the redacted argument count\",\n\t\t\t});\n\t\t}\n\t}\n\tif (\"url\" in metadata) {\n\t\tvalidateRedactedUrlObject(\n\t\t\tissues,\n\t\t\tmetadata.url,\n\t\t\t`${entryPath}.metadata.url`,\n\t\t);\n\t}\n\tif (\"remoteUrl\" in metadata) {\n\t\tvalidateRedactedUrlObject(\n\t\t\tissues,\n\t\t\tmetadata.remoteUrl,\n\t\t\t`${entryPath}.metadata.remoteUrl`,\n\t\t);\n\t}\n\tif (\"error\" in metadata) {\n\t\tvalidateRedactedObject(\n\t\t\tissues,\n\t\t\tmetadata.error,\n\t\t\t`${entryPath}.metadata.error`,\n\t\t\t\"present\",\n\t\t);\n\t}\n}\n\nexport function validateUnifiedContextManifestContract(\n\tmanifest: UnifiedContextManifest,\n): UnifiedContextManifestContractIssue[] {\n\tconst issues: UnifiedContextManifestContractIssue[] = [];\n\tif (manifest.protocolVersion !== UNIFIED_CONTEXT_MANIFEST_PROTOCOL) {\n\t\tissues.push({\n\t\t\tpath: \"protocolVersion\",\n\t\t\tmessage: `must be ${UNIFIED_CONTEXT_MANIFEST_PROTOCOL}`,\n\t\t});\n\t}\n\tif (manifest.version !== 1) {\n\t\tissues.push({ path: \"version\", message: \"must be 1\" });\n\t}\n\n\tconst seenIds = new Set<string>();\n\tmanifest.entries.forEach((entry, index) => {\n\t\tconst entryPath = `entries[${index}]`;\n\t\tif (!entry.id) {\n\t\t\tissues.push({ path: `${entryPath}.id`, message: \"is required\" });\n\t\t} else if (seenIds.has(entry.id)) {\n\t\t\tissues.push({ path: `${entryPath}.id`, message: \"must be unique\" });\n\t\t}\n\t\tseenIds.add(entry.id);\n\n\t\tif (!ENTRY_KINDS.has(entry.kind)) {\n\t\t\tissues.push({ path: `${entryPath}.kind`, message: \"is unsupported\" });\n\t\t}\n\t\tif (!ENTRY_SOURCES.has(entry.source)) {\n\t\t\tissues.push({ path: `${entryPath}.source`, message: \"is unsupported\" });\n\t\t}\n\t\tif (!ENTRY_STATUSES.has(entry.status)) {\n\t\t\tissues.push({ path: `${entryPath}.status`, message: \"is unsupported\" });\n\t\t}\n\t\tif (\n\t\t\tentry.kind === \"project_doc\" &&\n\t\t\tentry.id.startsWith(\"project_doc:project:/\")\n\t\t) {\n\t\t\tissues.push({\n\t\t\t\tpath: `${entryPath}.id`,\n\t\t\t\tmessage: \"must use a workspace-relative project document identity\",\n\t\t\t});\n\t\t}\n\t\tvalidateEntryMetadata(issues, entry, entryPath);\n\t});\n\n\treturn issues;\n}\n\nexport function assertUnifiedContextManifestContract(\n\tmanifest: UnifiedContextManifest,\n): void {\n\tconst issues = validateUnifiedContextManifestContract(manifest);\n\tif (issues.length === 0) {\n\t\treturn;\n\t}\n\tthrow new Error(\n\t\t[\n\t\t\t\"Unified context manifest contract failed:\",\n\t\t\t...issues.map((issue) => `- ${issue.path}: ${issue.message}`),\n\t\t].join(\"\\n\"),\n\t);\n}\n\nfunction normalizeMetadata(\n\tmetadata: Record<string, unknown>,\n): Record<string, unknown> {\n\treturn Object.fromEntries(\n\t\tObject.entries(metadata).filter(([, value]) => value !== undefined),\n\t);\n}\n\nfunction summarizeRedactedArgs(args: string[] | undefined):\n\t| {\n\t\t\tcount: number;\n\t\t\tredacted: true;\n\t }\n\t| undefined {\n\treturn args ? { count: args.length, redacted: true } : undefined;\n}\n\nfunction summarizeRedactedCommand(command: string | undefined):\n\t| {\n\t\t\tconfigured: true;\n\t\t\tredacted: true;\n\t }\n\t| undefined {\n\treturn command ? { configured: true, redacted: true } : undefined;\n}\n\nfunction summarizeRedactedError(error: string | undefined):\n\t| {\n\t\t\tpresent: true;\n\t\t\tredacted: true;\n\t }\n\t| undefined {\n\treturn error ? { present: true, redacted: true } : undefined;\n}\n\nfunction summarizeRedactedUrl(url: string | undefined):\n\t| {\n\t\t\tscheme?: string;\n\t\t\thost?: string;\n\t\t\tredacted: true;\n\t }\n\t| undefined {\n\tif (!url) {\n\t\treturn undefined;\n\t}\n\ttry {\n\t\tconst parsed = new URL(url);\n\t\treturn {\n\t\t\tscheme: parsed.protocol.replace(/:$/, \"\"),\n\t\t\thost: parsed.host,\n\t\t\tredacted: true,\n\t\t};\n\t} catch {\n\t\treturn { redacted: true };\n\t}\n}\n\nfunction compareEntry(\n\tbefore: UnifiedContextManifestEntry,\n\tafter: UnifiedContextManifestEntry,\n): string[] {\n\tconst fields: Array<keyof UnifiedContextManifestEntry> = [\n\t\t\"source\",\n\t\t\"status\",\n\t\t\"label\",\n\t\t\"path\",\n\t\t\"scopeDir\",\n\t\t\"serverName\",\n\t\t\"uri\",\n\t\t\"promptName\",\n\t\t\"precedenceIndex\",\n\t\t\"bytesRead\",\n\t\t\"contentHash\",\n\t\t\"metadata\",\n\t];\n\tif (before.kind === \"project_doc\" && after.kind === \"project_doc\") {\n\t\treturn fields\n\t\t\t.filter((field) => field !== \"path\" && field !== \"scopeDir\")\n\t\t\t.filter(\n\t\t\t\t(field) => stableJson(before[field]) !== stableJson(after[field]),\n\t\t\t);\n\t}\n\treturn fields.filter(\n\t\t(field) => stableJson(before[field]) !== stableJson(after[field]),\n\t);\n}\n\nfunction projectDocEntryId(\n\tcwd: string,\n\tentry: PromptProjectDocManifest[\"entries\"][number],\n): string {\n\tif (entry.sourceKind === \"project\") {\n\t\tconst relativePath = relative(cwd, entry.path) || entry.candidateName;\n\t\treturn `project_doc:${entry.sourceKind}:${relativePath}`;\n\t}\n\treturn `project_doc:${entry.sourceKind}:${entry.path}`;\n}\n\nfunction projectDocEntries(\n\tmanifest: PromptProjectDocManifest,\n): UnifiedContextManifestEntry[] {\n\treturn manifest.entries.map((entry) => ({\n\t\tid: projectDocEntryId(manifest.cwd, entry),\n\t\tkind: \"project_doc\",\n\t\tsource: \"filesystem\",\n\t\tstatus: \"loaded\",\n\t\tlabel: entry.candidateName,\n\t\tpath: entry.path,\n\t\tscopeDir: entry.scopeDir,\n\t\tprecedenceIndex: entry.precedenceIndex,\n\t\tbytesRead: entry.bytesRead,\n\t\tcontentHash: entry.contentHash,\n\t\tmetadata: normalizeMetadata({\n\t\t\tsourceKind: entry.sourceKind,\n\t\t\ttruncated: entry.truncated,\n\t\t\toriginalSize: entry.originalSize,\n\t\t\tmaxBytes: entry.maxBytes,\n\t\t}),\n\t}));\n}\n\nfunction mcpServerConfigEntry(\n\tserver: McpServerConfig,\n): UnifiedContextManifestEntry {\n\tconst metadata = normalizeMetadata({\n\t\ttransport: server.transport,\n\t\tscope: server.scope,\n\t\tcommand: summarizeRedactedCommand(server.command),\n\t\targs: summarizeRedactedArgs(server.args),\n\t\tcwdConfigured: server.cwd ? true : undefined,\n\t\turl: summarizeRedactedUrl(server.url),\n\t\tenvKeys: server.env ? Object.keys(server.env).sort() : undefined,\n\t\theaderKeys: server.headers ? Object.keys(server.headers).sort() : undefined,\n\t\theadersHelperConfigured: server.headersHelper ? true : undefined,\n\t\tauthPreset: server.authPreset,\n\t\ttimeout: server.timeout,\n\t});\n\treturn {\n\t\tid: `mcp_server:${server.name}`,\n\t\tkind: \"mcp_server\",\n\t\tsource: \"mcp_config\",\n\t\tstatus: \"configured\",\n\t\tlabel: server.name,\n\t\tserverName: server.name,\n\t\tcontentHash: hashValue(metadata),\n\t\tmetadata,\n\t};\n}\n\nfunction mcpServerStatusEntry(\n\tserver: McpServerStatus,\n): UnifiedContextManifestEntry {\n\tconst metadata = normalizeMetadata({\n\t\ttransport: server.transport,\n\t\tscope: server.scope,\n\t\tcommand: summarizeRedactedCommand(server.command),\n\t\targs: summarizeRedactedArgs(server.args),\n\t\tcwdConfigured: server.cwd ? true : undefined,\n\t\tremoteUrl: summarizeRedactedUrl(server.remoteUrl),\n\t\tremoteHost: server.remoteHost,\n\t\tenvKeys: server.envKeys,\n\t\theaderKeys: server.headerKeys,\n\t\theadersHelperConfigured: server.headersHelper ? true : undefined,\n\t\tauthPreset: server.authPreset,\n\t\ttimeout: server.timeout,\n\t\tremoteTrust: server.remoteTrust,\n\t\tprojectApproval: server.projectApproval,\n\t\ttoolCount: server.tools.length,\n\t\tresourceCount: server.resources.length,\n\t\tpromptCount: server.prompts.length,\n\t\terror: summarizeRedactedError(server.error),\n\t});\n\treturn {\n\t\tid: `mcp_server:${server.name}`,\n\t\tkind: \"mcp_server\",\n\t\tsource: \"mcp_runtime\",\n\t\tstatus: server.error\n\t\t\t? \"error\"\n\t\t\t: server.connected\n\t\t\t\t? \"connected\"\n\t\t\t\t: \"disconnected\",\n\t\tlabel: server.name,\n\t\tserverName: server.name,\n\t\tcontentHash: hashValue(metadata),\n\t\tmetadata,\n\t};\n}\n\nfunction mcpResourceEntry(\n\tserverName: string,\n\turi: string,\n): UnifiedContextManifestEntry {\n\treturn {\n\t\tid: `mcp_resource:${serverName}:${uri}`,\n\t\tkind: \"mcp_resource\",\n\t\tsource: \"mcp_runtime\",\n\t\tstatus: \"available\",\n\t\tlabel: uri,\n\t\tserverName,\n\t\turi,\n\t\tcontentHash: hashValue({ serverName, uri }),\n\t};\n}\n\nfunction mcpPromptEntry(\n\tserverName: string,\n\tpromptName: string,\n\tprompt?: McpPromptDefinition,\n): UnifiedContextManifestEntry {\n\tconst metadata = normalizeMetadata({\n\t\ttitle: prompt?.title,\n\t\tdescription: prompt?.description,\n\t\targuments: prompt?.arguments,\n\t});\n\treturn {\n\t\tid: `mcp_prompt:${serverName}:${promptName}`,\n\t\tkind: \"mcp_prompt\",\n\t\tsource: \"mcp_runtime\",\n\t\tstatus: \"available\",\n\t\tlabel: prompt?.title ?? promptName,\n\t\tserverName,\n\t\tpromptName,\n\t\tcontentHash: hashValue({ serverName, promptName, metadata }),\n\t\tmetadata,\n\t};\n}\n\nfunction loadConfiguredMcpEntries(\n\tcwd: string,\n\toptions: LoadUnifiedContextManifestOptions,\n\tdiagnostics: UnifiedContextManifestDiagnostic[],\n): UnifiedContextManifestEntry[] {\n\tif (options.includeMcpConfig === false || options.mcpStatus) {\n\t\treturn [];\n\t}\n\n\ttry {\n\t\tconst config = options.mcpConfig ?? loadMcpConfig(cwd);\n\t\tif (config.servers.length > 0) {\n\t\t\tdiagnostics.push({\n\t\t\t\tcode: \"mcp_config_loaded\",\n\t\t\t\tseverity: \"info\",\n\t\t\t\tmessage: `${config.servers.length} configured MCP server${config.servers.length === 1 ? \"\" : \"s\"} included from config.`,\n\t\t\t});\n\t\t}\n\t\treturn config.servers.map(mcpServerConfigEntry);\n\t} catch (error) {\n\t\tdiagnostics.push({\n\t\t\tcode: \"mcp_config_unreadable\",\n\t\t\tseverity: \"warning\",\n\t\t\tmessage: `Could not load MCP config: ${error instanceof Error ? error.message : String(error)}`,\n\t\t});\n\t\treturn [];\n\t}\n}\n\nfunction loadRuntimeMcpEntries(\n\tstatus: McpManagerStatus | undefined,\n\tdiagnostics: UnifiedContextManifestDiagnostic[],\n): UnifiedContextManifestEntry[] {\n\tif (!status) {\n\t\treturn [];\n\t}\n\n\tconst entries: UnifiedContextManifestEntry[] = [];\n\tfor (const server of status.servers) {\n\t\tentries.push(mcpServerStatusEntry(server));\n\t\tfor (const uri of server.resources) {\n\t\t\tentries.push(mcpResourceEntry(server.name, uri));\n\t\t}\n\t\tconst promptDetails = new Map(\n\t\t\t(server.promptDetails ?? []).map((prompt) => [prompt.name, prompt]),\n\t\t);\n\t\tfor (const promptName of server.prompts) {\n\t\t\tentries.push(\n\t\t\t\tmcpPromptEntry(server.name, promptName, promptDetails.get(promptName)),\n\t\t\t);\n\t\t}\n\t\tif (!server.connected && server.error) {\n\t\t\tdiagnostics.push({\n\t\t\t\tcode: \"mcp_runtime_unavailable\",\n\t\t\t\tseverity: \"warning\",\n\t\t\t\tmessage: `MCP server ${server.name} is unavailable; error details redacted.`,\n\t\t\t\tentryId: `mcp_server:${server.name}`,\n\t\t\t});\n\t\t}\n\t}\n\treturn entries;\n}\n\nexport function loadUnifiedContextManifest(\n\tcwdOverride?: string,\n\toptions: LoadUnifiedContextManifestOptions = {},\n): UnifiedContextManifest {\n\tconst cwd = resolve(cwdOverride ?? process.cwd());\n\tconst projectDocs =\n\t\toptions.projectDocs ?? loadPromptProjectDocManifest(cwd, options.config);\n\tconst diagnostics: UnifiedContextManifestDiagnostic[] =\n\t\tprojectDocs.diagnostics.map((diagnostic) => ({ ...diagnostic }));\n\tconst entries = [\n\t\t...projectDocEntries(projectDocs),\n\t\t...loadConfiguredMcpEntries(cwd, options, diagnostics),\n\t\t...loadRuntimeMcpEntries(options.mcpStatus, diagnostics),\n\t];\n\n\tconst manifest: UnifiedContextManifest = {\n\t\tprotocolVersion: UNIFIED_CONTEXT_MANIFEST_PROTOCOL,\n\t\tversion: 1,\n\t\tcwd,\n\t\tprojectDocs,\n\t\tentries,\n\t\tdiagnostics,\n\t};\n\tassertUnifiedContextManifestContract(manifest);\n\treturn manifest;\n}\n\nexport function diffUnifiedContextManifests(\n\tbefore: UnifiedContextManifest,\n\tafter: UnifiedContextManifest,\n): UnifiedContextManifestDiff {\n\tconst beforeEntries = new Map(\n\t\tbefore.entries.map((entry) => [entry.id, entry]),\n\t);\n\tconst afterEntries = new Map(after.entries.map((entry) => [entry.id, entry]));\n\tconst added: UnifiedContextManifestDiffEntry[] = [];\n\tconst removed: UnifiedContextManifestDiffEntry[] = [];\n\tconst changed: UnifiedContextManifestDiffEntry[] = [];\n\tconst unchanged: UnifiedContextManifestDiffEntry[] = [];\n\n\tfor (const [id, afterEntry] of afterEntries) {\n\t\tconst beforeEntry = beforeEntries.get(id);\n\t\tif (!beforeEntry) {\n\t\t\tadded.push({\n\t\t\t\tid,\n\t\t\t\tkind: afterEntry.kind,\n\t\t\t\tlabel: afterEntry.label,\n\t\t\t\tafter: afterEntry,\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tconst changes = compareEntry(beforeEntry, afterEntry);\n\t\tif (changes.length > 0) {\n\t\t\tchanged.push({\n\t\t\t\tid,\n\t\t\t\tkind: afterEntry.kind,\n\t\t\t\tlabel: afterEntry.label,\n\t\t\t\tbefore: beforeEntry,\n\t\t\t\tafter: afterEntry,\n\t\t\t\tchanges,\n\t\t\t});\n\t\t} else {\n\t\t\tunchanged.push({\n\t\t\t\tid,\n\t\t\t\tkind: afterEntry.kind,\n\t\t\t\tlabel: afterEntry.label,\n\t\t\t\tbefore: beforeEntry,\n\t\t\t\tafter: afterEntry,\n\t\t\t});\n\t\t}\n\t}\n\n\tfor (const [id, beforeEntry] of beforeEntries) {\n\t\tif (!afterEntries.has(id)) {\n\t\t\tremoved.push({\n\t\t\t\tid,\n\t\t\t\tkind: beforeEntry.kind,\n\t\t\t\tlabel: beforeEntry.label,\n\t\t\t\tbefore: beforeEntry,\n\t\t\t});\n\t\t}\n\t}\n\n\tconst sortById = (\n\t\ta: UnifiedContextManifestDiffEntry,\n\t\tb: UnifiedContextManifestDiffEntry,\n\t) => a.id.localeCompare(b.id);\n\n\treturn {\n\t\tbeforeCwd: before.cwd,\n\t\tafterCwd: after.cwd,\n\t\tadded: added.sort(sortById),\n\t\tremoved: removed.sort(sortById),\n\t\tchanged: changed.sort(sortById),\n\t\tunchanged: unchanged.sort(sortById),\n\t\tdiagnostics: [...before.diagnostics, ...after.diagnostics],\n\t};\n}\n"]}
|
|
@@ -1,39 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Render Model - Transforms raw messages into UI-ready format with content deduplication
|
|
3
|
-
*
|
|
4
|
-
* This module provides the transformation layer between raw agent messages and the
|
|
5
|
-
* renderable structures consumed by the TUI. Its primary responsibilities:
|
|
6
|
-
*
|
|
7
|
-
* 1. **Message Normalization**: Extracts text, thinking blocks, tool calls, and
|
|
8
|
-
* attachments into consistent, typed structures.
|
|
9
|
-
*
|
|
10
|
-
* 2. **Content Deduplication**: Removes repeated lines that occur during streaming,
|
|
11
|
-
* particularly when LLM providers resend cumulative content on each delta.
|
|
12
|
-
*
|
|
13
|
-
* 3. **Clean Mode Support**: Three levels of content cleaning (off/soft/aggressive)
|
|
14
|
-
* to balance rendering accuracy vs visual cleanliness.
|
|
15
|
-
*
|
|
16
|
-
* ## The Duplicate Line Problem
|
|
17
|
-
*
|
|
18
|
-
* When streaming responses, some LLM providers (especially for reasoning/thinking
|
|
19
|
-
* blocks) resend all previous content with each update rather than just the delta.
|
|
20
|
-
* This manifests as:
|
|
21
|
-
* - Numbered list items appearing multiple times
|
|
22
|
-
* - Paragraph beginnings repeated
|
|
23
|
-
* - Code blocks with duplicated lines
|
|
24
|
-
*
|
|
25
|
-
* ## Deduplication Strategy
|
|
26
|
-
*
|
|
27
|
-
* We maintain a sliding window of recently-seen lines. Each new line is checked
|
|
28
|
-
* against this window; if found, it's collapsed. The window size varies by mode:
|
|
29
|
-
* - **Soft mode**: Small window (40 lines) catches local repetition
|
|
30
|
-
* - **Aggressive mode**: Large window (120 lines) catches re-sent blocks
|
|
31
|
-
*
|
|
32
|
-
* Cross-block mode shares history between text blocks in the same message,
|
|
33
|
-
* catching duplicates that span the streaming chunk boundaries.
|
|
34
|
-
*
|
|
35
|
-
* @module conversation/render-model
|
|
36
|
-
*/
|
|
37
1
|
import type { AppMessage, AssistantMessage, Attachment, StopReason, ToolResultMessage, UserMessageWithAttachments } from "../agent/types.js";
|
|
38
2
|
export type RenderableMessage = RenderableUserMessage | RenderableAssistantMessage | RenderableToolResultMessage;
|
|
39
3
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-model.d.ts","sourceRoot":"","sources":["../../src/conversation/render-model.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"render-model.d.ts","sourceRoot":"","sources":["../../src/conversation/render-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,6 +34,7 @@
|
|
|
34
34
|
*
|
|
35
35
|
* @module conversation/render-model
|
|
36
36
|
*/
|
|
37
|
+
import { isRecord } from "../utils/json.js";
|
|
37
38
|
/**
|
|
38
39
|
* Collapse Duplicate Lines - Removes streaming-induced repetition
|
|
39
40
|
*
|
|
@@ -150,9 +151,6 @@ export function collapseRepeatedLinesWithHistory(text, options = {}) {
|
|
|
150
151
|
}
|
|
151
152
|
return { text: result.join("\n"), changed };
|
|
152
153
|
}
|
|
153
|
-
function isRecord(value) {
|
|
154
|
-
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
155
|
-
}
|
|
156
154
|
function isAssistantContentBlock(value) {
|
|
157
155
|
if (!isRecord(value)) {
|
|
158
156
|
return false;
|