@telora/daemon 0.22.104 → 0.22.132
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/build-info.json +4 -3
- package/dist/completion/commit-verdict-release.d.ts +49 -0
- package/dist/completion/commit-verdict-release.d.ts.map +1 -0
- package/dist/completion/commit-verdict-release.js +240 -0
- package/dist/completion/commit-verdict-release.js.map +1 -0
- package/dist/completion/completion-phase-registry.d.ts +10 -4
- package/dist/completion/completion-phase-registry.d.ts.map +1 -1
- package/dist/completion/completion-phase-registry.js +19 -7
- package/dist/completion/completion-phase-registry.js.map +1 -1
- package/dist/completion/detector.d.ts.map +1 -1
- package/dist/completion/detector.js +1 -0
- package/dist/completion/detector.js.map +1 -1
- package/dist/completion/event-entry-phases.d.ts +6 -3
- package/dist/completion/event-entry-phases.d.ts.map +1 -1
- package/dist/completion/event-entry-phases.js +135 -76
- package/dist/completion/event-entry-phases.js.map +1 -1
- package/dist/completion/event-phases.d.ts +24 -3
- package/dist/completion/event-phases.d.ts.map +1 -1
- package/dist/completion/event-phases.js +9 -9
- package/dist/completion/event-phases.js.map +1 -1
- package/dist/completion/event.d.ts +8 -0
- package/dist/completion/event.d.ts.map +1 -1
- package/dist/completion/event.js +47 -21
- package/dist/completion/event.js.map +1 -1
- package/dist/completion/exit-classification.d.ts.map +1 -1
- package/dist/completion/exit-classification.js +1 -0
- package/dist/completion/exit-classification.js.map +1 -1
- package/dist/completion/merge-phase.d.ts +21 -9
- package/dist/completion/merge-phase.d.ts.map +1 -1
- package/dist/completion/merge-phase.js +35 -10
- package/dist/completion/merge-phase.js.map +1 -1
- package/dist/completion/review-auto-approval-record.d.ts +19 -0
- package/dist/completion/review-auto-approval-record.d.ts.map +1 -0
- package/dist/completion/review-auto-approval-record.js +102 -0
- package/dist/completion/review-auto-approval-record.js.map +1 -0
- package/dist/completion/review-cycle-cap.d.ts +62 -0
- package/dist/completion/review-cycle-cap.d.ts.map +1 -0
- package/dist/completion/review-cycle-cap.js +180 -0
- package/dist/completion/review-cycle-cap.js.map +1 -0
- package/dist/completion/review-exit-deps.d.ts +17 -2
- package/dist/completion/review-exit-deps.d.ts.map +1 -1
- package/dist/completion/review-exit-deps.js +19 -2
- package/dist/completion/review-exit-deps.js.map +1 -1
- package/dist/completion/review-exit-escalations.d.ts +45 -23
- package/dist/completion/review-exit-escalations.d.ts.map +1 -1
- package/dist/completion/review-exit-escalations.js +15 -74
- package/dist/completion/review-exit-escalations.js.map +1 -1
- package/dist/completion/review-exit-evidence.d.ts +9 -0
- package/dist/completion/review-exit-evidence.d.ts.map +1 -1
- package/dist/completion/review-exit-evidence.js +4 -1
- package/dist/completion/review-exit-evidence.js.map +1 -1
- package/dist/completion/review-exit-foreign-findings.d.ts +151 -0
- package/dist/completion/review-exit-foreign-findings.d.ts.map +1 -0
- package/dist/completion/review-exit-foreign-findings.js +474 -0
- package/dist/completion/review-exit-foreign-findings.js.map +1 -0
- package/dist/completion/review-exit-phase.d.ts.map +1 -1
- package/dist/completion/review-exit-phase.js +71 -64
- package/dist/completion/review-exit-phase.js.map +1 -1
- package/dist/completion/review-exit-progress.d.ts +20 -0
- package/dist/completion/review-exit-progress.d.ts.map +1 -1
- package/dist/completion/review-exit-progress.js +28 -19
- package/dist/completion/review-exit-progress.js.map +1 -1
- package/dist/completion/review-exit-rehoming.d.ts +5 -0
- package/dist/completion/review-exit-rehoming.d.ts.map +1 -1
- package/dist/completion/review-exit-rehoming.js.map +1 -1
- package/dist/completion/review-exit-verdict-gate.d.ts +202 -0
- package/dist/completion/review-exit-verdict-gate.d.ts.map +1 -0
- package/dist/completion/review-exit-verdict-gate.js +228 -0
- package/dist/completion/review-exit-verdict-gate.js.map +1 -0
- package/dist/completion/review-next-step.d.ts +62 -0
- package/dist/completion/review-next-step.d.ts.map +1 -0
- package/dist/completion/review-next-step.js +63 -0
- package/dist/completion/review-next-step.js.map +1 -0
- package/dist/completion/session-hold-sweep-deps.d.ts +17 -0
- package/dist/completion/session-hold-sweep-deps.d.ts.map +1 -0
- package/dist/completion/session-hold-sweep-deps.js +89 -0
- package/dist/completion/session-hold-sweep-deps.js.map +1 -0
- package/dist/completion/session-hold.d.ts +180 -0
- package/dist/completion/session-hold.d.ts.map +1 -0
- package/dist/completion/session-hold.js +238 -0
- package/dist/completion/session-hold.js.map +1 -0
- package/dist/completion/state-cascade.d.ts +19 -0
- package/dist/completion/state-cascade.d.ts.map +1 -1
- package/dist/completion/state-cascade.js +85 -31
- package/dist/completion/state-cascade.js.map +1 -1
- package/dist/completion/team-lifecycle.d.ts +35 -2
- package/dist/completion/team-lifecycle.d.ts.map +1 -1
- package/dist/completion/team-lifecycle.js +165 -94
- package/dist/completion/team-lifecycle.js.map +1 -1
- package/dist/completion/team-phase.d.ts +27 -15
- package/dist/completion/team-phase.d.ts.map +1 -1
- package/dist/completion/team-phase.js +34 -15
- package/dist/completion/team-phase.js.map +1 -1
- package/dist/delivery/commit-verdict-hold.d.ts +55 -0
- package/dist/delivery/commit-verdict-hold.d.ts.map +1 -0
- package/dist/delivery/commit-verdict-hold.js +118 -0
- package/dist/delivery/commit-verdict-hold.js.map +1 -0
- package/dist/directive/directive-dispatch.d.ts.map +1 -1
- package/dist/directive/directive-dispatch.js +10 -3
- package/dist/directive/directive-dispatch.js.map +1 -1
- package/dist/directive/directive-executor.d.ts.map +1 -1
- package/dist/directive/directive-executor.js +1 -0
- package/dist/directive/directive-executor.js.map +1 -1
- package/dist/directive/directive-queue.d.ts.map +1 -1
- package/dist/directive/directive-queue.js +6 -1
- package/dist/directive/directive-queue.js.map +1 -1
- package/dist/directive/phase-sync.d.ts +29 -2
- package/dist/directive/phase-sync.d.ts.map +1 -1
- package/dist/directive/phase-sync.js +30 -6
- package/dist/directive/phase-sync.js.map +1 -1
- package/dist/drift/artifact-ref-shape.d.ts +34 -0
- package/dist/drift/artifact-ref-shape.d.ts.map +1 -0
- package/dist/drift/artifact-ref-shape.js +94 -0
- package/dist/drift/artifact-ref-shape.js.map +1 -0
- package/dist/drift/drift-eval-loop.d.ts +7 -0
- package/dist/drift/drift-eval-loop.d.ts.map +1 -1
- package/dist/drift/drift-eval-loop.js +34 -5
- package/dist/drift/drift-eval-loop.js.map +1 -1
- package/dist/drift/drift-evaluator.d.ts.map +1 -1
- package/dist/drift/drift-evaluator.js +8 -3
- package/dist/drift/drift-evaluator.js.map +1 -1
- package/dist/focus/awaiting-slot.d.ts +34 -0
- package/dist/focus/awaiting-slot.d.ts.map +1 -0
- package/dist/focus/awaiting-slot.js +26 -0
- package/dist/focus/awaiting-slot.js.map +1 -0
- package/dist/focus/focus-lifecycle.js +2 -2
- package/dist/focus/focus-lifecycle.js.map +1 -1
- package/dist/focus/focus-phase.d.ts.map +1 -1
- package/dist/focus/focus-phase.js +3 -1
- package/dist/focus/focus-phase.js.map +1 -1
- package/dist/focus/focus-spawn-decision.d.ts +62 -0
- package/dist/focus/focus-spawn-decision.d.ts.map +1 -0
- package/dist/focus/focus-spawn-decision.js +41 -0
- package/dist/focus/focus-spawn-decision.js.map +1 -0
- package/dist/focus/focus-team-state.d.ts.map +1 -1
- package/dist/focus/focus-team-state.js +1 -13
- package/dist/focus/focus-team-state.js.map +1 -1
- package/dist/focus/listener-spawn.d.ts +16 -55
- package/dist/focus/listener-spawn.d.ts.map +1 -1
- package/dist/focus/listener-spawn.js +102 -64
- package/dist/focus/listener-spawn.js.map +1 -1
- package/dist/focus/listener-state.d.ts.map +1 -1
- package/dist/focus/listener-state.js +4 -1
- package/dist/focus/listener-state.js.map +1 -1
- package/dist/focus/listener.d.ts +41 -2
- package/dist/focus/listener.d.ts.map +1 -1
- package/dist/focus/listener.js +135 -83
- package/dist/focus/listener.js.map +1 -1
- package/dist/focus/pending-spawn-pass-deps.d.ts +69 -0
- package/dist/focus/pending-spawn-pass-deps.d.ts.map +1 -0
- package/dist/focus/pending-spawn-pass-deps.js +34 -0
- package/dist/focus/pending-spawn-pass-deps.js.map +1 -0
- package/dist/focus/pending-spawn-review-next-step.d.ts +83 -0
- package/dist/focus/pending-spawn-review-next-step.d.ts.map +1 -0
- package/dist/focus/pending-spawn-review-next-step.js +325 -0
- package/dist/focus/pending-spawn-review-next-step.js.map +1 -0
- package/dist/focus/review-cycle-cap-hold.d.ts +132 -0
- package/dist/focus/review-cycle-cap-hold.d.ts.map +1 -0
- package/dist/focus/review-cycle-cap-hold.js +178 -0
- package/dist/focus/review-cycle-cap-hold.js.map +1 -0
- package/dist/focus/team-actionable-work.js +2 -2
- package/dist/focus/verify-open-issues.d.ts +22 -0
- package/dist/focus/verify-open-issues.d.ts.map +1 -1
- package/dist/focus/verify-open-issues.js +118 -57
- package/dist/focus/verify-open-issues.js.map +1 -1
- package/dist/focus/verify-routing-passes.d.ts +32 -0
- package/dist/focus/verify-routing-passes.d.ts.map +1 -0
- package/dist/focus/verify-routing-passes.js +18 -0
- package/dist/focus/verify-routing-passes.js.map +1 -0
- package/dist/git/index.d.ts.map +1 -1
- package/dist/git/index.js +9 -5
- package/dist/git/index.js.map +1 -1
- package/dist/merge/focus-merge.d.ts +16 -2
- package/dist/merge/focus-merge.d.ts.map +1 -1
- package/dist/merge/focus-merge.js +53 -30
- package/dist/merge/focus-merge.js.map +1 -1
- package/dist/merge/merge-back-loop.d.ts +5 -0
- package/dist/merge/merge-back-loop.d.ts.map +1 -1
- package/dist/merge/merge-back-loop.js +17 -8
- package/dist/merge/merge-back-loop.js.map +1 -1
- package/dist/merge/merge-gate-coverage.d.ts +94 -0
- package/dist/merge/merge-gate-coverage.d.ts.map +1 -0
- package/dist/merge/merge-gate-coverage.js +217 -0
- package/dist/merge/merge-gate-coverage.js.map +1 -0
- package/dist/prompt/focus-prompt-builder.d.ts.map +1 -1
- package/dist/prompt/focus-prompt-builder.js +6 -0
- package/dist/prompt/focus-prompt-builder.js.map +1 -1
- package/dist/prompt/prompt-listing.d.ts.map +1 -1
- package/dist/prompt/prompt-listing.js +8 -0
- package/dist/prompt/prompt-listing.js.map +1 -1
- package/dist/prompt/team-prompt-base.d.ts.map +1 -1
- package/dist/prompt/team-prompt-base.js +5 -1
- package/dist/prompt/team-prompt-base.js.map +1 -1
- package/dist/prompt-sections/execution-sections.d.ts.map +1 -1
- package/dist/prompt-sections/execution-sections.js +14 -39
- package/dist/prompt-sections/execution-sections.js.map +1 -1
- package/dist/prompt-sections/gate-ownership.d.ts +36 -0
- package/dist/prompt-sections/gate-ownership.d.ts.map +1 -0
- package/dist/prompt-sections/gate-ownership.js +68 -0
- package/dist/prompt-sections/gate-ownership.js.map +1 -0
- package/dist/prompt-sections/gate-verdict-section.d.ts +58 -0
- package/dist/prompt-sections/gate-verdict-section.d.ts.map +1 -0
- package/dist/prompt-sections/gate-verdict-section.js +88 -0
- package/dist/prompt-sections/gate-verdict-section.js.map +1 -0
- package/dist/prompt-sections/persona-sections.d.ts +10 -0
- package/dist/prompt-sections/persona-sections.d.ts.map +1 -1
- package/dist/prompt-sections/persona-sections.js +35 -11
- package/dist/prompt-sections/persona-sections.js.map +1 -1
- package/dist/prompt-sections/shared.js +1 -1
- package/dist/prompt-sections/shared.js.map +1 -1
- package/dist/queries/agent-resolvable-promotion.d.ts +6 -3
- package/dist/queries/agent-resolvable-promotion.d.ts.map +1 -1
- package/dist/queries/agent-resolvable-promotion.js +20 -9
- package/dist/queries/agent-resolvable-promotion.js.map +1 -1
- package/dist/queries/deliveries.d.ts +46 -4
- package/dist/queries/deliveries.d.ts.map +1 -1
- package/dist/queries/deliveries.js +69 -16
- package/dist/queries/deliveries.js.map +1 -1
- package/dist/queries/delivery-gate-state.d.ts +151 -1
- package/dist/queries/delivery-gate-state.d.ts.map +1 -1
- package/dist/queries/delivery-gate-state.js +95 -14
- package/dist/queries/delivery-gate-state.js.map +1 -1
- package/dist/queries/delivery-write-discipline.d.ts +65 -0
- package/dist/queries/delivery-write-discipline.d.ts.map +1 -0
- package/dist/queries/delivery-write-discipline.js +101 -0
- package/dist/queries/delivery-write-discipline.js.map +1 -0
- package/dist/queries/escalation-consumption.d.ts +11 -0
- package/dist/queries/escalation-consumption.d.ts.map +1 -1
- package/dist/queries/escalation-consumption.js +22 -0
- package/dist/queries/escalation-consumption.js.map +1 -1
- package/dist/queries/escalation-spool.d.ts +75 -0
- package/dist/queries/escalation-spool.d.ts.map +1 -0
- package/dist/queries/escalation-spool.js +232 -0
- package/dist/queries/escalation-spool.js.map +1 -0
- package/dist/queries/escalation-suppression.d.ts.map +1 -1
- package/dist/queries/escalation-suppression.js +2 -0
- package/dist/queries/escalation-suppression.js.map +1 -1
- package/dist/queries/escalations.js +1 -1
- package/dist/queries/filing-observation.d.ts.map +1 -1
- package/dist/queries/filing-observation.js +2 -0
- package/dist/queries/filing-observation.js.map +1 -1
- package/dist/queries/focus-discovery.d.ts +4 -4
- package/dist/queries/focus-discovery.d.ts.map +1 -1
- package/dist/queries/focus-discovery.js +1 -0
- package/dist/queries/focus-discovery.js.map +1 -1
- package/dist/queries/focus-review-approval.d.ts +84 -0
- package/dist/queries/focus-review-approval.d.ts.map +1 -0
- package/dist/queries/focus-review-approval.js +158 -0
- package/dist/queries/focus-review-approval.js.map +1 -0
- package/dist/queries/focuses.d.ts +6 -5
- package/dist/queries/focuses.d.ts.map +1 -1
- package/dist/queries/focuses.js +9 -5
- package/dist/queries/focuses.js.map +1 -1
- package/dist/queries/incident-correlation.d.ts +5 -4
- package/dist/queries/incident-correlation.d.ts.map +1 -1
- package/dist/queries/incident-correlation.js +11 -5
- package/dist/queries/incident-correlation.js.map +1 -1
- package/dist/queries/issues.d.ts.map +1 -1
- package/dist/queries/issues.js +2 -1
- package/dist/queries/issues.js.map +1 -1
- package/dist/queries/loop-refusal-observation.d.ts +64 -0
- package/dist/queries/loop-refusal-observation.d.ts.map +1 -0
- package/dist/queries/loop-refusal-observation.js +137 -0
- package/dist/queries/loop-refusal-observation.js.map +1 -0
- package/dist/queries/schemas.d.ts +9 -0
- package/dist/queries/schemas.d.ts.map +1 -1
- package/dist/queries/schemas.js +11 -3
- package/dist/queries/schemas.js.map +1 -1
- package/dist/queries/shared.js +1 -1
- package/dist/queries/verification.d.ts.map +1 -1
- package/dist/queries/verification.js +1 -15
- package/dist/queries/verification.js.map +1 -1
- package/dist/queries/wire-contract.generated.d.ts +3 -0
- package/dist/queries/wire-contract.generated.d.ts.map +1 -1
- package/dist/queries/wire-contract.generated.js +3 -0
- package/dist/queries/wire-contract.generated.js.map +1 -1
- package/dist/resolvers/assembly-engine.d.ts.map +1 -1
- package/dist/resolvers/assembly-engine.js +3 -1
- package/dist/resolvers/assembly-engine.js.map +1 -1
- package/dist/resolvers/git-diff-against-base.d.ts +5 -2
- package/dist/resolvers/git-diff-against-base.d.ts.map +1 -1
- package/dist/resolvers/git-diff-against-base.js +121 -39
- package/dist/resolvers/git-diff-against-base.js.map +1 -1
- package/dist/resolvers/shared/git-diff.d.ts +2 -0
- package/dist/resolvers/shared/git-diff.d.ts.map +1 -1
- package/dist/resolvers/shared/git-diff.js +5 -1
- package/dist/resolvers/shared/git-diff.js.map +1 -1
- package/dist/resolvers/shared/review-window-commits.d.ts +96 -0
- package/dist/resolvers/shared/review-window-commits.d.ts.map +1 -0
- package/dist/resolvers/shared/review-window-commits.js +262 -0
- package/dist/resolvers/shared/review-window-commits.js.map +1 -0
- package/dist/session/session-lineage.d.ts.map +1 -1
- package/dist/session/session-lineage.js +4 -1
- package/dist/session/session-lineage.js.map +1 -1
- package/dist/shell/fail-stop.d.ts +18 -0
- package/dist/shell/fail-stop.d.ts.map +1 -0
- package/dist/shell/fail-stop.js +53 -0
- package/dist/shell/fail-stop.js.map +1 -0
- package/dist/shell/graceful-shutdown.d.ts +48 -0
- package/dist/shell/graceful-shutdown.d.ts.map +1 -0
- package/dist/shell/graceful-shutdown.js +152 -0
- package/dist/shell/graceful-shutdown.js.map +1 -0
- package/dist/shell/heartbeat.d.ts.map +1 -1
- package/dist/shell/heartbeat.js +5 -4
- package/dist/shell/heartbeat.js.map +1 -1
- package/dist/shell/log.d.ts.map +1 -1
- package/dist/shell/log.js +4 -1
- package/dist/shell/log.js.map +1 -1
- package/dist/shell/stop-request.d.ts.map +1 -1
- package/dist/shell/stop-request.js +2 -1
- package/dist/shell/stop-request.js.map +1 -1
- package/dist/shell/unified-shell.d.ts.map +1 -1
- package/dist/shell/unified-shell.js +41 -114
- package/dist/shell/unified-shell.js.map +1 -1
- package/dist/spawn/lifecycle.d.ts +12 -0
- package/dist/spawn/lifecycle.d.ts.map +1 -1
- package/dist/spawn/lifecycle.js +25 -21
- package/dist/spawn/lifecycle.js.map +1 -1
- package/dist/spawn/prompt-assembly.d.ts +19 -1
- package/dist/spawn/prompt-assembly.d.ts.map +1 -1
- package/dist/spawn/prompt-assembly.js +70 -21
- package/dist/spawn/prompt-assembly.js.map +1 -1
- package/dist/spawn/review-hold-park.d.ts.map +1 -1
- package/dist/spawn/review-hold-park.js +18 -8
- package/dist/spawn/review-hold-park.js.map +1 -1
- package/dist/spawn/spawn-cooldown.d.ts.map +1 -1
- package/dist/spawn/spawn-cooldown.js +4 -0
- package/dist/spawn/spawn-cooldown.js.map +1 -1
- package/dist/spawn/spawn-decision.d.ts.map +1 -1
- package/dist/spawn/spawn-decision.js +2 -1
- package/dist/spawn/spawn-decision.js.map +1 -1
- package/dist/spawn/worktree-session.d.ts +6 -0
- package/dist/spawn/worktree-session.d.ts.map +1 -1
- package/dist/spawn/worktree-session.js +15 -2
- package/dist/spawn/worktree-session.js.map +1 -1
- package/dist/testing/fixtures/index.d.ts +10 -1
- package/dist/testing/fixtures/index.d.ts.map +1 -1
- package/dist/testing/fixtures/index.js +59 -1
- package/dist/testing/fixtures/index.js.map +1 -1
- package/dist/testing/fixtures/pending-spawn-world.d.ts +34 -0
- package/dist/testing/fixtures/pending-spawn-world.d.ts.map +1 -0
- package/dist/testing/fixtures/pending-spawn-world.js +92 -0
- package/dist/testing/fixtures/pending-spawn-world.js.map +1 -0
- package/dist/types/index.js +1 -1
- package/dist/verify/commit-gate-configured.d.ts +86 -0
- package/dist/verify/commit-gate-configured.d.ts.map +1 -0
- package/dist/verify/commit-gate-configured.js +234 -0
- package/dist/verify/commit-gate-configured.js.map +1 -0
- package/dist/verify/commit-verdict-record.d.ts +98 -0
- package/dist/verify/commit-verdict-record.d.ts.map +1 -0
- package/dist/verify/commit-verdict-record.js +297 -0
- package/dist/verify/commit-verdict-record.js.map +1 -0
- package/dist/verify/explicit-gate-outcome.d.ts +161 -0
- package/dist/verify/explicit-gate-outcome.d.ts.map +1 -0
- package/dist/verify/explicit-gate-outcome.js +215 -0
- package/dist/verify/explicit-gate-outcome.js.map +1 -0
- package/dist/verify/explicit-rearm.d.ts +27 -0
- package/dist/verify/explicit-rearm.d.ts.map +1 -0
- package/dist/verify/explicit-rearm.js +161 -0
- package/dist/verify/explicit-rearm.js.map +1 -0
- package/dist/verify/explicit-run-ledger.d.ts +26 -0
- package/dist/verify/explicit-run-ledger.d.ts.map +1 -0
- package/dist/verify/explicit-run-ledger.js +93 -0
- package/dist/verify/explicit-run-ledger.js.map +1 -0
- package/dist/verify/failure-signature.d.ts.map +1 -1
- package/dist/verify/failure-signature.js +5 -1
- package/dist/verify/failure-signature.js.map +1 -1
- package/dist/verify/gate-run-registry.d.ts +105 -0
- package/dist/verify/gate-run-registry.d.ts.map +1 -0
- package/dist/verify/gate-run-registry.js +111 -0
- package/dist/verify/gate-run-registry.js.map +1 -0
- package/dist/verify/gate-verdict-source.d.ts +68 -0
- package/dist/verify/gate-verdict-source.d.ts.map +1 -0
- package/dist/verify/gate-verdict-source.js +143 -0
- package/dist/verify/gate-verdict-source.js.map +1 -0
- package/dist/verify/judged-commit-gate.d.ts +11 -0
- package/dist/verify/judged-commit-gate.d.ts.map +1 -0
- package/dist/verify/judged-commit-gate.js +48 -0
- package/dist/verify/judged-commit-gate.js.map +1 -0
- package/dist/verify/rework-judgment.d.ts +58 -0
- package/dist/verify/rework-judgment.d.ts.map +1 -0
- package/dist/verify/rework-judgment.js +54 -0
- package/dist/verify/rework-judgment.js.map +1 -0
- package/dist/verify/verification-attribution.d.ts +105 -0
- package/dist/verify/verification-attribution.d.ts.map +1 -0
- package/dist/verify/verification-attribution.js +322 -0
- package/dist/verify/verification-attribution.js.map +1 -0
- package/dist/verify/verification-baseline-run.d.ts +123 -0
- package/dist/verify/verification-baseline-run.d.ts.map +1 -0
- package/dist/verify/verification-baseline-run.js +386 -0
- package/dist/verify/verification-baseline-run.js.map +1 -0
- package/dist/verify/verification-baseline.d.ts +79 -33
- package/dist/verify/verification-baseline.d.ts.map +1 -1
- package/dist/verify/verification-baseline.js +99 -106
- package/dist/verify/verification-baseline.js.map +1 -1
- package/dist/verify/verification-checkout.d.ts +13 -0
- package/dist/verify/verification-checkout.d.ts.map +1 -1
- package/dist/verify/verification-checkout.js +39 -2
- package/dist/verify/verification-checkout.js.map +1 -1
- package/dist/verify/verification-commit-sharing.d.ts +84 -0
- package/dist/verify/verification-commit-sharing.d.ts.map +1 -0
- package/dist/verify/verification-commit-sharing.js +416 -0
- package/dist/verify/verification-commit-sharing.js.map +1 -0
- package/dist/verify/verification-config.d.ts.map +1 -1
- package/dist/verify/verification-config.js +12 -2
- package/dist/verify/verification-config.js.map +1 -1
- package/dist/verify/verification-default-on.d.ts +27 -11
- package/dist/verify/verification-default-on.d.ts.map +1 -1
- package/dist/verify/verification-default-on.js +159 -29
- package/dist/verify/verification-default-on.js.map +1 -1
- package/dist/verify/verification-deps-default.d.ts.map +1 -1
- package/dist/verify/verification-deps-default.js +49 -42
- package/dist/verify/verification-deps-default.js.map +1 -1
- package/dist/verify/verification-deps.d.ts +69 -4
- package/dist/verify/verification-deps.d.ts.map +1 -1
- package/dist/verify/verification-deterministic.d.ts +15 -2
- package/dist/verify/verification-deterministic.d.ts.map +1 -1
- package/dist/verify/verification-deterministic.js +12 -3
- package/dist/verify/verification-deterministic.js.map +1 -1
- package/dist/verify/verification-diagnostics.d.ts +16 -0
- package/dist/verify/verification-diagnostics.d.ts.map +1 -0
- package/dist/verify/verification-diagnostics.js +219 -0
- package/dist/verify/verification-diagnostics.js.map +1 -0
- package/dist/verify/verification-engine.d.ts +12 -8
- package/dist/verify/verification-engine.d.ts.map +1 -1
- package/dist/verify/verification-engine.js +110 -92
- package/dist/verify/verification-engine.js.map +1 -1
- package/dist/verify/verification-evidence-unavailable-feedback.d.ts +2 -1
- package/dist/verify/verification-evidence-unavailable-feedback.d.ts.map +1 -1
- package/dist/verify/verification-evidence-unavailable-feedback.js +14 -4
- package/dist/verify/verification-evidence-unavailable-feedback.js.map +1 -1
- package/dist/verify/verification-failure-parser.d.ts +37 -3
- package/dist/verify/verification-failure-parser.d.ts.map +1 -1
- package/dist/verify/verification-failure-parser.js +66 -3
- package/dist/verify/verification-failure-parser.js.map +1 -1
- package/dist/verify/verification-feedback.d.ts +21 -34
- package/dist/verify/verification-feedback.d.ts.map +1 -1
- package/dist/verify/verification-feedback.js +37 -88
- package/dist/verify/verification-feedback.js.map +1 -1
- package/dist/verify/verification-gate-stages.d.ts +110 -0
- package/dist/verify/verification-gate-stages.d.ts.map +1 -0
- package/dist/verify/verification-gate-stages.js +179 -0
- package/dist/verify/verification-gate-stages.js.map +1 -0
- package/dist/verify/verification-history-reset.d.ts +61 -0
- package/dist/verify/verification-history-reset.d.ts.map +1 -0
- package/dist/verify/verification-history-reset.js +90 -0
- package/dist/verify/verification-history-reset.js.map +1 -0
- package/dist/verify/verification-manifest.d.ts.map +1 -1
- package/dist/verify/verification-manifest.js +2 -1
- package/dist/verify/verification-manifest.js.map +1 -1
- package/dist/verify/verification-rework-messages.d.ts +19 -0
- package/dist/verify/verification-rework-messages.d.ts.map +1 -0
- package/dist/verify/verification-rework-messages.js +52 -0
- package/dist/verify/verification-rework-messages.js.map +1 -0
- package/dist/worktree/install-inputs.d.ts +89 -0
- package/dist/worktree/install-inputs.d.ts.map +1 -0
- package/dist/worktree/install-inputs.js +625 -0
- package/dist/worktree/install-inputs.js.map +1 -0
- package/dist/worktree/install-script-effects.d.ts +30 -0
- package/dist/worktree/install-script-effects.d.ts.map +1 -0
- package/dist/worktree/install-script-effects.js +524 -0
- package/dist/worktree/install-script-effects.js.map +1 -0
- package/dist/worktree/install-script-tokens.d.ts +57 -0
- package/dist/worktree/install-script-tokens.d.ts.map +1 -0
- package/dist/worktree/install-script-tokens.js +299 -0
- package/dist/worktree/install-script-tokens.js.map +1 -0
- package/dist/worktree/provision.d.ts +27 -4
- package/dist/worktree/provision.d.ts.map +1 -1
- package/dist/worktree/provision.js +46 -7
- package/dist/worktree/provision.js.map +1 -1
- package/dist/worktree/safety.d.ts +11 -0
- package/dist/worktree/safety.d.ts.map +1 -1
- package/dist/worktree/safety.js +20 -3
- package/dist/worktree/safety.js.map +1 -1
- package/dist/worktree/verify-interlock.d.ts.map +1 -1
- package/dist/worktree/verify-interlock.js +3 -1
- package/dist/worktree/verify-interlock.js.map +1 -1
- package/dist/worktree/worktree-package-provisioning.d.ts +75 -0
- package/dist/worktree/worktree-package-provisioning.d.ts.map +1 -0
- package/dist/worktree/worktree-package-provisioning.js +362 -0
- package/dist/worktree/worktree-package-provisioning.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,474 @@
|
|
|
1
|
+
// PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
|
|
2
|
+
// Pinned by: packages/daemon/src/completion/review-exit-foreign-findings.test.ts,
|
|
3
|
+
// packages/daemon/src/completion/review-exit-foreign-focus-regression.test.ts
|
|
4
|
+
// PINNED-BY-END
|
|
5
|
+
/**
|
|
6
|
+
* Scope a review exit's evidence to the reviewing focus's OWN work: a blocking
|
|
7
|
+
* finding about another focus's commit is routed to where that focus's work will
|
|
8
|
+
* pick it up, and never routes this focus back to coding.
|
|
9
|
+
*
|
|
10
|
+
* The failure this closes (2026-09-15): a focus branch merged integration, so its
|
|
11
|
+
* incremental review range carried a sibling focus's commits. The review judged
|
|
12
|
+
* them, filed their defects on THIS focus's in-verify delivery (the persona then
|
|
13
|
+
* required it), and the exit routed that delivery to verify_failed -- ten
|
|
14
|
+
* gaps_found cycles with every acceptance criterion met, while the sibling kept
|
|
15
|
+
* changing the shared code.
|
|
16
|
+
*
|
|
17
|
+
* The review INPUT is already scoped (the git.diff_against_base resolver judges a
|
|
18
|
+
* foreign-bearing window on the focus's own commit patches). This is the
|
|
19
|
+
* deterministic backstop on the OUTPUT; it does not trust the reviewer to follow
|
|
20
|
+
* the persona's foreign-commit filing rule:
|
|
21
|
+
* - A blocking review-filed finding on this focus is FOREIGN when every commit
|
|
22
|
+
* sha it names (title + description, full or short hex) that resolves in the
|
|
23
|
+
* review window (prior watermark..spawn tip) is attributed by its
|
|
24
|
+
* Telora-Delivery trailer to another focus's delivery. Any resolved own
|
|
25
|
+
* commit keeps it OWN.
|
|
26
|
+
* - A finding naming NO resolvable sha is attributed by the file:line references
|
|
27
|
+
* it names (`path/file.ts:12`, `file.ts:12-30`, `file.ts L12`): `git blame` at
|
|
28
|
+
* the reviewed tip, for exactly those lines. It is FOREIGN only when every
|
|
29
|
+
* referenced line blames to a foreign-attributed commit inside the window; a
|
|
30
|
+
* line that blames to an own commit or to a commit outside the window, or that
|
|
31
|
+
* cannot be blamed (missing file, bad range, git error), keeps it OWN. No sha
|
|
32
|
+
* and no file:line -> OWN (today's routing).
|
|
33
|
+
* - A foreign finding is moved to its owner home (resolveOwnerHome) and leaves
|
|
34
|
+
* this focus's target sets once the move lands; it is never re-homed onto this
|
|
35
|
+
* focus's in-verify delivery.
|
|
36
|
+
* - A blocking finding the review filed DIRECTLY on another focus's delivery
|
|
37
|
+
* (a created id outside this focus's issues) is foreign by location: once it
|
|
38
|
+
* sits on its owner home it counts as a resolved finding, so an all-foreign
|
|
39
|
+
* gaps_found verdict lets this focus converge on merit instead of reading
|
|
40
|
+
* 'unresolvable'.
|
|
41
|
+
* - When the owning focus has no routable delivery, or is not armed, the issue
|
|
42
|
+
* stays open where it lands and ONE agent_resolvable observation (deduped per
|
|
43
|
+
* owning delivery) anchors it to the owning focus/delivery, so the promotion
|
|
44
|
+
* sweep hands it to the routing decider. Nothing is dropped or closed.
|
|
45
|
+
*
|
|
46
|
+
* Complete-evidence invariant: only a POSITIVELY foreign finding that is RELOCATED
|
|
47
|
+
* leaves the population. An owner that cannot be resolved keeps the finding OWN; a
|
|
48
|
+
* created id that cannot be located keeps an all-foreign verdict 'unresolvable'
|
|
49
|
+
* (hold). A move that fails (throws, or no rehome seam) never lets the reviewing
|
|
50
|
+
* focus converge on that finding's account: an on-focus finding stays in this
|
|
51
|
+
* focus's evidence, an off-focus one counts as unresolved (hold), the next exit
|
|
52
|
+
* retries the move, and ONE agent_resolvable observation names the stranded issue
|
|
53
|
+
* so it is durable even if this focus later converges for another reason.
|
|
54
|
+
*
|
|
55
|
+
* Split from review-exit-phase.ts (file-size limit); sibling of
|
|
56
|
+
* review-exit-rehoming.ts. Its deps are structural (no import of
|
|
57
|
+
* review-exit-deps.ts), so the completion family stays acyclic.
|
|
58
|
+
*
|
|
59
|
+
* @module completion/review-exit-foreign-findings
|
|
60
|
+
*/
|
|
61
|
+
import { DELIVERY_STATUS, ESCALATION_KINDS, ESCALATION_REASONS } from '@telora/daemon-core';
|
|
62
|
+
import { DISPOSITION_AGENT_RESOLVABLE } from '../queries/escalation-dispositions.js';
|
|
63
|
+
import { OPEN_ISSUE_STATUSES } from '../shell/constants.js';
|
|
64
|
+
import { partitionReviewWindowCommits, } from '../resolvers/shared/review-window-commits.js';
|
|
65
|
+
import { isLowPriority } from './review-defect-detector.js';
|
|
66
|
+
import { resolveAttributedDeliveryIds } from './review-exit-attribution.js';
|
|
67
|
+
import { createLogger } from '../shell/log.js';
|
|
68
|
+
const log = createLogger({ module: 'focus-executor' });
|
|
69
|
+
/**
|
|
70
|
+
* The escalation kind the unroutable-owner observation files under. An existing
|
|
71
|
+
* kind the agent_escalations CHECK accepts (no migration): the finding is a review
|
|
72
|
+
* gap the owning focus's loop cannot converge on because nothing routes it.
|
|
73
|
+
*/
|
|
74
|
+
export const FOREIGN_FINDING_OBSERVATION_KIND = ESCALATION_KINDS.REVIEW_NONCONVERGENT;
|
|
75
|
+
// ── Pure: which commits a finding names ───────────────────────────────────
|
|
76
|
+
const UUID_RE = /[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/gi;
|
|
77
|
+
const SHA_TOKEN_RE = /\b[0-9a-f]{7,40}\b/gi;
|
|
78
|
+
/**
|
|
79
|
+
* Pure: the hex tokens (7-40 chars, lowercased, first-seen order, deduped) a
|
|
80
|
+
* finding's text names as commit shas. UUIDs are stripped first so a delivery or
|
|
81
|
+
* issue id is never read as a sha. A token is only a CANDIDATE: it counts once it
|
|
82
|
+
* resolves to exactly one commit in the review window.
|
|
83
|
+
*/
|
|
84
|
+
export function extractNamedCommitShas(text) {
|
|
85
|
+
const seen = new Set();
|
|
86
|
+
const out = [];
|
|
87
|
+
for (const m of (text ?? '').replace(UUID_RE, ' ').matchAll(SHA_TOKEN_RE)) {
|
|
88
|
+
const token = m[0].toLowerCase();
|
|
89
|
+
if (seen.has(token))
|
|
90
|
+
continue;
|
|
91
|
+
seen.add(token);
|
|
92
|
+
out.push(token);
|
|
93
|
+
}
|
|
94
|
+
return out;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Pure: classify a finding's text against a partitioned review window. Each named
|
|
98
|
+
* token resolves to the ONE window commit whose sha it prefixes (an ambiguous or
|
|
99
|
+
* unmatched token resolves to nothing). No resolved commit -> own; any resolved
|
|
100
|
+
* own commit -> own; every resolved commit foreign -> foreign, owned by the
|
|
101
|
+
* delivery of the first one named.
|
|
102
|
+
*/
|
|
103
|
+
export function classifyFindingByCommits(text, partition) {
|
|
104
|
+
const window = [
|
|
105
|
+
...partition.own.map(c => ({ sha: c.sha.toLowerCase(), deliveryId: null })),
|
|
106
|
+
...partition.foreign.map(c => ({ sha: c.sha.toLowerCase(), deliveryId: c.deliveryId })),
|
|
107
|
+
];
|
|
108
|
+
const resolved = [];
|
|
109
|
+
for (const token of extractNamedCommitShas(text)) {
|
|
110
|
+
const matches = window.filter(c => c.sha.startsWith(token));
|
|
111
|
+
const hit = matches.length === 1 ? matches[0] : undefined;
|
|
112
|
+
if (hit && !resolved.some(r => r.sha === hit.sha))
|
|
113
|
+
resolved.push(hit);
|
|
114
|
+
}
|
|
115
|
+
if (resolved.length === 0)
|
|
116
|
+
return { kind: 'own', reason: 'no_resolvable_sha' };
|
|
117
|
+
const first = resolved[0];
|
|
118
|
+
if (!first || resolved.some(r => r.deliveryId === null))
|
|
119
|
+
return { kind: 'own', reason: 'names_own_commit' };
|
|
120
|
+
return { kind: 'foreign', owningDeliveryId: first.deliveryId ?? '', shas: resolved.map(r => r.sha) };
|
|
121
|
+
}
|
|
122
|
+
/** The most file:line references one finding is blamed for; past it the finding stays own. */
|
|
123
|
+
export const MAX_FINDING_LINE_REFS = 20;
|
|
124
|
+
/** The widest line range one reference is blamed for; a wider one is unblameable (own). */
|
|
125
|
+
export const MAX_FINDING_LINE_SPAN = 400;
|
|
126
|
+
// A repo-relative path with a letter-led extension, then `:12`, `:L12`, `#L12`, ` L12` or
|
|
127
|
+
// ` line(s) 12`, optionally `-30` / `-L30`. A path may not begin right after a word char,
|
|
128
|
+
// `/`, `.`, `@` or `-`, so a URL host (`https://host.com:443`) or the tail of an absolute
|
|
129
|
+
// path never matches, and a version or clock (`1.2:3`, `11:40`) has no extension to match.
|
|
130
|
+
const FILE_LINE_RE = /(?<![\w/.@-])((?:[\w@.-]+\/)*[\w@-][\w@.-]*\.[A-Za-z][A-Za-z0-9]*)(?::L?|#L|\s+L|\s+lines?\s+)(\d+)(?:\s*-\s*L?(\d+))?/g;
|
|
131
|
+
/**
|
|
132
|
+
* Pure: the file:line references a finding's text names, first-seen order, deduped.
|
|
133
|
+
* A malformed range (end before start, line 0) is still returned: it is a named
|
|
134
|
+
* reference that cannot be blamed, which keeps the finding own.
|
|
135
|
+
*/
|
|
136
|
+
export function parseFileLineRefs(text) {
|
|
137
|
+
const seen = new Set();
|
|
138
|
+
const out = [];
|
|
139
|
+
for (const m of (text ?? '').matchAll(FILE_LINE_RE)) {
|
|
140
|
+
const file = m[1] ?? '';
|
|
141
|
+
const start = Number.parseInt(m[2] ?? '', 10);
|
|
142
|
+
const end = m[3] !== undefined ? Number.parseInt(m[3], 10) : start;
|
|
143
|
+
const key = `${file}:${start}-${end}`;
|
|
144
|
+
if (file === '' || !Number.isFinite(start) || !Number.isFinite(end) || seen.has(key))
|
|
145
|
+
continue;
|
|
146
|
+
seen.add(key);
|
|
147
|
+
out.push({ file, start, end });
|
|
148
|
+
}
|
|
149
|
+
return out;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Pure (over the supplied blame read): classify a finding that names no resolvable
|
|
153
|
+
* sha by the lines it names. Foreign only when EVERY referenced line blames to a
|
|
154
|
+
* foreign commit of the window, owned by the first such line's delivery. A line
|
|
155
|
+
* blaming to an own commit or to a commit outside the window -> own; a reference
|
|
156
|
+
* that cannot be blamed (null read, a partial read, a malformed or too-wide range,
|
|
157
|
+
* too many references) -> own. No reference -> own (no attributable reference).
|
|
158
|
+
*/
|
|
159
|
+
export function classifyFindingByLines(refs, blame, partition) {
|
|
160
|
+
if (refs.length === 0)
|
|
161
|
+
return { kind: 'own', reason: 'no_resolvable_sha' };
|
|
162
|
+
if (refs.length > MAX_FINDING_LINE_REFS)
|
|
163
|
+
return { kind: 'own', reason: 'unblameable_line' };
|
|
164
|
+
const foreignDelivery = new Map(partition.foreign.map(c => [c.sha.toLowerCase(), c.deliveryId]));
|
|
165
|
+
const shas = [];
|
|
166
|
+
let owningDeliveryId;
|
|
167
|
+
for (const ref of refs) {
|
|
168
|
+
const lines = ref.end - ref.start + 1;
|
|
169
|
+
if (ref.start < 1 || lines < 1 || lines > MAX_FINDING_LINE_SPAN)
|
|
170
|
+
return { kind: 'own', reason: 'unblameable_line' };
|
|
171
|
+
const blamed = blame(ref);
|
|
172
|
+
if (!blamed || blamed.length !== lines)
|
|
173
|
+
return { kind: 'own', reason: 'unblameable_line' };
|
|
174
|
+
for (const raw of blamed) {
|
|
175
|
+
const sha = raw.toLowerCase();
|
|
176
|
+
const deliveryId = foreignDelivery.get(sha);
|
|
177
|
+
if (deliveryId === undefined)
|
|
178
|
+
return { kind: 'own', reason: 'line_not_foreign' };
|
|
179
|
+
if (owningDeliveryId === undefined)
|
|
180
|
+
owningDeliveryId = deliveryId;
|
|
181
|
+
if (!shas.includes(sha))
|
|
182
|
+
shas.push(sha);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
return { kind: 'foreign', owningDeliveryId: owningDeliveryId ?? '', shas };
|
|
186
|
+
}
|
|
187
|
+
const isTerminal = (status) => status === DELIVERY_STATUS.DONE || status === DELIVERY_STATUS.CANCELLED;
|
|
188
|
+
/**
|
|
189
|
+
* Pure: resolve a foreign finding's home on its owning focus. The owning delivery
|
|
190
|
+
* when it is non-terminal; when it is done/cancelled, the owning focus's single
|
|
191
|
+
* in-verify delivery, else its first non-terminal delivery by priority rank; when
|
|
192
|
+
* none exists, the owning delivery itself with an observation. An un-armed owning
|
|
193
|
+
* focus also observes (no coding spawn will reach the finding). Null when the
|
|
194
|
+
* owning delivery is not among its focus's deliveries (the owner is unresolved).
|
|
195
|
+
*/
|
|
196
|
+
export function resolveOwnerHome(input) {
|
|
197
|
+
const owning = input.ownerFocusDeliveries.find(d => d.id === input.owningDeliveryId);
|
|
198
|
+
if (!owning)
|
|
199
|
+
return null;
|
|
200
|
+
const unarmed = !input.ownerFocusArmed;
|
|
201
|
+
if (!isTerminal(owning.executionStatus)) {
|
|
202
|
+
return { deliveryId: owning.id, observe: unarmed, reason: 'the owning delivery is not terminal' };
|
|
203
|
+
}
|
|
204
|
+
const open = input.ownerFocusDeliveries.filter(d => !isTerminal(d.executionStatus));
|
|
205
|
+
const inVerify = open.filter(d => d.executionStatus === DELIVERY_STATUS.VERIFY);
|
|
206
|
+
const onlyVerify = inVerify.length === 1 ? inVerify[0] : undefined;
|
|
207
|
+
if (onlyVerify) {
|
|
208
|
+
return { deliveryId: onlyVerify.id, observe: unarmed, reason: 'the owning delivery is terminal; its focus\'s single in-verify delivery' };
|
|
209
|
+
}
|
|
210
|
+
const firstOpen = [...open].sort((a, b) => a.priorityRank - b.priorityRank)[0];
|
|
211
|
+
if (firstOpen) {
|
|
212
|
+
return { deliveryId: firstOpen.id, observe: unarmed, reason: 'the owning delivery is terminal; its focus\'s first non-terminal delivery' };
|
|
213
|
+
}
|
|
214
|
+
return { deliveryId: owning.id, observe: true, reason: 'the owning focus has no non-terminal delivery' };
|
|
215
|
+
}
|
|
216
|
+
/** Pure: a focus a coding spawn can reach -- in the active set, role-assigned, not operator-stopped. */
|
|
217
|
+
export function isFocusArmed(row) {
|
|
218
|
+
return !!row && row.assigned_agent_role_id != null && row.operator_stopped_at == null;
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Pure: re-derive the target sets without the relocated findings. With nothing
|
|
222
|
+
* relocated the gathered evidence passes through unchanged. A verdict resolves
|
|
223
|
+
* when an own blocking finding is attributed (today's rule) OR when relocated
|
|
224
|
+
* foreign findings account for it and every created id was located and moved home.
|
|
225
|
+
* hasBlockingIssueEvidence is never lowered, and a foreign finding raises it: the
|
|
226
|
+
* review DID file a blocking gap, so the gaps-without-issue inconsistency must not
|
|
227
|
+
* fire for a foreign one (filed off this focus, or stranded by a failed move).
|
|
228
|
+
*/
|
|
229
|
+
export function scopeEvidence(evidence, routing) {
|
|
230
|
+
const { relocatedIds, foreignFindingIds } = routing;
|
|
231
|
+
if (relocatedIds.size === 0) {
|
|
232
|
+
return {
|
|
233
|
+
attributedDeliveryIds: evidence.attributedDeliveryIds,
|
|
234
|
+
reviewFiledTargetDeliveryIds: evidence.reviewFiledTargetDeliveryIds,
|
|
235
|
+
openBlockingFindings: evidence.openBlockingFindings,
|
|
236
|
+
hasBlockingIssueEvidence: evidence.hasBlockingIssueEvidence || foreignFindingIds.size > 0,
|
|
237
|
+
attributionResolvable: evidence.attributedDeliveryIds.size > 0,
|
|
238
|
+
foreignFindingIds,
|
|
239
|
+
relocatedFindingIds: relocatedIds,
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
const kept = evidence.focusIssues.filter(i => !relocatedIds.has(i.id));
|
|
243
|
+
const attributedDeliveryIds = resolveAttributedDeliveryIds(kept, new Set(evidence.reviewCreatedIssueIds));
|
|
244
|
+
return {
|
|
245
|
+
attributedDeliveryIds,
|
|
246
|
+
reviewFiledTargetDeliveryIds: resolveAttributedDeliveryIds(kept, evidence.reviewFiledIds),
|
|
247
|
+
openBlockingFindings: evidence.openBlockingFindings.filter(f => !relocatedIds.has(f.id)),
|
|
248
|
+
hasBlockingIssueEvidence: true,
|
|
249
|
+
attributionResolvable: attributedDeliveryIds.size > 0 || routing.unresolvedCreatedCount === 0,
|
|
250
|
+
foreignFindingIds,
|
|
251
|
+
relocatedFindingIds: relocatedIds,
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
const findingText = (i) => `${i.title}\n${i.description ?? ''}`;
|
|
255
|
+
/** Per-exit memoized reads of the owning foci. */
|
|
256
|
+
function makeOwnerReads(deps, args) {
|
|
257
|
+
const focusOf = new Map();
|
|
258
|
+
const deliveriesOf = new Map();
|
|
259
|
+
const issuesOf = new Map();
|
|
260
|
+
const memo = (m, key, read) => {
|
|
261
|
+
let p = m.get(key);
|
|
262
|
+
if (!p) {
|
|
263
|
+
p = read();
|
|
264
|
+
m.set(key, p);
|
|
265
|
+
}
|
|
266
|
+
return p;
|
|
267
|
+
};
|
|
268
|
+
const routeFor = async (owningDeliveryId, knownFocusId) => {
|
|
269
|
+
const ownerFocusId = knownFocusId ??
|
|
270
|
+
(deps.resolveDeliveryFocusId ? await memo(focusOf, owningDeliveryId, () => deps.resolveDeliveryFocusId(owningDeliveryId)) : null);
|
|
271
|
+
if (!ownerFocusId || ownerFocusId === args.focusId)
|
|
272
|
+
return null;
|
|
273
|
+
const ownerFocusArmed = isFocusArmed(args.focuses.find(f => f.focus_id === ownerFocusId));
|
|
274
|
+
const home = resolveOwnerHome({
|
|
275
|
+
owningDeliveryId,
|
|
276
|
+
ownerFocusDeliveries: await memo(deliveriesOf, ownerFocusId, () => deps.getFocusDeliveries(ownerFocusId)),
|
|
277
|
+
ownerFocusArmed,
|
|
278
|
+
});
|
|
279
|
+
return home ? { ownerFocusId, ownerFocusArmed, home } : null;
|
|
280
|
+
};
|
|
281
|
+
const issuesOfFocus = (focusId) => memo(issuesOf, focusId, () => deps.getFocusIssues(focusId));
|
|
282
|
+
return { routeFor, issuesOfFocus };
|
|
283
|
+
}
|
|
284
|
+
/** Move a foreign finding to its owner home. True only when the issue is now there. */
|
|
285
|
+
async function moveToOwnerHome(deps, args, finding, route, shas) {
|
|
286
|
+
if (finding.deliveryId === route.home.deliveryId)
|
|
287
|
+
return true;
|
|
288
|
+
if (!deps.rehomeIssueToDelivery)
|
|
289
|
+
return false;
|
|
290
|
+
const named = shas.length > 0 ? `names commit(s) ${shas.map(s => s.slice(0, 12)).join(', ')} attributed to another focus; it ` : '';
|
|
291
|
+
const note = `\n\n[re-homed by review-exit of focus "${args.focusName}": this finding ${named}was moved from delivery ` +
|
|
292
|
+
`${finding.deliveryId ?? '<none>'} to delivery ${route.home.deliveryId} of the owning focus (${route.home.reason}).]`;
|
|
293
|
+
try {
|
|
294
|
+
await deps.rehomeIssueToDelivery(finding.id, route.home.deliveryId, `${finding.description ?? ''}${note}`);
|
|
295
|
+
log.info(`[focus-executor] "${args.focusName}": foreign review finding ${finding.key} moved from delivery ` +
|
|
296
|
+
`${finding.deliveryId} to ${route.home.deliveryId} of focus ${route.ownerFocusId} (${route.home.reason}).`);
|
|
297
|
+
return true;
|
|
298
|
+
}
|
|
299
|
+
catch (err) {
|
|
300
|
+
log.warn(`[focus-executor] "${args.focusName}": failed to move foreign finding ${finding.key}: ${err.message}`);
|
|
301
|
+
return false;
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* File ONE agent_resolvable observation per owning delivery (createEscalation
|
|
306
|
+
* chokepoint): nothing on the owning focus routes the finding -- it has no routable
|
|
307
|
+
* delivery or is un-armed, or (`moveFailed`) the move to its routable delivery
|
|
308
|
+
* failed, so the issue is stranded where it sits.
|
|
309
|
+
*/
|
|
310
|
+
async function observeForeignFinding(deps, args, finding, route, observed, moveFailed) {
|
|
311
|
+
const deliveryId = route.home.deliveryId;
|
|
312
|
+
if (observed.has(deliveryId))
|
|
313
|
+
return;
|
|
314
|
+
observed.add(deliveryId);
|
|
315
|
+
try {
|
|
316
|
+
if (deps.hasOpenEscalationForDelivery && await deps.hasOpenEscalationForDelivery(deliveryId, FOREIGN_FINDING_OBSERVATION_KIND))
|
|
317
|
+
return;
|
|
318
|
+
}
|
|
319
|
+
catch (err) {
|
|
320
|
+
log.warn(`[focus-executor] foreign-finding observation dedup read failed for delivery ${deliveryId}: ${err.message}`);
|
|
321
|
+
}
|
|
322
|
+
const unarmed = route.ownerFocusArmed ? '' : ' (the owning focus is not armed)';
|
|
323
|
+
const found = `Review of focus "${args.focusName}" found blocking finding ${finding.key} ("${finding.title}") in work owned by `;
|
|
324
|
+
try {
|
|
325
|
+
await deps.createEscalation({
|
|
326
|
+
organizationId: args.organizationId,
|
|
327
|
+
sessionId: args.sessionId,
|
|
328
|
+
issueId: finding.id,
|
|
329
|
+
reasonType: ESCALATION_REASONS.DECISION_NEEDED,
|
|
330
|
+
disposition: DISPOSITION_AGENT_RESOLVABLE,
|
|
331
|
+
escalationKind: FOREIGN_FINDING_OBSERVATION_KIND,
|
|
332
|
+
anchor: { deliveryId, focusId: route.ownerFocusId },
|
|
333
|
+
description: moveFailed
|
|
334
|
+
? `${found}focus ${route.ownerFocusId}, but could not move it from delivery ${finding.deliveryId ?? '<none>'} to ` +
|
|
335
|
+
`delivery ${deliveryId} (${route.home.reason})${unarmed}, so it is stranded where the owning focus's work ` +
|
|
336
|
+
'does not route it. The reviewing focus holds on it, and its next review exit retries the move.'
|
|
337
|
+
: `${found}delivery ${deliveryId}, and nothing on the owning focus will route it: ${route.home.reason}${unarmed}.`,
|
|
338
|
+
whatWasTried: moveFailed
|
|
339
|
+
? 'The review exit scoped its verdict to its own focus\'s commits and tried to move this finding to the owning ' +
|
|
340
|
+
'focus\'s routable delivery; the move failed.'
|
|
341
|
+
: 'The review exit scoped its verdict to its own focus\'s commits and left this finding open on the owning ' +
|
|
342
|
+
'focus instead of routing the reviewing focus back to coding for it.',
|
|
343
|
+
helpNeeded: moveFailed
|
|
344
|
+
? `Move issue ${finding.key} to delivery ${deliveryId} (or another routable delivery of the owning focus) so its work routes it.`
|
|
345
|
+
: 'Decide where this finding is worked: re-open or queue a delivery on the owning focus, or route it to a focus that is running.',
|
|
346
|
+
metadata: {
|
|
347
|
+
issue_id: finding.id, reviewing_focus_id: args.focusId, owning_focus_id: route.ownerFocusId, reason: route.home.reason,
|
|
348
|
+
...(moveFailed ? { rehome_failed: true, stranded_on_delivery_id: finding.deliveryId ?? null } : {}),
|
|
349
|
+
},
|
|
350
|
+
});
|
|
351
|
+
}
|
|
352
|
+
catch (err) {
|
|
353
|
+
log.warn(`[focus-executor] foreign-finding observation failed for delivery ${deliveryId}: ${err.message}`);
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
/** A finding's scope: by the commits it names, else (naming none) by blame of the lines it names. */
|
|
357
|
+
function scopeOfFinding(deps, args, issue, partition, tip) {
|
|
358
|
+
const byCommits = classifyFindingByCommits(findingText(issue), partition);
|
|
359
|
+
const blameLines = deps.blameLines;
|
|
360
|
+
if (byCommits.kind !== 'own' || byCommits.reason !== 'no_resolvable_sha' || !blameLines)
|
|
361
|
+
return byCommits;
|
|
362
|
+
return classifyFindingByLines(parseFileLineRefs(findingText(issue)), (ref) => {
|
|
363
|
+
try {
|
|
364
|
+
return blameLines(args.focusId, tip, ref.file, ref.start, ref.end);
|
|
365
|
+
}
|
|
366
|
+
catch (err) {
|
|
367
|
+
log.warn(`[focus-executor] "${args.focusName}": blame of ${ref.file}:${ref.start}-${ref.end} failed: ${err.message}`);
|
|
368
|
+
return null;
|
|
369
|
+
}
|
|
370
|
+
}, partition);
|
|
371
|
+
}
|
|
372
|
+
/** Foreign findings still ON this focus: classified by the commits, else the lines, they name. */
|
|
373
|
+
async function routeOnFocusFindings(deps, args, reads, out) {
|
|
374
|
+
const base = args.reviewPriorWatermark !== undefined ? args.reviewPriorWatermark : (args.current.reviewed_through_sha ?? null);
|
|
375
|
+
const tip = args.reviewSpawnTip ?? args.currentBranchTip ?? null;
|
|
376
|
+
const findings = args.evidence.focusIssues.filter(i => args.evidence.openBlockingFindings.some(f => f.id === i.id));
|
|
377
|
+
if (!deps.listReviewWindowCommits || !base || !tip || base === tip)
|
|
378
|
+
return;
|
|
379
|
+
const namesAttributable = (i) => extractNamedCommitShas(findingText(i)).length > 0 || (!!deps.blameLines && parseFileLineRefs(findingText(i)).length > 0);
|
|
380
|
+
if (!findings.some(namesAttributable))
|
|
381
|
+
return;
|
|
382
|
+
let commits = null;
|
|
383
|
+
try {
|
|
384
|
+
commits = deps.listReviewWindowCommits(args.focusId, base, tip);
|
|
385
|
+
}
|
|
386
|
+
catch (err) {
|
|
387
|
+
log.warn(`[focus-executor] "${args.focusName}": review window read failed: ${err.message}`);
|
|
388
|
+
}
|
|
389
|
+
const partition = partitionReviewWindowCommits(commits ?? [], new Set(args.reviewDeliveries.map(d => d.id)));
|
|
390
|
+
if (partition.foreign.length === 0)
|
|
391
|
+
return;
|
|
392
|
+
for (const issue of findings) {
|
|
393
|
+
const scope = scopeOfFinding(deps, args, issue, partition, tip);
|
|
394
|
+
if (scope.kind !== 'foreign')
|
|
395
|
+
continue;
|
|
396
|
+
const route = await reads.routeFor(scope.owningDeliveryId);
|
|
397
|
+
if (!route)
|
|
398
|
+
continue; // owner unresolved -> the finding stays own
|
|
399
|
+
out.foreign.add(issue.id);
|
|
400
|
+
// A failed move keeps the finding in this focus's evidence: it still routes this focus back, and the next exit retries.
|
|
401
|
+
const moved = await moveToOwnerHome(deps, args, issue, route, scope.shas);
|
|
402
|
+
if (moved)
|
|
403
|
+
out.relocated.add(issue.id);
|
|
404
|
+
if (!moved || route.home.observe)
|
|
405
|
+
await observeForeignFinding(deps, args, issue, route, out.observed, !moved);
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
/** Created ids of this session filed OUTSIDE this focus: foreign by location. Returns the unresolved count. */
|
|
409
|
+
async function routeOffFocusFindings(deps, args, reads, out) {
|
|
410
|
+
const onFocus = new Set(args.evidence.focusIssues.map(i => i.id));
|
|
411
|
+
const offFocus = [...new Set(args.evidence.reviewCreatedIssueIds)].filter(id => !onFocus.has(id));
|
|
412
|
+
if (!deps.getIssueDelivery)
|
|
413
|
+
return offFocus.length;
|
|
414
|
+
let unresolved = 0;
|
|
415
|
+
for (const id of offFocus) {
|
|
416
|
+
try {
|
|
417
|
+
const loc = await deps.getIssueDelivery(id);
|
|
418
|
+
if (!loc?.focusId || loc.focusId === args.focusId) {
|
|
419
|
+
unresolved++;
|
|
420
|
+
continue;
|
|
421
|
+
}
|
|
422
|
+
const issue = (await reads.issuesOfFocus(loc.focusId)).find(i => i.id === id);
|
|
423
|
+
if (!issue) {
|
|
424
|
+
unresolved++;
|
|
425
|
+
continue;
|
|
426
|
+
}
|
|
427
|
+
if (!OPEN_ISSUE_STATUSES.has(issue.status) || isLowPriority(issue.priority))
|
|
428
|
+
continue; // located, not blocking
|
|
429
|
+
out.foreign.add(id);
|
|
430
|
+
const route = await reads.routeFor(issue.deliveryId ?? loc.deliveryId, loc.focusId);
|
|
431
|
+
if (!route) {
|
|
432
|
+
out.relocated.add(id);
|
|
433
|
+
continue;
|
|
434
|
+
} // already on the other focus; leave it where the reviewer put it
|
|
435
|
+
// Relocated only once it sits on its owner home: a failed move holds (unresolved), and the next exit retries.
|
|
436
|
+
const moved = await moveToOwnerHome(deps, args, issue, route, extractNamedCommitShas(findingText(issue)));
|
|
437
|
+
if (moved)
|
|
438
|
+
out.relocated.add(id);
|
|
439
|
+
else
|
|
440
|
+
unresolved++;
|
|
441
|
+
if (!moved || route.home.observe)
|
|
442
|
+
await observeForeignFinding(deps, args, issue, route, out.observed, !moved);
|
|
443
|
+
}
|
|
444
|
+
catch (err) {
|
|
445
|
+
unresolved++;
|
|
446
|
+
log.warn(`[focus-executor] "${args.focusName}": could not locate review-created issue ${id}: ${err.message}`);
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
return unresolved;
|
|
450
|
+
}
|
|
451
|
+
/**
|
|
452
|
+
* Route this exit's foreign findings to their owners, then return the routing-tree
|
|
453
|
+
* inputs scoped to this focus's own work. Best-effort: every read/move failure
|
|
454
|
+
* keeps the affected finding in this focus's evidence (the pre-scope behavior), or
|
|
455
|
+
* -- for a finding filed off this focus -- holds the verdict as unresolved.
|
|
456
|
+
*/
|
|
457
|
+
export async function scopeReviewEvidenceToOwnWork(deps, args) {
|
|
458
|
+
const out = { foreign: new Set(), relocated: new Set(), observed: new Set() };
|
|
459
|
+
const reads = makeOwnerReads(deps, args);
|
|
460
|
+
let unresolvedCreatedCount = 0;
|
|
461
|
+
try {
|
|
462
|
+
await routeOnFocusFindings(deps, args, reads, out);
|
|
463
|
+
unresolvedCreatedCount = await routeOffFocusFindings(deps, args, reads, out);
|
|
464
|
+
}
|
|
465
|
+
catch (err) {
|
|
466
|
+
log.warn(`[focus-executor] "${args.focusName}": foreign-finding scope failed: ${err.message}`);
|
|
467
|
+
}
|
|
468
|
+
return scopeEvidence(args.evidence, {
|
|
469
|
+
foreignFindingIds: out.foreign,
|
|
470
|
+
relocatedIds: out.relocated,
|
|
471
|
+
unresolvedCreatedCount,
|
|
472
|
+
});
|
|
473
|
+
}
|
|
474
|
+
//# sourceMappingURL=review-exit-foreign-findings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-exit-foreign-findings.js","sourceRoot":"","sources":["../../src/completion/review-exit-foreign-findings.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,kFAAkF;AAClF,gFAAgF;AAChF,gBAAgB;AAEhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AAEH,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAK5F,OAAO,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EACL,4BAA4B,GAG7B,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAG5E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;AAEvD;;;;GAIG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,gBAAgB,CAAC,oBAAoB,CAAC;AAqBtF,6EAA6E;AAE7E,MAAM,OAAO,GAAG,gEAAgE,CAAC;AACjF,MAAM,YAAY,GAAG,sBAAsB,CAAC;AAE5C;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAY;IACjD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QAC1E,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACjC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,SAAS;QAC9B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAChB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAUD;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAAY,EAAE,SAAgC;IACrF,MAAM,MAAM,GAAG;QACb,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,IAAqB,EAAE,CAAC,CAAC;QAC5F,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,UAA2B,EAAE,CAAC,CAAC;KACzG,CAAC;IACF,MAAM,QAAQ,GAAsD,EAAE,CAAC;IACvE,KAAK,MAAM,KAAK,IAAI,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC;QACjD,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5D,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1D,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxE,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC/E,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC1B,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAC5G,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,CAAC,UAAU,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;AACvG,CAAC;AAWD,8FAA8F;AAC9F,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAC;AACxC,2FAA2F;AAC3F,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAEzC,0FAA0F;AAC1F,0FAA0F;AAC1F,0FAA0F;AAC1F,2FAA2F;AAC3F,MAAM,YAAY,GAChB,yHAAyH,CAAC;AAE5H;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,GAAG,GAAkB,EAAE,CAAC;IAC9B,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACnE,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC;QACtC,IAAI,IAAI,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QAC/F,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CACpC,IAA4B,EAC5B,KAAqD,EACrD,SAAgC;IAEhC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC3E,IAAI,IAAI,CAAC,MAAM,GAAG,qBAAqB;QAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAC5F,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACjG,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,gBAAoC,CAAC;IACzC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;QACtC,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,qBAAqB;YAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;QACpH,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK;YAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;QAC3F,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;YAC9B,MAAM,UAAU,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5C,IAAI,UAAU,KAAK,SAAS;gBAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;YACjF,IAAI,gBAAgB,KAAK,SAAS;gBAAE,gBAAgB,GAAG,UAAU,CAAC;YAClE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,gBAAgB,EAAE,gBAAgB,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;AAC7E,CAAC;AAYD,MAAM,UAAU,GAAG,CAAC,MAAqB,EAAW,EAAE,CACpD,MAAM,KAAK,eAAe,CAAC,IAAI,IAAI,MAAM,KAAK,eAAe,CAAC,SAAS,CAAC;AAE1E;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAIhC;IACC,MAAM,MAAM,GAAG,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACrF,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC;IACvC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;QACxC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,qCAAqC,EAAE,CAAC;IACpG,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;IACpF,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,KAAK,eAAe,CAAC,MAAM,CAAC,CAAC;IAChF,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,yEAAyE,EAAE,CAAC;IAC5I,CAAC;IACD,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/E,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,2EAA2E,EAAE,CAAC;IAC7I,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,+CAA+C,EAAE,CAAC;AAC3G,CAAC;AAED,wGAAwG;AACxG,MAAM,UAAU,YAAY,CAAC,GAAuF;IAClH,OAAO,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,sBAAsB,IAAI,IAAI,IAAI,GAAG,CAAC,mBAAmB,IAAI,IAAI,CAAC;AACxF,CAAC;AAiCD;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAAC,QAA6B,EAAE,OAA6B;IACxF,MAAM,EAAE,YAAY,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC;IACpD,IAAI,YAAY,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO;YACL,qBAAqB,EAAE,QAAQ,CAAC,qBAAqB;YACrD,4BAA4B,EAAE,QAAQ,CAAC,4BAA4B;YACnE,oBAAoB,EAAE,QAAQ,CAAC,oBAAoB;YACnD,wBAAwB,EAAE,QAAQ,CAAC,wBAAwB,IAAI,iBAAiB,CAAC,IAAI,GAAG,CAAC;YACzF,qBAAqB,EAAE,QAAQ,CAAC,qBAAqB,CAAC,IAAI,GAAG,CAAC;YAC9D,iBAAiB;YACjB,mBAAmB,EAAE,YAAY;SAClC,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACvE,MAAM,qBAAqB,GAAG,4BAA4B,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAC1G,OAAO;QACL,qBAAqB;QACrB,4BAA4B,EAAE,4BAA4B,CAAC,IAAI,EAAE,QAAQ,CAAC,cAAc,CAAC;QACzF,oBAAoB,EAAE,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACxF,wBAAwB,EAAE,IAAI;QAC9B,qBAAqB,EAAE,qBAAqB,CAAC,IAAI,GAAG,CAAC,IAAI,OAAO,CAAC,sBAAsB,KAAK,CAAC;QAC7F,iBAAiB;QACjB,mBAAmB,EAAE,YAAY;KAClC,CAAC;AACJ,CAAC;AA2BD,MAAM,WAAW,GAAG,CAAC,CAAgD,EAAU,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC;AAEvH,kDAAkD;AAClD,SAAS,cAAc,CAAC,IAAwB,EAAE,IAAwB;IACxE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkC,CAAC;IAC1D,MAAM,YAAY,GAAG,IAAI,GAAG,EAAwC,CAAC;IACrE,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAqC,CAAC;IAC9D,MAAM,IAAI,GAAG,CAAI,CAA0B,EAAE,GAAW,EAAE,IAAsB,EAAc,EAAE;QAC9F,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,CAAC,EAAE,CAAC;YAAC,CAAC,GAAG,IAAI,EAAE,CAAC;YAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAAC,CAAC;QACtC,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;IACF,MAAM,QAAQ,GAAG,KAAK,EAAE,gBAAwB,EAAE,YAA4B,EAA8B,EAAE;QAC5G,MAAM,YAAY,GAAG,YAAY;YAC/B,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,sBAAuB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACrI,IAAI,CAAC,YAAY,IAAI,YAAY,KAAK,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAChE,MAAM,eAAe,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC;QAC1F,MAAM,IAAI,GAAG,gBAAgB,CAAC;YAC5B,gBAAgB;YAChB,oBAAoB,EAAE,MAAM,IAAI,CAAC,YAAY,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;YACzG,eAAe;SAChB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/D,CAAC,CAAC;IACF,MAAM,aAAa,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IACvG,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC;AACrC,CAAC;AAED,uFAAuF;AACvF,KAAK,UAAU,eAAe,CAC5B,IAAwB,EACxB,IAAwB,EACxB,OAA0E,EAC1E,KAAiB,EACjB,IAAuB;IAEvB,IAAI,OAAO,CAAC,UAAU,KAAK,KAAK,CAAC,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAC9D,IAAI,CAAC,IAAI,CAAC,qBAAqB;QAAE,OAAO,KAAK,CAAC;IAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,mBAAmB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC,CAAC,EAAE,CAAC;IACpI,MAAM,IAAI,GACR,0CAA0C,IAAI,CAAC,SAAS,mBAAmB,KAAK,0BAA0B;QAC1G,GAAG,OAAO,CAAC,UAAU,IAAI,QAAQ,gBAAgB,KAAK,CAAC,IAAI,CAAC,UAAU,yBAAyB,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;IACxH,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,OAAO,CAAC,WAAW,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;QAC3G,GAAG,CAAC,IAAI,CACN,qBAAqB,IAAI,CAAC,SAAS,6BAA6B,OAAO,CAAC,GAAG,uBAAuB;YAClG,GAAG,OAAO,CAAC,UAAU,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,aAAa,KAAK,CAAC,YAAY,KAAK,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,CAC3G,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,SAAS,qCAAqC,OAAO,CAAC,GAAG,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3H,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,qBAAqB,CAClC,IAAwB,EACxB,IAAwB,EACxB,OAAoE,EACpE,KAAiB,EACjB,QAAqB,EACrB,UAAmB;IAEnB,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;IACzC,IAAI,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC;QAAE,OAAO;IACrC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACzB,IAAI,CAAC;QACH,IAAI,IAAI,CAAC,4BAA4B,IAAI,MAAM,IAAI,CAAC,4BAA4B,CAAC,UAAU,EAAE,gCAAgC,CAAC;YAAE,OAAO;IACzI,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CAAC,+EAA+E,UAAU,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IACnI,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kCAAkC,CAAC;IAChF,MAAM,KAAK,GAAG,oBAAoB,IAAI,CAAC,SAAS,4BAA4B,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,KAAK,sBAAsB,CAAC;IACjI,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,gBAAgB,CAAC;YAC1B,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,OAAO,EAAE,OAAO,CAAC,EAAE;YACnB,UAAU,EAAE,kBAAkB,CAAC,eAAe;YAC9C,WAAW,EAAE,4BAA4B;YACzC,cAAc,EAAE,gCAAgC;YAChD,MAAM,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,YAAY,EAAE;YACnD,WAAW,EAAE,UAAU;gBACrB,CAAC,CAAC,GAAG,KAAK,SAAS,KAAK,CAAC,YAAY,yCAAyC,OAAO,CAAC,UAAU,IAAI,QAAQ,MAAM;oBAChH,YAAY,UAAU,KAAK,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,OAAO,oDAAoD;oBAC3G,gGAAgG;gBAClG,CAAC,CAAC,GAAG,KAAK,YAAY,UAAU,oDAAoD,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,OAAO,GAAG;YACpH,YAAY,EAAE,UAAU;gBACtB,CAAC,CAAC,8GAA8G;oBAC9G,8CAA8C;gBAChD,CAAC,CAAC,0GAA0G;oBAC1G,qEAAqE;YACzE,UAAU,EAAE,UAAU;gBACpB,CAAC,CAAC,cAAc,OAAO,CAAC,GAAG,gBAAgB,UAAU,4EAA4E;gBACjI,CAAC,CAAC,+HAA+H;YACnI,QAAQ,EAAE;gBACR,QAAQ,EAAE,OAAO,CAAC,EAAE,EAAE,kBAAkB,EAAE,IAAI,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM;gBACtH,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,uBAAuB,EAAE,OAAO,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACpG;SACF,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CAAC,oEAAoE,UAAU,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IACxH,CAAC;AACH,CAAC;AAED,qGAAqG;AACrG,SAAS,cAAc,CACrB,IAAwB,EACxB,IAAwB,EACxB,KAAqB,EACrB,SAAgC,EAChC,GAAW;IAEX,MAAM,SAAS,GAAG,wBAAwB,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC;IAC1E,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IACnC,IAAI,SAAS,CAAC,IAAI,KAAK,KAAK,IAAI,SAAS,CAAC,MAAM,KAAK,mBAAmB,IAAI,CAAC,UAAU;QAAE,OAAO,SAAS,CAAC;IAC1G,OAAO,sBAAsB,CAAC,iBAAiB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE;QAC3E,IAAI,CAAC;YACH,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QACrE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,SAAS,eAAe,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,GAAG,YAAa,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YACjI,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC,EAAE,SAAS,CAAC,CAAC;AAChB,CAAC;AAED,kGAAkG;AAClG,KAAK,UAAU,oBAAoB,CACjC,IAAwB,EACxB,IAAwB,EACxB,KAAwC,EACxC,GAAe;IAEf,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,IAAI,IAAI,CAAC,CAAC;IAC/H,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC;IACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpH,IAAI,CAAC,IAAI,CAAC,uBAAuB,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,KAAK,GAAG;QAAE,OAAO;IAC3E,MAAM,iBAAiB,GAAG,CAAC,CAAiB,EAAE,EAAE,CAC9C,sBAAsB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC3H,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC;QAAE,OAAO;IAC9C,IAAI,OAAO,GAAyC,IAAI,CAAC;IACzD,IAAI,CAAC;QACH,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IAClE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,SAAS,iCAAkC,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IACzG,CAAC;IACD,MAAM,SAAS,GAAG,4BAA4B,CAAC,OAAO,IAAI,EAAE,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7G,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAC3C,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;QAChE,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;YAAE,SAAS;QACvC,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC3D,IAAI,CAAC,KAAK;YAAE,SAAS,CAAC,4CAA4C;QAClE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC1B,wHAAwH;QACxH,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1E,IAAI,KAAK;YAAE,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO;YAAE,MAAM,qBAAqB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC;IAChH,CAAC;AACH,CAAC;AAED,+GAA+G;AAC/G,KAAK,UAAU,qBAAqB,CAClC,IAAwB,EACxB,IAAwB,EACxB,KAAwC,EACxC,GAAe;IAEf,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAClG,IAAI,CAAC,IAAI,CAAC,gBAAgB;QAAE,OAAO,QAAQ,CAAC,MAAM,CAAC;IACnD,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;YAC5C,IAAI,CAAC,GAAG,EAAE,OAAO,IAAI,GAAG,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;gBAAC,UAAU,EAAE,CAAC;gBAAC,SAAS;YAAC,CAAC;YAC9E,MAAM,KAAK,GAAG,CAAC,MAAM,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9E,IAAI,CAAC,KAAK,EAAE,CAAC;gBAAC,UAAU,EAAE,CAAC;gBAAC,SAAS;YAAC,CAAC;YACvC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC;gBAAE,SAAS,CAAC,wBAAwB;YAC/G,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACpB,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YACpF,IAAI,CAAC,KAAK,EAAE,CAAC;gBAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAAC,SAAS;YAAC,CAAC,CAAC,iEAAiE;YAClH,8GAA8G;YAC9G,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,sBAAsB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC1G,IAAI,KAAK;gBAAE,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;;gBAAM,UAAU,EAAE,CAAC;YACpD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO;gBAAE,MAAM,qBAAqB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC;QAChH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,UAAU,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,SAAS,4CAA4C,EAAE,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3H,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,IAAwB,EACxB,IAAwB;IAExB,MAAM,GAAG,GAAe,EAAE,OAAO,EAAE,IAAI,GAAG,EAAU,EAAE,SAAS,EAAE,IAAI,GAAG,EAAU,EAAE,QAAQ,EAAE,IAAI,GAAG,EAAU,EAAE,CAAC;IAClH,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACzC,IAAI,sBAAsB,GAAG,CAAC,CAAC;IAC/B,IAAI,CAAC;QACH,MAAM,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACnD,sBAAsB,GAAG,MAAM,qBAAqB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IAC/E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,SAAS,oCAAqC,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5G,CAAC;IACD,OAAO,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE;QAClC,iBAAiB,EAAE,GAAG,CAAC,OAAO;QAC9B,YAAY,EAAE,GAAG,CAAC,SAAS;QAC3B,sBAAsB;KACvB,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-exit-phase.d.ts","sourceRoot":"","sources":["../../src/completion/review-exit-phase.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"review-exit-phase.d.ts","sourceRoot":"","sources":["../../src/completion/review-exit-phase.ts"],"names":[],"mappings":"AA+CA,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAK5D,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACjC,SAAS,EAAE,OAAO,CAAC;IACnB;;;;;;;;OAQG;IACH,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC;;;;;;;;;;OAUG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;;;;;;;;;OAYG;IACH,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC;AAMD,OAAO,EACL,iCAAiC,EACjC,uBAAuB,GACxB,MAAM,2BAA2B,CAAC;AAEnC,gGAAgG;AAChG,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAMnE;AAyBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,gBAAgB,EACxB,IAAI,GAAE,cAAsC,GAC3C,OAAO,CAAC,IAAI,CAAC,CA6lBf"}
|