@zhixuan92/multi-model-agent-core 5.0.3 → 5.2.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/dist/bounded-execution/activity-tracker-types.d.ts +30 -15
- package/dist/bounded-execution/activity-tracker-types.d.ts.map +1 -1
- package/dist/bounded-execution/activity-tracker-types.js.map +1 -1
- package/dist/bounded-execution/activity-tracker.d.ts +2 -2
- package/dist/bounded-execution/activity-tracker.d.ts.map +1 -1
- package/dist/bounded-execution/activity-tracker.js +4 -5
- package/dist/bounded-execution/activity-tracker.js.map +1 -1
- package/dist/config/schema.d.ts +41 -2
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +1 -2
- package/dist/config/schema.js.map +1 -1
- package/dist/events/plain-log-entry.d.ts +1 -1
- package/dist/events/plain-log-entry.d.ts.map +1 -1
- package/dist/events/plain-log-entry.js +5 -1
- package/dist/events/plain-log-entry.js.map +1 -1
- package/dist/events/task-envelope.d.ts +5 -5
- package/dist/events/task-envelope.d.ts.map +1 -1
- package/dist/events/task-envelope.js +3 -6
- package/dist/events/task-envelope.js.map +1 -1
- package/dist/events/telemetry-uploader.d.ts +1 -1
- package/dist/events/telemetry-uploader.d.ts.map +1 -1
- package/dist/events/to-wire-record.d.ts +1 -1
- package/dist/events/to-wire-record.d.ts.map +1 -1
- package/dist/events/to-wire-record.js +1 -1
- package/dist/events/to-wire-record.js.map +1 -1
- package/dist/events/wire-schema.d.ts +38 -15
- package/dist/events/wire-schema.d.ts.map +1 -1
- package/dist/events/wire-schema.js +8 -8
- package/dist/events/wire-schema.js.map +1 -1
- package/dist/index.d.ts +13 -18
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -17
- package/dist/index.js.map +1 -1
- package/dist/providers/agent-resolver.js +1 -1
- package/dist/providers/agent-resolver.js.map +1 -1
- package/dist/providers/claude-session.d.ts +2 -1
- package/dist/providers/claude-session.d.ts.map +1 -1
- package/dist/providers/claude-session.js +43 -2
- package/dist/providers/claude-session.js.map +1 -1
- package/dist/providers/codex-cli-session.d.ts +3 -2
- package/dist/providers/codex-cli-session.d.ts.map +1 -1
- package/dist/providers/codex-cli-session.js +5 -2
- package/dist/providers/codex-cli-session.js.map +1 -1
- package/dist/providers/provider-factory.d.ts +2 -2
- package/dist/providers/provider-factory.d.ts.map +1 -1
- package/dist/providers/provider-factory.js +12 -12
- package/dist/providers/provider-factory.js.map +1 -1
- package/dist/providers/runner-types.d.ts +3 -16
- package/dist/providers/runner-types.d.ts.map +1 -1
- package/dist/research/adapters/arxiv.d.ts.map +1 -1
- package/dist/research/adapters/arxiv.js +6 -1
- package/dist/research/adapters/arxiv.js.map +1 -1
- package/dist/research/index.d.ts +11 -1
- package/dist/research/index.d.ts.map +1 -1
- package/dist/research/index.js +8 -1
- package/dist/research/index.js.map +1 -1
- package/dist/stores/context-block-tool.d.ts +2 -3
- package/dist/stores/context-block-tool.d.ts.map +1 -1
- package/dist/stores/context-block-tool.js +1 -1
- package/dist/stores/context-block-tool.js.map +1 -1
- package/dist/stores/project-context-registry.d.ts +0 -9
- package/dist/stores/project-context-registry.d.ts.map +1 -1
- package/dist/stores/project-context-registry.js +0 -4
- package/dist/stores/project-context-registry.js.map +1 -1
- package/dist/types/brief-quality-policy.d.ts.map +1 -1
- package/dist/types/enums.d.ts +0 -9
- package/dist/types/enums.d.ts.map +1 -1
- package/dist/types/enums.js +0 -10
- package/dist/types/enums.js.map +1 -1
- package/dist/types/goal.d.ts +47 -0
- package/dist/types/goal.d.ts.map +1 -0
- package/dist/types/goal.js +2 -0
- package/dist/types/goal.js.map +1 -0
- package/dist/types/run-result.d.ts +48 -23
- package/dist/types/run-result.d.ts.map +1 -1
- package/dist/types/run-result.js +3 -16
- package/dist/types/run-result.js.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/stage-stats.js +2 -4
- package/dist/types/stage-stats.js.map +1 -1
- package/dist/types/task-spec.d.ts +14 -17
- package/dist/types/task-spec.d.ts.map +1 -1
- package/dist/types.d.ts +2 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/unified/reviewer-output-parser.d.ts +51 -0
- package/dist/unified/reviewer-output-parser.d.ts.map +1 -0
- package/dist/unified/reviewer-output-parser.js +39 -0
- package/dist/unified/reviewer-output-parser.js.map +1 -0
- package/dist/unified/skill-loader.d.ts +9 -0
- package/dist/unified/skill-loader.d.ts.map +1 -0
- package/dist/unified/skill-loader.js +45 -0
- package/dist/unified/skill-loader.js.map +1 -0
- package/dist/unified/task-input-schema.d.ts +217 -0
- package/dist/unified/task-input-schema.d.ts.map +1 -0
- package/dist/unified/task-input-schema.js +35 -0
- package/dist/unified/task-input-schema.js.map +1 -0
- package/dist/unified/task-registry.d.ts +23 -0
- package/dist/unified/task-registry.d.ts.map +1 -0
- package/dist/unified/task-registry.js +56 -0
- package/dist/unified/task-registry.js.map +1 -0
- package/dist/unified/two-phase-pipeline.d.ts +52 -0
- package/dist/unified/two-phase-pipeline.d.ts.map +1 -0
- package/dist/unified/two-phase-pipeline.js +95 -0
- package/dist/unified/two-phase-pipeline.js.map +1 -0
- package/dist/unified/type-registry.d.ts +13 -0
- package/dist/unified/type-registry.d.ts.map +1 -0
- package/dist/unified/type-registry.js +30 -0
- package/dist/unified/type-registry.js.map +1 -0
- package/dist/unified/worktree-manager.d.ts +43 -0
- package/dist/unified/worktree-manager.d.ts.map +1 -0
- package/dist/unified/worktree-manager.js +76 -0
- package/dist/unified/worktree-manager.js.map +1 -0
- package/package.json +5 -117
- package/dist/bounded-execution/file-artifact-check.d.ts +0 -7
- package/dist/bounded-execution/file-artifact-check.d.ts.map +0 -1
- package/dist/bounded-execution/file-artifact-check.js +0 -13
- package/dist/bounded-execution/file-artifact-check.js.map +0 -1
- package/dist/bounded-execution/progress-events-subscriber.d.ts +0 -33
- package/dist/bounded-execution/progress-events-subscriber.d.ts.map +0 -1
- package/dist/bounded-execution/progress-events-subscriber.js +0 -59
- package/dist/bounded-execution/progress-events-subscriber.js.map +0 -1
- package/dist/bounded-execution/progress-watchdog.d.ts +0 -43
- package/dist/bounded-execution/progress-watchdog.d.ts.map +0 -1
- package/dist/bounded-execution/progress-watchdog.js +0 -170
- package/dist/bounded-execution/progress-watchdog.js.map +0 -1
- package/dist/bounded-execution/real-diff.d.ts +0 -17
- package/dist/bounded-execution/real-diff.d.ts.map +0 -1
- package/dist/bounded-execution/real-diff.js +0 -59
- package/dist/bounded-execution/real-diff.js.map +0 -1
- package/dist/bounded-execution/scope-match.d.ts +0 -7
- package/dist/bounded-execution/scope-match.d.ts.map +0 -1
- package/dist/bounded-execution/scope-match.js +0 -28
- package/dist/bounded-execution/scope-match.js.map +0 -1
- package/dist/bounded-execution/stall-watchdog.d.ts +0 -18
- package/dist/bounded-execution/stall-watchdog.d.ts.map +0 -1
- package/dist/bounded-execution/stall-watchdog.js +0 -134
- package/dist/bounded-execution/stall-watchdog.js.map +0 -1
- package/dist/bounded-execution/wall-clock-guard.d.ts +0 -12
- package/dist/bounded-execution/wall-clock-guard.d.ts.map +0 -1
- package/dist/bounded-execution/wall-clock-guard.js +0 -27
- package/dist/bounded-execution/wall-clock-guard.js.map +0 -1
- package/dist/config/canonical-model-identity.d.ts +0 -9
- package/dist/config/canonical-model-identity.d.ts.map +0 -1
- package/dist/config/canonical-model-identity.js +0 -54
- package/dist/config/canonical-model-identity.js.map +0 -1
- package/dist/journal/default-schema.d.ts +0 -2
- package/dist/journal/default-schema.d.ts.map +0 -1
- package/dist/journal/default-schema.js +0 -27
- package/dist/journal/default-schema.js.map +0 -1
- package/dist/journal/types.d.ts +0 -22
- package/dist/journal/types.d.ts.map +0 -1
- package/dist/journal/types.js +0 -5
- package/dist/journal/types.js.map +0 -1
- package/dist/lifecycle/annotate-parser.d.ts +0 -11
- package/dist/lifecycle/annotate-parser.d.ts.map +0 -1
- package/dist/lifecycle/annotate-parser.js +0 -74
- package/dist/lifecycle/annotate-parser.js.map +0 -1
- package/dist/lifecycle/annotate-prompts.d.ts +0 -9
- package/dist/lifecycle/annotate-prompts.d.ts.map +0 -1
- package/dist/lifecycle/annotate-prompts.js +0 -95
- package/dist/lifecycle/annotate-prompts.js.map +0 -1
- package/dist/lifecycle/auto-commit.d.ts +0 -3
- package/dist/lifecycle/auto-commit.d.ts.map +0 -1
- package/dist/lifecycle/auto-commit.js +0 -5
- package/dist/lifecycle/auto-commit.js.map +0 -1
- package/dist/lifecycle/auto-register-context-block.d.ts +0 -11
- package/dist/lifecycle/auto-register-context-block.d.ts.map +0 -1
- package/dist/lifecycle/auto-register-context-block.js +0 -18
- package/dist/lifecycle/auto-register-context-block.js.map +0 -1
- package/dist/lifecycle/build-cancelled-result.d.ts +0 -11
- package/dist/lifecycle/build-cancelled-result.d.ts.map +0 -1
- package/dist/lifecycle/build-cancelled-result.js +0 -25
- package/dist/lifecycle/build-cancelled-result.js.map +0 -1
- package/dist/lifecycle/derive-completion.d.ts +0 -24
- package/dist/lifecycle/derive-completion.d.ts.map +0 -1
- package/dist/lifecycle/derive-completion.js +0 -66
- package/dist/lifecycle/derive-completion.js.map +0 -1
- package/dist/lifecycle/diff-tracker.d.ts +0 -88
- package/dist/lifecycle/diff-tracker.d.ts.map +0 -1
- package/dist/lifecycle/diff-tracker.js +0 -429
- package/dist/lifecycle/diff-tracker.js.map +0 -1
- package/dist/lifecycle/executor-output-types.d.ts +0 -53
- package/dist/lifecycle/executor-output-types.d.ts.map +0 -1
- package/dist/lifecycle/executor-output-types.js +0 -2
- package/dist/lifecycle/executor-output-types.js.map +0 -1
- package/dist/lifecycle/file-confinement-check.d.ts +0 -17
- package/dist/lifecycle/file-confinement-check.d.ts.map +0 -1
- package/dist/lifecycle/file-confinement-check.js +0 -44
- package/dist/lifecycle/file-confinement-check.js.map +0 -1
- package/dist/lifecycle/findings-parser.d.ts +0 -18
- package/dist/lifecycle/findings-parser.d.ts.map +0 -1
- package/dist/lifecycle/findings-parser.js +0 -143
- package/dist/lifecycle/findings-parser.js.map +0 -1
- package/dist/lifecycle/git-toplevel.d.ts +0 -12
- package/dist/lifecycle/git-toplevel.d.ts.map +0 -1
- package/dist/lifecycle/git-toplevel.js +0 -52
- package/dist/lifecycle/git-toplevel.js.map +0 -1
- package/dist/lifecycle/handlers/annotate-stage.d.ts +0 -35
- package/dist/lifecycle/handlers/annotate-stage.d.ts.map +0 -1
- package/dist/lifecycle/handlers/annotate-stage.js +0 -360
- package/dist/lifecycle/handlers/annotate-stage.js.map +0 -1
- package/dist/lifecycle/handlers/baseline-handlers.d.ts +0 -12
- package/dist/lifecycle/handlers/baseline-handlers.d.ts.map +0 -1
- package/dist/lifecycle/handlers/baseline-handlers.js +0 -281
- package/dist/lifecycle/handlers/baseline-handlers.js.map +0 -1
- package/dist/lifecycle/handlers/compose-commit-message.d.ts +0 -15
- package/dist/lifecycle/handlers/compose-commit-message.d.ts.map +0 -1
- package/dist/lifecycle/handlers/compose-commit-message.js +0 -227
- package/dist/lifecycle/handlers/compose-commit-message.js.map +0 -1
- package/dist/lifecycle/handlers/enrich-runtime-result.d.ts +0 -3
- package/dist/lifecycle/handlers/enrich-runtime-result.d.ts.map +0 -1
- package/dist/lifecycle/handlers/enrich-runtime-result.js +0 -239
- package/dist/lifecycle/handlers/enrich-runtime-result.js.map +0 -1
- package/dist/lifecycle/handlers/git-commit-handler.d.ts +0 -4
- package/dist/lifecycle/handlers/git-commit-handler.d.ts.map +0 -1
- package/dist/lifecycle/handlers/git-commit-handler.js +0 -202
- package/dist/lifecycle/handlers/git-commit-handler.js.map +0 -1
- package/dist/lifecycle/handlers/implement-stage.d.ts +0 -10
- package/dist/lifecycle/handlers/implement-stage.d.ts.map +0 -1
- package/dist/lifecycle/handlers/implement-stage.js +0 -228
- package/dist/lifecycle/handlers/implement-stage.js.map +0 -1
- package/dist/lifecycle/handlers/journal-review-prompt.d.ts +0 -7
- package/dist/lifecycle/handlers/journal-review-prompt.d.ts.map +0 -1
- package/dist/lifecycle/handlers/journal-review-prompt.js +0 -54
- package/dist/lifecycle/handlers/journal-review-prompt.js.map +0 -1
- package/dist/lifecycle/handlers/parse-review-report.d.ts +0 -15
- package/dist/lifecycle/handlers/parse-review-report.d.ts.map +0 -1
- package/dist/lifecycle/handlers/parse-review-report.js +0 -40
- package/dist/lifecycle/handlers/parse-review-report.js.map +0 -1
- package/dist/lifecycle/handlers/prepare-execution-context-handler.d.ts +0 -13
- package/dist/lifecycle/handlers/prepare-execution-context-handler.d.ts.map +0 -1
- package/dist/lifecycle/handlers/prepare-execution-context-handler.js +0 -83
- package/dist/lifecycle/handlers/prepare-execution-context-handler.js.map +0 -1
- package/dist/lifecycle/handlers/quality-review-prompt.d.ts +0 -7
- package/dist/lifecycle/handlers/quality-review-prompt.d.ts.map +0 -1
- package/dist/lifecycle/handlers/quality-review-prompt.js +0 -50
- package/dist/lifecycle/handlers/quality-review-prompt.js.map +0 -1
- package/dist/lifecycle/handlers/read-route-implementer.d.ts +0 -52
- package/dist/lifecycle/handlers/read-route-implementer.d.ts.map +0 -1
- package/dist/lifecycle/handlers/read-route-implementer.js +0 -109
- package/dist/lifecycle/handlers/read-route-implementer.js.map +0 -1
- package/dist/lifecycle/handlers/register-context-block-handlers.d.ts +0 -4
- package/dist/lifecycle/handlers/register-context-block-handlers.d.ts.map +0 -1
- package/dist/lifecycle/handlers/register-context-block-handlers.js +0 -35
- package/dist/lifecycle/handlers/register-context-block-handlers.js.map +0 -1
- package/dist/lifecycle/handlers/review-stage.d.ts +0 -4
- package/dist/lifecycle/handlers/review-stage.d.ts.map +0 -1
- package/dist/lifecycle/handlers/review-stage.js +0 -277
- package/dist/lifecycle/handlers/review-stage.js.map +0 -1
- package/dist/lifecycle/handlers/rework-prompt.d.ts +0 -6
- package/dist/lifecycle/handlers/rework-prompt.d.ts.map +0 -1
- package/dist/lifecycle/handlers/rework-prompt.js +0 -18
- package/dist/lifecycle/handlers/rework-prompt.js.map +0 -1
- package/dist/lifecycle/handlers/rework-stage.d.ts +0 -4
- package/dist/lifecycle/handlers/rework-stage.d.ts.map +0 -1
- package/dist/lifecycle/handlers/rework-stage.js +0 -191
- package/dist/lifecycle/handlers/rework-stage.js.map +0 -1
- package/dist/lifecycle/handlers/spec-review-prompt.d.ts +0 -8
- package/dist/lifecycle/handlers/spec-review-prompt.d.ts.map +0 -1
- package/dist/lifecycle/handlers/spec-review-prompt.js +0 -47
- package/dist/lifecycle/handlers/spec-review-prompt.js.map +0 -1
- package/dist/lifecycle/handlers/terminal-handlers.d.ts +0 -61
- package/dist/lifecycle/handlers/terminal-handlers.d.ts.map +0 -1
- package/dist/lifecycle/handlers/terminal-handlers.js +0 -327
- package/dist/lifecycle/handlers/terminal-handlers.js.map +0 -1
- package/dist/lifecycle/handlers/tier-policy.d.ts +0 -11
- package/dist/lifecycle/handlers/tier-policy.d.ts.map +0 -1
- package/dist/lifecycle/handlers/tier-policy.js +0 -12
- package/dist/lifecycle/handlers/tier-policy.js.map +0 -1
- package/dist/lifecycle/lifecycle-context.d.ts +0 -109
- package/dist/lifecycle/lifecycle-context.d.ts.map +0 -1
- package/dist/lifecycle/lifecycle-context.js +0 -2
- package/dist/lifecycle/lifecycle-context.js.map +0 -1
- package/dist/lifecycle/lifecycle-dispatcher.d.ts +0 -35
- package/dist/lifecycle/lifecycle-dispatcher.d.ts.map +0 -1
- package/dist/lifecycle/lifecycle-dispatcher.js +0 -64
- package/dist/lifecycle/lifecycle-dispatcher.js.map +0 -1
- package/dist/lifecycle/lifecycle-driver.d.ts +0 -16
- package/dist/lifecycle/lifecycle-driver.d.ts.map +0 -1
- package/dist/lifecycle/lifecycle-driver.js +0 -334
- package/dist/lifecycle/lifecycle-driver.js.map +0 -1
- package/dist/lifecycle/merge-stage-stats.d.ts +0 -62
- package/dist/lifecycle/merge-stage-stats.d.ts.map +0 -1
- package/dist/lifecycle/merge-stage-stats.js +0 -136
- package/dist/lifecycle/merge-stage-stats.js.map +0 -1
- package/dist/lifecycle/normalize-output-targets.d.ts +0 -2
- package/dist/lifecycle/normalize-output-targets.d.ts.map +0 -1
- package/dist/lifecycle/normalize-output-targets.js +0 -14
- package/dist/lifecycle/normalize-output-targets.js.map +0 -1
- package/dist/lifecycle/perform-implementation.d.ts +0 -3
- package/dist/lifecycle/perform-implementation.d.ts.map +0 -1
- package/dist/lifecycle/perform-implementation.js +0 -371
- package/dist/lifecycle/perform-implementation.js.map +0 -1
- package/dist/lifecycle/read-only-subtype-spec.d.ts +0 -18
- package/dist/lifecycle/read-only-subtype-spec.d.ts.map +0 -1
- package/dist/lifecycle/read-only-subtype-spec.js +0 -2
- package/dist/lifecycle/read-only-subtype-spec.js.map +0 -1
- package/dist/lifecycle/repo-commit-lock.d.ts +0 -20
- package/dist/lifecycle/repo-commit-lock.d.ts.map +0 -1
- package/dist/lifecycle/repo-commit-lock.js +0 -40
- package/dist/lifecycle/repo-commit-lock.js.map +0 -1
- package/dist/lifecycle/review-verdict-mapping.d.ts +0 -16
- package/dist/lifecycle/review-verdict-mapping.d.ts.map +0 -1
- package/dist/lifecycle/review-verdict-mapping.js +0 -24
- package/dist/lifecycle/review-verdict-mapping.js.map +0 -1
- package/dist/lifecycle/shared-compute.d.ts +0 -14
- package/dist/lifecycle/shared-compute.d.ts.map +0 -1
- package/dist/lifecycle/shared-compute.js +0 -51
- package/dist/lifecycle/shared-compute.js.map +0 -1
- package/dist/lifecycle/stage-idle-tracker.d.ts +0 -14
- package/dist/lifecycle/stage-idle-tracker.d.ts.map +0 -1
- package/dist/lifecycle/stage-idle-tracker.js +0 -17
- package/dist/lifecycle/stage-idle-tracker.js.map +0 -1
- package/dist/lifecycle/stage-io.d.ts +0 -157
- package/dist/lifecycle/stage-io.d.ts.map +0 -1
- package/dist/lifecycle/stage-io.js +0 -20
- package/dist/lifecycle/stage-io.js.map +0 -1
- package/dist/lifecycle/stage-labels.d.ts +0 -7
- package/dist/lifecycle/stage-labels.d.ts.map +0 -1
- package/dist/lifecycle/stage-labels.js +0 -19
- package/dist/lifecycle/stage-labels.js.map +0 -1
- package/dist/lifecycle/stage-plan-builder.d.ts +0 -4
- package/dist/lifecycle/stage-plan-builder.d.ts.map +0 -1
- package/dist/lifecycle/stage-plan-builder.js +0 -164
- package/dist/lifecycle/stage-plan-builder.js.map +0 -1
- package/dist/lifecycle/stage-plan-types.d.ts +0 -131
- package/dist/lifecycle/stage-plan-types.d.ts.map +0 -1
- package/dist/lifecycle/stage-plan-types.js +0 -28
- package/dist/lifecycle/stage-plan-types.js.map +0 -1
- package/dist/lifecycle/stage-progression.d.ts +0 -6
- package/dist/lifecycle/stage-progression.d.ts.map +0 -1
- package/dist/lifecycle/stage-progression.js +0 -100
- package/dist/lifecycle/stage-progression.js.map +0 -1
- package/dist/lifecycle/task-executor.d.ts +0 -24
- package/dist/lifecycle/task-executor.d.ts.map +0 -1
- package/dist/lifecycle/task-executor.js +0 -320
- package/dist/lifecycle/task-executor.js.map +0 -1
- package/dist/lifecycle/task-runner.d.ts +0 -66
- package/dist/lifecycle/task-runner.d.ts.map +0 -1
- package/dist/lifecycle/task-runner.js +0 -332
- package/dist/lifecycle/task-runner.js.map +0 -1
- package/dist/lifecycle/tool-category.d.ts +0 -2
- package/dist/lifecycle/tool-category.d.ts.map +0 -1
- package/dist/lifecycle/tool-category.js +0 -6
- package/dist/lifecycle/tool-category.js.map +0 -1
- package/dist/lifecycle/tool-config-types.d.ts +0 -32
- package/dist/lifecycle/tool-config-types.d.ts.map +0 -1
- package/dist/lifecycle/tool-config-types.js +0 -2
- package/dist/lifecycle/tool-config-types.js.map +0 -1
- package/dist/lifecycle/warm-followup.d.ts +0 -3
- package/dist/lifecycle/warm-followup.d.ts.map +0 -1
- package/dist/lifecycle/warm-followup.js +0 -16
- package/dist/lifecycle/warm-followup.js.map +0 -1
- package/dist/lifecycle/worker-output-contract.d.ts +0 -22
- package/dist/lifecycle/worker-output-contract.d.ts.map +0 -1
- package/dist/lifecycle/worker-output-contract.js +0 -91
- package/dist/lifecycle/worker-output-contract.js.map +0 -1
- package/dist/providers/assemble-run-result.d.ts +0 -17
- package/dist/providers/assemble-run-result.d.ts.map +0 -1
- package/dist/providers/assemble-run-result.js +0 -52
- package/dist/providers/assemble-run-result.js.map +0 -1
- package/dist/providers/skill-resolver.d.ts +0 -17
- package/dist/providers/skill-resolver.d.ts.map +0 -1
- package/dist/providers/skill-resolver.js +0 -123
- package/dist/providers/skill-resolver.js.map +0 -1
- package/dist/reporting/batch-persister.d.ts +0 -4
- package/dist/reporting/batch-persister.d.ts.map +0 -1
- package/dist/reporting/batch-persister.js +0 -11
- package/dist/reporting/batch-persister.js.map +0 -1
- package/dist/reporting/commit-stage-runner.d.ts +0 -12
- package/dist/reporting/commit-stage-runner.d.ts.map +0 -1
- package/dist/reporting/commit-stage-runner.js +0 -43
- package/dist/reporting/commit-stage-runner.js.map +0 -1
- package/dist/reporting/derive-investigate-status.d.ts +0 -15
- package/dist/reporting/derive-investigate-status.d.ts.map +0 -1
- package/dist/reporting/derive-investigate-status.js +0 -23
- package/dist/reporting/derive-investigate-status.js.map +0 -1
- package/dist/reporting/extract-fenced-json.d.ts +0 -7
- package/dist/reporting/extract-fenced-json.d.ts.map +0 -1
- package/dist/reporting/extract-fenced-json.js +0 -17
- package/dist/reporting/extract-fenced-json.js.map +0 -1
- package/dist/reporting/findings-headline.d.ts +0 -12
- package/dist/reporting/findings-headline.d.ts.map +0 -1
- package/dist/reporting/findings-headline.js +0 -40
- package/dist/reporting/findings-headline.js.map +0 -1
- package/dist/reporting/findings-outcome.d.ts +0 -13
- package/dist/reporting/findings-outcome.d.ts.map +0 -1
- package/dist/reporting/findings-outcome.js +0 -22
- package/dist/reporting/findings-outcome.js.map +0 -1
- package/dist/reporting/headline-composer.d.ts +0 -29
- package/dist/reporting/headline-composer.d.ts.map +0 -1
- package/dist/reporting/headline-composer.js +0 -10
- package/dist/reporting/headline-composer.js.map +0 -1
- package/dist/reporting/headline-templates/delegate.d.ts +0 -3
- package/dist/reporting/headline-templates/delegate.d.ts.map +0 -1
- package/dist/reporting/headline-templates/delegate.js +0 -42
- package/dist/reporting/headline-templates/delegate.js.map +0 -1
- package/dist/reporting/headline-templates/execute-plan.d.ts +0 -3
- package/dist/reporting/headline-templates/execute-plan.d.ts.map +0 -1
- package/dist/reporting/headline-templates/execute-plan.js +0 -26
- package/dist/reporting/headline-templates/execute-plan.js.map +0 -1
- package/dist/reporting/headline-templates/investigate.d.ts +0 -13
- package/dist/reporting/headline-templates/investigate.d.ts.map +0 -1
- package/dist/reporting/headline-templates/investigate.js +0 -53
- package/dist/reporting/headline-templates/investigate.js.map +0 -1
- package/dist/reporting/headline-templates/journal-recall.d.ts +0 -3
- package/dist/reporting/headline-templates/journal-recall.d.ts.map +0 -1
- package/dist/reporting/headline-templates/journal-recall.js +0 -9
- package/dist/reporting/headline-templates/journal-recall.js.map +0 -1
- package/dist/reporting/headline-templates/journal.d.ts +0 -3
- package/dist/reporting/headline-templates/journal.d.ts.map +0 -1
- package/dist/reporting/headline-templates/journal.js +0 -17
- package/dist/reporting/headline-templates/journal.js.map +0 -1
- package/dist/reporting/headline-templates/research.d.ts +0 -3
- package/dist/reporting/headline-templates/research.d.ts.map +0 -1
- package/dist/reporting/headline-templates/research.js +0 -22
- package/dist/reporting/headline-templates/research.js.map +0 -1
- package/dist/reporting/headline-text.d.ts +0 -36
- package/dist/reporting/headline-text.d.ts.map +0 -1
- package/dist/reporting/headline-text.js +0 -73
- package/dist/reporting/headline-text.js.map +0 -1
- package/dist/reporting/report-parser-slots/delegate-report.d.ts +0 -8
- package/dist/reporting/report-parser-slots/delegate-report.d.ts.map +0 -1
- package/dist/reporting/report-parser-slots/delegate-report.js +0 -12
- package/dist/reporting/report-parser-slots/delegate-report.js.map +0 -1
- package/dist/reporting/report-parser-slots/execute-plan-report.d.ts +0 -11
- package/dist/reporting/report-parser-slots/execute-plan-report.d.ts.map +0 -1
- package/dist/reporting/report-parser-slots/execute-plan-report.js +0 -7
- package/dist/reporting/report-parser-slots/execute-plan-report.js.map +0 -1
- package/dist/reporting/report-parser-slots/investigate-report.d.ts +0 -52
- package/dist/reporting/report-parser-slots/investigate-report.d.ts.map +0 -1
- package/dist/reporting/report-parser-slots/investigate-report.js +0 -307
- package/dist/reporting/report-parser-slots/investigate-report.js.map +0 -1
- package/dist/reporting/report-parser-slots/journal-report.d.ts +0 -19
- package/dist/reporting/report-parser-slots/journal-report.d.ts.map +0 -1
- package/dist/reporting/report-parser-slots/journal-report.js +0 -13
- package/dist/reporting/report-parser-slots/journal-report.js.map +0 -1
- package/dist/reporting/report-parser-slots/no-structured-report.d.ts +0 -10
- package/dist/reporting/report-parser-slots/no-structured-report.d.ts.map +0 -1
- package/dist/reporting/report-parser-slots/no-structured-report.js +0 -13
- package/dist/reporting/report-parser-slots/no-structured-report.js.map +0 -1
- package/dist/reporting/report-parser-slots/research-report.d.ts +0 -31
- package/dist/reporting/report-parser-slots/research-report.d.ts.map +0 -1
- package/dist/reporting/report-parser-slots/research-report.js +0 -50
- package/dist/reporting/report-parser-slots/research-report.js.map +0 -1
- package/dist/reporting/response-envelope-builder.d.ts +0 -32
- package/dist/reporting/response-envelope-builder.d.ts.map +0 -1
- package/dist/reporting/response-envelope-builder.js +0 -26
- package/dist/reporting/response-envelope-builder.js.map +0 -1
- package/dist/reporting/severity.d.ts +0 -62
- package/dist/reporting/severity.d.ts.map +0 -1
- package/dist/reporting/severity.js +0 -93
- package/dist/reporting/severity.js.map +0 -1
- package/dist/reporting/structured-report-parser.d.ts +0 -9
- package/dist/reporting/structured-report-parser.d.ts.map +0 -1
- package/dist/reporting/structured-report-parser.js +0 -8
- package/dist/reporting/structured-report-parser.js.map +0 -1
- package/dist/reporting/terminal-block-registrar.d.ts +0 -14
- package/dist/reporting/terminal-block-registrar.d.ts.map +0 -1
- package/dist/reporting/terminal-block-registrar.js +0 -17
- package/dist/reporting/terminal-block-registrar.js.map +0 -1
- package/dist/reporting/terminal-report-markdown.d.ts +0 -13
- package/dist/reporting/terminal-report-markdown.d.ts.map +0 -1
- package/dist/reporting/terminal-report-markdown.js +0 -31
- package/dist/reporting/terminal-report-markdown.js.map +0 -1
- package/dist/research/research-pre-loop.d.ts +0 -22
- package/dist/research/research-pre-loop.d.ts.map +0 -1
- package/dist/research/research-pre-loop.js +0 -50
- package/dist/research/research-pre-loop.js.map +0 -1
- package/dist/routing/read-route-criteria.d.ts +0 -36
- package/dist/routing/read-route-criteria.d.ts.map +0 -1
- package/dist/routing/read-route-criteria.js +0 -71
- package/dist/routing/read-route-criteria.js.map +0 -1
- package/dist/stores/batch-cache.d.ts +0 -29
- package/dist/stores/batch-cache.d.ts.map +0 -1
- package/dist/stores/batch-cache.js +0 -89
- package/dist/stores/batch-cache.js.map +0 -1
- package/dist/stores/batch-registry.d.ts +0 -138
- package/dist/stores/batch-registry.d.ts.map +0 -1
- package/dist/stores/batch-registry.js +0 -205
- package/dist/stores/batch-registry.js.map +0 -1
- package/dist/tool-surface/register-all-tools.d.ts +0 -4
- package/dist/tool-surface/register-all-tools.d.ts.map +0 -1
- package/dist/tool-surface/register-all-tools.js +0 -35
- package/dist/tool-surface/register-all-tools.js.map +0 -1
- package/dist/tool-surface/tool-surface-registry.d.ts +0 -28
- package/dist/tool-surface/tool-surface-registry.d.ts.map +0 -1
- package/dist/tool-surface/tool-surface-registry.js +0 -16
- package/dist/tool-surface/tool-surface-registry.js.map +0 -1
- package/dist/tools/audit/brief-slot.d.ts +0 -15
- package/dist/tools/audit/brief-slot.d.ts.map +0 -1
- package/dist/tools/audit/brief-slot.js +0 -69
- package/dist/tools/audit/brief-slot.js.map +0 -1
- package/dist/tools/audit/implementer-criteria.d.ts +0 -62
- package/dist/tools/audit/implementer-criteria.d.ts.map +0 -1
- package/dist/tools/audit/implementer-criteria.js +0 -121
- package/dist/tools/audit/implementer-criteria.js.map +0 -1
- package/dist/tools/audit/plan-audit-criteria.d.ts +0 -35
- package/dist/tools/audit/plan-audit-criteria.d.ts.map +0 -1
- package/dist/tools/audit/plan-audit-criteria.js +0 -159
- package/dist/tools/audit/plan-audit-criteria.js.map +0 -1
- package/dist/tools/audit/schema.d.ts +0 -61
- package/dist/tools/audit/schema.d.ts.map +0 -1
- package/dist/tools/audit/schema.js +0 -21
- package/dist/tools/audit/schema.js.map +0 -1
- package/dist/tools/audit/skill-audit-criteria.d.ts +0 -9
- package/dist/tools/audit/skill-audit-criteria.d.ts.map +0 -1
- package/dist/tools/audit/skill-audit-criteria.js +0 -52
- package/dist/tools/audit/skill-audit-criteria.js.map +0 -1
- package/dist/tools/audit/spec-audit-criteria.d.ts +0 -9
- package/dist/tools/audit/spec-audit-criteria.d.ts.map +0 -1
- package/dist/tools/audit/spec-audit-criteria.js +0 -55
- package/dist/tools/audit/spec-audit-criteria.js.map +0 -1
- package/dist/tools/audit/subtypes.d.ts +0 -4
- package/dist/tools/audit/subtypes.d.ts.map +0 -1
- package/dist/tools/audit/subtypes.js +0 -69
- package/dist/tools/audit/subtypes.js.map +0 -1
- package/dist/tools/audit/tool-config.d.ts +0 -7
- package/dist/tools/audit/tool-config.d.ts.map +0 -1
- package/dist/tools/audit/tool-config.js +0 -60
- package/dist/tools/audit/tool-config.js.map +0 -1
- package/dist/tools/criteria-types.d.ts +0 -27
- package/dist/tools/criteria-types.d.ts.map +0 -1
- package/dist/tools/criteria-types.js +0 -25
- package/dist/tools/criteria-types.js.map +0 -1
- package/dist/tools/debug/brief-slot.d.ts +0 -15
- package/dist/tools/debug/brief-slot.d.ts.map +0 -1
- package/dist/tools/debug/brief-slot.js +0 -10
- package/dist/tools/debug/brief-slot.js.map +0 -1
- package/dist/tools/debug/implementer-criteria.d.ts +0 -45
- package/dist/tools/debug/implementer-criteria.d.ts.map +0 -1
- package/dist/tools/debug/implementer-criteria.js +0 -97
- package/dist/tools/debug/implementer-criteria.js.map +0 -1
- package/dist/tools/debug/schema.d.ts +0 -60
- package/dist/tools/debug/schema.d.ts.map +0 -1
- package/dist/tools/debug/schema.js +0 -17
- package/dist/tools/debug/schema.js.map +0 -1
- package/dist/tools/debug/subtypes.d.ts +0 -4
- package/dist/tools/debug/subtypes.d.ts.map +0 -1
- package/dist/tools/debug/subtypes.js +0 -26
- package/dist/tools/debug/subtypes.js.map +0 -1
- package/dist/tools/debug/tool-config.d.ts +0 -7
- package/dist/tools/debug/tool-config.d.ts.map +0 -1
- package/dist/tools/debug/tool-config.js +0 -55
- package/dist/tools/debug/tool-config.js.map +0 -1
- package/dist/tools/delegate/brief-slot.d.ts +0 -17
- package/dist/tools/delegate/brief-slot.d.ts.map +0 -1
- package/dist/tools/delegate/brief-slot.js +0 -55
- package/dist/tools/delegate/brief-slot.js.map +0 -1
- package/dist/tools/delegate/implementer-criteria.d.ts +0 -53
- package/dist/tools/delegate/implementer-criteria.d.ts.map +0 -1
- package/dist/tools/delegate/implementer-criteria.js +0 -99
- package/dist/tools/delegate/implementer-criteria.js.map +0 -1
- package/dist/tools/delegate/schema.d.ts +0 -74
- package/dist/tools/delegate/schema.d.ts.map +0 -1
- package/dist/tools/delegate/schema.js +0 -23
- package/dist/tools/delegate/schema.js.map +0 -1
- package/dist/tools/delegate/tool-config.d.ts +0 -7
- package/dist/tools/delegate/tool-config.d.ts.map +0 -1
- package/dist/tools/delegate/tool-config.js +0 -44
- package/dist/tools/delegate/tool-config.js.map +0 -1
- package/dist/tools/execute-plan/barrel.d.ts +0 -2
- package/dist/tools/execute-plan/barrel.d.ts.map +0 -1
- package/dist/tools/execute-plan/barrel.js +0 -7
- package/dist/tools/execute-plan/barrel.js.map +0 -1
- package/dist/tools/execute-plan/brief-slot.d.ts +0 -19
- package/dist/tools/execute-plan/brief-slot.d.ts.map +0 -1
- package/dist/tools/execute-plan/brief-slot.js +0 -80
- package/dist/tools/execute-plan/brief-slot.js.map +0 -1
- package/dist/tools/execute-plan/implementer-criteria.d.ts +0 -57
- package/dist/tools/execute-plan/implementer-criteria.d.ts.map +0 -1
- package/dist/tools/execute-plan/implementer-criteria.js +0 -108
- package/dist/tools/execute-plan/implementer-criteria.js.map +0 -1
- package/dist/tools/execute-plan/plan-extractor.d.ts +0 -21
- package/dist/tools/execute-plan/plan-extractor.d.ts.map +0 -1
- package/dist/tools/execute-plan/plan-extractor.js +0 -96
- package/dist/tools/execute-plan/plan-extractor.js.map +0 -1
- package/dist/tools/execute-plan/tool-config.d.ts +0 -68
- package/dist/tools/execute-plan/tool-config.d.ts.map +0 -1
- package/dist/tools/execute-plan/tool-config.js +0 -107
- package/dist/tools/execute-plan/tool-config.js.map +0 -1
- package/dist/tools/index.d.ts +0 -8
- package/dist/tools/index.d.ts.map +0 -1
- package/dist/tools/index.js +0 -14
- package/dist/tools/index.js.map +0 -1
- package/dist/tools/investigate/brief-slot.d.ts +0 -15
- package/dist/tools/investigate/brief-slot.d.ts.map +0 -1
- package/dist/tools/investigate/brief-slot.js +0 -9
- package/dist/tools/investigate/brief-slot.js.map +0 -1
- package/dist/tools/investigate/implementer-criteria.d.ts +0 -52
- package/dist/tools/investigate/implementer-criteria.d.ts.map +0 -1
- package/dist/tools/investigate/implementer-criteria.js +0 -106
- package/dist/tools/investigate/implementer-criteria.js.map +0 -1
- package/dist/tools/investigate/schema.d.ts +0 -62
- package/dist/tools/investigate/schema.d.ts.map +0 -1
- package/dist/tools/investigate/schema.js +0 -13
- package/dist/tools/investigate/schema.js.map +0 -1
- package/dist/tools/investigate/subtypes.d.ts +0 -4
- package/dist/tools/investigate/subtypes.d.ts.map +0 -1
- package/dist/tools/investigate/subtypes.js +0 -26
- package/dist/tools/investigate/subtypes.js.map +0 -1
- package/dist/tools/investigate/tool-config.d.ts +0 -8
- package/dist/tools/investigate/tool-config.d.ts.map +0 -1
- package/dist/tools/investigate/tool-config.js +0 -68
- package/dist/tools/investigate/tool-config.js.map +0 -1
- package/dist/tools/journal/recall/brief-slot.d.ts +0 -7
- package/dist/tools/journal/recall/brief-slot.d.ts.map +0 -1
- package/dist/tools/journal/recall/brief-slot.js +0 -5
- package/dist/tools/journal/recall/brief-slot.js.map +0 -1
- package/dist/tools/journal/recall/implementer-criteria.d.ts +0 -9
- package/dist/tools/journal/recall/implementer-criteria.d.ts.map +0 -1
- package/dist/tools/journal/recall/implementer-criteria.js +0 -23
- package/dist/tools/journal/recall/implementer-criteria.js.map +0 -1
- package/dist/tools/journal/recall/schema.d.ts +0 -54
- package/dist/tools/journal/recall/schema.d.ts.map +0 -1
- package/dist/tools/journal/recall/schema.js +0 -10
- package/dist/tools/journal/recall/schema.js.map +0 -1
- package/dist/tools/journal/recall/subtypes.d.ts +0 -4
- package/dist/tools/journal/recall/subtypes.d.ts.map +0 -1
- package/dist/tools/journal/recall/subtypes.js +0 -25
- package/dist/tools/journal/recall/subtypes.js.map +0 -1
- package/dist/tools/journal/recall/tool-config.d.ts +0 -8
- package/dist/tools/journal/recall/tool-config.d.ts.map +0 -1
- package/dist/tools/journal/recall/tool-config.js +0 -46
- package/dist/tools/journal/recall/tool-config.js.map +0 -1
- package/dist/tools/journal/record/brief-slot.d.ts +0 -12
- package/dist/tools/journal/record/brief-slot.d.ts.map +0 -1
- package/dist/tools/journal/record/brief-slot.js +0 -24
- package/dist/tools/journal/record/brief-slot.js.map +0 -1
- package/dist/tools/journal/record/implementer-criteria.d.ts +0 -6
- package/dist/tools/journal/record/implementer-criteria.d.ts.map +0 -1
- package/dist/tools/journal/record/implementer-criteria.js +0 -20
- package/dist/tools/journal/record/implementer-criteria.js.map +0 -1
- package/dist/tools/journal/record/schema.d.ts +0 -55
- package/dist/tools/journal/record/schema.d.ts.map +0 -1
- package/dist/tools/journal/record/schema.js +0 -12
- package/dist/tools/journal/record/schema.js.map +0 -1
- package/dist/tools/journal/record/tool-config.d.ts +0 -7
- package/dist/tools/journal/record/tool-config.d.ts.map +0 -1
- package/dist/tools/journal/record/tool-config.js +0 -40
- package/dist/tools/journal/record/tool-config.js.map +0 -1
- package/dist/tools/read-route-prompt.d.ts +0 -113
- package/dist/tools/read-route-prompt.d.ts.map +0 -1
- package/dist/tools/read-route-prompt.js +0 -86
- package/dist/tools/read-route-prompt.js.map +0 -1
- package/dist/tools/register-context-block/schema.d.ts +0 -8
- package/dist/tools/register-context-block/schema.d.ts.map +0 -1
- package/dist/tools/register-context-block/schema.js +0 -7
- package/dist/tools/register-context-block/schema.js.map +0 -1
- package/dist/tools/register-context-block/tool-config.d.ts +0 -6
- package/dist/tools/register-context-block/tool-config.d.ts.map +0 -1
- package/dist/tools/register-context-block/tool-config.js +0 -39
- package/dist/tools/register-context-block/tool-config.js.map +0 -1
- package/dist/tools/research/brief-slot.d.ts +0 -37
- package/dist/tools/research/brief-slot.d.ts.map +0 -1
- package/dist/tools/research/brief-slot.js +0 -68
- package/dist/tools/research/brief-slot.js.map +0 -1
- package/dist/tools/research/implementer-criteria.d.ts +0 -13
- package/dist/tools/research/implementer-criteria.d.ts.map +0 -1
- package/dist/tools/research/implementer-criteria.js +0 -109
- package/dist/tools/research/implementer-criteria.js.map +0 -1
- package/dist/tools/research/schema.d.ts +0 -11
- package/dist/tools/research/schema.d.ts.map +0 -1
- package/dist/tools/research/schema.js +0 -59
- package/dist/tools/research/schema.js.map +0 -1
- package/dist/tools/research/subtypes.d.ts +0 -4
- package/dist/tools/research/subtypes.d.ts.map +0 -1
- package/dist/tools/research/subtypes.js +0 -25
- package/dist/tools/research/subtypes.js.map +0 -1
- package/dist/tools/research/tool-config.d.ts +0 -8
- package/dist/tools/research/tool-config.d.ts.map +0 -1
- package/dist/tools/research/tool-config.js +0 -48
- package/dist/tools/research/tool-config.js.map +0 -1
- package/dist/tools/research/two-turn-driver.d.ts +0 -16
- package/dist/tools/research/two-turn-driver.d.ts.map +0 -1
- package/dist/tools/research/two-turn-driver.js +0 -41
- package/dist/tools/research/two-turn-driver.js.map +0 -1
- package/dist/tools/retry/brief-slot.d.ts +0 -7
- package/dist/tools/retry/brief-slot.d.ts.map +0 -1
- package/dist/tools/retry/brief-slot.js +0 -2
- package/dist/tools/retry/brief-slot.js.map +0 -1
- package/dist/tools/retry/schema.d.ts +0 -54
- package/dist/tools/retry/schema.d.ts.map +0 -1
- package/dist/tools/retry/schema.js +0 -12
- package/dist/tools/retry/schema.js.map +0 -1
- package/dist/tools/retry/tool-config.d.ts +0 -7
- package/dist/tools/retry/tool-config.d.ts.map +0 -1
- package/dist/tools/retry/tool-config.js +0 -84
- package/dist/tools/retry/tool-config.js.map +0 -1
- package/dist/tools/review/brief-slot.d.ts +0 -11
- package/dist/tools/review/brief-slot.d.ts.map +0 -1
- package/dist/tools/review/brief-slot.js +0 -23
- package/dist/tools/review/brief-slot.js.map +0 -1
- package/dist/tools/review/implementer-criteria.d.ts +0 -48
- package/dist/tools/review/implementer-criteria.d.ts.map +0 -1
- package/dist/tools/review/implementer-criteria.js +0 -108
- package/dist/tools/review/implementer-criteria.js.map +0 -1
- package/dist/tools/review/schema.d.ts +0 -64
- package/dist/tools/review/schema.d.ts.map +0 -1
- package/dist/tools/review/schema.js +0 -17
- package/dist/tools/review/schema.js.map +0 -1
- package/dist/tools/review/subtypes.d.ts +0 -4
- package/dist/tools/review/subtypes.d.ts.map +0 -1
- package/dist/tools/review/subtypes.js +0 -27
- package/dist/tools/review/subtypes.js.map +0 -1
- package/dist/tools/review/tool-config.d.ts +0 -7
- package/dist/tools/review/tool-config.d.ts.map +0 -1
- package/dist/tools/review/tool-config.js +0 -94
- package/dist/tools/review/tool-config.js.map +0 -1
- package/dist/tools/shared-output.d.ts +0 -56
- package/dist/tools/shared-output.d.ts.map +0 -1
- package/dist/tools/shared-output.js +0 -33
- package/dist/tools/shared-output.js.map +0 -1
- package/dist/types/review-policy.d.ts +0 -2
- package/dist/types/review-policy.d.ts.map +0 -1
- package/dist/types/review-policy.js +0 -2
- package/dist/types/review-policy.js.map +0 -1
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
// v4.4.x — extracts structured findings from one read-route criterion
|
|
2
|
-
// turn. Worker emits `## Finding N:` blocks per the format spec; this
|
|
3
|
-
// parser converts them into StructuredReport.findings[] entries.
|
|
4
|
-
//
|
|
5
|
-
// Tolerant by design: LLMs vary heading level (## vs ###), heading noun
|
|
6
|
-
// (Finding/Issue/Concern), terminator (colon/period/none), bullet marker
|
|
7
|
-
// (- vs *), and bold wrapping (**Severity:**). Strict canonical format is
|
|
8
|
-
// preferred, but the parser recovers from common drift so a worker mistake
|
|
9
|
-
// becomes a degraded-but-usable result rather than silent data loss.
|
|
10
|
-
// `## Finding 1:` (canonical) plus tolerated drift:
|
|
11
|
-
// - heading level 2–4 (##, ###, ####)
|
|
12
|
-
// - noun: Finding | Issue | Concern (singular only; reviewers use "Concern")
|
|
13
|
-
// - optional space, optional bold (**Finding 1:**)
|
|
14
|
-
// - terminator: `:`, `.`, `)`, or end-of-line
|
|
15
|
-
// Uses [ \t]* (horizontal whitespace) so the regex doesn't cross newlines —
|
|
16
|
-
// `\s*` matches newlines and would let `(.*)` consume the following bullet line.
|
|
17
|
-
const FINDING_HEADING_RE = /^#{2,4}[ \t]*\**[ \t]*(?:Finding|Issue|Concern)[ \t]+(\d+)\**[ \t]*[:.)]?[ \t]*(.*)$/im;
|
|
18
|
-
// Same shape but per-line for the block-splitter (no /m needed when matched line-by-line).
|
|
19
|
-
const FINDING_HEADING_LINE_RE = /^#{2,4}[ \t]*\**[ \t]*(?:Finding|Issue|Concern)[ \t]+\d+\b/i;
|
|
20
|
-
// `- Severity: high` plus tolerated drift: * bullet, **bold:**, no bullet at all.
|
|
21
|
-
const bulletRe = (label) => new RegExp(`^(?:[-*][ \\t]+)?\\**[ \\t]*${label}[ \\t]*\\**[ \\t]*:[ \\t]*(.+)$`, 'im');
|
|
22
|
-
const SEVERITY_VALUES = new Set(['critical', 'high', 'medium', 'low']);
|
|
23
|
-
export function parseFindings(text, criterionId, legalOutcomes = ['found', 'clean', 'not_applicable'], warnSink = () => { }) {
|
|
24
|
-
if (!text || text.trim().length === 0) {
|
|
25
|
-
return { findings: [], outcome: 'clean' };
|
|
26
|
-
}
|
|
27
|
-
const blocks = [];
|
|
28
|
-
const lines = text.split('\n');
|
|
29
|
-
let current = [];
|
|
30
|
-
for (const line of lines) {
|
|
31
|
-
if (FINDING_HEADING_LINE_RE.test(line)) {
|
|
32
|
-
if (current.length > 0)
|
|
33
|
-
blocks.push(current.join('\n'));
|
|
34
|
-
current = [line];
|
|
35
|
-
}
|
|
36
|
-
else if (current.length > 0) {
|
|
37
|
-
current.push(line);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
if (current.length > 0)
|
|
41
|
-
blocks.push(current.join('\n'));
|
|
42
|
-
const findings = [];
|
|
43
|
-
for (const block of blocks) {
|
|
44
|
-
const headingMatch = block.match(FINDING_HEADING_RE);
|
|
45
|
-
const headingNum = headingMatch?.[1] ?? '?';
|
|
46
|
-
const headingInline = headingMatch?.[2]?.trim() ?? '';
|
|
47
|
-
const headingText = `Finding ${headingNum}: ${headingInline}`;
|
|
48
|
-
// Claim can come from a `- Claim:` bullet (reviewer format) OR the inline
|
|
49
|
-
// text on the heading line (legacy worker format).
|
|
50
|
-
let claim = block.match(bulletRe('Claim'))?.[1]?.trim() ?? '';
|
|
51
|
-
if (!claim)
|
|
52
|
-
claim = headingInline;
|
|
53
|
-
if (claim.startsWith('[N/A]'))
|
|
54
|
-
continue;
|
|
55
|
-
// A finding with no claim text at all is useless downstream — drop it
|
|
56
|
-
// and surface a warning so the operator can spot worker-emission drift.
|
|
57
|
-
if (!claim || claim.trim().length === 0) {
|
|
58
|
-
warnSink('findings_parser_drop', {
|
|
59
|
-
route: criterionId,
|
|
60
|
-
droppedFindingHeading: headingText,
|
|
61
|
-
reasonCode: 'empty_claim',
|
|
62
|
-
});
|
|
63
|
-
continue;
|
|
64
|
-
}
|
|
65
|
-
// Emit warning if claim is empty, but continue processing with empty claim
|
|
66
|
-
if (!claim || claim.trim().length === 0) {
|
|
67
|
-
warnSink('findings_parser_drop', {
|
|
68
|
-
route: criterionId,
|
|
69
|
-
droppedFindingHeading: headingText,
|
|
70
|
-
reasonCode: 'empty_claim',
|
|
71
|
-
});
|
|
72
|
-
continue;
|
|
73
|
-
}
|
|
74
|
-
const sevRaw = block.match(bulletRe('Severity'))?.[1]?.trim().split(/\s+/)[0]?.toLowerCase();
|
|
75
|
-
// Emit warning if Severity is missing, but continue with default
|
|
76
|
-
if (!sevRaw) {
|
|
77
|
-
warnSink('findings_parser_drop', {
|
|
78
|
-
route: criterionId,
|
|
79
|
-
droppedFindingHeading: headingText,
|
|
80
|
-
reasonCode: 'missing_core_bullet',
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
// Emit warning if Severity is invalid, but continue with default
|
|
84
|
-
const severity = (sevRaw && SEVERITY_VALUES.has(sevRaw))
|
|
85
|
-
? sevRaw
|
|
86
|
-
: 'medium';
|
|
87
|
-
if (sevRaw && !SEVERITY_VALUES.has(sevRaw)) {
|
|
88
|
-
warnSink('findings_parser_drop', {
|
|
89
|
-
route: criterionId,
|
|
90
|
-
droppedFindingHeading: headingText,
|
|
91
|
-
reasonCode: 'invalid_severity',
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
const category = block.match(bulletRe('Category'))?.[1]?.trim().split(/\s+/)[0] ?? criterionId;
|
|
95
|
-
const evidence = (block.match(bulletRe('Evidence'))?.[1] ?? block.match(bulletRe('Issue'))?.[1])?.trim();
|
|
96
|
-
const suggestion = (block.match(bulletRe('Suggestion'))?.[1] ?? block.match(bulletRe('Fix'))?.[1])?.trim();
|
|
97
|
-
// Drop for investigate routes if Evidence contains no file:line citation
|
|
98
|
-
// ANYWHERE. Workers naturally write `In [src/foo.ts:42] the function …` or
|
|
99
|
-
// wrap citations in markdown links — both forms now pass; only evidence
|
|
100
|
-
// that is pure prose with no path:line gets dropped.
|
|
101
|
-
if (criterionId.startsWith('investigate-') && evidence && !/[\w./-]+:\d+/.test(evidence)) {
|
|
102
|
-
warnSink('findings_parser_drop', {
|
|
103
|
-
route: criterionId,
|
|
104
|
-
droppedFindingHeading: headingText,
|
|
105
|
-
reasonCode: 'invalid_evidence_format',
|
|
106
|
-
});
|
|
107
|
-
continue;
|
|
108
|
-
}
|
|
109
|
-
const f = { severity, category, claim };
|
|
110
|
-
if (evidence)
|
|
111
|
-
f.evidence = evidence;
|
|
112
|
-
if (suggestion)
|
|
113
|
-
f.suggestion = suggestion;
|
|
114
|
-
findings.push(f);
|
|
115
|
-
}
|
|
116
|
-
// Extract outcome. Canonical: `## Outcome\nfound`. Tolerated drift:
|
|
117
|
-
// `## Outcome: found` (inline), `### Outcome\nfound` (heading level),
|
|
118
|
-
// `**Outcome:** found` (bold bullet), `Outcome: found` (no heading).
|
|
119
|
-
// Whichever form, value must be one of the legal-outcome enum literals.
|
|
120
|
-
let outcome = findings.length > 0 ? 'found' : 'clean';
|
|
121
|
-
// Horizontal-whitespace only on the heading line; newline before the value
|
|
122
|
-
// on the next line is explicit. Three alternatives covered:
|
|
123
|
-
// 1. `## Outcome\nfound` (heading + next-line value)
|
|
124
|
-
// 2. `## Outcome: found` (heading + inline value)
|
|
125
|
-
// 3. `Outcome: found` (bullet/bold/plain, no heading)
|
|
126
|
-
const OUTCOME_LINE_RE = /^(?:#{2,4}[ \t]*\**[ \t]*Outcome\**[ \t]*[:.]?[ \t]*(\w*)[ \t]*\n[ \t]*(\w*)|(?:[-*][ \t]+)?\**[ \t]*Outcome[ \t]*\**[ \t]*:[ \t]*(\w+))/im;
|
|
127
|
-
const m = text.match(OUTCOME_LINE_RE);
|
|
128
|
-
if (m) {
|
|
129
|
-
const raw = (m[1] || m[2] || m[3] || '').trim().toLowerCase();
|
|
130
|
-
if (raw === 'found' || raw === 'clean' || raw === 'not_applicable') {
|
|
131
|
-
outcome = raw;
|
|
132
|
-
}
|
|
133
|
-
// empty / unrecognized → keep the inferred outcome from findings.length
|
|
134
|
-
}
|
|
135
|
-
// Honor the route's legal-outcome set: if the worker declared a value that's
|
|
136
|
-
// illegal for this criterion (e.g. 'not_applicable' on an issue-hunting
|
|
137
|
-
// route), fall back to the inferred outcome rather than emit garbage.
|
|
138
|
-
if (!legalOutcomes.includes(outcome)) {
|
|
139
|
-
outcome = findings.length > 0 ? 'found' : (legalOutcomes[0] ?? 'clean');
|
|
140
|
-
}
|
|
141
|
-
return { findings, outcome };
|
|
142
|
-
}
|
|
143
|
-
//# sourceMappingURL=findings-parser.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"findings-parser.js","sourceRoot":"","sources":["../../src/lifecycle/findings-parser.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,sEAAsE;AACtE,iEAAiE;AACjE,EAAE;AACF,wEAAwE;AACxE,yEAAyE;AACzE,0EAA0E;AAC1E,2EAA2E;AAC3E,qEAAqE;AAIrE,oDAAoD;AACpD,wCAAwC;AACxC,+EAA+E;AAC/E,qDAAqD;AACrD,gDAAgD;AAChD,4EAA4E;AAC5E,iFAAiF;AACjF,MAAM,kBAAkB,GAAG,wFAAwF,CAAC;AACpH,2FAA2F;AAC3F,MAAM,uBAAuB,GAAG,6DAA6D,CAAC;AAC9F,kFAAkF;AAClF,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,EAAE,CACjC,IAAI,MAAM,CAAC,+BAA+B,KAAK,iCAAiC,EAAE,IAAI,CAAC,CAAC;AAmB1F,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;AAEvE,MAAM,UAAU,aAAa,CAC3B,IAAY,EACZ,WAAmB,EACnB,gBAAgD,CAAC,OAAO,EAAE,OAAO,EAAE,gBAAgB,CAAC,EACpF,WAAqB,GAAG,EAAE,GAAE,CAAC;IAE7B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IAC5C,CAAC;IAED,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,OAAO,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACxD,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;aAAM,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAExD,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACrD,MAAM,UAAU,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;QAC5C,MAAM,aAAa,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACtD,MAAM,WAAW,GAAG,WAAW,UAAU,KAAK,aAAa,EAAE,CAAC;QAE9D,0EAA0E;QAC1E,mDAAmD;QACnD,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC9D,IAAI,CAAC,KAAK;YAAE,KAAK,GAAG,aAAa,CAAC;QAClC,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,SAAS;QAExC,sEAAsE;QACtE,wEAAwE;QACxE,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxC,QAAQ,CAAC,sBAAsB,EAAE;gBAC/B,KAAK,EAAE,WAAW;gBAClB,qBAAqB,EAAE,WAAW;gBAClC,UAAU,EAAE,aAAa;aAC1B,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,2EAA2E;QAC3E,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxC,QAAQ,CAAC,sBAAsB,EAAE;gBAC/B,KAAK,EAAE,WAAW;gBAClB,qBAAqB,EAAE,WAAW;gBAClC,UAAU,EAAE,aAAa;aAC1B,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;QAE7F,iEAAiE;QACjE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,QAAQ,CAAC,sBAAsB,EAAE;gBAC/B,KAAK,EAAE,WAAW;gBAClB,qBAAqB,EAAE,WAAW;gBAClC,UAAU,EAAE,qBAAqB;aAClC,CAAC,CAAC;QACL,CAAC;QAED,iEAAiE;QACjE,MAAM,QAAQ,GAAwB,CAAC,MAAM,IAAI,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC3E,CAAC,CAAE,MAA8B;YACjC,CAAC,CAAC,QAAQ,CAAC;QACb,IAAI,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3C,QAAQ,CAAC,sBAAsB,EAAE;gBAC/B,KAAK,EAAE,WAAW;gBAClB,qBAAqB,EAAE,WAAW;gBAClC,UAAU,EAAE,kBAAkB;aAC/B,CAAC,CAAC;QACL,CAAC;QAED,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC;QAC/F,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QACzG,MAAM,UAAU,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QAE3G,yEAAyE;QACzE,2EAA2E;QAC3E,wEAAwE;QACxE,qDAAqD;QACrD,IAAI,WAAW,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzF,QAAQ,CAAC,sBAAsB,EAAE;gBAC/B,KAAK,EAAE,WAAW;gBAClB,qBAAqB,EAAE,WAAW;gBAClC,UAAU,EAAE,yBAAyB;aACtC,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,MAAM,CAAC,GAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QACjD,IAAI,QAAQ;YAAE,CAAC,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACpC,IAAI,UAAU;YAAE,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC;QAC1C,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;IAED,oEAAoE;IACpE,wEAAwE;IACxE,uEAAuE;IACvE,wEAAwE;IACxE,IAAI,OAAO,GAAwB,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAC3E,2EAA2E;IAC3E,4DAA4D;IAC5D,uDAAuD;IACvD,oDAAoD;IACpD,wDAAwD;IACxD,MAAM,eAAe,GAAG,4IAA4I,CAAC;IACrK,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IACtC,IAAI,CAAC,EAAE,CAAC;QACN,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC9D,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,gBAAgB,EAAE,CAAC;YACnE,OAAO,GAAG,GAA0B,CAAC;QACvC,CAAC;QACD,wEAAwE;IAC1E,CAAC;IAED,6EAA6E;IAC7E,wEAAwE;IACxE,sEAAsE;IACtE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACrC,OAAO,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AAC/B,CAAC"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export interface ResolveOptions {
|
|
2
|
-
timeoutMs?: number;
|
|
3
|
-
}
|
|
4
|
-
/**
|
|
5
|
-
* Returns the canonical absolute path of the git toplevel for `cwd`, or
|
|
6
|
-
* null if `cwd` is not in a git repo, git is unavailable, the directory
|
|
7
|
-
* does not exist, or the spawn times out (default 5 s).
|
|
8
|
-
*
|
|
9
|
-
* Pure function of (cwd, filesystem state). Never throws.
|
|
10
|
-
*/
|
|
11
|
-
export declare function resolveGitToplevel(cwd: string, opts?: ResolveOptions): Promise<string | null>;
|
|
12
|
-
//# sourceMappingURL=git-toplevel.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"git-toplevel.d.ts","sourceRoot":"","sources":["../../src/lifecycle/git-toplevel.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,cAAmB,GACxB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAmCxB"}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { spawn } from 'node:child_process';
|
|
2
|
-
/**
|
|
3
|
-
* Returns the canonical absolute path of the git toplevel for `cwd`, or
|
|
4
|
-
* null if `cwd` is not in a git repo, git is unavailable, the directory
|
|
5
|
-
* does not exist, or the spawn times out (default 5 s).
|
|
6
|
-
*
|
|
7
|
-
* Pure function of (cwd, filesystem state). Never throws.
|
|
8
|
-
*/
|
|
9
|
-
export async function resolveGitToplevel(cwd, opts = {}) {
|
|
10
|
-
const timeoutMs = opts.timeoutMs ?? 5000;
|
|
11
|
-
return new Promise((resolve) => {
|
|
12
|
-
let settled = false;
|
|
13
|
-
const settle = (value) => {
|
|
14
|
-
if (settled)
|
|
15
|
-
return;
|
|
16
|
-
settled = true;
|
|
17
|
-
resolve(value);
|
|
18
|
-
};
|
|
19
|
-
let child;
|
|
20
|
-
try {
|
|
21
|
-
child = spawn('git', ['-C', cwd, 'rev-parse', '--show-toplevel'], {
|
|
22
|
-
stdio: ['ignore', 'pipe', 'pipe'],
|
|
23
|
-
// windowsHide: suppress the console window Windows opens per spawned
|
|
24
|
-
// console binary when the daemon has no attached console. No-op on POSIX.
|
|
25
|
-
windowsHide: true,
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
catch {
|
|
29
|
-
settle(null);
|
|
30
|
-
return;
|
|
31
|
-
}
|
|
32
|
-
let stdout = '';
|
|
33
|
-
child.stdout?.on('data', (b) => { stdout += b.toString('utf8'); });
|
|
34
|
-
child.stderr?.on('data', () => { });
|
|
35
|
-
child.on('error', () => settle(null));
|
|
36
|
-
child.on('exit', (code) => {
|
|
37
|
-
if (code === 0)
|
|
38
|
-
settle(stdout.trim() || null);
|
|
39
|
-
else
|
|
40
|
-
settle(null);
|
|
41
|
-
});
|
|
42
|
-
const t = setTimeout(() => {
|
|
43
|
-
try {
|
|
44
|
-
child.kill('SIGKILL');
|
|
45
|
-
}
|
|
46
|
-
catch { /* ignore */ }
|
|
47
|
-
settle(null);
|
|
48
|
-
}, timeoutMs);
|
|
49
|
-
child.on('exit', () => clearTimeout(t));
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
//# sourceMappingURL=git-toplevel.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"git-toplevel.js","sourceRoot":"","sources":["../../src/lifecycle/git-toplevel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAM3C;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,GAAW,EACX,OAAuB,EAAE;IAEzB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC;IACzC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,MAAM,GAAG,CAAC,KAAoB,EAAE,EAAE;YACtC,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,CAAC;QACF,IAAI,KAAK,CAAC;QACV,IAAI,CAAC;YACH,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,iBAAiB,CAAC,EAAE;gBAChE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;gBACjC,qEAAqE;gBACrE,0EAA0E;gBAC1E,WAAW,EAAE,IAAI;aAClB,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,CAAC,IAAI,CAAC,CAAC;YACb,OAAO;QACT,CAAC;QACD,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,GAAG,MAAM,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,GAAiB,CAAC,CAAC,CAAC;QAClD,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACtC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACxB,IAAI,IAAI,KAAK,CAAC;gBAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;;gBACzC,MAAM,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE;YACxB,IAAI,CAAC;gBAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;YACrD,MAAM,CAAC,IAAI,CAAC,CAAC;QACf,CAAC,EAAE,SAAS,CAAC,CAAC;QACd,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import type { LifecycleState } from '../stage-plan-types.js';
|
|
2
|
-
import { type ResearchSourcesUsedEntry } from '../../reporting/report-parser-slots/research-report.js';
|
|
3
|
-
import type { AnnotatePayload, StageGate } from '../stage-io.js';
|
|
4
|
-
export interface StructuredReport {
|
|
5
|
-
summary: string;
|
|
6
|
-
workerStatus: 'done' | 'done_with_concerns' | 'blocked' | 'failed';
|
|
7
|
-
unresolved: string[];
|
|
8
|
-
filesChanged: string[];
|
|
9
|
-
reviewVerdict: 'approved' | 'changes_required' | null;
|
|
10
|
-
reviewConcerns: string[];
|
|
11
|
-
reworkApplied: boolean;
|
|
12
|
-
commitSha: string | null;
|
|
13
|
-
commitMessage: string | null;
|
|
14
|
-
commitSkipReason: string | null;
|
|
15
|
-
findings: {
|
|
16
|
-
severity: string;
|
|
17
|
-
category: string;
|
|
18
|
-
claim: string;
|
|
19
|
-
evidence?: string;
|
|
20
|
-
suggestion?: string;
|
|
21
|
-
}[];
|
|
22
|
-
criteriaErrors: {
|
|
23
|
-
criterionId: string;
|
|
24
|
-
error: string;
|
|
25
|
-
}[];
|
|
26
|
-
/** Research-only: parsed `## Sources used` markdown table. Absent on
|
|
27
|
-
* every other route (audit/review/debug/investigate/write routes). */
|
|
28
|
-
sourcesUsed?: ResearchSourcesUsedEntry[];
|
|
29
|
-
findingsOutcome?: 'found' | 'clean' | 'not_applicable';
|
|
30
|
-
findingsOutcomeReason?: string | null;
|
|
31
|
-
outcomeInferred?: boolean;
|
|
32
|
-
outcomeMalformed?: boolean;
|
|
33
|
-
}
|
|
34
|
-
export declare function annotator(state: LifecycleState): Promise<StageGate<AnnotatePayload>>;
|
|
35
|
-
//# sourceMappingURL=annotate-stage.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"annotate-stage.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/handlers/annotate-stage.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAG7D,OAAO,EAEL,KAAK,wBAAwB,EAC9B,MAAM,wDAAwD,CAAC;AAGhE,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAIjE,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS,GAAG,QAAQ,CAAC;IACnE,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,UAAU,GAAG,kBAAkB,GAAG,IAAI,CAAC;IACtD,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC1G,cAAc,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACzD;2EACuE;IACvE,WAAW,CAAC,EAAE,wBAAwB,EAAE,CAAC;IACzC,eAAe,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,gBAAgB,CAAC;IACvD,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,wBAAsB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CA0T1F"}
|
|
@@ -1,360 +0,0 @@
|
|
|
1
|
-
// v4.4.x — unified Annotating stage.
|
|
2
|
-
//
|
|
3
|
-
// LLM judge layer (spec §5.7.2), NOT a pure transform: this stage fires a
|
|
4
|
-
// real LLM turn on the standard tier (see getSession('standard') below) for
|
|
5
|
-
// both read and write routes. The LLM is the PROPOSER — it may set
|
|
6
|
-
// completed/message/summary — while the deterministic parser
|
|
7
|
-
// (applyAnnotatePreconditions) is the ENFORCER and the mechanical fields
|
|
8
|
-
// (findings, filesChanged, commitSha) are always overridden from upstream
|
|
9
|
-
// gates. It judges/summarizes the worker's emitted report; it does NOT
|
|
10
|
-
// independently re-read the codebase to find defects (that is the Review
|
|
11
|
-
// stage, which is write-routes-only). Falls back to mechanical synthesis only
|
|
12
|
-
// on tier-3 prompt-budget truncation or after all transport retries fail.
|
|
13
|
-
//
|
|
14
|
-
// It assembles the canonical StructuredReport from state.lastRunResult, the
|
|
15
|
-
// Review stage's verdict + concerns, the Rework flag, and the Committing
|
|
16
|
-
// stage's outcome. Same handler for read and write routes — route-specific
|
|
17
|
-
// fields hold empty arrays / nulls on the other side so the orchestrator
|
|
18
|
-
// parses one shape.
|
|
19
|
-
import { mergeStageStats } from '../merge-stage-stats.js';
|
|
20
|
-
import { HUMAN_LABEL } from '../stage-labels.js';
|
|
21
|
-
import { parseSourcesUsed, } from '../../reporting/report-parser-slots/research-report.js';
|
|
22
|
-
import { applyAnnotatePreconditions } from '../annotate-parser.js';
|
|
23
|
-
import { annotatePromptWrite, annotatePromptRead } from '../annotate-prompts.js';
|
|
24
|
-
const READ_ROUTES = new Set(['audit', 'review', 'debug', 'investigate', 'research', 'journal-recall']);
|
|
25
|
-
export async function annotator(state) {
|
|
26
|
-
const t0 = Date.now();
|
|
27
|
-
const last = (state.lastRunResult ?? {});
|
|
28
|
-
const route = state.route;
|
|
29
|
-
const isRead = !!route && READ_ROUTES.has(route);
|
|
30
|
-
const findings = last.findings ?? [];
|
|
31
|
-
const summary = last.summary
|
|
32
|
-
?? (isRead ? `produced ${findings.length} findings` : (last.output ?? '').slice(0, 200));
|
|
33
|
-
// Commit fields are authoritative from the commit GATE payload — the commit
|
|
34
|
-
// handler writes the SHA/message/files THERE, not into state.lastRunResult
|
|
35
|
-
// (see git-commit-handler.ts header). Sourcing them from `last` left them
|
|
36
|
-
// perpetually null on the user-facing report, and `last.filesChanged` (a
|
|
37
|
-
// repo-wide diff) leaked sibling workers' files under concurrent dispatch.
|
|
38
|
-
// The committed gate's filesChanged is this worker's own pathspec.
|
|
39
|
-
const commitGate = state.gates?.['commit'];
|
|
40
|
-
const commitPayload = (commitGate?.payload ?? null);
|
|
41
|
-
const committed = commitGate?.outcome === 'advance' && commitPayload?.kind === 'committed';
|
|
42
|
-
const report = {
|
|
43
|
-
summary,
|
|
44
|
-
workerStatus: last.workerStatus ?? (isRead ? 'done' : 'failed'),
|
|
45
|
-
unresolved: last.unresolved ?? [],
|
|
46
|
-
filesChanged: isRead ? [] : (committed ? (commitPayload?.filesChanged ?? []) : (last.filesChanged ?? [])),
|
|
47
|
-
reviewVerdict: isRead ? null : ((state.reviewVerdict) ?? null),
|
|
48
|
-
reviewConcerns: isRead ? [] : ((state.reviewConcerns) ?? []),
|
|
49
|
-
reworkApplied: isRead ? false : Boolean(state.reworkApplied),
|
|
50
|
-
commitSha: isRead ? null : (committed ? (commitPayload?.commitSha ?? null) : null),
|
|
51
|
-
commitMessage: isRead ? null : (committed ? (commitPayload?.commitMessage ?? null) : null),
|
|
52
|
-
commitSkipReason: isRead || committed ? null : (commitPayload?.kind === 'no_op' ? (commitPayload?.reason ?? null) : null),
|
|
53
|
-
findings: isRead ? findings : [],
|
|
54
|
-
criteriaErrors: isRead ? (last.criteriaErrors ?? []) : [],
|
|
55
|
-
};
|
|
56
|
-
if (route === 'research') {
|
|
57
|
-
// Prefer the deterministic table derived from the EvidencePack (threaded
|
|
58
|
-
// onto lastRunResult by perform-implementation). The worker-emitted
|
|
59
|
-
// `## Sources used` markdown is an unreliable fallback — the per-criterion
|
|
60
|
-
// synthesis loop has no designated turn that emits it.
|
|
61
|
-
const fromPack = last.sourcesUsed;
|
|
62
|
-
report.sourcesUsed = (Array.isArray(fromPack) && fromPack.length > 0)
|
|
63
|
-
? fromPack
|
|
64
|
-
: parseSourcesUsed(last.output ?? '');
|
|
65
|
-
}
|
|
66
|
-
report.findingsOutcome = last.findingsOutcome;
|
|
67
|
-
report.findingsOutcomeReason = last.findingsOutcomeReason;
|
|
68
|
-
report.outcomeInferred = last.outcomeInferred;
|
|
69
|
-
report.outcomeMalformed = last.outcomeMalformed;
|
|
70
|
-
state.structuredReport = report;
|
|
71
|
-
// v5: prompt-budget truncation per spec §14 assumption 7 + AC-30 to AC-33.
|
|
72
|
-
// Three tiers, applied progressively when config.truncateAnnotatePromptTier
|
|
73
|
-
// signals overflow:
|
|
74
|
-
// tier 1 → strip Finding.evidence
|
|
75
|
-
// tier 2 → also strip summary fields (set to '')
|
|
76
|
-
// tier 3 → fallback mode: emit deterministic AnnotatePayload with verbatim
|
|
77
|
-
// spec-text message; completed=false; findings passthrough.
|
|
78
|
-
const cfg = state.config ?? {};
|
|
79
|
-
const tier = cfg.truncateAnnotatePromptTier ?? 0;
|
|
80
|
-
const envelope = state.executionContext?.envelope;
|
|
81
|
-
const reviewGate = state.gates?.['review'];
|
|
82
|
-
const implementGate = state.gates?.['implement'];
|
|
83
|
-
const aggregatedFindings = [
|
|
84
|
-
...(last.findings ?? []),
|
|
85
|
-
...((reviewGate?.outcome === 'advance' ? reviewGate.payload?.findings : undefined) ?? []),
|
|
86
|
-
...((implementGate?.outcome === 'advance' ? implementGate.payload?.findings : undefined) ?? []),
|
|
87
|
-
];
|
|
88
|
-
// Dedupe by claim+evidence (preserve first occurrence)
|
|
89
|
-
const seen = new Set();
|
|
90
|
-
const dedupedFindings = [];
|
|
91
|
-
for (const f of aggregatedFindings) {
|
|
92
|
-
const key = `${f.claim ?? ''}|${f.evidence ?? ''}`;
|
|
93
|
-
if (seen.has(key))
|
|
94
|
-
continue;
|
|
95
|
-
seen.add(key);
|
|
96
|
-
dedupedFindings.push(f);
|
|
97
|
-
}
|
|
98
|
-
// Mechanical filesChanged + commitSha derivation (spec §5.7 rule 4).
|
|
99
|
-
// Reuses the `commitGate` resolved above.
|
|
100
|
-
const mechanicalFilesChanged = commitGate?.outcome === 'advance' &&
|
|
101
|
-
commitGate.payload?.kind === 'committed'
|
|
102
|
-
? commitGate.payload.filesChanged ?? []
|
|
103
|
-
: (isRead ? [] : report.filesChanged);
|
|
104
|
-
const mechanicalCommitSha = commitGate?.outcome === 'advance' &&
|
|
105
|
-
commitGate.payload?.kind === 'committed'
|
|
106
|
-
? (commitGate.payload.commitSha ?? null)
|
|
107
|
-
: (isRead ? null : (report.commitSha ?? null));
|
|
108
|
-
let truncatedFindings = dedupedFindings.slice();
|
|
109
|
-
let truncatedSummary = report.summary;
|
|
110
|
-
let fallbackMode = false;
|
|
111
|
-
if (tier >= 1) {
|
|
112
|
-
const droppedEvidenceCount = truncatedFindings.filter(f => f.evidence !== undefined).length;
|
|
113
|
-
truncatedFindings = truncatedFindings.map(f => {
|
|
114
|
-
const cp = { ...f };
|
|
115
|
-
delete cp.evidence;
|
|
116
|
-
return cp;
|
|
117
|
-
});
|
|
118
|
-
// Annotation truncation is now recorded as a validation warning in the envelope
|
|
119
|
-
const env = envelope;
|
|
120
|
-
env?.recordValidationWarning?.({ rule: 'AnnotateTruncationTier1', path: 'annotatePrompt' });
|
|
121
|
-
}
|
|
122
|
-
if (tier >= 2) {
|
|
123
|
-
const dropped = truncatedSummary ? 1 : 0;
|
|
124
|
-
truncatedSummary = '';
|
|
125
|
-
const env = envelope;
|
|
126
|
-
env?.recordValidationWarning?.({ rule: 'AnnotateTruncationTier2', path: 'annotatePrompt' });
|
|
127
|
-
}
|
|
128
|
-
if (tier >= 3) {
|
|
129
|
-
// Tier 3 = fallback mode per spec §5.7.3
|
|
130
|
-
fallbackMode = true;
|
|
131
|
-
const env = envelope;
|
|
132
|
-
env?.recordValidationWarning?.({ rule: 'AnnotateTruncationTier3', path: 'annotatePrompt' });
|
|
133
|
-
}
|
|
134
|
-
let annotated;
|
|
135
|
-
// LLM judge layer (spec §5.7.2). The annotator stage runs an LLM turn
|
|
136
|
-
// unless tier-3 truncation kicked us into fallback mode. The LLM is the
|
|
137
|
-
// proposer; the deterministic parser is the enforcer — applyAnnotatePreconditions
|
|
138
|
-
// always runs on the LLM-proposed payload and may flip completed=false. On
|
|
139
|
-
// transport error we fall back to mechanical synthesis (same path that ran
|
|
140
|
-
// before this layer was added).
|
|
141
|
-
let llmCostUSD = 0;
|
|
142
|
-
let llmDurationMs = 0;
|
|
143
|
-
let llmTurnsUsed = 0;
|
|
144
|
-
let llmTransportFailed = false;
|
|
145
|
-
let llmModel = null;
|
|
146
|
-
let llmInputTokens = 0;
|
|
147
|
-
let llmOutputTokens = 0;
|
|
148
|
-
let llmCachedReadTokens = 0;
|
|
149
|
-
let llmCachedNonReadTokens = 0;
|
|
150
|
-
if (fallbackMode) {
|
|
151
|
-
// Fallback findings: only gate-sourced findings flow through (gates.review,
|
|
152
|
-
// gates.implement). lastRunResult.findings are dropped as part of tier-3
|
|
153
|
-
// citation/non-gate-evidence clearing (spec §5.7.3 / AC-32).
|
|
154
|
-
const fallbackFindings = [];
|
|
155
|
-
const fbSeen = new Set();
|
|
156
|
-
const reviewFindings = (reviewGate?.outcome === 'advance' ? reviewGate.payload?.findings : undefined) ?? [];
|
|
157
|
-
const implementFindings = (implementGate?.outcome === 'advance' ? implementGate.payload?.findings : undefined) ?? [];
|
|
158
|
-
for (const f of [...reviewFindings, ...implementFindings]) {
|
|
159
|
-
const k = `${f.claim ?? ''}|${f.evidence ?? ''}`;
|
|
160
|
-
if (fbSeen.has(k))
|
|
161
|
-
continue;
|
|
162
|
-
fbSeen.add(k);
|
|
163
|
-
const cp = { ...f };
|
|
164
|
-
delete cp.evidence;
|
|
165
|
-
fallbackFindings.push(cp);
|
|
166
|
-
}
|
|
167
|
-
annotated = {
|
|
168
|
-
completed: false,
|
|
169
|
-
message: 'annotator prompt budget exceeded after tier-3 truncation; verdict computed mechanically from upstream gates',
|
|
170
|
-
findings: fallbackFindings,
|
|
171
|
-
summary: '',
|
|
172
|
-
filesChanged: mechanicalFilesChanged,
|
|
173
|
-
commitSha: mechanicalCommitSha,
|
|
174
|
-
};
|
|
175
|
-
}
|
|
176
|
-
else {
|
|
177
|
-
// Default mechanical proposal — used directly when LLM fails or returns
|
|
178
|
-
// unparseable output. The parser still gets the final say either way.
|
|
179
|
-
const mechanical = {
|
|
180
|
-
completed: true,
|
|
181
|
-
message: truncatedSummary || (isRead ? 'investigation completed' : 'task completed'),
|
|
182
|
-
findings: truncatedFindings,
|
|
183
|
-
summary: truncatedSummary,
|
|
184
|
-
filesChanged: mechanicalFilesChanged,
|
|
185
|
-
commitSha: mechanicalCommitSha,
|
|
186
|
-
};
|
|
187
|
-
let proposed = mechanical;
|
|
188
|
-
const ctx = state.executionContext;
|
|
189
|
-
// Annotator runs on the standard tier; capture its model from the provider
|
|
190
|
-
// config so the wire row attributes annotate cost+tokens to the real model.
|
|
191
|
-
// TurnResult does not carry model, so (r as any).model below is undefined
|
|
192
|
-
// for every provider — without this lookup the annotate stage's model was
|
|
193
|
-
// always null on the wire even when an LLM call actually fired.
|
|
194
|
-
const annotateModelFromConfig = ctx?.providers?.['standard']?.config?.model ?? null;
|
|
195
|
-
if (ctx && typeof ctx.getSession === 'function') {
|
|
196
|
-
const prompt = isRead ? annotatePromptRead(state) : annotatePromptWrite(state);
|
|
197
|
-
const session = ctx.getSession('standard');
|
|
198
|
-
let tres;
|
|
199
|
-
const t0 = Date.now();
|
|
200
|
-
// Retry on transport errors: 3 attempts with 0s, 1s, 2s backoff (AC-19, AC-20)
|
|
201
|
-
const retryDelays = [0, 1000, 2000];
|
|
202
|
-
let lastErr;
|
|
203
|
-
// Initialize to error; will be overwritten on success or last failure
|
|
204
|
-
tres = { kind: 'transport_error', message: 'annotator transport failed', ms: 0 };
|
|
205
|
-
for (let attempt = 0; attempt < retryDelays.length; attempt++) {
|
|
206
|
-
if (attempt > 0) {
|
|
207
|
-
await new Promise(resolve => setTimeout(resolve, retryDelays[attempt]));
|
|
208
|
-
}
|
|
209
|
-
try {
|
|
210
|
-
const r = await session.send(prompt, { stageLabel: HUMAN_LABEL.annotating });
|
|
211
|
-
tres = {
|
|
212
|
-
kind: 'ok',
|
|
213
|
-
text: r.output ?? '',
|
|
214
|
-
costUSD: typeof r.costUSD === 'number' ? r.costUSD : null,
|
|
215
|
-
turnsUsed: r.turns ?? 1,
|
|
216
|
-
ms: Date.now() - t0,
|
|
217
|
-
model: r.model ?? null,
|
|
218
|
-
inputTokens: r.usage?.inputTokens ?? 0,
|
|
219
|
-
outputTokens: r.usage?.outputTokens ?? 0,
|
|
220
|
-
cachedReadTokens: r.usage?.cachedReadTokens ?? 0,
|
|
221
|
-
cachedNonReadTokens: r.usage?.cachedNonReadTokens ?? 0,
|
|
222
|
-
};
|
|
223
|
-
break; // Success, exit retry loop
|
|
224
|
-
}
|
|
225
|
-
catch (err) {
|
|
226
|
-
lastErr = err instanceof Error ? err : new Error(String(err));
|
|
227
|
-
// Update error message for next retry or final failure
|
|
228
|
-
tres = { kind: 'transport_error', message: lastErr.message, ms: Date.now() - t0 };
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
if (tres.kind === 'ok') {
|
|
232
|
-
llmCostUSD = tres.costUSD ?? 0;
|
|
233
|
-
// TurnResult does not carry model — fall back to the provider config
|
|
234
|
-
// we captured above (tres.model is undefined for every provider).
|
|
235
|
-
llmModel = tres.model ?? annotateModelFromConfig;
|
|
236
|
-
llmDurationMs = tres.ms;
|
|
237
|
-
llmTurnsUsed = tres.turnsUsed;
|
|
238
|
-
llmInputTokens = tres.inputTokens;
|
|
239
|
-
llmOutputTokens = tres.outputTokens;
|
|
240
|
-
llmCachedReadTokens = tres.cachedReadTokens;
|
|
241
|
-
llmCachedNonReadTokens = tres.cachedNonReadTokens;
|
|
242
|
-
const parsed = extractAnnotateJson(tres.text);
|
|
243
|
-
if (parsed) {
|
|
244
|
-
// Authoritative fields come from upstream gates (mechanicalFilesChanged,
|
|
245
|
-
// mechanicalCommitSha, dedupedFindings). The LLM gets to propose
|
|
246
|
-
// completed + message + summary; everything mechanical we override.
|
|
247
|
-
proposed = {
|
|
248
|
-
completed: typeof parsed.completed === 'boolean' ? parsed.completed : mechanical.completed,
|
|
249
|
-
message: typeof parsed.message === 'string' && parsed.message.length > 0 ? parsed.message : mechanical.message,
|
|
250
|
-
summary: typeof parsed.summary === 'string' ? parsed.summary : mechanical.summary,
|
|
251
|
-
findings: truncatedFindings,
|
|
252
|
-
filesChanged: mechanicalFilesChanged,
|
|
253
|
-
commitSha: mechanicalCommitSha,
|
|
254
|
-
};
|
|
255
|
-
}
|
|
256
|
-
// parsed === null → keep mechanical (parser unaffected)
|
|
257
|
-
}
|
|
258
|
-
else {
|
|
259
|
-
// transport_error — fall through to mechanical synthesis
|
|
260
|
-
llmTransportFailed = true;
|
|
261
|
-
llmDurationMs = tres.ms;
|
|
262
|
-
// Transport errors are now recorded as validation warnings
|
|
263
|
-
const env = envelope;
|
|
264
|
-
env?.recordValidationWarning?.({ rule: 'AnnotateLLMTransportError', path: 'annotatePrompt' });
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
annotated = applyAnnotatePreconditions(proposed, state);
|
|
268
|
-
}
|
|
269
|
-
state.annotatePayload = annotated;
|
|
270
|
-
mergeStageStats(state, 'annotating', {
|
|
271
|
-
inputTokens: llmInputTokens,
|
|
272
|
-
outputTokens: llmOutputTokens,
|
|
273
|
-
cachedReadTokens: llmCachedReadTokens,
|
|
274
|
-
cachedNonReadTokens: llmCachedNonReadTokens,
|
|
275
|
-
turnCount: llmTurnsUsed,
|
|
276
|
-
costUSD: llmCostUSD,
|
|
277
|
-
durationMs: Date.now() - t0,
|
|
278
|
-
filesWrittenCount: 0,
|
|
279
|
-
}, {
|
|
280
|
-
tier: llmTurnsUsed > 0 ? 'standard' : null,
|
|
281
|
-
model: llmModel,
|
|
282
|
-
// Mirror the outcome the implementer (or reviewer) computed so the
|
|
283
|
-
// annotating stage row carries the same value downstream consumers see.
|
|
284
|
-
findingsOutcome: last.findingsOutcome,
|
|
285
|
-
findingsOutcomeReason: last.findingsOutcomeReason,
|
|
286
|
-
outcomeInferred: last.outcomeInferred,
|
|
287
|
-
outcomeMalformed: last.outcomeMalformed,
|
|
288
|
-
});
|
|
289
|
-
// suppress unused-variable warning while keeping the durationMs field for
|
|
290
|
-
// diagnostics callers; mergeStageStats already captured the value above.
|
|
291
|
-
void llmDurationMs;
|
|
292
|
-
void llmTransportFailed;
|
|
293
|
-
const annotatingStats = state.lastRunResult
|
|
294
|
-
?.stageStats?.annotating;
|
|
295
|
-
if (annotatingStats) {
|
|
296
|
-
annotatingStats.outcome = 'transformed';
|
|
297
|
-
annotatingStats.maxIdleMs = 0;
|
|
298
|
-
annotatingStats.totalIdleMs = 0;
|
|
299
|
-
}
|
|
300
|
-
return {
|
|
301
|
-
outcome: 'advance',
|
|
302
|
-
payload: annotated,
|
|
303
|
-
telemetry: {
|
|
304
|
-
stageLabel: 'annotate',
|
|
305
|
-
durationMs: Date.now() - t0,
|
|
306
|
-
costUSD: llmCostUSD,
|
|
307
|
-
turnsUsed: llmTurnsUsed,
|
|
308
|
-
stopReason: 'normal',
|
|
309
|
-
},
|
|
310
|
-
};
|
|
311
|
-
}
|
|
312
|
-
/**
|
|
313
|
-
* Extract a single JSON object from the LLM's response.
|
|
314
|
-
*
|
|
315
|
-
* Accepts:
|
|
316
|
-
* - A fenced ```json …``` block (preferred form per annotate prompts)
|
|
317
|
-
* - A fenced ``` …``` block (no language tag)
|
|
318
|
-
* - The first balanced `{…}` substring in the text
|
|
319
|
-
*
|
|
320
|
-
* Returns `null` if no parseable JSON is found, signalling the caller to keep
|
|
321
|
-
* the mechanical proposal. This is intentional: a malformed LLM response
|
|
322
|
-
* should not cause stage failure — the parser already has a deterministic
|
|
323
|
-
* answer it can fall back on.
|
|
324
|
-
*/
|
|
325
|
-
function extractAnnotateJson(text) {
|
|
326
|
-
if (!text)
|
|
327
|
-
return null;
|
|
328
|
-
const fencedJson = text.match(/```(?:json)?\s*\n([\s\S]*?)\n```/i);
|
|
329
|
-
const candidate = fencedJson ? fencedJson[1] : firstBalancedBraces(text);
|
|
330
|
-
if (!candidate)
|
|
331
|
-
return null;
|
|
332
|
-
try {
|
|
333
|
-
const parsed = JSON.parse(candidate);
|
|
334
|
-
if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {
|
|
335
|
-
return parsed;
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
catch {
|
|
339
|
-
/* fall through */
|
|
340
|
-
}
|
|
341
|
-
return null;
|
|
342
|
-
}
|
|
343
|
-
function firstBalancedBraces(text) {
|
|
344
|
-
const start = text.indexOf('{');
|
|
345
|
-
if (start < 0)
|
|
346
|
-
return null;
|
|
347
|
-
let depth = 0;
|
|
348
|
-
for (let i = start; i < text.length; i++) {
|
|
349
|
-
const ch = text[i];
|
|
350
|
-
if (ch === '{')
|
|
351
|
-
depth++;
|
|
352
|
-
else if (ch === '}') {
|
|
353
|
-
depth--;
|
|
354
|
-
if (depth === 0)
|
|
355
|
-
return text.slice(start, i + 1);
|
|
356
|
-
}
|
|
357
|
-
}
|
|
358
|
-
return null;
|
|
359
|
-
}
|
|
360
|
-
//# sourceMappingURL=annotate-stage.js.map
|