@zhixuan92/multi-model-agent-core 4.3.1 → 4.4.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 +7 -8
- 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/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 +8 -76
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +11 -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 +1 -1
- package/dist/events/event-builder.d.ts.map +1 -1
- package/dist/events/event-builder.js +2 -2
- package/dist/events/event-builder.js.map +1 -1
- package/dist/events/observability-events.d.ts +1 -25
- package/dist/events/observability-events.d.ts.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 +20 -23
- package/dist/events/telemetry-types.d.ts.map +1 -1
- package/dist/events/telemetry-types.js +13 -13
- 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/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 +38 -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 +147 -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 +49 -25
- package/dist/lifecycle/handlers/rework-handler.js.map +1 -1
- package/dist/lifecycle/handlers/task-executor.d.ts +1 -3
- package/dist/lifecycle/handlers/task-executor.d.ts.map +1 -1
- package/dist/lifecycle/handlers/task-executor.js +88 -8
- package/dist/lifecycle/handlers/task-executor.js.map +1 -1
- package/dist/lifecycle/lifecycle-context.d.ts +13 -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/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 +0 -23
- package/dist/lifecycle/stage-plan-types.d.ts.map +1 -1
- package/dist/lifecycle/stage-progression.js +10 -10
- 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 +83 -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 +31 -29
- 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/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/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/types/config.d.ts +14 -28
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/enums.d.ts +2 -7
- package/dist/types/enums.d.ts.map +1 -1
- package/dist/types/enums.js +3 -3
- 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/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
|
@@ -1,518 +0,0 @@
|
|
|
1
|
-
import { resolveRateCard, priceTokens } from '../bounded-execution/cost-compute.js';
|
|
2
|
-
const DEFAULT_CAPABILITIES = {
|
|
3
|
-
cache_control: false, thinking: false, vision: false, tool_use: true, streaming: false, other: [],
|
|
4
|
-
};
|
|
5
|
-
// Tool-name sets are centralized in `tool-name-sets.ts` so the
|
|
6
|
-
// runner-shell + running-headline-sink can't drift. Note: this
|
|
7
|
-
// runner's READ list is intentionally narrower than the central
|
|
8
|
-
// READ_TOOL_NAMES — runner-shell tracks filesRead by extractable
|
|
9
|
-
// path, and grep/glob/listFiles don't have a single "file" arg. The
|
|
10
|
-
// central set is for the polling headline's read activity counter,
|
|
11
|
-
// which counts every read-class tool call regardless of args.
|
|
12
|
-
import { WRITE_TOOL_NAMES, SHELL_TOOL_NAMES } from './tool-name-sets.js';
|
|
13
|
-
import { filterValidWritePath } from './file-tracker.js';
|
|
14
|
-
const READ_TOOL_NAMES = new Set(['readFile', 'read_file']);
|
|
15
|
-
function extractPathFromToolInput(input) {
|
|
16
|
-
if (typeof input !== 'object' || input === null)
|
|
17
|
-
return undefined;
|
|
18
|
-
const obj = input;
|
|
19
|
-
for (const key of ['path', 'file_path', 'filePath']) {
|
|
20
|
-
const v = obj[key];
|
|
21
|
-
if (typeof v === 'string')
|
|
22
|
-
return v;
|
|
23
|
-
}
|
|
24
|
-
return undefined;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Heuristic: does the given shell command write to the filesystem?
|
|
28
|
-
*
|
|
29
|
-
* Gap 11 fix (4.0.3+): the polling headline tracks file writes by tool
|
|
30
|
-
* name (writeFile/write_file/edit_file). Workers that bypass these and
|
|
31
|
-
* write via run_shell (cat >, sed -i, tee, etc.) used to show "0 write"
|
|
32
|
-
* for the entire run despite actively producing artifacts. This
|
|
33
|
-
* heuristic looks for common write patterns in the command string;
|
|
34
|
-
* false positives are acceptable (operator gets a slightly noisy count)
|
|
35
|
-
* but false negatives are not (the headline lies about progress).
|
|
36
|
-
*
|
|
37
|
-
* Patterns detected:
|
|
38
|
-
* - Output redirects: `> file`, `>> file`, `&> file`, `>| file`
|
|
39
|
-
* - Heredoc to file: `<<EOF > file`, `cat <<...> file`
|
|
40
|
-
* - `sed -i` / `sed -i ''` (in-place edit)
|
|
41
|
-
* - `awk -i inplace` / `gawk -i inplace`
|
|
42
|
-
* - `tee file`, `tee -a file`
|
|
43
|
-
* - `cp/mv/touch/install` (file creation/moves)
|
|
44
|
-
* - `mkdir`, `rm`, `chmod`, `chown` (filesystem mutation)
|
|
45
|
-
* - `git checkout/reset/restore/pull/merge` (modifies files)
|
|
46
|
-
* - `python/node -c '... open(... "w") ...'` is NOT detected — too
|
|
47
|
-
* ambiguous; keeps false-positive rate low.
|
|
48
|
-
*/
|
|
49
|
-
const SHELL_WRITE_PATTERNS = [
|
|
50
|
-
// > file or >> file. The (?<![\d&|>]) lookbehind excludes file-descriptor
|
|
51
|
-
// redirects (2>file, 1>file, 2>>file) which only redirect stderr/stdout —
|
|
52
|
-
// they do NOT create file artifacts in the way "cat > file" or "tee" does.
|
|
53
|
-
// Without this, every command using "2>/dev/null" gets counted as a write,
|
|
54
|
-
// inflating the headline shellWrites counter with non-writes.
|
|
55
|
-
/(?<![\d&|>])>>?\s*[^&|>\s]/,
|
|
56
|
-
/&>\s*[^&|>\s]/, // &> file (combined redirect)
|
|
57
|
-
/>\|\s*[^&|>\s]/, // >| file (force overwrite)
|
|
58
|
-
/\bsed\s+(?:-[a-z]*i[a-z]*\b|--in-place\b)/i, // sed -i / sed --in-place
|
|
59
|
-
/\b(?:awk|gawk|nawk)\s+-i\s+inplace\b/i,
|
|
60
|
-
/\btee\b/,
|
|
61
|
-
/\b(?:cp|mv|touch|install|ln)\s+/,
|
|
62
|
-
/\bmkdir\s+/,
|
|
63
|
-
/\brm\s+/,
|
|
64
|
-
/\bchmod\s+/,
|
|
65
|
-
/\bchown\s+/,
|
|
66
|
-
/\bgit\s+(?:checkout|reset|restore|pull|merge|clean|stash|cherry-pick|rebase|apply)\b/,
|
|
67
|
-
/\bnpm\s+(?:install|i|ci|uninstall|update|run\s+build|run\s+test)\b/,
|
|
68
|
-
/\bpnpm\s+(?:install|add|remove|update|run)\b/,
|
|
69
|
-
/\byarn\s+(?:install|add|remove|upgrade)\b/,
|
|
70
|
-
];
|
|
71
|
-
export function shellCommandWritesFs(command) {
|
|
72
|
-
if (!command || command.length === 0)
|
|
73
|
-
return false;
|
|
74
|
-
for (const pattern of SHELL_WRITE_PATTERNS) {
|
|
75
|
-
if (pattern.test(command))
|
|
76
|
-
return true;
|
|
77
|
-
}
|
|
78
|
-
return false;
|
|
79
|
-
}
|
|
80
|
-
function extractShellCommand(input) {
|
|
81
|
-
if (typeof input !== 'object' || input === null)
|
|
82
|
-
return undefined;
|
|
83
|
-
const obj = input;
|
|
84
|
-
for (const key of ['command', 'cmd', 'shell']) {
|
|
85
|
-
const v = obj[key];
|
|
86
|
-
if (typeof v === 'string')
|
|
87
|
-
return v;
|
|
88
|
-
if (Array.isArray(v))
|
|
89
|
-
return v.join(' ');
|
|
90
|
-
}
|
|
91
|
-
return undefined;
|
|
92
|
-
}
|
|
93
|
-
export class RunnerShell {
|
|
94
|
-
adapter;
|
|
95
|
-
defaultModel;
|
|
96
|
-
constructor(adapter,
|
|
97
|
-
/** Default model id used for cost computation when input.model is absent.
|
|
98
|
-
* Reviewer/annotator engines call shell.run() without setting input.model,
|
|
99
|
-
* so without this default every reviewer-side stage would record costUSD=null. */
|
|
100
|
-
defaultModel) {
|
|
101
|
-
this.adapter = adapter;
|
|
102
|
-
this.defaultModel = defaultModel;
|
|
103
|
-
}
|
|
104
|
-
async run(input) {
|
|
105
|
-
const startMs = Date.now();
|
|
106
|
-
const modelForCost = input.model ?? this.defaultModel;
|
|
107
|
-
const ctx = { cwd: input.cwd, callCache: new Map() };
|
|
108
|
-
const usage = { inputTokens: 0, outputTokens: 0, cachedReadTokens: 0, cachedNonReadTokens: 0 };
|
|
109
|
-
const allToolCalls = [];
|
|
110
|
-
// A4b.0 (4.2.2+): dedupe filesRead/filesWritten by unique path. Same
|
|
111
|
-
// path written N times within a task = 1 entry. Tool-call count (the
|
|
112
|
-
// raw activity counter via `allToolCalls`) is intentionally NOT
|
|
113
|
-
// deduped — every invocation is billable. Spec reviewers reason
|
|
114
|
-
// about file CHANGES, not tool ACTIVITY, so the per-path dedupe is
|
|
115
|
-
// what they want to see.
|
|
116
|
-
const filesReadSet = new Set();
|
|
117
|
-
const filesWrittenSet = new Set();
|
|
118
|
-
// A4b.1 (4.2.2+): entries the path-validity filter rejected — shell
|
|
119
|
-
// heredoc commands, absolute paths, paths with shell metacharacters.
|
|
120
|
-
// Kept separately so the lifecycle layer can drain them into its
|
|
121
|
-
// diagnostics field for the `writes_unverifiable` daemon-log message
|
|
122
|
-
// (see A4b.2). NOT included in the public filesWritten array — those
|
|
123
|
-
// entries are not real, verifiable disk artifacts.
|
|
124
|
-
const filesWrittenRejectedSet = new Set();
|
|
125
|
-
let turns = 0;
|
|
126
|
-
const history = [];
|
|
127
|
-
let finalText = '';
|
|
128
|
-
let stoppedByAdapter = false;
|
|
129
|
-
// Common fields stamped on every emitted bus event so VerboseLogChannel
|
|
130
|
-
// surfaces enough context for an operator to see which run a line belongs
|
|
131
|
-
// to without grepping back to the originating request.
|
|
132
|
-
const baseEventFields = {
|
|
133
|
-
...(input.batchId !== undefined && { batchId: input.batchId }),
|
|
134
|
-
...(input.taskIndex !== undefined && { taskIndex: input.taskIndex }),
|
|
135
|
-
...(input.tier !== undefined && { tier: input.tier }),
|
|
136
|
-
...(input.model !== undefined && { model: input.model }),
|
|
137
|
-
...(input.stageLabel !== undefined && { stageLabel: input.stageLabel }),
|
|
138
|
-
providerType: this.adapter.providerType,
|
|
139
|
-
};
|
|
140
|
-
for (let turn = 0; turn < input.maxTurns; turn++) {
|
|
141
|
-
if (input.abortSignal?.aborted) {
|
|
142
|
-
return {
|
|
143
|
-
workerStatus: 'blocked',
|
|
144
|
-
finalAssistantText: '',
|
|
145
|
-
toolCalls: allToolCalls,
|
|
146
|
-
usage,
|
|
147
|
-
errorCode: 'aborted',
|
|
148
|
-
turns,
|
|
149
|
-
durationMs: Date.now() - startMs,
|
|
150
|
-
filesRead: [...filesReadSet],
|
|
151
|
-
filesWritten: [...filesWrittenSet],
|
|
152
|
-
filesWrittenRejected: [...filesWrittenRejectedSet],
|
|
153
|
-
costUSD: computeCost(modelForCost, usage),
|
|
154
|
-
};
|
|
155
|
-
}
|
|
156
|
-
// Three-event-per-turn lifecycle so verbose stderr surfaces every
|
|
157
|
-
// state change. `runner_turn_started` fires before the LLM call so
|
|
158
|
-
// operators see "now waiting on the model" in real time. After the
|
|
159
|
-
// adapter returns, `runner_response_received` carries the raw
|
|
160
|
-
// provider response shape (stop_reason + content-block tally). After
|
|
161
|
-
// local tool execution, `runner_turn_completed` carries per-tool
|
|
162
|
-
// counts (read vs write etc.) so operators can see what work the
|
|
163
|
-
// model is doing without grepping the JSONL log.
|
|
164
|
-
input.bus?.emit({
|
|
165
|
-
event: 'runner_turn_started',
|
|
166
|
-
ts: new Date().toISOString(),
|
|
167
|
-
...baseEventFields,
|
|
168
|
-
turnIndex: turn,
|
|
169
|
-
});
|
|
170
|
-
turns++;
|
|
171
|
-
const turnResult = await this.adapter.turn({
|
|
172
|
-
systemPrompt: input.systemPrompt,
|
|
173
|
-
userMessage: input.userMessage,
|
|
174
|
-
priorTurns: history,
|
|
175
|
-
toolDefinitions: input.toolDefinitions,
|
|
176
|
-
capabilities: input.capabilities ?? DEFAULT_CAPABILITIES,
|
|
177
|
-
abortSignal: input.abortSignal,
|
|
178
|
-
deadlineMs: input.deadlineMs,
|
|
179
|
-
...(input.cacheControl && { cacheControl: input.cacheControl }),
|
|
180
|
-
});
|
|
181
|
-
usage.inputTokens += turnResult.usage.inputTokens;
|
|
182
|
-
usage.outputTokens += turnResult.usage.outputTokens;
|
|
183
|
-
usage.cachedReadTokens += turnResult.usage.cachedReadTokens;
|
|
184
|
-
usage.cachedNonReadTokens += turnResult.usage.cachedNonReadTokens;
|
|
185
|
-
finalText = turnResult.assistantText;
|
|
186
|
-
// Diagnostic visibility (4.2.3+): include the assistant text on
|
|
187
|
-
// `runner_response_received` when verbose logging is meaningful.
|
|
188
|
-
// Pre-fix, only `assistantTextLen` was emitted, which made it
|
|
189
|
-
// impossible to tell from the log alone WHY a spec/quality review
|
|
190
|
-
// rejected (the reviewer's rejection text lived only in the live
|
|
191
|
-
// worker output, never in any persistent log). Now: full text is
|
|
192
|
-
// present on every turn, capped at 16 KB so a runaway implementer
|
|
193
|
-
// narrative doesn't bloat the JSONL log. 16 KB is comfortably
|
|
194
|
-
// larger than every reviewer/annotator response observed in
|
|
195
|
-
// production (typical ~500 bytes; 99th percentile <8 KB).
|
|
196
|
-
const ASSISTANT_TEXT_LOG_CAP = 16 * 1024;
|
|
197
|
-
const txt = turnResult.assistantText ?? '';
|
|
198
|
-
const truncated = txt.length > ASSISTANT_TEXT_LOG_CAP;
|
|
199
|
-
const assistantText = truncated ? txt.slice(0, ASSISTANT_TEXT_LOG_CAP) : txt;
|
|
200
|
-
input.bus?.emit({
|
|
201
|
-
event: 'runner_response_received',
|
|
202
|
-
ts: new Date().toISOString(),
|
|
203
|
-
...baseEventFields,
|
|
204
|
-
turnIndex: turn,
|
|
205
|
-
finishReason: turnResult.finishReason,
|
|
206
|
-
assistantTextLen: turnResult.assistantText.length,
|
|
207
|
-
...(assistantText.length > 0 && { assistantText }),
|
|
208
|
-
...(truncated && { assistantTextTruncated: true }),
|
|
209
|
-
toolCallCount: turnResult.toolCalls.length,
|
|
210
|
-
...(turnResult.responseShape?.stopReason !== undefined && { stopReason: turnResult.responseShape.stopReason }),
|
|
211
|
-
...(turnResult.responseShape?.contentBlocks !== undefined && { contentBlocks: turnResult.responseShape.contentBlocks }),
|
|
212
|
-
usage: turnResult.usage,
|
|
213
|
-
});
|
|
214
|
-
const turnRecord = {
|
|
215
|
-
assistantText: turnResult.assistantText,
|
|
216
|
-
toolCalls: [],
|
|
217
|
-
};
|
|
218
|
-
const willTerminate = turnResult.toolCalls.length === 0;
|
|
219
|
-
if (willTerminate) {
|
|
220
|
-
history.push(turnRecord);
|
|
221
|
-
stoppedByAdapter = true;
|
|
222
|
-
}
|
|
223
|
-
else {
|
|
224
|
-
for (const call of turnResult.toolCalls) {
|
|
225
|
-
const def = input.toolDefinitions.find(d => d.name === call.name);
|
|
226
|
-
let result;
|
|
227
|
-
if (!def) {
|
|
228
|
-
result = { error: `unknown tool: ${call.name}` };
|
|
229
|
-
}
|
|
230
|
-
else {
|
|
231
|
-
try {
|
|
232
|
-
result = await def.execute(call.input, ctx);
|
|
233
|
-
}
|
|
234
|
-
catch (err) {
|
|
235
|
-
result = { error: `tool execution failed: ${err instanceof Error ? err.message : String(err)}` };
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
const enriched = { name: call.name, input: call.input, result };
|
|
239
|
-
allToolCalls.push(enriched);
|
|
240
|
-
turnRecord.toolCalls.push(enriched);
|
|
241
|
-
if (input.wallClockGuard) {
|
|
242
|
-
try {
|
|
243
|
-
input.wallClockGuard.checkOrThrow();
|
|
244
|
-
}
|
|
245
|
-
catch (err) {
|
|
246
|
-
process.stderr.write(`[runner-shell] wall-clock guard fired: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
247
|
-
throw err;
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
const succeeded = !(typeof result === 'object' && result !== null && 'error' in result);
|
|
251
|
-
if (!succeeded) {
|
|
252
|
-
const errMsg = result.error ?? '(no error message)';
|
|
253
|
-
const inputPreview = JSON.stringify(call.input).slice(0, 200);
|
|
254
|
-
process.stderr.write(`[runner-shell] tool ${call.name} FAILED — err=${errMsg} input=${inputPreview}\n`);
|
|
255
|
-
}
|
|
256
|
-
if (succeeded) {
|
|
257
|
-
const path = extractPathFromToolInput(call.input);
|
|
258
|
-
if (READ_TOOL_NAMES.has(call.name) && path)
|
|
259
|
-
filesReadSet.add(path);
|
|
260
|
-
else if (WRITE_TOOL_NAMES.has(call.name) && path) {
|
|
261
|
-
// A4b.1: validate before adding to the public array. Any
|
|
262
|
-
// entry that fails the path-validity check (absolute
|
|
263
|
-
// paths, shell metacharacters) goes to the rejected pile —
|
|
264
|
-
// not silently dropped, but kept for the daemon-log
|
|
265
|
-
// diagnostic in A4b.2.
|
|
266
|
-
if (filterValidWritePath(path))
|
|
267
|
-
filesWrittenSet.add(path);
|
|
268
|
-
else
|
|
269
|
-
filesWrittenRejectedSet.add(path);
|
|
270
|
-
}
|
|
271
|
-
else if (SHELL_TOOL_NAMES.has(call.name)) {
|
|
272
|
-
// A4b.1 (4.2.2+) — supersedes Gap-11 (4.0.3+). Pre-fix,
|
|
273
|
-
// workers using run_shell heredocs (cat >, tee, etc.)
|
|
274
|
-
// had a synthetic `shell:<command>` entry added to
|
|
275
|
-
// filesWritten so the headline showed non-zero write
|
|
276
|
-
// activity. That conflated "shell tried to write" with
|
|
277
|
-
// "real artifact landed", which broke the spec
|
|
278
|
-
// reviewer's diff-against-baseline reasoning. Now: the
|
|
279
|
-
// shell entry goes ONLY to the rejected pile (used for
|
|
280
|
-
// diagnostics + the writes_unverifiable downgrade in
|
|
281
|
-
// A4b.2). The headline's `shellWrites` counter (separate,
|
|
282
|
-
// emitted to the bus and tracked by RunningHeadlineSink)
|
|
283
|
-
// continues to show the activity signal.
|
|
284
|
-
const command = extractShellCommand(call.input);
|
|
285
|
-
if (command && shellCommandWritesFs(command)) {
|
|
286
|
-
filesWrittenRejectedSet.add(`shell:${command.slice(0, 80)}`);
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
history.push(turnRecord);
|
|
292
|
-
}
|
|
293
|
-
// Per-tool counts for THIS turn so operators see "5 readFile, 1 grep"
|
|
294
|
-
// instead of the bare "tool_call_count=6". The user can immediately
|
|
295
|
-
// tell read vs write activity without inspecting the JSONL log.
|
|
296
|
-
const toolCallsByName = {};
|
|
297
|
-
// Gap 11 (4.0.3+): also count shell calls that wrote to the
|
|
298
|
-
// filesystem so the headline reflects worker-produced artifacts
|
|
299
|
-
// even when the worker bypassed write_file/edit_file.
|
|
300
|
-
let shellWritesThisTurn = 0;
|
|
301
|
-
// A4b.0 (4.2.2+): emit per-turn unique read/write PATHS so the
|
|
302
|
-
// headline sink can dedupe across turns. Without these, the sink
|
|
303
|
-
// counts every tool invocation as a separate read/write — a
|
|
304
|
-
// worker that writes to `foo.ts` 5 times shows "5 write" in the
|
|
305
|
-
// headline even though only 1 file changed. Empty arrays are
|
|
306
|
-
// valid and short-circuit at the sink.
|
|
307
|
-
const pathsReadThisTurn = new Set();
|
|
308
|
-
const pathsWrittenThisTurn = new Set();
|
|
309
|
-
for (const tc of turnResult.toolCalls) {
|
|
310
|
-
toolCallsByName[tc.name] = (toolCallsByName[tc.name] ?? 0) + 1;
|
|
311
|
-
const path = extractPathFromToolInput(tc.input);
|
|
312
|
-
if (READ_TOOL_NAMES.has(tc.name) && path)
|
|
313
|
-
pathsReadThisTurn.add(path);
|
|
314
|
-
else if (WRITE_TOOL_NAMES.has(tc.name) && path)
|
|
315
|
-
pathsWrittenThisTurn.add(path);
|
|
316
|
-
if (SHELL_TOOL_NAMES.has(tc.name)) {
|
|
317
|
-
const cmd = extractShellCommand(tc.input);
|
|
318
|
-
if (cmd && shellCommandWritesFs(cmd))
|
|
319
|
-
shellWritesThisTurn += 1;
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
input.bus?.emit({
|
|
323
|
-
event: 'runner_turn_completed',
|
|
324
|
-
ts: new Date().toISOString(),
|
|
325
|
-
...baseEventFields,
|
|
326
|
-
turnIndex: turn,
|
|
327
|
-
terminated: willTerminate,
|
|
328
|
-
toolCallCount: turnResult.toolCalls.length,
|
|
329
|
-
...(turnResult.toolCalls.length > 0 && { toolCalls: toolCallsByName }),
|
|
330
|
-
...(pathsReadThisTurn.size > 0 && { pathsReadThisTurn: [...pathsReadThisTurn] }),
|
|
331
|
-
...(pathsWrittenThisTurn.size > 0 && { pathsWrittenThisTurn: [...pathsWrittenThisTurn] }),
|
|
332
|
-
...(shellWritesThisTurn > 0 && { shellWrites: shellWritesThisTurn }),
|
|
333
|
-
});
|
|
334
|
-
if (willTerminate)
|
|
335
|
-
break;
|
|
336
|
-
}
|
|
337
|
-
// Empty-output regression guard (4.0.3). The 4.0.x runner-shell
|
|
338
|
-
// unconditionally reported `workerStatus: 'done'` whenever the adapter
|
|
339
|
-
// returned no tool calls — even when assistantText was empty. Combined
|
|
340
|
-
// with the anthropic-messages adapter's text-only extraction, a
|
|
341
|
-
// reasoning model that emitted thinking blocks with no text block (or
|
|
342
|
-
// any provider that returned end_turn with empty content) silently
|
|
343
|
-
// produced an "ok" RunResult carrying `output: ''`. The reviewer
|
|
344
|
-
// engine then approved that empty output and the audit/delegate
|
|
345
|
-
// looked successful while emitting nothing useful.
|
|
346
|
-
//
|
|
347
|
-
// 3.12.7's claude-agent-sdk owned the agent loop and didn't have this
|
|
348
|
-
// failure mode. This branch restores the missing check: stopping with
|
|
349
|
-
// empty narrative AND no tool calls is `incomplete`, surfaced as a
|
|
350
|
-
// structured error with errorCode `empty_output` so callers can tell
|
|
351
|
-
// the difference between "model finished cleanly" and "model returned
|
|
352
|
-
// nothing usable".
|
|
353
|
-
if (stoppedByAdapter && finalText.trim() === '' && allToolCalls.length === 0) {
|
|
354
|
-
return {
|
|
355
|
-
workerStatus: 'failed',
|
|
356
|
-
finalAssistantText: '',
|
|
357
|
-
toolCalls: allToolCalls,
|
|
358
|
-
usage,
|
|
359
|
-
errorCode: 'empty_output',
|
|
360
|
-
turns,
|
|
361
|
-
durationMs: Date.now() - startMs,
|
|
362
|
-
filesRead: [...filesReadSet],
|
|
363
|
-
filesWritten: [...filesWrittenSet],
|
|
364
|
-
filesWrittenRejected: [...filesWrittenRejectedSet],
|
|
365
|
-
costUSD: computeCost(modelForCost, usage),
|
|
366
|
-
};
|
|
367
|
-
}
|
|
368
|
-
return {
|
|
369
|
-
workerStatus: stoppedByAdapter ? 'done' : 'blocked',
|
|
370
|
-
finalAssistantText: finalText,
|
|
371
|
-
toolCalls: allToolCalls,
|
|
372
|
-
usage,
|
|
373
|
-
...(stoppedByAdapter ? {} : { errorCode: 'max_turns_exhausted' }),
|
|
374
|
-
turns,
|
|
375
|
-
durationMs: Date.now() - startMs,
|
|
376
|
-
filesRead: [...filesReadSet],
|
|
377
|
-
filesWritten: [...filesWrittenSet],
|
|
378
|
-
filesWrittenRejected: [...filesWrittenRejectedSet],
|
|
379
|
-
costUSD: computeCost(modelForCost, usage),
|
|
380
|
-
};
|
|
381
|
-
}
|
|
382
|
-
/**
|
|
383
|
-
* Cache-warmer call: sends one minimal turn with the cached prefix so the
|
|
384
|
-
* upstream provider's prompt cache writes the prefix. Subsequent fan-out
|
|
385
|
-
* sub-workers using the same prefix serve from cache.
|
|
386
|
-
*
|
|
387
|
-
* The user message is a single token ("ready") and the assistant response
|
|
388
|
-
* is discarded. For providers that don't honor `cache_control` (codex,
|
|
389
|
-
* future providers), this still runs but produces no measurable cache
|
|
390
|
-
* benefit.
|
|
391
|
-
*
|
|
392
|
-
* Bounded by an internal 10-min hard cap (5-min soft warning) so a slow
|
|
393
|
-
* or hanging warmer cannot blow the route's overall wall-clock. On cap
|
|
394
|
-
* hit, the warmer returns with capHit=true and the dispatcher proceeds
|
|
395
|
-
* to fan-out WITHOUT cache priming — sub-workers will pay full input
|
|
396
|
-
* cost but the route still completes (correctness > optimization).
|
|
397
|
-
*/
|
|
398
|
-
async prime(systemPrompt, opts) {
|
|
399
|
-
const startMs = Date.now();
|
|
400
|
-
// Per-warmer wall-clock guard: own hard cap, independent of the
|
|
401
|
-
// task-level abortSignal. Combined into one signal that the adapter sees.
|
|
402
|
-
const warmerAbort = new AbortController();
|
|
403
|
-
const combinedAbort = new AbortController();
|
|
404
|
-
if (opts.abortSignal) {
|
|
405
|
-
if (opts.abortSignal.aborted)
|
|
406
|
-
combinedAbort.abort();
|
|
407
|
-
else
|
|
408
|
-
opts.abortSignal.addEventListener('abort', () => combinedAbort.abort(), { once: true });
|
|
409
|
-
}
|
|
410
|
-
warmerAbort.signal.addEventListener('abort', () => combinedAbort.abort(), { once: true });
|
|
411
|
-
let capHit = false;
|
|
412
|
-
const softTimer = setTimeout(() => {
|
|
413
|
-
opts.bus?.emit({
|
|
414
|
-
event: 'criteria_fanout_warm_soft_warning',
|
|
415
|
-
ts: new Date().toISOString(),
|
|
416
|
-
...(opts.batchId !== undefined && { batchId: opts.batchId }),
|
|
417
|
-
...(opts.taskIndex !== undefined && { taskIndex: opts.taskIndex }),
|
|
418
|
-
elapsedMs: WARMER_SOFT_WARN_MS,
|
|
419
|
-
remainingMs: WARMER_HARD_CAP_MS - WARMER_SOFT_WARN_MS,
|
|
420
|
-
});
|
|
421
|
-
}, WARMER_SOFT_WARN_MS);
|
|
422
|
-
const hardTimer = setTimeout(() => {
|
|
423
|
-
capHit = true;
|
|
424
|
-
opts.bus?.emit({
|
|
425
|
-
event: 'criteria_fanout_warm_cap_hit',
|
|
426
|
-
ts: new Date().toISOString(),
|
|
427
|
-
...(opts.batchId !== undefined && { batchId: opts.batchId }),
|
|
428
|
-
...(opts.taskIndex !== undefined && { taskIndex: opts.taskIndex }),
|
|
429
|
-
elapsedMs: WARMER_HARD_CAP_MS,
|
|
430
|
-
});
|
|
431
|
-
warmerAbort.abort();
|
|
432
|
-
}, WARMER_HARD_CAP_MS);
|
|
433
|
-
try {
|
|
434
|
-
const turnResult = await this.adapter.turn({
|
|
435
|
-
systemPrompt,
|
|
436
|
-
userMessage: 'ready',
|
|
437
|
-
priorTurns: [],
|
|
438
|
-
toolDefinitions: [],
|
|
439
|
-
capabilities: opts.capabilities ?? { ...DEFAULT_CAPABILITIES, thinking: false },
|
|
440
|
-
abortSignal: combinedAbort.signal,
|
|
441
|
-
...(opts.deadlineMs !== undefined && { deadlineMs: opts.deadlineMs }),
|
|
442
|
-
...(opts.cacheControl && { cacheControl: opts.cacheControl }),
|
|
443
|
-
});
|
|
444
|
-
const durationMs = Date.now() - startMs;
|
|
445
|
-
// The warmer can't reliably tell whether the upstream actually wrote
|
|
446
|
-
// the cache. cacheControlSent reports we ATTEMPTED to register;
|
|
447
|
-
// confirmation comes from sub-workers' cachedReadTokens.
|
|
448
|
-
const cacheControlSent = !capHit && opts.cacheControl !== undefined;
|
|
449
|
-
opts.bus?.emit({
|
|
450
|
-
event: 'criteria_fanout_warm_complete',
|
|
451
|
-
ts: new Date().toISOString(),
|
|
452
|
-
...(opts.batchId !== undefined && { batchId: opts.batchId }),
|
|
453
|
-
...(opts.taskIndex !== undefined && { taskIndex: opts.taskIndex }),
|
|
454
|
-
...(opts.tier !== undefined && { tier: opts.tier }),
|
|
455
|
-
...(opts.stageLabel !== undefined && { stageLabel: opts.stageLabel }),
|
|
456
|
-
durationMs,
|
|
457
|
-
cacheControlSent,
|
|
458
|
-
capHit,
|
|
459
|
-
warmerInputTokens: turnResult.usage.inputTokens,
|
|
460
|
-
warmerCachedNonReadTokens: turnResult.usage.cachedNonReadTokens ?? 0,
|
|
461
|
-
});
|
|
462
|
-
return {
|
|
463
|
-
cacheControlSent,
|
|
464
|
-
capHit,
|
|
465
|
-
durationMs,
|
|
466
|
-
usage: {
|
|
467
|
-
inputTokens: turnResult.usage.inputTokens,
|
|
468
|
-
outputTokens: turnResult.usage.outputTokens,
|
|
469
|
-
cachedReadTokens: turnResult.usage.cachedReadTokens ?? 0,
|
|
470
|
-
cachedNonReadTokens: turnResult.usage.cachedNonReadTokens ?? 0,
|
|
471
|
-
},
|
|
472
|
-
};
|
|
473
|
-
}
|
|
474
|
-
catch (err) {
|
|
475
|
-
const durationMs = Date.now() - startMs;
|
|
476
|
-
// On cap-hit, swallow the abort and return a synthesized result so
|
|
477
|
-
// the dispatcher proceeds to fan-out without cache (correct, just
|
|
478
|
-
// slower). Real errors (transport, etc.) re-throw — the dispatcher
|
|
479
|
-
// currently doesn't catch warmer errors but a future caller might.
|
|
480
|
-
if (capHit) {
|
|
481
|
-
opts.bus?.emit({
|
|
482
|
-
event: 'criteria_fanout_warm_complete',
|
|
483
|
-
ts: new Date().toISOString(),
|
|
484
|
-
...(opts.batchId !== undefined && { batchId: opts.batchId }),
|
|
485
|
-
...(opts.taskIndex !== undefined && { taskIndex: opts.taskIndex }),
|
|
486
|
-
durationMs,
|
|
487
|
-
cacheControlSent: false,
|
|
488
|
-
capHit: true,
|
|
489
|
-
warmerInputTokens: 0,
|
|
490
|
-
warmerCachedNonReadTokens: 0,
|
|
491
|
-
});
|
|
492
|
-
return {
|
|
493
|
-
cacheControlSent: false,
|
|
494
|
-
capHit: true,
|
|
495
|
-
durationMs,
|
|
496
|
-
usage: { inputTokens: 0, outputTokens: 0, cachedReadTokens: 0, cachedNonReadTokens: 0 },
|
|
497
|
-
};
|
|
498
|
-
}
|
|
499
|
-
throw err;
|
|
500
|
-
}
|
|
501
|
-
finally {
|
|
502
|
-
clearTimeout(softTimer);
|
|
503
|
-
clearTimeout(hardTimer);
|
|
504
|
-
}
|
|
505
|
-
}
|
|
506
|
-
}
|
|
507
|
-
/** Per-warmer wall-clock guard. After this, the warmer's abortSignal
|
|
508
|
-
* fires and prime() returns with capHit=true; the dispatcher proceeds
|
|
509
|
-
* to fan-out without cache priming. */
|
|
510
|
-
const WARMER_HARD_CAP_MS = 10 * 60 * 1000;
|
|
511
|
-
const WARMER_SOFT_WARN_MS = 5 * 60 * 1000;
|
|
512
|
-
function computeCost(model, usage) {
|
|
513
|
-
const card = resolveRateCard(model ?? null);
|
|
514
|
-
if (!card)
|
|
515
|
-
return null;
|
|
516
|
-
return priceTokens(usage, card);
|
|
517
|
-
}
|
|
518
|
-
//# sourceMappingURL=runner-shell.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runner-shell.js","sourceRoot":"","sources":["../../src/providers/runner-shell.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import type { TextScratchpad } from '../providers/text-scratchpad.js';
|
|
2
|
-
export interface SalvageInput {
|
|
3
|
-
scratchpad: TextScratchpad;
|
|
4
|
-
reason: string;
|
|
5
|
-
provider?: string;
|
|
6
|
-
model?: string;
|
|
7
|
-
turnsUsed?: number;
|
|
8
|
-
}
|
|
9
|
-
export interface SalvageResult {
|
|
10
|
-
output: string;
|
|
11
|
-
empty: boolean;
|
|
12
|
-
source: 'latest' | 'longest' | 'diagnostic';
|
|
13
|
-
diagnostic: string;
|
|
14
|
-
}
|
|
15
|
-
export declare class ScratchpadSalvager {
|
|
16
|
-
salvage(input: SalvageInput): SalvageResult;
|
|
17
|
-
private _diagnostic;
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=scratchpad-salvager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scratchpad-salvager.d.ts","sourceRoot":"","sources":["../../src/providers/scratchpad-salvager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEtE,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,cAAc,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,YAAY,CAAC;IAC5C,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,aAAa;IAgC3C,OAAO,CAAC,WAAW;CAepB"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
export class ScratchpadSalvager {
|
|
2
|
-
salvage(input) {
|
|
3
|
-
const { scratchpad, reason, provider, model, turnsUsed } = input;
|
|
4
|
-
const latest = scratchpad.latest();
|
|
5
|
-
if (latest) {
|
|
6
|
-
return {
|
|
7
|
-
output: latest,
|
|
8
|
-
empty: false,
|
|
9
|
-
source: 'latest',
|
|
10
|
-
diagnostic: this._diagnostic(reason, provider, model, turnsUsed, 'latest'),
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
const longest = scratchpad.longest();
|
|
14
|
-
if (longest) {
|
|
15
|
-
return {
|
|
16
|
-
output: longest,
|
|
17
|
-
empty: false,
|
|
18
|
-
source: 'longest',
|
|
19
|
-
diagnostic: this._diagnostic(reason, provider, model, turnsUsed, 'longest'),
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
const diag = this._diagnostic(reason, provider, model, turnsUsed, 'diagnostic');
|
|
23
|
-
return {
|
|
24
|
-
output: diag,
|
|
25
|
-
empty: true,
|
|
26
|
-
source: 'diagnostic',
|
|
27
|
-
diagnostic: diag,
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
_diagnostic(reason, provider, model, turnsUsed, source) {
|
|
31
|
-
const parts = ['[ScratchpadSalvager] agent terminated without a clean final answer'];
|
|
32
|
-
if (provider)
|
|
33
|
-
parts.push(`provider=${provider}`);
|
|
34
|
-
if (model)
|
|
35
|
-
parts.push(`model=${model}`);
|
|
36
|
-
parts.push(`reason=${reason}`);
|
|
37
|
-
if (turnsUsed !== undefined)
|
|
38
|
-
parts.push(`turns=${turnsUsed}`);
|
|
39
|
-
if (source)
|
|
40
|
-
parts.push(`salvageSource=${source}`);
|
|
41
|
-
return parts.join(' ');
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
//# sourceMappingURL=scratchpad-salvager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scratchpad-salvager.js","sourceRoot":"","sources":["../../src/providers/scratchpad-salvager.ts"],"names":[],"mappings":"AAiBA,MAAM,OAAO,kBAAkB;IAC7B,OAAO,CAAC,KAAmB;QACzB,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;QAEjE,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;QACnC,IAAI,MAAM,EAAE,CAAC;YACX,OAAO;gBACL,MAAM,EAAE,MAAM;gBACd,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,QAAQ;gBAChB,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC;aAC3E,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;QACrC,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO;gBACL,MAAM,EAAE,OAAO;gBACf,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,SAAS;gBACjB,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC;aAC5E,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;QAChF,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,YAAY;YACpB,UAAU,EAAE,IAAI;SACjB,CAAC;IACJ,CAAC;IAEO,WAAW,CACjB,MAAc,EACd,QAAiB,EACjB,KAAc,EACd,SAAkB,EAClB,MAAe;QAEf,MAAM,KAAK,GAAa,CAAC,oEAAoE,CAAC,CAAC;QAC/F,IAAI,QAAQ;YAAE,KAAK,CAAC,IAAI,CAAC,YAAY,QAAQ,EAAE,CAAC,CAAC;QACjD,IAAI,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC,UAAU,MAAM,EAAE,CAAC,CAAC;QAC/B,IAAI,SAAS,KAAK,SAAS;YAAE,KAAK,CAAC,IAAI,CAAC,SAAS,SAAS,EAAE,CAAC,CAAC;QAC9D,IAAI,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,MAAM,EAAE,CAAC,CAAC;QAClD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;CACF"}
|