@zhixuan92/multi-model-agent-core 4.3.1 → 4.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -24
- package/dist/bounded-execution/cost-compute.d.ts.map +1 -1
- package/dist/bounded-execution/cost-compute.js +10 -0
- package/dist/bounded-execution/cost-compute.js.map +1 -1
- package/dist/bounded-execution/index.d.ts +1 -0
- package/dist/bounded-execution/index.d.ts.map +1 -1
- package/dist/bounded-execution/index.js +1 -0
- package/dist/bounded-execution/index.js.map +1 -1
- package/dist/bounded-execution/progress-watchdog.d.ts +43 -0
- package/dist/bounded-execution/progress-watchdog.d.ts.map +1 -0
- package/dist/bounded-execution/progress-watchdog.js +137 -0
- package/dist/bounded-execution/progress-watchdog.js.map +1 -0
- package/dist/config/config-resolver.d.ts +6 -4
- package/dist/config/config-resolver.d.ts.map +1 -1
- package/dist/config/config-resolver.js +7 -6
- package/dist/config/config-resolver.js.map +1 -1
- package/dist/config/schema.d.ts +12 -76
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +15 -18
- package/dist/config/schema.js.map +1 -1
- package/dist/escalation/delegate-with-escalation.d.ts.map +1 -1
- package/dist/escalation/delegate-with-escalation.js +35 -38
- package/dist/escalation/delegate-with-escalation.js.map +1 -1
- package/dist/escalation/escalation-policy.d.ts +1 -1
- package/dist/escalation/escalation-policy.d.ts.map +1 -1
- package/dist/escalation/escalation-policy.js +0 -1
- package/dist/escalation/escalation-policy.js.map +1 -1
- package/dist/events/clamp.d.ts.map +1 -1
- package/dist/events/clamp.js +17 -6
- package/dist/events/clamp.js.map +1 -1
- package/dist/events/cloud-events.d.ts +1 -3
- package/dist/events/cloud-events.d.ts.map +1 -1
- package/dist/events/event-builder.d.ts +3 -1
- package/dist/events/event-builder.d.ts.map +1 -1
- package/dist/events/event-builder.js +14 -3
- package/dist/events/event-builder.js.map +1 -1
- package/dist/events/observability-events.d.ts +347 -25
- package/dist/events/observability-events.d.ts.map +1 -1
- package/dist/events/observability-events.js +135 -0
- package/dist/events/observability-events.js.map +1 -1
- package/dist/events/running-headline-sink.d.ts +2 -1
- package/dist/events/running-headline-sink.d.ts.map +1 -1
- package/dist/events/running-headline-sink.js.map +1 -1
- package/dist/events/telemetry-types.d.ts +57 -23
- package/dist/events/telemetry-types.d.ts.map +1 -1
- package/dist/events/telemetry-types.js +18 -14
- package/dist/events/telemetry-types.js.map +1 -1
- package/dist/index.d.ts +2 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -5
- package/dist/index.js.map +1 -1
- package/dist/intake/field-inferer.js +5 -5
- package/dist/intake/field-inferer.js.map +1 -1
- package/dist/intake/source-schema.js +1 -1
- package/dist/intake/source-schema.js.map +1 -1
- package/dist/intake/types.d.ts +1 -1
- package/dist/intake/types.d.ts.map +1 -1
- package/dist/intake/verify-command-validator.d.ts +6 -0
- package/dist/intake/verify-command-validator.d.ts.map +1 -0
- package/dist/intake/verify-command-validator.js +47 -0
- package/dist/intake/verify-command-validator.js.map +1 -0
- package/dist/lifecycle/findings-parser.d.ts +9 -0
- package/dist/lifecycle/findings-parser.d.ts.map +1 -0
- package/dist/lifecycle/findings-parser.js +47 -0
- package/dist/lifecycle/findings-parser.js.map +1 -0
- package/dist/lifecycle/handlers/annotator.d.ts +35 -0
- package/dist/lifecycle/handlers/annotator.d.ts.map +1 -0
- package/dist/lifecycle/handlers/annotator.js +59 -0
- package/dist/lifecycle/handlers/annotator.js.map +1 -0
- package/dist/lifecycle/handlers/baseline-handlers.d.ts.map +1 -1
- package/dist/lifecycle/handlers/baseline-handlers.js +30 -37
- package/dist/lifecycle/handlers/baseline-handlers.js.map +1 -1
- package/dist/lifecycle/handlers/git-commit-handler.d.ts +1 -16
- package/dist/lifecycle/handlers/git-commit-handler.d.ts.map +1 -1
- package/dist/lifecycle/handlers/git-commit-handler.js +148 -53
- package/dist/lifecycle/handlers/git-commit-handler.js.map +1 -1
- package/dist/lifecycle/handlers/read-route-implementer.d.ts +41 -0
- package/dist/lifecycle/handlers/read-route-implementer.d.ts.map +1 -0
- package/dist/lifecycle/handlers/read-route-implementer.js +84 -0
- package/dist/lifecycle/handlers/read-route-implementer.js.map +1 -0
- package/dist/lifecycle/handlers/review-handler.d.ts.map +1 -1
- package/dist/lifecycle/handlers/review-handler.js +84 -90
- package/dist/lifecycle/handlers/review-handler.js.map +1 -1
- package/dist/lifecycle/handlers/rework-handler.d.ts.map +1 -1
- package/dist/lifecycle/handlers/rework-handler.js +79 -25
- package/dist/lifecycle/handlers/rework-handler.js.map +1 -1
- package/dist/lifecycle/handlers/task-executor.d.ts +2 -3
- package/dist/lifecycle/handlers/task-executor.d.ts.map +1 -1
- package/dist/lifecycle/handlers/task-executor.js +90 -8
- package/dist/lifecycle/handlers/task-executor.js.map +1 -1
- package/dist/lifecycle/handlers/terminal-handlers.d.ts +1 -1
- package/dist/lifecycle/handlers/terminal-handlers.d.ts.map +1 -1
- package/dist/lifecycle/handlers/terminal-handlers.js +4 -1
- package/dist/lifecycle/handlers/terminal-handlers.js.map +1 -1
- package/dist/lifecycle/lifecycle-context.d.ts +14 -0
- package/dist/lifecycle/lifecycle-context.d.ts.map +1 -1
- package/dist/lifecycle/parallel-criteria-routes.d.ts +20 -6
- package/dist/lifecycle/parallel-criteria-routes.d.ts.map +1 -1
- package/dist/lifecycle/parallel-criteria-routes.js +36 -142
- package/dist/lifecycle/parallel-criteria-routes.js.map +1 -1
- package/dist/lifecycle/read-only-subtype-spec.d.ts +18 -0
- package/dist/lifecycle/read-only-subtype-spec.d.ts.map +1 -0
- package/dist/lifecycle/read-only-subtype-spec.js +2 -0
- package/dist/lifecycle/read-only-subtype-spec.js.map +1 -0
- package/dist/lifecycle/real-diff.d.ts +7 -0
- package/dist/lifecycle/real-diff.d.ts.map +1 -0
- package/dist/lifecycle/real-diff.js +54 -0
- package/dist/lifecycle/real-diff.js.map +1 -0
- package/dist/lifecycle/scope-match.d.ts +7 -0
- package/dist/lifecycle/scope-match.d.ts.map +1 -0
- package/dist/lifecycle/scope-match.js +28 -0
- package/dist/lifecycle/scope-match.js.map +1 -0
- package/dist/lifecycle/stage-labels.d.ts +22 -0
- package/dist/lifecycle/stage-labels.d.ts.map +1 -0
- package/dist/lifecycle/stage-labels.js +42 -0
- package/dist/lifecycle/stage-labels.js.map +1 -0
- package/dist/lifecycle/stage-plan-builder.d.ts.map +1 -1
- package/dist/lifecycle/stage-plan-builder.js +25 -54
- package/dist/lifecycle/stage-plan-builder.js.map +1 -1
- package/dist/lifecycle/stage-plan-types.d.ts +5 -23
- package/dist/lifecycle/stage-plan-types.d.ts.map +1 -1
- package/dist/lifecycle/stage-progression.js +14 -14
- package/dist/lifecycle/stage-progression.js.map +1 -1
- package/dist/lifecycle/stage-stats.js +1 -1
- package/dist/lifecycle/stage-stats.js.map +1 -1
- package/dist/lifecycle/task-executor.d.ts.map +1 -1
- package/dist/lifecycle/task-executor.js +20 -17
- package/dist/lifecycle/task-executor.js.map +1 -1
- package/dist/lifecycle/task-runner.d.ts.map +1 -1
- package/dist/lifecycle/task-runner.js +114 -72
- package/dist/lifecycle/task-runner.js.map +1 -1
- package/dist/lifecycle/tool-config-types.d.ts +1 -2
- package/dist/lifecycle/tool-config-types.d.ts.map +1 -1
- package/dist/lifecycle/warm-followup.d.ts +3 -0
- package/dist/lifecycle/warm-followup.d.ts.map +1 -0
- package/dist/lifecycle/warm-followup.js +16 -0
- package/dist/lifecycle/warm-followup.js.map +1 -0
- package/dist/lifecycle/worker-output-contract.d.ts +26 -0
- package/dist/lifecycle/worker-output-contract.d.ts.map +1 -0
- package/dist/lifecycle/worker-output-contract.js +73 -0
- package/dist/lifecycle/worker-output-contract.js.map +1 -0
- package/dist/providers/assemble-run-result.d.ts +17 -0
- package/dist/providers/assemble-run-result.d.ts.map +1 -0
- package/dist/providers/assemble-run-result.js +76 -0
- package/dist/providers/assemble-run-result.js.map +1 -0
- package/dist/providers/brief-preamble.d.ts +4 -0
- package/dist/providers/brief-preamble.d.ts.map +1 -0
- package/dist/providers/brief-preamble.js +39 -0
- package/dist/providers/brief-preamble.js.map +1 -0
- package/dist/providers/claude-session.d.ts +23 -0
- package/dist/providers/claude-session.d.ts.map +1 -0
- package/dist/providers/claude-session.js +185 -0
- package/dist/providers/claude-session.js.map +1 -0
- package/dist/providers/claude.d.ts +4 -0
- package/dist/providers/claude.d.ts.map +1 -0
- package/dist/providers/claude.js +35 -0
- package/dist/providers/claude.js.map +1 -0
- package/dist/providers/codex-cli-event.d.ts +44 -0
- package/dist/providers/codex-cli-event.d.ts.map +1 -0
- package/dist/providers/codex-cli-event.js +43 -0
- package/dist/providers/codex-cli-event.js.map +1 -0
- package/dist/providers/codex-cli-launch.d.ts +26 -0
- package/dist/providers/codex-cli-launch.d.ts.map +1 -0
- package/dist/providers/codex-cli-launch.js +47 -0
- package/dist/providers/codex-cli-launch.js.map +1 -0
- package/dist/providers/codex-cli-session.d.ts +55 -0
- package/dist/providers/codex-cli-session.d.ts.map +1 -0
- package/dist/providers/codex-cli-session.js +417 -0
- package/dist/providers/codex-cli-session.js.map +1 -0
- package/dist/providers/codex.d.ts +4 -0
- package/dist/providers/codex.d.ts.map +1 -0
- package/dist/providers/codex.js +28 -0
- package/dist/providers/codex.js.map +1 -0
- package/dist/providers/index.d.ts +0 -12
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +1 -13
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/normalize-claude.d.ts +10 -0
- package/dist/providers/normalize-claude.d.ts.map +1 -0
- package/dist/providers/normalize-claude.js +89 -0
- package/dist/providers/normalize-claude.js.map +1 -0
- package/dist/providers/provider-factory.d.ts +1 -9
- package/dist/providers/provider-factory.d.ts.map +1 -1
- package/dist/providers/provider-factory.js +35 -167
- package/dist/providers/provider-factory.js.map +1 -1
- package/dist/providers/runner-adapter.d.ts +5 -16
- package/dist/providers/runner-adapter.d.ts.map +1 -1
- package/dist/providers/runner-adapter.js +6 -0
- package/dist/providers/runner-adapter.js.map +1 -1
- package/dist/providers/runner-types.d.ts +20 -2
- package/dist/providers/runner-types.d.ts.map +1 -1
- package/dist/reporting/report-parser-slots/research-report.d.ts +21 -17
- package/dist/reporting/report-parser-slots/research-report.d.ts.map +1 -1
- package/dist/reporting/report-parser-slots/research-report.js +28 -67
- package/dist/reporting/report-parser-slots/research-report.js.map +1 -1
- package/dist/review/annotator-engine.d.ts +2 -2
- package/dist/review/annotator-engine.d.ts.map +1 -1
- package/dist/review/annotator-engine.js +16 -20
- package/dist/review/annotator-engine.js.map +1 -1
- package/dist/review/annotator-prompt-builder.d.ts +1 -1
- package/dist/review/annotator-prompt-builder.d.ts.map +1 -1
- package/dist/review/default-engines.d.ts.map +1 -1
- package/dist/review/default-engines.js +2 -4
- package/dist/review/default-engines.js.map +1 -1
- package/dist/review/review-types.d.ts +0 -1
- package/dist/review/review-types.d.ts.map +1 -1
- package/dist/review/reviewer-engine.d.ts +5 -40
- package/dist/review/reviewer-engine.d.ts.map +1 -1
- package/dist/review/reviewer-engine.js +19 -49
- package/dist/review/reviewer-engine.js.map +1 -1
- package/dist/review/reviewer-output-parser.d.ts +1 -6
- package/dist/review/reviewer-output-parser.d.ts.map +1 -1
- package/dist/review/reviewer-output-parser.js +0 -26
- package/dist/review/reviewer-output-parser.js.map +1 -1
- package/dist/review/reviewer-prompt-builder.d.ts +1 -6
- package/dist/review/reviewer-prompt-builder.d.ts.map +1 -1
- package/dist/review/reviewer-prompt-builder.js +0 -6
- package/dist/review/reviewer-prompt-builder.js.map +1 -1
- package/dist/review/templates/quality-review.d.ts.map +1 -1
- package/dist/review/templates/quality-review.js +28 -0
- package/dist/review/templates/quality-review.js.map +1 -1
- package/dist/review/templates/rework.d.ts.map +1 -1
- package/dist/review/templates/rework.js +15 -9
- package/dist/review/templates/rework.js.map +1 -1
- package/dist/review/templates/shared.d.ts +9 -0
- package/dist/review/templates/shared.d.ts.map +1 -1
- package/dist/stores/context-block-project-cap.d.ts +1 -1
- package/dist/stores/context-block-project-cap.d.ts.map +1 -1
- package/dist/stores/context-block-project-cap.js +17 -5
- package/dist/stores/context-block-project-cap.js.map +1 -1
- package/dist/stores/file-backed-context-block-store.d.ts +7 -0
- package/dist/stores/file-backed-context-block-store.d.ts.map +1 -1
- package/dist/stores/file-backed-context-block-store.js +8 -0
- package/dist/stores/file-backed-context-block-store.js.map +1 -1
- package/dist/tool-surface/discover.d.ts +1 -1
- package/dist/tool-surface/discover.d.ts.map +1 -1
- package/dist/tool-surface/discover.js +0 -1
- package/dist/tool-surface/discover.js.map +1 -1
- package/dist/tool-surface/openapi-generator.d.ts.map +1 -1
- package/dist/tool-surface/openapi-generator.js +0 -2
- package/dist/tool-surface/openapi-generator.js.map +1 -1
- package/dist/tool-surface/register-all-tools.d.ts.map +1 -1
- package/dist/tool-surface/register-all-tools.js +1 -3
- package/dist/tool-surface/register-all-tools.js.map +1 -1
- package/dist/tools/audit/schema.d.ts +4 -4
- package/dist/tools/audit/schema.d.ts.map +1 -1
- package/dist/tools/audit/schema.js +4 -4
- package/dist/tools/audit/schema.js.map +1 -1
- package/dist/tools/audit/skill-audit-criteria.d.ts +9 -0
- package/dist/tools/audit/skill-audit-criteria.d.ts.map +1 -0
- package/dist/tools/audit/skill-audit-criteria.js +51 -0
- package/dist/tools/audit/skill-audit-criteria.js.map +1 -0
- package/dist/tools/audit/spec-audit-criteria.d.ts +9 -0
- package/dist/tools/audit/spec-audit-criteria.d.ts.map +1 -0
- package/dist/tools/audit/spec-audit-criteria.js +52 -0
- package/dist/tools/audit/spec-audit-criteria.js.map +1 -0
- package/dist/tools/audit/subtypes.d.ts +4 -0
- package/dist/tools/audit/subtypes.d.ts.map +1 -0
- package/dist/tools/audit/subtypes.js +67 -0
- package/dist/tools/audit/subtypes.js.map +1 -0
- package/dist/tools/audit/tool-config.d.ts +4 -4
- package/dist/tools/audit/tool-config.d.ts.map +1 -1
- package/dist/tools/audit/tool-config.js +32 -30
- package/dist/tools/audit/tool-config.js.map +1 -1
- package/dist/tools/debug/schema.d.ts +3 -0
- package/dist/tools/debug/schema.d.ts.map +1 -1
- package/dist/tools/debug/schema.js +1 -0
- package/dist/tools/debug/schema.js.map +1 -1
- package/dist/tools/debug/subtypes.d.ts +4 -0
- package/dist/tools/debug/subtypes.d.ts.map +1 -0
- package/dist/tools/debug/subtypes.js +25 -0
- package/dist/tools/debug/subtypes.js.map +1 -0
- package/dist/tools/debug/tool-config.js +1 -1
- package/dist/tools/debug/tool-config.js.map +1 -1
- package/dist/tools/delegate/tool-config.d.ts.map +1 -1
- package/dist/tools/delegate/tool-config.js +0 -1
- package/dist/tools/delegate/tool-config.js.map +1 -1
- package/dist/tools/execute-plan/tool-config.d.ts.map +1 -1
- package/dist/tools/execute-plan/tool-config.js +5 -2
- package/dist/tools/execute-plan/tool-config.js.map +1 -1
- package/dist/tools/index.d.ts +0 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +0 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/investigate/schema.d.ts +3 -0
- package/dist/tools/investigate/schema.d.ts.map +1 -1
- package/dist/tools/investigate/schema.js +1 -0
- package/dist/tools/investigate/schema.js.map +1 -1
- package/dist/tools/investigate/subtypes.d.ts +4 -0
- package/dist/tools/investigate/subtypes.d.ts.map +1 -0
- package/dist/tools/investigate/subtypes.js +25 -0
- package/dist/tools/investigate/subtypes.js.map +1 -0
- package/dist/tools/investigate/tool-config.js +1 -1
- package/dist/tools/investigate/tool-config.js.map +1 -1
- package/dist/tools/research/implementer-criteria.d.ts +12 -5
- package/dist/tools/research/implementer-criteria.d.ts.map +1 -1
- package/dist/tools/research/implementer-criteria.js +40 -9
- package/dist/tools/research/implementer-criteria.js.map +1 -1
- package/dist/tools/research/schema.d.ts +3 -0
- package/dist/tools/research/schema.d.ts.map +1 -1
- package/dist/tools/research/schema.js +2 -1
- package/dist/tools/research/schema.js.map +1 -1
- package/dist/tools/research/subtypes.d.ts +4 -0
- package/dist/tools/research/subtypes.d.ts.map +1 -0
- package/dist/tools/research/subtypes.js +24 -0
- package/dist/tools/research/subtypes.js.map +1 -0
- package/dist/tools/research/tool-config.js +2 -2
- package/dist/tools/research/tool-config.js.map +1 -1
- package/dist/tools/review/schema.d.ts +3 -0
- package/dist/tools/review/schema.d.ts.map +1 -1
- package/dist/tools/review/schema.js +1 -0
- package/dist/tools/review/schema.js.map +1 -1
- package/dist/tools/review/subtypes.d.ts +4 -0
- package/dist/tools/review/subtypes.d.ts.map +1 -0
- package/dist/tools/review/subtypes.js +26 -0
- package/dist/tools/review/subtypes.js.map +1 -0
- package/dist/tools/review/tool-config.js +1 -1
- package/dist/tools/review/tool-config.js.map +1 -1
- package/dist/types/config.d.ts +17 -28
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/enums.d.ts +3 -7
- package/dist/types/enums.d.ts.map +1 -1
- package/dist/types/enums.js +4 -4
- package/dist/types/enums.js.map +1 -1
- package/dist/types/run-result.d.ts +56 -21
- package/dist/types/run-result.d.ts.map +1 -1
- package/dist/types/stage-stats.d.ts +1 -1
- package/dist/types/stage-stats.d.ts.map +1 -1
- package/dist/types/task-spec.d.ts +17 -15
- package/dist/types/task-spec.d.ts.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +9 -3
- package/dist/identity/main-model-resolver.d.ts +0 -14
- package/dist/identity/main-model-resolver.d.ts.map +0 -1
- package/dist/identity/main-model-resolver.js +0 -100
- package/dist/identity/main-model-resolver.js.map +0 -1
- package/dist/lifecycle/handlers/annotate-completion-handler.d.ts +0 -9
- package/dist/lifecycle/handlers/annotate-completion-handler.d.ts.map +0 -1
- package/dist/lifecycle/handlers/annotate-completion-handler.js +0 -200
- package/dist/lifecycle/handlers/annotate-completion-handler.js.map +0 -1
- package/dist/lifecycle/handlers/annotate-criteria-handler.d.ts +0 -3
- package/dist/lifecycle/handlers/annotate-criteria-handler.d.ts.map +0 -1
- package/dist/lifecycle/handlers/annotate-criteria-handler.js +0 -79
- package/dist/lifecycle/handlers/annotate-criteria-handler.js.map +0 -1
- package/dist/lifecycle/handlers/execution-context-builder.d.ts +0 -5
- package/dist/lifecycle/handlers/execution-context-builder.d.ts.map +0 -1
- package/dist/lifecycle/handlers/execution-context-builder.js +0 -17
- package/dist/lifecycle/handlers/execution-context-builder.js.map +0 -1
- package/dist/lifecycle/parallel-criteria-dispatcher.d.ts +0 -62
- package/dist/lifecycle/parallel-criteria-dispatcher.d.ts.map +0 -1
- package/dist/lifecycle/parallel-criteria-dispatcher.js +0 -328
- package/dist/lifecycle/parallel-criteria-dispatcher.js.map +0 -1
- package/dist/providers/anthropic-messages-adapter.d.ts +0 -26
- package/dist/providers/anthropic-messages-adapter.d.ts.map +0 -1
- package/dist/providers/anthropic-messages-adapter.js +0 -127
- package/dist/providers/anthropic-messages-adapter.js.map +0 -1
- package/dist/providers/base/research-tools.d.ts +0 -47
- package/dist/providers/base/research-tools.d.ts.map +0 -1
- package/dist/providers/base/research-tools.js +0 -67
- package/dist/providers/base/research-tools.js.map +0 -1
- package/dist/providers/base/result-builders.d.ts +0 -82
- package/dist/providers/base/result-builders.d.ts.map +0 -1
- package/dist/providers/base/result-builders.js +0 -112
- package/dist/providers/base/result-builders.js.map +0 -1
- package/dist/providers/base/time-check.d.ts +0 -9
- package/dist/providers/base/time-check.d.ts.map +0 -1
- package/dist/providers/base/time-check.js +0 -18
- package/dist/providers/base/time-check.js.map +0 -1
- package/dist/providers/base/types.d.ts +0 -53
- package/dist/providers/base/types.d.ts.map +0 -1
- package/dist/providers/base/types.js +0 -2
- package/dist/providers/base/types.js.map +0 -1
- package/dist/providers/base/usage-accumulator.d.ts +0 -9
- package/dist/providers/base/usage-accumulator.d.ts.map +0 -1
- package/dist/providers/base/usage-accumulator.js +0 -20
- package/dist/providers/base/usage-accumulator.js.map +0 -1
- package/dist/providers/call-cache.d.ts +0 -16
- package/dist/providers/call-cache.d.ts.map +0 -1
- package/dist/providers/call-cache.js +0 -28
- package/dist/providers/call-cache.js.map +0 -1
- package/dist/providers/file-tracker.d.ts +0 -80
- package/dist/providers/file-tracker.d.ts.map +0 -1
- package/dist/providers/file-tracker.js +0 -125
- package/dist/providers/file-tracker.js.map +0 -1
- package/dist/providers/injection-type.d.ts +0 -22
- package/dist/providers/injection-type.d.ts.map +0 -1
- package/dist/providers/injection-type.js +0 -34
- package/dist/providers/injection-type.js.map +0 -1
- package/dist/providers/make-runner-shell.d.ts +0 -4
- package/dist/providers/make-runner-shell.d.ts.map +0 -1
- package/dist/providers/make-runner-shell.js +0 -70
- package/dist/providers/make-runner-shell.js.map +0 -1
- package/dist/providers/openai-chat-adapter.d.ts +0 -15
- package/dist/providers/openai-chat-adapter.d.ts.map +0 -1
- package/dist/providers/openai-chat-adapter.js +0 -86
- package/dist/providers/openai-chat-adapter.js.map +0 -1
- package/dist/providers/openai-responses-adapter.d.ts +0 -15
- package/dist/providers/openai-responses-adapter.d.ts.map +0 -1
- package/dist/providers/openai-responses-adapter.js +0 -137
- package/dist/providers/openai-responses-adapter.js.map +0 -1
- package/dist/providers/openai-usage-interceptor.d.ts +0 -25
- package/dist/providers/openai-usage-interceptor.d.ts.map +0 -1
- package/dist/providers/openai-usage-interceptor.js +0 -121
- package/dist/providers/openai-usage-interceptor.js.map +0 -1
- package/dist/providers/prevention.d.ts +0 -44
- package/dist/providers/prevention.d.ts.map +0 -1
- package/dist/providers/prevention.js +0 -108
- package/dist/providers/prevention.js.map +0 -1
- package/dist/providers/runner-shell-types.d.ts +0 -91
- package/dist/providers/runner-shell-types.d.ts.map +0 -1
- package/dist/providers/runner-shell-types.js +0 -2
- package/dist/providers/runner-shell-types.js.map +0 -1
- package/dist/providers/runner-shell.d.ts +0 -67
- package/dist/providers/runner-shell.d.ts.map +0 -1
- package/dist/providers/runner-shell.js +0 -518
- package/dist/providers/runner-shell.js.map +0 -1
- package/dist/providers/scratchpad-salvager.d.ts +0 -19
- package/dist/providers/scratchpad-salvager.d.ts.map +0 -1
- package/dist/providers/scratchpad-salvager.js +0 -44
- package/dist/providers/scratchpad-salvager.js.map +0 -1
- package/dist/providers/supervision.d.ts +0 -108
- package/dist/providers/supervision.d.ts.map +0 -1
- package/dist/providers/supervision.js +0 -272
- package/dist/providers/supervision.js.map +0 -1
- package/dist/providers/text-scratchpad.d.ts +0 -28
- package/dist/providers/text-scratchpad.d.ts.map +0 -1
- package/dist/providers/text-scratchpad.js +0 -49
- package/dist/providers/text-scratchpad.js.map +0 -1
- package/dist/providers/tool-definitions.d.ts +0 -6
- package/dist/providers/tool-definitions.d.ts.map +0 -1
- package/dist/providers/tool-definitions.js +0 -236
- package/dist/providers/tool-definitions.js.map +0 -1
- package/dist/providers/tool-implementations.d.ts +0 -38
- package/dist/providers/tool-implementations.d.ts.map +0 -1
- package/dist/providers/tool-implementations.js +0 -254
- package/dist/providers/tool-implementations.js.map +0 -1
- package/dist/providers/tool-tracker.d.ts +0 -14
- package/dist/providers/tool-tracker.d.ts.map +0 -1
- package/dist/providers/tool-tracker.js +0 -13
- package/dist/providers/tool-tracker.js.map +0 -1
- package/dist/reporting/headline-templates/verify.d.ts +0 -3
- package/dist/reporting/headline-templates/verify.d.ts.map +0 -1
- package/dist/reporting/headline-templates/verify.js +0 -29
- package/dist/reporting/headline-templates/verify.js.map +0 -1
- package/dist/reporting/report-parser-slots/verify-report.d.ts +0 -27
- package/dist/reporting/report-parser-slots/verify-report.d.ts.map +0 -1
- package/dist/reporting/report-parser-slots/verify-report.js +0 -51
- package/dist/reporting/report-parser-slots/verify-report.js.map +0 -1
- package/dist/review/templates/annotator-verify.d.ts +0 -3
- package/dist/review/templates/annotator-verify.d.ts.map +0 -1
- package/dist/review/templates/annotator-verify.js +0 -21
- package/dist/review/templates/annotator-verify.js.map +0 -1
- package/dist/review/templates/quality-review-verify.d.ts +0 -3
- package/dist/review/templates/quality-review-verify.d.ts.map +0 -1
- package/dist/review/templates/quality-review-verify.js +0 -10
- package/dist/review/templates/quality-review-verify.js.map +0 -1
- package/dist/tools/verify/implementer-criteria.d.ts +0 -61
- package/dist/tools/verify/implementer-criteria.d.ts.map +0 -1
- package/dist/tools/verify/implementer-criteria.js +0 -125
- package/dist/tools/verify/implementer-criteria.js.map +0 -1
- package/dist/tools/verify/schema.d.ts +0 -56
- package/dist/tools/verify/schema.d.ts.map +0 -1
- package/dist/tools/verify/schema.js +0 -16
- package/dist/tools/verify/schema.js.map +0 -1
- package/dist/tools/verify/tool-config.d.ts +0 -14
- package/dist/tools/verify/tool-config.d.ts.map +0 -1
- package/dist/tools/verify/tool-config.js +0 -146
- package/dist/tools/verify/tool-config.js.map +0 -1
package/README.md
CHANGED
|
@@ -40,7 +40,7 @@ for (const r of results) {
|
|
|
40
40
|
- **Routing engine** — capability filter → agent type → cheapest qualifier
|
|
41
41
|
- **`runTasks`** — parallel dispatch, returns per-task results with usage, cost, files touched, status, and escalation log
|
|
42
42
|
- **Reviewed lifecycle** — parallel spec + quality lint review by a different tier, conditional rework when verdicts demand changes, annotator-scored commit gate, file artifact verification
|
|
43
|
-
- **Executors** — pure `execute<Tool>(ctx, input)` functions for delegate, audit, review,
|
|
43
|
+
- **Executors** — pure `execute<Tool>(ctx, input)` functions for delegate, audit, review, debug, execute-plan, retry, investigate, research (used by the HTTP server package)
|
|
44
44
|
- **Tool schemas** — Zod-validated input shapes for each tool, exportable via `./tool-schemas/*`
|
|
45
45
|
- **BatchRegistry** — server-wide state machine for pending / awaiting_clarification / complete / failed / expired batches with context-block refcount pinning
|
|
46
46
|
- **Sandboxed tools** — `readFile`, `writeFile`, `grep`, `glob`, `listFiles`, `runShell` with `cwd-only` confinement
|
|
@@ -91,13 +91,13 @@ const engine = createDefaultReviewerEngine();
|
|
|
91
91
|
|
|
92
92
|
### AnnotatorEngine
|
|
93
93
|
|
|
94
|
-
Read-only annotation pass for **non-artifact-producing** tools (`audit`, `review`, `
|
|
94
|
+
Read-only annotation pass for **non-artifact-producing** tools (`audit`, `review`, `debug`, `investigate`, `research`, `explore`). Verdict is always `'annotated'` (success) or `'error'` (transport failure); never gates rework.
|
|
95
95
|
|
|
96
96
|
| Method | Description |
|
|
97
97
|
|---|---|
|
|
98
|
-
| `annotate(
|
|
98
|
+
| `annotate(session, input)` | Runs an annotation pass, re-judging severity and scoring confidence per finding |
|
|
99
99
|
|
|
100
|
-
Accepts a `
|
|
100
|
+
Accepts a `Session` (opened via the v4.4 provider boundary) and an `AnnotatorInput` (`{ workerOutput, brief, cwd, route, abortSignal?, deadlineMs? }`). Returns `AnnotatorCallResult` with parsed findings, raw assistant text, and cost breakdown.
|
|
101
101
|
|
|
102
102
|
```ts
|
|
103
103
|
import { AnnotatorEngine } from '@zhixuan92/multi-model-agent-core/review';
|
|
@@ -137,7 +137,7 @@ Per-tool configuration interface that drives `executeTask`. Each tool exports it
|
|
|
137
137
|
```ts
|
|
138
138
|
interface ToolConfig<Input, Brief, Report> {
|
|
139
139
|
name: string; // tool name
|
|
140
|
-
category: 'artifact_producing' | 'read_only' | '
|
|
140
|
+
category: 'artifact_producing' | 'read_only' | 'assist';
|
|
141
141
|
agentType: AgentType; // 'standard' | 'complex'
|
|
142
142
|
briefSlot: BriefSlotFiller<Input, Brief[]>; // input → briefs
|
|
143
143
|
buildTaskSpec: (brief: Brief, ctx: ExecutionContext) => TaskSpec;
|
|
@@ -160,7 +160,6 @@ Each tool's config lives at `@zhixuan92/multi-model-agent-core/tools/<tool>/tool
|
|
|
160
160
|
| delegate | `./tools/delegate/tool-config` |
|
|
161
161
|
| review | `./tools/review/tool-config` |
|
|
162
162
|
| audit | `./tools/audit/tool-config` |
|
|
163
|
-
| verify | `./tools/verify/tool-config` |
|
|
164
163
|
| debug | `./tools/debug/tool-config` |
|
|
165
164
|
| investigate | `./tools/investigate/tool-config` |
|
|
166
165
|
| research | `./tools/research/tool-config` |
|
|
@@ -187,7 +186,7 @@ Each tool's config lives at `@zhixuan92/multi-model-agent-core/tools/<tool>/tool
|
|
|
187
186
|
| `./intake/classify` | `classifyDraft` — deterministic classification heuristic |
|
|
188
187
|
| `./intake/confirm` | `processConfirmations` — clarification resume processing |
|
|
189
188
|
| `./intake/clarification-store` | `ClarificationStore` — TTL/LRU state for clarification sets |
|
|
190
|
-
| `./intake/compilers/*` | Route compilers: `delegate`, `review`, `debug`, `
|
|
189
|
+
| `./intake/compilers/*` | Route compilers: `delegate`, `review`, `debug`, `audit`, `execute-plan`, `investigate`, `research` |
|
|
191
190
|
| `./reporting/parse-investigation-report` | `parseInvestigationReport`, `parseCitations`, `parseConfidence` (3.4.0) |
|
|
192
191
|
| `./auto-commit` | `autoCommitFiles` — git commit helper for worker file changes |
|
|
193
192
|
| `./file-artifact-check` | `partitionFilePaths`, `checkOutputTargets` — output target verification |
|
|
@@ -197,7 +196,7 @@ Each tool's config lives at `@zhixuan92/multi-model-agent-core/tools/<tool>/tool
|
|
|
197
196
|
| `./review` | `ReviewerEngine`, `AnnotatorEngine` — v4 review surface (see Engine API below) |
|
|
198
197
|
| `./lifecycle/task-executor` | `executeTask` — generic per-tool orchestrator driven by a `ToolConfig` |
|
|
199
198
|
| `./lifecycle/executor-output-types` | `ExecutorOutput`, `BatchTimings`, `BatchAggregateCost` |
|
|
200
|
-
| `./tools/<tool>/tool-config` | Per-tool `ToolConfig` objects (delegate, review, audit,
|
|
199
|
+
| `./tools/<tool>/tool-config` | Per-tool `ToolConfig` objects (delegate, review, audit, debug, investigate, research, execute-plan, retry, register-context-block) |
|
|
201
200
|
|
|
202
201
|
## Diagnostic logging
|
|
203
202
|
|
|
@@ -229,23 +228,13 @@ mmagent logs --follow --batch=<id> # tail + filter
|
|
|
229
228
|
|
|
230
229
|
As of 3.4.0 every task-execution event the worker emits to the verbose stderr stream is also written to the JSONL log via a single `emit(TaskEvent)` writer — schema parity across both sinks. Crash/disconnect events (`startup`, `request_start`, `request_complete`, `shutdown`, `error`) are written unconditionally; per-task events (`heartbeat`, `stage_change`, `tool_call`, `turn_complete`, etc.) flow through the same writer.
|
|
231
230
|
|
|
232
|
-
## What's new in 4.0
|
|
231
|
+
## What's new in 4.5.0
|
|
233
232
|
|
|
234
|
-
-
|
|
235
|
-
- **`
|
|
236
|
-
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
Full history: [CHANGELOG](https://github.com/zhixuan312/multi-model-agent/blob/master/CHANGELOG.md).
|
|
241
|
-
|
|
242
|
-
## What's new in 4.0.0
|
|
243
|
-
|
|
244
|
-
- **Closed enums everywhere.** `reviewPolicy` → `'full' | 'quality_only' | 'diff_only' | 'none'` (removed `'spec_only'` and `'off'`); `agentType` → `'standard' | 'complex'`; `tier` drops `'main'`; `mainModelFamily` drops `'gpt-5'`.
|
|
245
|
-
- **4-field `TokenUsage`.** `{inputTokens, outputTokens, cachedReadTokens, cachedNonReadTokens}` — `outputTokens` includes reasoning; `reasoningTokens` and `cachedCreationTokens` removed. SCHEMA_VERSION → 4.
|
|
246
|
-
- **Clarification flow removed.** `confirm_clarifications` route, `mma-clarifications` skill, and `proposedInterpretation` field gone. Intake resolves ambiguity by picking the most likely interpretation.
|
|
247
|
-
- **Engine API.** New `ReviewerEngine` (gating reviews for artifact-producing tools) + `AnnotatorEngine` (read-only annotation passes) replace ad-hoc review functions. Per-tool executors collapsed into a single `executeTask` orchestrator driven by `ToolConfig` slot objects. See [Engine API](#v4-engine-api) above.
|
|
248
|
-
- **Internals.** Declarative `StagePlan` driven by a single `LifecycleDriver`; `RunnerShell` + 3 thin adapters replaces three parallel runner files. `ReadinessClassifier`, `EffortInferer`, `AttemptRecorder`, `RequestPipeline`, `TelemetryFlushWorker`, `CrossTierGuard` removed.
|
|
233
|
+
- **`getRealFilesChanged(state)` helper (`lifecycle/real-diff.ts`).** Derives the canonical written-files list from `git diff --name-only <preTaskHeadSha>` + filtered untracked files (snapshot-diffed against `state.preTaskUntrackedFiles` captured at task entry). Returns `{files, source}` with source ∈ `'git_diff' | 'self_report' | 'git_error'`. `git-commit-handler` and the telemetry event-builder both route through this helper, so commit decisions and `filesWrittenCount` cannot disagree with the actual git state.
|
|
234
|
+
- **`progress-watchdog` (`bounded-execution/progress-watchdog.ts`).** New module mirroring the stall-watchdog shape: `startProgressWatchdog(ctx) → disposer` arms a setInterval poller (5–30s) that aborts via `controller.abort()` when `wallClockMs > thrashWallClockMs` AND `git diff` empty (signal 1). `recordPostHocSignals` checks turn-count thrash (signal 2) and scope violations against `normalizeScopeEntry` / `isInScope` from `lifecycle/scope-match.ts` (signal 3). Wired around `delegateWithEscalation()` in `task-runner.ts` and `session.send()` in `rework-handler.ts`. Skip gates: `!config.enabled`, `toolCategory !== 'artifact_producing'`, missing `preTaskHeadSha` / `preTaskUntrackedFiles`.
|
|
235
|
+
- **Four new `defaults.*` config fields.** `progressWatchdogEnabled` (default `true`), `thrashTurns` (`25`), `thrashWallClockMs` (`1_200_000`), `thrashSoftTurns` (`10`). All optional.
|
|
236
|
+
- **Per-stage `mainEquivalentCostUSD` on `stageStats`.** Each stage entry carries the per-stage main-model-equivalent cost alongside `costUSD` so the frontend slices per-model savings without re-running rate-card math.
|
|
237
|
+
- **`LifecycleState` watchdog fields.** `preTaskUntrackedFiles`, `preStopReason`, `thrashingDetected`, `scopeViolations[]` — all optional, only populated when the watchdog fires.
|
|
249
238
|
|
|
250
239
|
Full history: [CHANGELOG](https://github.com/zhixuan312/multi-model-agent/blob/master/CHANGELOG.md).
|
|
251
240
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cost-compute.d.ts","sourceRoot":"","sources":["../../src/bounded-execution/cost-compute.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE/D,MAAM,WAAW,QAAQ;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,wBAAwB,EAAE,MAAM,CAAC;CAClC;AAID,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAChC,QAAQ,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,GAC3B,QAAQ,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"cost-compute.d.ts","sourceRoot":"","sources":["../../src/bounded-execution/cost-compute.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE/D,MAAM,WAAW,QAAQ;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,wBAAwB,EAAE,MAAM,CAAC;CAClC;AAID,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAChC,QAAQ,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,GAC3B,QAAQ,GAAG,IAAI,CAwCjB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU,CAoB5E;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,GAAG,MAAM,CAO9D"}
|
|
@@ -17,7 +17,17 @@ export function resolveRateCard(model, override) {
|
|
|
17
17
|
const output = (reasoning !== undefined && Number.isFinite(reasoning) && reasoning > rawOutput)
|
|
18
18
|
? reasoning
|
|
19
19
|
: rawOutput;
|
|
20
|
+
// Cache-read default: 0.1× input — matches Anthropic's 5-min/1-hour
|
|
21
|
+
// cache-read rate and OpenAI's gpt-5.x 90% discount. Explicit per-model
|
|
22
|
+
// overrides in model-profiles.json take precedence.
|
|
20
23
|
const cachedRead = override?.cachedReadCostPerMTok ?? profile.cachedReadCostPerMTok ?? input * 0.10;
|
|
24
|
+
// Cache-write default: 1.0× input. Anthropic charges 1.25× (5-min TTL)
|
|
25
|
+
// or 2.0× (1-hour TTL) for cache writes, but the Anthropic premium is
|
|
26
|
+
// encoded on the `claude` parent profile (`cachedNonRead: 3.75` = 1.25×
|
|
27
|
+
// base $3) and inherited by every claude-* model — so this fallback is
|
|
28
|
+
// only reached for non-Anthropic models that don't emit cache writes
|
|
29
|
+
// (OpenAI/codex doesn't emit a cache-write field) or for unknown
|
|
30
|
+
// providers. For those, "no premium" is the safe default.
|
|
21
31
|
const cachedNonRead = override?.cachedNonReadCostPerMTok ?? profile.cachedNonReadCostPerMTok ?? input;
|
|
22
32
|
return {
|
|
23
33
|
inputCostPerMTok: input,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cost-compute.js","sourceRoot":"","sources":["../../src/bounded-execution/cost-compute.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cost-compute.js","sourceRoot":"","sources":["../../src/bounded-execution/cost-compute.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bounded-execution/index.ts"],"names":[],"mappings":"AAEA,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bounded-execution/index.ts"],"names":[],"mappings":"AAEA,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bounded-execution/index.ts"],"names":[],"mappings":"AAAA,mFAAmF;AAEnF,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bounded-execution/index.ts"],"names":[],"mappings":"AAAA,mFAAmF;AAEnF,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { LifecycleState } from '../lifecycle/stage-plan-types.js';
|
|
2
|
+
export interface ProgressWatchdogConfig {
|
|
3
|
+
enabled: boolean;
|
|
4
|
+
thrashTurns: number;
|
|
5
|
+
thrashWallClockMs: number;
|
|
6
|
+
thrashSoftWallClockMs: number;
|
|
7
|
+
}
|
|
8
|
+
export interface ProgressWatchdogContext {
|
|
9
|
+
state: LifecycleState;
|
|
10
|
+
controller: AbortController;
|
|
11
|
+
emit: (event: Record<string, unknown>) => void;
|
|
12
|
+
config: ProgressWatchdogConfig;
|
|
13
|
+
taskIndex: number;
|
|
14
|
+
batchId?: string;
|
|
15
|
+
/** State the watchdog mutates: `fired` so post-hoc code knows the abort came from us. */
|
|
16
|
+
state2: {
|
|
17
|
+
fired: boolean;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Starts the progress watchdog. Returns a disposer that MUST be called in a
|
|
22
|
+
* finally{} block. Mirrors startStallWatchdog(): same shape, single function
|
|
23
|
+
* call, returns cleanup. The watchdog polls on a setInterval; when conditions
|
|
24
|
+
* trip, it fires `controller.abort()` to interrupt the in-flight session.send().
|
|
25
|
+
*
|
|
26
|
+
* Post-hoc signals (turn-count thrash detection and scope-violation analysis)
|
|
27
|
+
* are handled by recordPostHocSignals() below, called AFTER session.send()
|
|
28
|
+
* returns. They mutate state for the annotator to consume.
|
|
29
|
+
*/
|
|
30
|
+
export declare function startProgressWatchdog(ctx: ProgressWatchdogContext): () => void;
|
|
31
|
+
/**
|
|
32
|
+
* Post-hoc finalization called AFTER session.send() returns. Three things:
|
|
33
|
+
*
|
|
34
|
+
* 1. Turn-count thrash detection (since we can't observe turns mid-flight).
|
|
35
|
+
* If turns > thrashTurns AND real diff is empty AND watchdog didn't already
|
|
36
|
+
* trip mid-flight, mark state.thrashingDetected = true so the annotator
|
|
37
|
+
* surfaces it. No abort (the session already finished); this is informative.
|
|
38
|
+
* 2. Scope-violation analysis. Compute out-of-scope files from the final diff
|
|
39
|
+
* against declared filePaths; populate state.scopeViolations[].
|
|
40
|
+
* 3. Emit observability events for both.
|
|
41
|
+
*/
|
|
42
|
+
export declare function recordPostHocSignals(state: LifecycleState, turnsUsed: number, config: ProgressWatchdogConfig, emit: (event: Record<string, unknown>) => void, taskIndex: number, batchId?: string): Promise<void>;
|
|
43
|
+
//# sourceMappingURL=progress-watchdog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress-watchdog.d.ts","sourceRoot":"","sources":["../../src/bounded-execution/progress-watchdog.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAEvE,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,cAAc,CAAC;IACtB,UAAU,EAAE,eAAe,CAAC;IAC5B,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAC/C,MAAM,EAAE,sBAAsB,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yFAAyF;IACzF,MAAM,EAAE;QAAE,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC;CAC5B;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,uBAAuB,GAAG,MAAM,IAAI,CA8E9E;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,cAAc,EACrB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,sBAAsB,EAC9B,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,EAC9C,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAqCf"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
// packages/core/src/bounded-execution/progress-watchdog.ts
|
|
2
|
+
import { spawnSync } from 'node:child_process';
|
|
3
|
+
import { getRealFilesChanged } from '../lifecycle/real-diff.js';
|
|
4
|
+
import { normalizeScopeEntry, isInScope } from '../lifecycle/scope-match.js';
|
|
5
|
+
/**
|
|
6
|
+
* Starts the progress watchdog. Returns a disposer that MUST be called in a
|
|
7
|
+
* finally{} block. Mirrors startStallWatchdog(): same shape, single function
|
|
8
|
+
* call, returns cleanup. The watchdog polls on a setInterval; when conditions
|
|
9
|
+
* trip, it fires `controller.abort()` to interrupt the in-flight session.send().
|
|
10
|
+
*
|
|
11
|
+
* Post-hoc signals (turn-count thrash detection and scope-violation analysis)
|
|
12
|
+
* are handled by recordPostHocSignals() below, called AFTER session.send()
|
|
13
|
+
* returns. They mutate state for the annotator to consume.
|
|
14
|
+
*/
|
|
15
|
+
export function startProgressWatchdog(ctx) {
|
|
16
|
+
const ts = () => new Date().toISOString();
|
|
17
|
+
const meta = {
|
|
18
|
+
...(ctx.batchId !== undefined && { batchId: ctx.batchId }),
|
|
19
|
+
taskIndex: ctx.taskIndex,
|
|
20
|
+
};
|
|
21
|
+
// Three skip conditions evaluated once at arm:
|
|
22
|
+
if (!ctx.config.enabled) {
|
|
23
|
+
ctx.emit({ event: 'progress_watchdog_skipped_disabled', ts: ts(), reason: 'config_disabled', ...meta });
|
|
24
|
+
return () => undefined;
|
|
25
|
+
}
|
|
26
|
+
if (ctx.state.toolCategory !== 'artifact_producing') {
|
|
27
|
+
return () => undefined; // silent no-op for read-only routes
|
|
28
|
+
}
|
|
29
|
+
if (!ctx.state.preTaskHeadSha || !ctx.state.preTaskUntrackedFiles) {
|
|
30
|
+
ctx.emit({ event: 'progress_watchdog_skipped_non_git', ts: ts(), reason: 'non_git_cwd', ...meta });
|
|
31
|
+
return () => undefined;
|
|
32
|
+
}
|
|
33
|
+
ctx.emit({ event: 'progress_watchdog_armed', ts: ts(), toolCategory: ctx.state.toolCategory, ...meta });
|
|
34
|
+
const startedAtMs = Date.now();
|
|
35
|
+
let warned = false;
|
|
36
|
+
// Poll interval clamped to [5s, 30s]. Coarser than stall-watchdog's [1s, 5s]
|
|
37
|
+
// because git diff is heavier than just checking idle time. Total cost: a
|
|
38
|
+
// few git invocations per task — negligible.
|
|
39
|
+
const pollIntervalMs = Math.min(30_000, Math.max(5_000, Math.floor(ctx.config.thrashWallClockMs / 60)));
|
|
40
|
+
const interval = setInterval(() => {
|
|
41
|
+
if (ctx.state2.fired)
|
|
42
|
+
return;
|
|
43
|
+
if (ctx.controller.signal.aborted) {
|
|
44
|
+
ctx.state2.fired = true;
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
const wallClockMs = Date.now() - startedAtMs;
|
|
48
|
+
// Cheap pre-check: only call git when we're past the soft threshold (no
|
|
49
|
+
// point grepping git every 30s during the first few minutes of a task).
|
|
50
|
+
if (wallClockMs < ctx.config.thrashSoftWallClockMs)
|
|
51
|
+
return;
|
|
52
|
+
// Synchronous git diff via spawnSync — same pattern real-diff uses.
|
|
53
|
+
const cwd = ctx.state.cwd ?? '';
|
|
54
|
+
const preSha = ctx.state.preTaskHeadSha;
|
|
55
|
+
const r = spawnSync('git', ['diff', '--name-only', `${preSha}..`], { cwd, encoding: 'utf8' });
|
|
56
|
+
const diffEmpty = r.status === 0 && r.stdout.trim().length === 0;
|
|
57
|
+
if (!diffEmpty)
|
|
58
|
+
return; // diff is non-empty; not thrashing
|
|
59
|
+
// Signal 2: soft warn (fires once per task)
|
|
60
|
+
if (!warned && wallClockMs >= ctx.config.thrashSoftWallClockMs) {
|
|
61
|
+
warned = true;
|
|
62
|
+
ctx.emit({ event: 'progress_watchdog_warn', ts: ts(), wallClockMs, ...meta });
|
|
63
|
+
}
|
|
64
|
+
// Signal 1: hard thrash — wall-clock exceeded + diff still empty → abort
|
|
65
|
+
if (wallClockMs >= ctx.config.thrashWallClockMs) {
|
|
66
|
+
ctx.state2.fired = true;
|
|
67
|
+
ctx.state.thrashingDetected = true;
|
|
68
|
+
ctx.state.preStopReason = 'thrashing';
|
|
69
|
+
ctx.controller.abort();
|
|
70
|
+
ctx.emit({
|
|
71
|
+
event: 'progress_watchdog_fired_thrash',
|
|
72
|
+
ts: ts(),
|
|
73
|
+
wallClockMs,
|
|
74
|
+
threshold: 'wallclock',
|
|
75
|
+
...meta,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}, pollIntervalMs);
|
|
79
|
+
return () => {
|
|
80
|
+
clearInterval(interval);
|
|
81
|
+
ctx.emit({
|
|
82
|
+
event: 'progress_watchdog_disarmed',
|
|
83
|
+
ts: ts(),
|
|
84
|
+
reason: ctx.state2.fired ? 'thrash' : 'normal',
|
|
85
|
+
...meta,
|
|
86
|
+
});
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Post-hoc finalization called AFTER session.send() returns. Three things:
|
|
91
|
+
*
|
|
92
|
+
* 1. Turn-count thrash detection (since we can't observe turns mid-flight).
|
|
93
|
+
* If turns > thrashTurns AND real diff is empty AND watchdog didn't already
|
|
94
|
+
* trip mid-flight, mark state.thrashingDetected = true so the annotator
|
|
95
|
+
* surfaces it. No abort (the session already finished); this is informative.
|
|
96
|
+
* 2. Scope-violation analysis. Compute out-of-scope files from the final diff
|
|
97
|
+
* against declared filePaths; populate state.scopeViolations[].
|
|
98
|
+
* 3. Emit observability events for both.
|
|
99
|
+
*/
|
|
100
|
+
export async function recordPostHocSignals(state, turnsUsed, config, emit, taskIndex, batchId) {
|
|
101
|
+
if (!config.enabled)
|
|
102
|
+
return;
|
|
103
|
+
if (state.toolCategory !== 'artifact_producing')
|
|
104
|
+
return;
|
|
105
|
+
if (!state.preTaskHeadSha || !state.preTaskUntrackedFiles)
|
|
106
|
+
return;
|
|
107
|
+
const meta = {
|
|
108
|
+
...(batchId !== undefined && { batchId }),
|
|
109
|
+
taskIndex,
|
|
110
|
+
};
|
|
111
|
+
const ts = () => new Date().toISOString();
|
|
112
|
+
const realFiles = await getRealFilesChanged(state);
|
|
113
|
+
if (realFiles.source !== 'git_diff')
|
|
114
|
+
return;
|
|
115
|
+
// (1) Post-hoc turn-count thrash (only if watchdog didn't already trip)
|
|
116
|
+
if (!state.thrashingDetected && turnsUsed > config.thrashTurns && realFiles.files.length === 0) {
|
|
117
|
+
state.thrashingDetected = true;
|
|
118
|
+
emit({
|
|
119
|
+
event: 'progress_watchdog_fired_thrash',
|
|
120
|
+
ts: ts(),
|
|
121
|
+
turnsUsed,
|
|
122
|
+
threshold: 'turns_post_hoc',
|
|
123
|
+
...meta,
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
// (2) Scope-violation analysis
|
|
127
|
+
const taskSpec = state.task;
|
|
128
|
+
const declaredScope = (taskSpec?.filePaths ?? []).map((entry) => normalizeScopeEntry(state.cwd ?? '', entry));
|
|
129
|
+
if (declaredScope.length > 0 && realFiles.files.length > 0) {
|
|
130
|
+
const violations = realFiles.files.filter((f) => !isInScope(f, declaredScope));
|
|
131
|
+
if (violations.length > 0) {
|
|
132
|
+
state.scopeViolations = violations;
|
|
133
|
+
emit({ event: 'progress_watchdog_scope_violation', ts: ts(), outOfScope: violations, ...meta });
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=progress-watchdog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress-watchdog.js","sourceRoot":"","sources":["../../src/bounded-execution/progress-watchdog.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,10 +23,12 @@ export type MainAgentModelResolution = {
|
|
|
23
23
|
reason: string;
|
|
24
24
|
};
|
|
25
25
|
/**
|
|
26
|
-
* Return the names of
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
26
|
+
* Return the names of agents carrying an inline `apiKey` instead of using
|
|
27
|
+
* `apiKeyEnv`. The schema permits both, but plaintext API keys in a config
|
|
28
|
+
* file are a backup/dotfile/git footgun — serve surfaces this once at
|
|
29
|
+
* startup so the operator can react. Applies to any agent (claude/codex)
|
|
30
|
+
* that has been configured against a non-default backend (`baseUrl` set)
|
|
31
|
+
* and chosen to inline the key.
|
|
30
32
|
*/
|
|
31
33
|
export declare function collectInlineApiKeyOffenders(config: MultiModelConfig): string[];
|
|
32
34
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-resolver.d.ts","sourceRoot":"","sources":["../../src/config/config-resolver.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,MAAM,OAAO,GAAG;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,uBAAuB,EAAE,MAAM,CAAC;IAChC,0BAA0B,EAAE,MAAM,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAChC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,wBAAwB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACpF;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAErC
|
|
1
|
+
{"version":3,"file":"config-resolver.d.ts","sourceRoot":"","sources":["../../src/config/config-resolver.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,MAAM,OAAO,GAAG;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,uBAAuB,EAAE,MAAM,CAAC;IAChC,0BAA0B,EAAE,MAAM,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAChC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,wBAAwB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACpF;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAErC;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAQ/E;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,OAAO,GAAG,SAAS,EAChC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GACnC,wBAAwB,CAgB1B;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAEzD"}
|
|
@@ -4,16 +4,17 @@
|
|
|
4
4
|
// (decide-which-source-wins) live here.
|
|
5
5
|
import { pricingSchema } from './schema.js';
|
|
6
6
|
/**
|
|
7
|
-
* Return the names of
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
7
|
+
* Return the names of agents carrying an inline `apiKey` instead of using
|
|
8
|
+
* `apiKeyEnv`. The schema permits both, but plaintext API keys in a config
|
|
9
|
+
* file are a backup/dotfile/git footgun — serve surfaces this once at
|
|
10
|
+
* startup so the operator can react. Applies to any agent (claude/codex)
|
|
11
|
+
* that has been configured against a non-default backend (`baseUrl` set)
|
|
12
|
+
* and chosen to inline the key.
|
|
11
13
|
*/
|
|
12
14
|
export function collectInlineApiKeyOffenders(config) {
|
|
13
15
|
const offenders = [];
|
|
14
16
|
for (const [name, agent] of Object.entries(config.agents)) {
|
|
15
|
-
if (
|
|
16
|
-
typeof agent.apiKey === 'string') {
|
|
17
|
+
if (typeof agent.apiKey === 'string') {
|
|
17
18
|
offenders.push(name);
|
|
18
19
|
}
|
|
19
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-resolver.js","sourceRoot":"","sources":["../../src/config/config-resolver.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,sDAAsD;AACtD,sEAAsE;AACtE,wCAAwC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAgB5C
|
|
1
|
+
{"version":3,"file":"config-resolver.js","sourceRoot":"","sources":["../../src/config/config-resolver.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,sDAAsD;AACtD,sEAAsE;AACtE,wCAAwC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAgB5C;;;;;;;GAOG;AACH,MAAM,UAAU,4BAA4B,CAAC,MAAwB;IACnE,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1D,IAAI,OAAQ,KAA8B,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/D,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAAe,EACf,WAAgC,EAChC,cAAoC;IAEpC,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC1C,IAAI,KAAK,IAAI,CAAC,WAAW;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACtF,IAAI,KAAK,IAAI,WAAW,EAAE,CAAC;QACzB,OAAO;YACL,IAAI,EAAE,wBAAwB;YAC9B,KAAK,EAAE,OAAO;YACd,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,0CAA0C,OAAO,oDAAoD;SAC/G,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,KAAK,IAAI,WAAW;QAAE,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;IACrG,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,mBAAmB,OAAO,iGAAiG;KACpI,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAY;IAC9C,OAAO,aAAa,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;AAC7C,CAAC"}
|
package/dist/config/schema.d.ts
CHANGED
|
@@ -83,26 +83,6 @@ export declare const serverConfigSchema: z.ZodObject<{
|
|
|
83
83
|
export declare const multiModelConfigSchema: z.ZodObject<{
|
|
84
84
|
agents: z.ZodObject<{
|
|
85
85
|
standard: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
86
|
-
model: z.ZodString;
|
|
87
|
-
effort: z.ZodOptional<z.ZodEnum<{
|
|
88
|
-
none: "none";
|
|
89
|
-
low: "low";
|
|
90
|
-
medium: "medium";
|
|
91
|
-
high: "high";
|
|
92
|
-
}>>;
|
|
93
|
-
inputCostPerMTok: z.ZodOptional<z.ZodNumber>;
|
|
94
|
-
outputCostPerMTok: z.ZodOptional<z.ZodNumber>;
|
|
95
|
-
timeoutMs: z.ZodOptional<z.ZodNumber>;
|
|
96
|
-
sandboxPolicy: z.ZodOptional<z.ZodEnum<{
|
|
97
|
-
none: "none";
|
|
98
|
-
"cwd-only": "cwd-only";
|
|
99
|
-
}>>;
|
|
100
|
-
inputTokenSoftLimit: z.ZodOptional<z.ZodNumber>;
|
|
101
|
-
type: z.ZodLiteral<"openai-compatible">;
|
|
102
|
-
baseUrl: z.ZodString;
|
|
103
|
-
apiKey: z.ZodOptional<z.ZodString>;
|
|
104
|
-
apiKeyEnv: z.ZodOptional<z.ZodString>;
|
|
105
|
-
}, z.core.$strip>, z.ZodObject<{
|
|
106
86
|
model: z.ZodString;
|
|
107
87
|
effort: z.ZodOptional<z.ZodEnum<{
|
|
108
88
|
none: "none";
|
|
@@ -119,24 +99,7 @@ export declare const multiModelConfigSchema: z.ZodObject<{
|
|
|
119
99
|
}>>;
|
|
120
100
|
inputTokenSoftLimit: z.ZodOptional<z.ZodNumber>;
|
|
121
101
|
type: z.ZodLiteral<"claude">;
|
|
122
|
-
|
|
123
|
-
model: z.ZodString;
|
|
124
|
-
effort: z.ZodOptional<z.ZodEnum<{
|
|
125
|
-
none: "none";
|
|
126
|
-
low: "low";
|
|
127
|
-
medium: "medium";
|
|
128
|
-
high: "high";
|
|
129
|
-
}>>;
|
|
130
|
-
inputCostPerMTok: z.ZodOptional<z.ZodNumber>;
|
|
131
|
-
outputCostPerMTok: z.ZodOptional<z.ZodNumber>;
|
|
132
|
-
timeoutMs: z.ZodOptional<z.ZodNumber>;
|
|
133
|
-
sandboxPolicy: z.ZodOptional<z.ZodEnum<{
|
|
134
|
-
none: "none";
|
|
135
|
-
"cwd-only": "cwd-only";
|
|
136
|
-
}>>;
|
|
137
|
-
inputTokenSoftLimit: z.ZodOptional<z.ZodNumber>;
|
|
138
|
-
type: z.ZodLiteral<"claude-compatible">;
|
|
139
|
-
baseUrl: z.ZodString;
|
|
102
|
+
baseUrl: z.ZodOptional<z.ZodString>;
|
|
140
103
|
apiKey: z.ZodOptional<z.ZodString>;
|
|
141
104
|
apiKeyEnv: z.ZodOptional<z.ZodString>;
|
|
142
105
|
}, z.core.$strict>, z.ZodObject<{
|
|
@@ -156,28 +119,11 @@ export declare const multiModelConfigSchema: z.ZodObject<{
|
|
|
156
119
|
}>>;
|
|
157
120
|
inputTokenSoftLimit: z.ZodOptional<z.ZodNumber>;
|
|
158
121
|
type: z.ZodLiteral<"codex">;
|
|
159
|
-
|
|
160
|
-
complex: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
161
|
-
model: z.ZodString;
|
|
162
|
-
effort: z.ZodOptional<z.ZodEnum<{
|
|
163
|
-
none: "none";
|
|
164
|
-
low: "low";
|
|
165
|
-
medium: "medium";
|
|
166
|
-
high: "high";
|
|
167
|
-
}>>;
|
|
168
|
-
inputCostPerMTok: z.ZodOptional<z.ZodNumber>;
|
|
169
|
-
outputCostPerMTok: z.ZodOptional<z.ZodNumber>;
|
|
170
|
-
timeoutMs: z.ZodOptional<z.ZodNumber>;
|
|
171
|
-
sandboxPolicy: z.ZodOptional<z.ZodEnum<{
|
|
172
|
-
none: "none";
|
|
173
|
-
"cwd-only": "cwd-only";
|
|
174
|
-
}>>;
|
|
175
|
-
inputTokenSoftLimit: z.ZodOptional<z.ZodNumber>;
|
|
176
|
-
type: z.ZodLiteral<"openai-compatible">;
|
|
177
|
-
baseUrl: z.ZodString;
|
|
122
|
+
baseUrl: z.ZodOptional<z.ZodString>;
|
|
178
123
|
apiKey: z.ZodOptional<z.ZodString>;
|
|
179
124
|
apiKeyEnv: z.ZodOptional<z.ZodString>;
|
|
180
|
-
}, z.core.$
|
|
125
|
+
}, z.core.$strict>], "type">;
|
|
126
|
+
complex: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
181
127
|
model: z.ZodString;
|
|
182
128
|
effort: z.ZodOptional<z.ZodEnum<{
|
|
183
129
|
none: "none";
|
|
@@ -194,24 +140,7 @@ export declare const multiModelConfigSchema: z.ZodObject<{
|
|
|
194
140
|
}>>;
|
|
195
141
|
inputTokenSoftLimit: z.ZodOptional<z.ZodNumber>;
|
|
196
142
|
type: z.ZodLiteral<"claude">;
|
|
197
|
-
|
|
198
|
-
model: z.ZodString;
|
|
199
|
-
effort: z.ZodOptional<z.ZodEnum<{
|
|
200
|
-
none: "none";
|
|
201
|
-
low: "low";
|
|
202
|
-
medium: "medium";
|
|
203
|
-
high: "high";
|
|
204
|
-
}>>;
|
|
205
|
-
inputCostPerMTok: z.ZodOptional<z.ZodNumber>;
|
|
206
|
-
outputCostPerMTok: z.ZodOptional<z.ZodNumber>;
|
|
207
|
-
timeoutMs: z.ZodOptional<z.ZodNumber>;
|
|
208
|
-
sandboxPolicy: z.ZodOptional<z.ZodEnum<{
|
|
209
|
-
none: "none";
|
|
210
|
-
"cwd-only": "cwd-only";
|
|
211
|
-
}>>;
|
|
212
|
-
inputTokenSoftLimit: z.ZodOptional<z.ZodNumber>;
|
|
213
|
-
type: z.ZodLiteral<"claude-compatible">;
|
|
214
|
-
baseUrl: z.ZodString;
|
|
143
|
+
baseUrl: z.ZodOptional<z.ZodString>;
|
|
215
144
|
apiKey: z.ZodOptional<z.ZodString>;
|
|
216
145
|
apiKeyEnv: z.ZodOptional<z.ZodString>;
|
|
217
146
|
}, z.core.$strict>, z.ZodObject<{
|
|
@@ -231,6 +160,9 @@ export declare const multiModelConfigSchema: z.ZodObject<{
|
|
|
231
160
|
}>>;
|
|
232
161
|
inputTokenSoftLimit: z.ZodOptional<z.ZodNumber>;
|
|
233
162
|
type: z.ZodLiteral<"codex">;
|
|
163
|
+
baseUrl: z.ZodOptional<z.ZodString>;
|
|
164
|
+
apiKey: z.ZodOptional<z.ZodString>;
|
|
165
|
+
apiKeyEnv: z.ZodOptional<z.ZodString>;
|
|
234
166
|
}, z.core.$strict>], "type">;
|
|
235
167
|
}, z.core.$strip>;
|
|
236
168
|
defaults: z.ZodDefault<z.ZodObject<{
|
|
@@ -249,6 +181,10 @@ export declare const multiModelConfigSchema: z.ZodObject<{
|
|
|
249
181
|
}>>;
|
|
250
182
|
largeResponseThresholdChars: z.ZodOptional<z.ZodNumber>;
|
|
251
183
|
mainModel: z.ZodOptional<z.ZodString>;
|
|
184
|
+
progressWatchdogEnabled: z.ZodOptional<z.ZodBoolean>;
|
|
185
|
+
thrashTurns: z.ZodOptional<z.ZodNumber>;
|
|
186
|
+
thrashWallClockMs: z.ZodOptional<z.ZodNumber>;
|
|
187
|
+
thrashSoftTurns: z.ZodOptional<z.ZodNumber>;
|
|
252
188
|
}, z.core.$strip>>;
|
|
253
189
|
diagnostics: z.ZodOptional<z.ZodObject<{
|
|
254
190
|
log: z.ZodDefault<z.ZodBoolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EACV,gBAAgB,EACjB,MAAM,aAAa,CAAC;AAErB;;;;;0BAK0B;AAC1B,eAAO,MAAM,uBAAuB,UAAY,CAAC;AAEjD;;;iEAGiE;AACjE,eAAO,MAAM,wBAAwB,UAAY,CAAC;AAElD;oDACoD;AACpD,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAEvC;;;;;iCAKiC;AACjC,eAAO,MAAM,sBAAsB,MAAO,CAAC;AAE3C;;;yEAGyE;AACzE,eAAO,MAAM,sBAAsB,MAAO,CAAC;AAuE3C,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;mBAqC9B,CAAC;AAEJ,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AASlE,eAAO,MAAM,aAAa;;;;;kBAKf,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EACV,gBAAgB,EACjB,MAAM,aAAa,CAAC;AAErB;;;;;0BAK0B;AAC1B,eAAO,MAAM,uBAAuB,UAAY,CAAC;AAEjD;;;iEAGiE;AACjE,eAAO,MAAM,wBAAwB,UAAY,CAAC;AAElD;oDACoD;AACpD,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAEvC;;;;;iCAKiC;AACjC,eAAO,MAAM,sBAAsB,MAAO,CAAC;AAE3C;;;yEAGyE;AACzE,eAAO,MAAM,sBAAsB,MAAO,CAAC;AAuE3C,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;mBAqC9B,CAAC;AAEJ,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AASlE,eAAO,MAAM,aAAa;;;;;kBAKf,CAAC;AAuEZ,4DAA4D;AAC5D,eAAO,MAAM,2BAA2B,QAAa,CAAC;AAsCtD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;kBAUpB,CAAC;AAEZ,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA2BxB,CAAC;AAEZ,mEAAmE;AACnE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,gBAAgB,CAAA;IACxB,OAAO,EAAE,IAAI,CAAA;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,KAAK,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,MAAM,iBAAiB,GAAG,mBAAmB,GAAG,mBAAmB,CAAA;AAEzE;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,gBAAgB,CAE1D"}
|
package/dist/config/schema.js
CHANGED
|
@@ -149,36 +149,29 @@ const baseAgentFields = {
|
|
|
149
149
|
sandboxPolicy: sandboxPolicySchema,
|
|
150
150
|
inputTokenSoftLimit: z.number().int().positive().optional(),
|
|
151
151
|
};
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
152
|
+
// v4.4: two provider types only. `claude` covers Anthropic API + any
|
|
153
|
+
// Anthropic-compatible proxy (set baseUrl). `codex` covers ChatGPT
|
|
154
|
+
// subscription + OpenAI API + any OpenAI-compatible endpoint (Groq,
|
|
155
|
+
// DeepSeek, OpenRouter, Together, LM Studio, Ollama — set baseUrl +
|
|
156
|
+
// apiKeyEnv to enable). The compatibility variants from earlier
|
|
157
|
+
// releases have been removed — collapse all of them onto `claude` or
|
|
158
|
+
// `codex` with the appropriate `baseUrl` set.
|
|
159
159
|
const claudeAgentSchema = z.object({
|
|
160
160
|
type: z.literal('claude'),
|
|
161
|
-
|
|
162
|
-
}).strict();
|
|
163
|
-
// `claude-compatible` targets an Anthropic-format endpoint hosted by another
|
|
164
|
-
// vendor (e.g. DeepSeek's https://api.deepseek.com/anthropic). It mirrors
|
|
165
|
-
// `openai-compatible`: required baseUrl + apiKey/apiKeyEnv, talks the same
|
|
166
|
-
// wire format as the canonical provider.
|
|
167
|
-
const claudeCompatibleAgentSchema = z.object({
|
|
168
|
-
type: z.literal('claude-compatible'),
|
|
169
|
-
baseUrl: z.string().min(1, 'baseUrl is required for claude-compatible agents'),
|
|
161
|
+
baseUrl: z.string().min(1).optional(),
|
|
170
162
|
apiKey: z.string().optional(),
|
|
171
163
|
apiKeyEnv: z.string().optional(),
|
|
172
164
|
...baseAgentFields,
|
|
173
165
|
}).strict();
|
|
174
166
|
const codexAgentSchema = z.object({
|
|
175
167
|
type: z.literal('codex'),
|
|
168
|
+
baseUrl: z.string().min(1).optional(),
|
|
169
|
+
apiKey: z.string().optional(),
|
|
170
|
+
apiKeyEnv: z.string().optional(),
|
|
176
171
|
...baseAgentFields,
|
|
177
172
|
}).strict();
|
|
178
173
|
const agentConfigSchema = z.discriminatedUnion('type', [
|
|
179
|
-
openAICompatibleAgentSchema,
|
|
180
174
|
claudeAgentSchema,
|
|
181
|
-
claudeCompatibleAgentSchema,
|
|
182
175
|
codexAgentSchema,
|
|
183
176
|
]);
|
|
184
177
|
// === MultiModelConfig schema ===
|
|
@@ -193,6 +186,10 @@ const defaultsSchema = z.object({
|
|
|
193
186
|
// in the resolver chain. Headers + per-client auto-detection take
|
|
194
187
|
// precedence; this is the explicit operator override / last resort.
|
|
195
188
|
mainModel: z.string().min(1).optional(),
|
|
189
|
+
progressWatchdogEnabled: z.boolean().optional(),
|
|
190
|
+
thrashTurns: z.number().int().positive().optional(),
|
|
191
|
+
thrashWallClockMs: z.number().int().positive().optional(),
|
|
192
|
+
thrashSoftTurns: z.number().int().positive().optional(),
|
|
196
193
|
}).default(() => ({
|
|
197
194
|
timeoutMs: DEFAULT_TASK_TIMEOUT_MS,
|
|
198
195
|
stallTimeoutMs: DEFAULT_STALL_TIMEOUT_MS,
|