@urateam/core 0.1.55 → 0.1.57
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/__tests__/audit-immutability.test.js +8 -0
- package/dist/__tests__/audit-immutability.test.js.map +1 -1
- package/dist/__tests__/auth-check.test.js +130 -16
- package/dist/__tests__/auth-check.test.js.map +1 -1
- package/dist/__tests__/auth-monitor.test.js +210 -87
- package/dist/__tests__/auth-monitor.test.js.map +1 -1
- package/dist/__tests__/bec-238-repro.test.d.ts +2 -0
- package/dist/__tests__/bec-238-repro.test.d.ts.map +1 -0
- package/dist/__tests__/bec-238-repro.test.js +116 -0
- package/dist/__tests__/bec-238-repro.test.js.map +1 -0
- package/dist/__tests__/bec146-repro.test.d.ts +2 -0
- package/dist/__tests__/bec146-repro.test.d.ts.map +1 -0
- package/dist/__tests__/bec146-repro.test.js +153 -0
- package/dist/__tests__/bec146-repro.test.js.map +1 -0
- package/dist/__tests__/circuit-breaker-config.test.d.ts +2 -0
- package/dist/__tests__/circuit-breaker-config.test.d.ts.map +1 -0
- package/dist/__tests__/circuit-breaker-config.test.js +32 -0
- package/dist/__tests__/circuit-breaker-config.test.js.map +1 -0
- package/dist/__tests__/circuit-breaker-events.test.d.ts +2 -0
- package/dist/__tests__/circuit-breaker-events.test.d.ts.map +1 -0
- package/dist/__tests__/circuit-breaker-events.test.js +53 -0
- package/dist/__tests__/circuit-breaker-events.test.js.map +1 -0
- package/dist/__tests__/circuit-breaker-integration.test.d.ts +2 -0
- package/dist/__tests__/circuit-breaker-integration.test.d.ts.map +1 -0
- package/dist/__tests__/circuit-breaker-integration.test.js +192 -0
- package/dist/__tests__/circuit-breaker-integration.test.js.map +1 -0
- package/dist/__tests__/circuit-breaker-probe.test.d.ts +2 -0
- package/dist/__tests__/circuit-breaker-probe.test.d.ts.map +1 -0
- package/dist/__tests__/circuit-breaker-probe.test.js +124 -0
- package/dist/__tests__/circuit-breaker-probe.test.js.map +1 -0
- package/dist/__tests__/circuit-breaker-recover.test.d.ts +2 -0
- package/dist/__tests__/circuit-breaker-recover.test.d.ts.map +1 -0
- package/dist/__tests__/circuit-breaker-recover.test.js +52 -0
- package/dist/__tests__/circuit-breaker-recover.test.js.map +1 -0
- package/dist/__tests__/circuit-breaker-sweep.test.d.ts +2 -0
- package/dist/__tests__/circuit-breaker-sweep.test.d.ts.map +1 -0
- package/dist/__tests__/circuit-breaker-sweep.test.js +118 -0
- package/dist/__tests__/circuit-breaker-sweep.test.js.map +1 -0
- package/dist/__tests__/db-migrations.test.js +7 -3
- package/dist/__tests__/db-migrations.test.js.map +1 -1
- package/dist/__tests__/decision-artifact-schema.test.d.ts +2 -0
- package/dist/__tests__/decision-artifact-schema.test.d.ts.map +1 -0
- package/dist/__tests__/decision-artifact-schema.test.js +45 -0
- package/dist/__tests__/decision-artifact-schema.test.js.map +1 -0
- package/dist/__tests__/decisions-parser.test.d.ts +2 -0
- package/dist/__tests__/decisions-parser.test.d.ts.map +1 -0
- package/dist/__tests__/decisions-parser.test.js +59 -0
- package/dist/__tests__/decisions-parser.test.js.map +1 -0
- package/dist/__tests__/decisions-store.test.d.ts +2 -0
- package/dist/__tests__/decisions-store.test.d.ts.map +1 -0
- package/dist/__tests__/decisions-store.test.js +68 -0
- package/dist/__tests__/decisions-store.test.js.map +1 -0
- package/dist/__tests__/decisions-table-migration.test.d.ts +2 -0
- package/dist/__tests__/decisions-table-migration.test.d.ts.map +1 -0
- package/dist/__tests__/decisions-table-migration.test.js +56 -0
- package/dist/__tests__/decisions-table-migration.test.js.map +1 -0
- package/dist/__tests__/execute-stage-session-opts.test.js +2 -1
- package/dist/__tests__/execute-stage-session-opts.test.js.map +1 -1
- package/dist/__tests__/executor-issue-id.test.js +2 -1
- package/dist/__tests__/executor-issue-id.test.js.map +1 -1
- package/dist/__tests__/extract-handoff-decisions.test.d.ts +2 -0
- package/dist/__tests__/extract-handoff-decisions.test.d.ts.map +1 -0
- package/dist/__tests__/extract-handoff-decisions.test.js +26 -0
- package/dist/__tests__/extract-handoff-decisions.test.js.map +1 -0
- package/dist/__tests__/force-push-agent-branches.test.js +38 -15
- package/dist/__tests__/force-push-agent-branches.test.js.map +1 -1
- package/dist/__tests__/github-webhook.test.js +117 -0
- package/dist/__tests__/github-webhook.test.js.map +1 -1
- package/dist/__tests__/implement-template-decisions.test.d.ts +2 -0
- package/dist/__tests__/implement-template-decisions.test.d.ts.map +1 -0
- package/dist/__tests__/implement-template-decisions.test.js +41 -0
- package/dist/__tests__/implement-template-decisions.test.js.map +1 -0
- package/dist/__tests__/migrator.test.js +137 -39
- package/dist/__tests__/migrator.test.js.map +1 -1
- package/dist/__tests__/pipeline-runner.test.js +118 -0
- package/dist/__tests__/pipeline-runner.test.js.map +1 -1
- package/dist/__tests__/pm-audit-retention-step.test.js +3 -0
- package/dist/__tests__/pm-audit-retention-step.test.js.map +1 -1
- package/dist/__tests__/pm-budget-alerts.test.d.ts +14 -0
- package/dist/__tests__/pm-budget-alerts.test.d.ts.map +1 -1
- package/dist/__tests__/pm-budget-alerts.test.js +90 -18
- package/dist/__tests__/pm-budget-alerts.test.js.map +1 -1
- package/dist/__tests__/pm-budget-refused-event.test.js +2 -0
- package/dist/__tests__/pm-budget-refused-event.test.js.map +1 -1
- package/dist/__tests__/pm-budget-utc-boundary.test.d.ts +2 -0
- package/dist/__tests__/pm-budget-utc-boundary.test.d.ts.map +1 -0
- package/dist/__tests__/pm-budget-utc-boundary.test.js +128 -0
- package/dist/__tests__/pm-budget-utc-boundary.test.js.map +1 -0
- package/dist/__tests__/pm-conflict.test.js +145 -5
- package/dist/__tests__/pm-conflict.test.js.map +1 -1
- package/dist/__tests__/pm-cost-rollup-step.test.js +2 -0
- package/dist/__tests__/pm-cost-rollup-step.test.js.map +1 -1
- package/dist/__tests__/pm-promote.test.js +111 -0
- package/dist/__tests__/pm-promote.test.js.map +1 -1
- package/dist/__tests__/pm-scheduler.test.js +1 -0
- package/dist/__tests__/pm-scheduler.test.js.map +1 -1
- package/dist/__tests__/pm-sso-prune-step.test.js +2 -0
- package/dist/__tests__/pm-sso-prune-step.test.js.map +1 -1
- package/dist/__tests__/preflight-claude-auth.test.js +3 -2
- package/dist/__tests__/preflight-claude-auth.test.js.map +1 -1
- package/dist/__tests__/ralph-review-fix-regression.test.js +1 -0
- package/dist/__tests__/ralph-review-fix-regression.test.js.map +1 -1
- package/dist/__tests__/ralph.test.js +1 -0
- package/dist/__tests__/ralph.test.js.map +1 -1
- package/dist/__tests__/release-manager-qarun-query.test.d.ts +2 -0
- package/dist/__tests__/release-manager-qarun-query.test.d.ts.map +1 -0
- package/dist/__tests__/release-manager-qarun-query.test.js +233 -0
- package/dist/__tests__/release-manager-qarun-query.test.js.map +1 -0
- package/dist/__tests__/release-manager-scheduler.test.js +62 -0
- package/dist/__tests__/release-manager-scheduler.test.js.map +1 -1
- package/dist/__tests__/release-manager-slack-handler.test.js +66 -0
- package/dist/__tests__/release-manager-slack-handler.test.js.map +1 -1
- package/dist/__tests__/reproduce-bec113-pagination-warning.test.js +1 -0
- package/dist/__tests__/reproduce-bec113-pagination-warning.test.js.map +1 -1
- package/dist/__tests__/reproduce-bec62.test.js +1 -0
- package/dist/__tests__/reproduce-bec62.test.js.map +1 -1
- package/dist/__tests__/reproduce-bec91-stuck-in-progress.test.js +2 -0
- package/dist/__tests__/reproduce-bec91-stuck-in-progress.test.js.map +1 -1
- package/dist/__tests__/resolve-claude-auth.test.js +10 -8
- package/dist/__tests__/resolve-claude-auth.test.js.map +1 -1
- package/dist/__tests__/session-lazy-creation.test.js +2 -1
- package/dist/__tests__/session-lazy-creation.test.js.map +1 -1
- package/dist/__tests__/session-resolver.test.d.ts +13 -0
- package/dist/__tests__/session-resolver.test.d.ts.map +1 -0
- package/dist/__tests__/session-resolver.test.js +152 -0
- package/dist/__tests__/session-resolver.test.js.map +1 -0
- package/dist/__tests__/session-resume-fallback.test.js +2 -1
- package/dist/__tests__/session-resume-fallback.test.js.map +1 -1
- package/dist/__tests__/stage-models.test.js +3 -2
- package/dist/__tests__/stage-models.test.js.map +1 -1
- package/dist/__tests__/start-todo.test.js +29 -0
- package/dist/__tests__/start-todo.test.js.map +1 -1
- package/dist/__tests__/surgical-review-fix-prompt.test.d.ts +2 -0
- package/dist/__tests__/surgical-review-fix-prompt.test.d.ts.map +1 -0
- package/dist/__tests__/surgical-review-fix-prompt.test.js +71 -0
- package/dist/__tests__/surgical-review-fix-prompt.test.js.map +1 -0
- package/dist/__tests__/surgical-review-fix-runner.test.d.ts +2 -0
- package/dist/__tests__/surgical-review-fix-runner.test.d.ts.map +1 -0
- package/dist/__tests__/surgical-review-fix-runner.test.js +171 -0
- package/dist/__tests__/surgical-review-fix-runner.test.js.map +1 -0
- package/dist/__tests__/triage-preserve-acs.test.d.ts +2 -0
- package/dist/__tests__/triage-preserve-acs.test.d.ts.map +1 -0
- package/dist/__tests__/triage-preserve-acs.test.js +240 -0
- package/dist/__tests__/triage-preserve-acs.test.js.map +1 -0
- package/dist/__tests__/validate-run-mode.test.js +1 -0
- package/dist/__tests__/validate-run-mode.test.js.map +1 -1
- package/dist/__tests__/validate.test.js +1 -0
- package/dist/__tests__/validate.test.js.map +1 -1
- package/dist/audit/auth-error-messages.d.ts +6 -0
- package/dist/audit/auth-error-messages.d.ts.map +1 -0
- package/dist/audit/auth-error-messages.js +18 -0
- package/dist/audit/auth-error-messages.js.map +1 -0
- package/dist/audit/events.d.ts +51 -4
- package/dist/audit/events.d.ts.map +1 -1
- package/dist/audit/events.js +78 -5
- package/dist/audit/events.js.map +1 -1
- package/dist/audit/index.d.ts +1 -0
- package/dist/audit/index.d.ts.map +1 -1
- package/dist/audit/index.js +1 -0
- package/dist/audit/index.js.map +1 -1
- package/dist/db/client.d.ts.map +1 -1
- package/dist/db/client.js +20 -0
- package/dist/db/client.js.map +1 -1
- package/dist/db/decisions-store.d.ts +25 -0
- package/dist/db/decisions-store.d.ts.map +1 -0
- package/dist/db/decisions-store.js +56 -0
- package/dist/db/decisions-store.js.map +1 -0
- package/dist/db/index.d.ts +2 -2
- package/dist/db/index.d.ts.map +1 -1
- package/dist/db/index.js +2 -2
- package/dist/db/index.js.map +1 -1
- package/dist/db/migrations/postgres/008_sso.sql +9 -20
- package/dist/db/migrations/postgres/009_review_model_runs.sql +9 -18
- package/dist/db/migrations/postgres/009_sso.sql +20 -0
- package/dist/db/migrations/postgres/010_release_manager.sql +9 -38
- package/dist/db/migrations/postgres/010_review_model_runs.sql +18 -0
- package/dist/db/migrations/postgres/011_qa_run_columns.sql +9 -8
- package/dist/db/migrations/postgres/011_release_manager.sql +38 -0
- package/dist/db/migrations/postgres/012_qa_gap_issues.sql +9 -18
- package/dist/db/migrations/postgres/012_qa_run_columns.sql +8 -0
- package/dist/db/migrations/postgres/013_qa_gap_issues.sql +18 -0
- package/dist/db/migrations/postgres/013_stage_runs_cache_tokens.sql +11 -6
- package/dist/db/migrations/postgres/014_missing_indexes.sql +9 -28
- package/dist/db/migrations/postgres/014_stage_runs_cache_tokens.sql +6 -0
- package/dist/db/migrations/postgres/015_missing_indexes.sql +28 -0
- package/dist/db/migrations/postgres/015_triage_results.sql +9 -11
- package/dist/db/migrations/postgres/016_triage_results.sql +11 -0
- package/dist/db/migrations/sqlite/007_sso.sql +9 -20
- package/dist/db/migrations/sqlite/008_review_model_runs.sql +9 -18
- package/dist/db/migrations/sqlite/008_sso.sql +20 -0
- package/dist/db/migrations/sqlite/009_release_manager.sql +9 -43
- package/dist/db/migrations/sqlite/009_review_model_runs.sql +18 -0
- package/dist/db/migrations/sqlite/010_qa_run_columns.sql +9 -9
- package/dist/db/migrations/sqlite/010_release_manager.sql +43 -0
- package/dist/db/migrations/sqlite/011_qa_gap_issues.sql +9 -22
- package/dist/db/migrations/sqlite/011_qa_run_columns.sql +9 -0
- package/dist/db/migrations/sqlite/012_qa_gap_issues.sql +22 -0
- package/dist/db/migrations/sqlite/012_stage_runs_cache_tokens.sql +11 -6
- package/dist/db/migrations/sqlite/013_missing_indexes.sql +10 -28
- package/dist/db/migrations/sqlite/013_stage_runs_cache_tokens.sql +6 -0
- package/dist/db/migrations/sqlite/013_triage_results.sql +10 -11
- package/dist/db/migrations/sqlite/014_missing_indexes.sql +28 -0
- package/dist/db/migrations/sqlite/015_triage_results.sql +11 -0
- package/dist/db/migrator.d.ts +45 -2
- package/dist/db/migrator.d.ts.map +1 -1
- package/dist/db/migrator.js +113 -29
- package/dist/db/migrator.js.map +1 -1
- package/dist/db/schema.d.ts +213 -0
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +28 -0
- package/dist/db/schema.js.map +1 -1
- package/dist/executor/auth-check.d.ts +30 -7
- package/dist/executor/auth-check.d.ts.map +1 -1
- package/dist/executor/auth-check.js +66 -16
- package/dist/executor/auth-check.js.map +1 -1
- package/dist/executor/auth-monitor.d.ts.map +1 -1
- package/dist/executor/auth-monitor.js +48 -39
- package/dist/executor/auth-monitor.js.map +1 -1
- package/dist/executor/deep-review.d.ts.map +1 -1
- package/dist/executor/deep-review.js +14 -79
- package/dist/executor/deep-review.js.map +1 -1
- package/dist/executor/executor.d.ts +21 -0
- package/dist/executor/executor.d.ts.map +1 -1
- package/dist/executor/executor.js +42 -91
- package/dist/executor/executor.js.map +1 -1
- package/dist/executor/extract-handoff.d.ts +9 -0
- package/dist/executor/extract-handoff.d.ts.map +1 -1
- package/dist/executor/extract-handoff.js +48 -0
- package/dist/executor/extract-handoff.js.map +1 -1
- package/dist/executor/handoff.d.ts +10 -1
- package/dist/executor/handoff.d.ts.map +1 -1
- package/dist/executor/handoff.js +7 -1
- package/dist/executor/handoff.js.map +1 -1
- package/dist/executor/index.d.ts +1 -0
- package/dist/executor/index.d.ts.map +1 -1
- package/dist/executor/index.js +1 -0
- package/dist/executor/index.js.map +1 -1
- package/dist/executor/prompt/templates.d.ts +12 -1
- package/dist/executor/prompt/templates.d.ts.map +1 -1
- package/dist/executor/prompt/templates.js +64 -0
- package/dist/executor/prompt/templates.js.map +1 -1
- package/dist/executor/session-resolver.d.ts +51 -0
- package/dist/executor/session-resolver.d.ts.map +1 -0
- package/dist/executor/session-resolver.js +83 -0
- package/dist/executor/session-resolver.js.map +1 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/notifier/composite.js +1 -1
- package/dist/notifier/composite.js.map +1 -1
- package/dist/notifier/linear.d.ts +1 -1
- package/dist/notifier/linear.d.ts.map +1 -1
- package/dist/notifier/linear.js +49 -9
- package/dist/notifier/linear.js.map +1 -1
- package/dist/pipeline/run-surgical-review-fix.d.ts +29 -0
- package/dist/pipeline/run-surgical-review-fix.d.ts.map +1 -0
- package/dist/pipeline/run-surgical-review-fix.js +48 -0
- package/dist/pipeline/run-surgical-review-fix.js.map +1 -0
- package/dist/pipeline/runner.d.ts.map +1 -1
- package/dist/pipeline/runner.js +132 -36
- package/dist/pipeline/runner.js.map +1 -1
- package/dist/pm/actions/circuit-breaker-config.d.ts +13 -0
- package/dist/pm/actions/circuit-breaker-config.d.ts.map +1 -0
- package/dist/pm/actions/circuit-breaker-config.js +23 -0
- package/dist/pm/actions/circuit-breaker-config.js.map +1 -0
- package/dist/pm/actions/db-queries.d.ts +18 -0
- package/dist/pm/actions/db-queries.d.ts.map +1 -1
- package/dist/pm/actions/db-queries.js +75 -2
- package/dist/pm/actions/db-queries.js.map +1 -1
- package/dist/pm/actions/promote.d.ts +7 -0
- package/dist/pm/actions/promote.d.ts.map +1 -1
- package/dist/pm/actions/promote.js +17 -1
- package/dist/pm/actions/promote.js.map +1 -1
- package/dist/pm/actions/recover-circuit-breaker.d.ts +21 -0
- package/dist/pm/actions/recover-circuit-breaker.d.ts.map +1 -0
- package/dist/pm/actions/recover-circuit-breaker.js +47 -0
- package/dist/pm/actions/recover-circuit-breaker.js.map +1 -0
- package/dist/pm/actions/select-probe-candidates.d.ts +21 -0
- package/dist/pm/actions/select-probe-candidates.d.ts.map +1 -0
- package/dist/pm/actions/select-probe-candidates.js +81 -0
- package/dist/pm/actions/select-probe-candidates.js.map +1 -0
- package/dist/pm/actions/start-todo.d.ts +7 -0
- package/dist/pm/actions/start-todo.d.ts.map +1 -1
- package/dist/pm/actions/start-todo.js +2 -1
- package/dist/pm/actions/start-todo.js.map +1 -1
- package/dist/pm/actions/sweep-recovered-circuit-breakers.d.ts +28 -0
- package/dist/pm/actions/sweep-recovered-circuit-breakers.d.ts.map +1 -0
- package/dist/pm/actions/sweep-recovered-circuit-breakers.js +47 -0
- package/dist/pm/actions/sweep-recovered-circuit-breakers.js.map +1 -0
- package/dist/pm/actions/triage-prompt.d.ts +14 -0
- package/dist/pm/actions/triage-prompt.d.ts.map +1 -1
- package/dist/pm/actions/triage-prompt.js +52 -9
- package/dist/pm/actions/triage-prompt.js.map +1 -1
- package/dist/pm/actions/triage.d.ts.map +1 -1
- package/dist/pm/actions/triage.js +37 -24
- package/dist/pm/actions/triage.js.map +1 -1
- package/dist/pm/conflict.d.ts +2 -0
- package/dist/pm/conflict.d.ts.map +1 -1
- package/dist/pm/conflict.js +59 -9
- package/dist/pm/conflict.js.map +1 -1
- package/dist/pm/scheduler.d.ts +5 -0
- package/dist/pm/scheduler.d.ts.map +1 -1
- package/dist/pm/scheduler.js +91 -44
- package/dist/pm/scheduler.js.map +1 -1
- package/dist/pm/slack.d.ts +11 -0
- package/dist/pm/slack.d.ts.map +1 -1
- package/dist/pm/slack.js +48 -5
- package/dist/pm/slack.js.map +1 -1
- package/dist/release-manager/release-helpers.d.ts +19 -2
- package/dist/release-manager/release-helpers.d.ts.map +1 -1
- package/dist/release-manager/release-helpers.js +22 -3
- package/dist/release-manager/release-helpers.js.map +1 -1
- package/dist/release-manager/release-tick.d.ts.map +1 -1
- package/dist/release-manager/release-tick.js +20 -8
- package/dist/release-manager/release-tick.js.map +1 -1
- package/dist/release-manager/slack-handler.d.ts +6 -0
- package/dist/release-manager/slack-handler.d.ts.map +1 -1
- package/dist/release-manager/slack-handler.js +76 -1
- package/dist/release-manager/slack-handler.js.map +1 -1
- package/dist/release-manager/state.d.ts.map +1 -1
- package/dist/release-manager/state.js +25 -18
- package/dist/release-manager/state.js.map +1 -1
- package/dist/types.d.ts +238 -13
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +67 -0
- package/dist/types.js.map +1 -1
- package/dist/webhook/github-handler.d.ts +2 -2
- package/dist/webhook/github-handler.d.ts.map +1 -1
- package/dist/webhook/github-handler.js +18 -6
- package/dist/webhook/github-handler.js.map +1 -1
- package/package.json +1 -1
|
@@ -271,6 +271,33 @@ ${(issue.acceptanceCriteria ?? []).map((ac, i) => ` ${i + 1}. ${ac}`).join("\n"
|
|
|
271
271
|
For each criterion, confirm in your response that it is addressed by your code changes.
|
|
272
272
|
If any criterion cannot be met, explain why and what partial progress was made.
|
|
273
273
|
Do NOT claim work is complete if acceptance criteria are not satisfied.
|
|
274
|
+
|
|
275
|
+
BEFORE you finish, emit a structured decision artifact so downstream
|
|
276
|
+
stages can see your reasoning without re-deriving it from the diff.
|
|
277
|
+
Output a single XML block at the very end of your final message:
|
|
278
|
+
|
|
279
|
+
<decisions>
|
|
280
|
+
{
|
|
281
|
+
"decisions": [
|
|
282
|
+
{ "choice": "<short label of a non-obvious design choice you made>",
|
|
283
|
+
"reason": "<why this over the alternatives>",
|
|
284
|
+
"alternativesConsidered": ["<other approach you weighed>"] }
|
|
285
|
+
],
|
|
286
|
+
"leftUnhandled": [
|
|
287
|
+
{ "case": "<edge case you noticed but did NOT fix>",
|
|
288
|
+
"reason": "<why it's out of scope>" }
|
|
289
|
+
],
|
|
290
|
+
"keyFiles": ["<path/to/file.ts>", "..."]
|
|
291
|
+
}
|
|
292
|
+
</decisions>
|
|
293
|
+
|
|
294
|
+
Rules:
|
|
295
|
+
- Emit the block exactly once, at the END of your final message.
|
|
296
|
+
- Use valid JSON (double-quoted keys + strings; no trailing commas).
|
|
297
|
+
- Keep each "choice" / "reason" / "case" to one sentence.
|
|
298
|
+
- If you had no non-obvious decisions, "leftUnhandled" cases, or relevant
|
|
299
|
+
files, emit empty arrays: { "decisions": [], "leftUnhandled": [], "keyFiles": [] }.
|
|
300
|
+
- A reviewer will see this — keep it terse and honest, NOT marketing.
|
|
274
301
|
`.trim();
|
|
275
302
|
}
|
|
276
303
|
export function testTemplate(issue, repo, handoff, opts = {}) {
|
|
@@ -315,4 +342,41 @@ Instructions:
|
|
|
315
342
|
${REVIEW_OUTPUT_FORMAT}
|
|
316
343
|
`.trim();
|
|
317
344
|
}
|
|
345
|
+
/**
|
|
346
|
+
* BEC-227 Phase 4 / Track B. Used by the review-fix loop when the
|
|
347
|
+
* per-run Agent SDK session is intact AND there is a populated decision
|
|
348
|
+
* artifact AND `URATEAM_ENABLE_AGENT_SESSION_RESUME` was on at run start.
|
|
349
|
+
*
|
|
350
|
+
* The prompt is intentionally narrow: the resumed agent already has the
|
|
351
|
+
* full implement-stage context (tool calls, file edits, reasoning). All
|
|
352
|
+
* we need to give it is the list of blocking findings + a reminder of
|
|
353
|
+
* its own prior decisions so it can choose to preserve or revise them.
|
|
354
|
+
*/
|
|
355
|
+
export function surgicalReviewFixPrompt(findings, decisions) {
|
|
356
|
+
const findingsBlock = findings
|
|
357
|
+
.map((f, i) => {
|
|
358
|
+
const loc = `${f.file} line ${f.line}`;
|
|
359
|
+
const fix = f.fix ? ` — suggested fix: ${f.fix}` : "";
|
|
360
|
+
return `${i + 1}. [${f.severity} / ${f.category}] ${loc} — ${f.description}${fix}`;
|
|
361
|
+
})
|
|
362
|
+
.join("\n");
|
|
363
|
+
const hasDecisions = decisions !== null &&
|
|
364
|
+
((decisions.decisions?.length ?? 0) > 0 || (decisions.leftUnhandled?.length ?? 0) > 0);
|
|
365
|
+
const decisionsBlock = hasDecisions
|
|
366
|
+
? `\n\nPrior decisions you made during the implement stage (review BEFORE deciding whether to preserve or revise each):\n${JSON.stringify(decisions, null, 2)}`
|
|
367
|
+
: "";
|
|
368
|
+
return `Review surfaced blocking findings on the diff you produced. Address each one.
|
|
369
|
+
|
|
370
|
+
Blocking findings:
|
|
371
|
+
${findingsBlock}${decisionsBlock}
|
|
372
|
+
|
|
373
|
+
Instructions:
|
|
374
|
+
- You already have the full implement-stage context — the diff, file contents, your reasoning. Reuse it; do not re-read files you already know.
|
|
375
|
+
- Address every finding above. If a finding contradicts a prior decision listed above, choose the better answer and explain the trade-off in your reply (do NOT silently revert).
|
|
376
|
+
- Make ONLY the changes needed to resolve the findings. No drive-by refactors, no scope creep, no doc-rewrites unrelated to the findings.
|
|
377
|
+
- Commit your fixes (conventional commits, one logical commit per finding cluster) and push to the same branch.
|
|
378
|
+
- Do NOT create a new PR. Do NOT switch branches inside the worktree.
|
|
379
|
+
- After your edits, run the build + test commands you used in the implement stage and verify they still pass before declaring done.
|
|
380
|
+
`.trim();
|
|
381
|
+
}
|
|
318
382
|
//# sourceMappingURL=templates.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../src/executor/prompt/templates.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../src/executor/prompt/templates.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BEC-228 — shared helper for resolving per-stage SDK session options.
|
|
3
|
+
*
|
|
4
|
+
* Encapsulates the full BEC-227 flow:
|
|
5
|
+
* policy check → JSONL existence check → audit-event emission
|
|
6
|
+
*
|
|
7
|
+
* Called from both `executor.ts` (main pipeline stages) and `deep-review.ts`
|
|
8
|
+
* (parallel sub-agents). The only caller-visible difference is the `stage`
|
|
9
|
+
* label: pipeline stages pass the StageType string directly; deep-review
|
|
10
|
+
* sub-agents pass a qualified label like `"review:reuse"`.
|
|
11
|
+
*/
|
|
12
|
+
import type { AnyDb } from "../db/client.js";
|
|
13
|
+
export interface ResolveSessionOptsParams {
|
|
14
|
+
/** Stage label used for the policy check and audit event `stage` field. */
|
|
15
|
+
stage: string;
|
|
16
|
+
/** Resolved model string — used by `isResumable()` to gate the Claude family check.
|
|
17
|
+
* When undefined (e.g. stage profile has no explicit model), the resume path is
|
|
18
|
+
* skipped and `{}` is returned — same guard as the original `!!resolvedModel` in executor.ts. */
|
|
19
|
+
model: string | undefined;
|
|
20
|
+
/** Per-run SDK session UUID, or `null` when the feature flag is off. */
|
|
21
|
+
agentSessionId: string | null;
|
|
22
|
+
/** Worktree path — used to locate the JSONL transcript file. */
|
|
23
|
+
workdir: string;
|
|
24
|
+
/** Required (with `issueId` and `db`) to emit audit events. Optional to
|
|
25
|
+
* support deep-review's optional-audit pattern. */
|
|
26
|
+
runId?: string;
|
|
27
|
+
issueId?: string;
|
|
28
|
+
db?: AnyDb;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Resolves the SDK session options for a single stage or sub-agent call.
|
|
32
|
+
*
|
|
33
|
+
* BEC-231 — the shape is derived from ON-DISK state (transcriptExists), not
|
|
34
|
+
* from an in-memory `isFirstResumableStage` flag. The flag flipped before the
|
|
35
|
+
* SDK had written a single message, so first-stage failures (auth 401, MCP
|
|
36
|
+
* init error, pre-stream stall) left every subsequent stage stuck on the
|
|
37
|
+
* `resume:` shape pointing at a non-existent JSONL — session lost for the
|
|
38
|
+
* run's lifetime.
|
|
39
|
+
*
|
|
40
|
+
* Returns one of three shapes:
|
|
41
|
+
* - `{ sessionId }` — transcript absent: create (or re-create after failure)
|
|
42
|
+
* the SDK session. The SDK pre-assigns our UUID and
|
|
43
|
+
* writes a fresh transcript when the first message lands.
|
|
44
|
+
* - `{ resume }` — transcript on disk: continue the existing conversation.
|
|
45
|
+
* - `{}` — always-fresh stage, non-Claude model, or flag off.
|
|
46
|
+
*/
|
|
47
|
+
export declare function resolveSessionOpts(params: ResolveSessionOptsParams): Promise<{
|
|
48
|
+
sessionId?: string;
|
|
49
|
+
resume?: string;
|
|
50
|
+
}>;
|
|
51
|
+
//# sourceMappingURL=session-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-resolver.d.ts","sourceRoot":"","sources":["../../src/executor/session-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AASH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAc7C,MAAM,WAAW,wBAAwB;IACvC,2EAA2E;IAC3E,KAAK,EAAE,MAAM,CAAC;IACd;;sGAEkG;IAClG,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,wEAAwE;IACxE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,gEAAgE;IAChE,OAAO,EAAE,MAAM,CAAC;IAChB;wDACoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,EAAE,CAAC,EAAE,KAAK,CAAC;CACZ;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,wBAAwB,GAC/B,OAAO,CAAC;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAgDlD"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BEC-228 — shared helper for resolving per-stage SDK session options.
|
|
3
|
+
*
|
|
4
|
+
* Encapsulates the full BEC-227 flow:
|
|
5
|
+
* policy check → JSONL existence check → audit-event emission
|
|
6
|
+
*
|
|
7
|
+
* Called from both `executor.ts` (main pipeline stages) and `deep-review.ts`
|
|
8
|
+
* (parallel sub-agents). The only caller-visible difference is the `stage`
|
|
9
|
+
* label: pipeline stages pass the StageType string directly; deep-review
|
|
10
|
+
* sub-agents pass a qualified label like `"review:reuse"`.
|
|
11
|
+
*/
|
|
12
|
+
import { createReadStream } from "node:fs";
|
|
13
|
+
import { createInterface } from "node:readline";
|
|
14
|
+
import { isResumable } from "./session-policy.js";
|
|
15
|
+
import { transcriptExists, defaultProjectsRoot, transcriptPath } from "./session-store.js";
|
|
16
|
+
import { agentSessionResumedEvent } from "../audit/index.js";
|
|
17
|
+
import { logAuditEvent } from "../audit/writer.js";
|
|
18
|
+
import { createLogger } from "../logger.js";
|
|
19
|
+
const log = createLogger({ component: "SessionResolver" });
|
|
20
|
+
function countLines(filePath) {
|
|
21
|
+
return new Promise((resolve, reject) => {
|
|
22
|
+
let count = 0;
|
|
23
|
+
const rl = createInterface({ input: createReadStream(filePath), crlfDelay: Infinity });
|
|
24
|
+
rl.on("line", () => count++);
|
|
25
|
+
rl.on("close", () => resolve(count));
|
|
26
|
+
rl.on("error", reject);
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Resolves the SDK session options for a single stage or sub-agent call.
|
|
31
|
+
*
|
|
32
|
+
* BEC-231 — the shape is derived from ON-DISK state (transcriptExists), not
|
|
33
|
+
* from an in-memory `isFirstResumableStage` flag. The flag flipped before the
|
|
34
|
+
* SDK had written a single message, so first-stage failures (auth 401, MCP
|
|
35
|
+
* init error, pre-stream stall) left every subsequent stage stuck on the
|
|
36
|
+
* `resume:` shape pointing at a non-existent JSONL — session lost for the
|
|
37
|
+
* run's lifetime.
|
|
38
|
+
*
|
|
39
|
+
* Returns one of three shapes:
|
|
40
|
+
* - `{ sessionId }` — transcript absent: create (or re-create after failure)
|
|
41
|
+
* the SDK session. The SDK pre-assigns our UUID and
|
|
42
|
+
* writes a fresh transcript when the first message lands.
|
|
43
|
+
* - `{ resume }` — transcript on disk: continue the existing conversation.
|
|
44
|
+
* - `{}` — always-fresh stage, non-Claude model, or flag off.
|
|
45
|
+
*/
|
|
46
|
+
export async function resolveSessionOpts(params) {
|
|
47
|
+
const { stage, model, agentSessionId, workdir, runId, issueId, db } = params;
|
|
48
|
+
// Early returns narrow agentSessionId to string and model to string for the rest of the function.
|
|
49
|
+
if (agentSessionId === null || !model || !isResumable(stage, model)) {
|
|
50
|
+
return {};
|
|
51
|
+
}
|
|
52
|
+
const exists = transcriptExists({
|
|
53
|
+
projectsRoot: defaultProjectsRoot(),
|
|
54
|
+
cwd: workdir,
|
|
55
|
+
sessionId: agentSessionId,
|
|
56
|
+
});
|
|
57
|
+
if (!exists) {
|
|
58
|
+
// Transcript absent — (re-)create the session. Could be the first
|
|
59
|
+
// resumable stage of a fresh run, OR a re-attempt after the first stage
|
|
60
|
+
// failed before writing anything to disk. Either way, `sessionId:` is
|
|
61
|
+
// the right shape.
|
|
62
|
+
return { sessionId: agentSessionId };
|
|
63
|
+
}
|
|
64
|
+
// Transcript present — resume the conversation. Emit the audit event with
|
|
65
|
+
// the prior message count so operators can see how much context inherited.
|
|
66
|
+
if (db && runId && issueId) {
|
|
67
|
+
try {
|
|
68
|
+
const tp = transcriptPath({
|
|
69
|
+
projectsRoot: defaultProjectsRoot(),
|
|
70
|
+
cwd: workdir,
|
|
71
|
+
sessionId: agentSessionId,
|
|
72
|
+
});
|
|
73
|
+
const priorMessageCount = await countLines(tp);
|
|
74
|
+
void logAuditEvent(db, agentSessionResumedEvent({ runId, issueId, sessionId: agentSessionId, stage, priorMessageCount }));
|
|
75
|
+
}
|
|
76
|
+
catch (err) {
|
|
77
|
+
log.warn({ err: err.message, stage }, "failed to count prior session messages — emitting resumed event with count=0");
|
|
78
|
+
void logAuditEvent(db, agentSessionResumedEvent({ runId, issueId, sessionId: agentSessionId, stage, priorMessageCount: 0 }));
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return { resume: agentSessionId };
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=session-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-resolver.js","sourceRoot":"","sources":["../../src/executor/session-resolver.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -8,7 +8,8 @@ export * from "./rbac/index.js";
|
|
|
8
8
|
export { computeConfigFingerprint } from "./audit/config-fingerprint.js";
|
|
9
9
|
export { rootLogger, createLogger, addLogStream } from "./logger.js";
|
|
10
10
|
export { createDb, isPostgres, sqlDateGroup, sqlDaysAgoFilter, type Db, type AnyDb } from "./db/index.js";
|
|
11
|
-
export { pipelineRuns, stageRuns, agentLogs, activeWork, pmApprovals } from "./db/index.js";
|
|
11
|
+
export { pipelineRuns, stageRuns, agentLogs, activeWork, pmApprovals, circuitBreakerState } from "./db/index.js";
|
|
12
|
+
export { batchCountConsecutiveFailures, deleteFailedRunsForIssue } from "./pm/actions/db-queries.js";
|
|
12
13
|
export { createApp, type ServerConfig } from "./server.js";
|
|
13
14
|
export { PipelineRunner, type PipelineRunnerConfig, type LinearIssue } from "./pipeline/index.js";
|
|
14
15
|
export { type StopMode, requestRunStop, getStopSignal, clearStopSignal } from "./pipeline/index.js";
|
|
@@ -40,7 +41,7 @@ export type { BitbucketConfig, CreateBitbucketPROptions } from "./repo/bitbucket
|
|
|
40
41
|
export { createPmScheduler } from "./pm/scheduler.js";
|
|
41
42
|
export type { PmAgentConfig, TickResult } from "./pm/types.js";
|
|
42
43
|
export { PmAgentConfigSchema } from "./pm/types.js";
|
|
43
|
-
export { loadMigrationFiles, runMigrationsSqlite, runMigrationsPostgres, getMigrationStatusSqlite, getMigrationStatusPostgres, type Migration, type MigrationStatus, } from "./db/index.js";
|
|
44
|
+
export { loadMigrationFiles, loadActiveMigrationFiles, runMigrationsSqlite, runMigrationsPostgres, getMigrationStatusSqlite, getMigrationStatusPostgres, SQLITE_MIGRATION_RENAMES, POSTGRES_MIGRATION_RENAMES, type Migration, type MigrationStatus, } from "./db/index.js";
|
|
44
45
|
export { parseIssueFiles, buildConflictMatrix, detectFileOverlap, sortAndFilterNonConflicting, type IssueWithFiles, type FileOverlapResult, } from "./pm/conflict-detector.js";
|
|
45
46
|
export { upsertActiveWork, removeActiveWork, checkFileOverlap as checkCoordinationOverlap, getActiveWork, getModifiedFiles, type ActiveWorkEntry, type FileOverlapResult as CoordinationFileOverlapResult, } from "./pm/coordination.js";
|
|
46
47
|
export * from "./release-manager/index.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,YAAY,CAAC;AAC3B,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,oBAAoB,EACpB,KAAK,aAAa,GACnB,MAAM,cAAc,CAAC;AACtB,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,gBAAgB,EAAE,KAAK,EAAE,EAAE,KAAK,KAAK,EAAE,MAAM,eAAe,CAAC;AAC1G,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -9,7 +9,8 @@ export * from "./rbac/index.js";
|
|
|
9
9
|
export { computeConfigFingerprint } from "./audit/config-fingerprint.js";
|
|
10
10
|
export { rootLogger, createLogger, addLogStream } from "./logger.js";
|
|
11
11
|
export { createDb, isPostgres, sqlDateGroup, sqlDaysAgoFilter } from "./db/index.js";
|
|
12
|
-
export { pipelineRuns, stageRuns, agentLogs, activeWork, pmApprovals } from "./db/index.js";
|
|
12
|
+
export { pipelineRuns, stageRuns, agentLogs, activeWork, pmApprovals, circuitBreakerState } from "./db/index.js";
|
|
13
|
+
export { batchCountConsecutiveFailures, deleteFailedRunsForIssue } from "./pm/actions/db-queries.js";
|
|
13
14
|
export { createApp } from "./server.js";
|
|
14
15
|
export { PipelineRunner } from "./pipeline/index.js";
|
|
15
16
|
export { requestRunStop, getStopSignal, clearStopSignal } from "./pipeline/index.js";
|
|
@@ -37,7 +38,7 @@ export { buildGitHubConfigFromEnv } from "./repo/github-from-env.js";
|
|
|
37
38
|
export { postSlackMessage } from "./pm/slack-helpers.js";
|
|
38
39
|
export { createPmScheduler } from "./pm/scheduler.js";
|
|
39
40
|
export { PmAgentConfigSchema } from "./pm/types.js";
|
|
40
|
-
export { loadMigrationFiles, runMigrationsSqlite, runMigrationsPostgres, getMigrationStatusSqlite, getMigrationStatusPostgres, } from "./db/index.js";
|
|
41
|
+
export { loadMigrationFiles, loadActiveMigrationFiles, runMigrationsSqlite, runMigrationsPostgres, getMigrationStatusSqlite, getMigrationStatusPostgres, SQLITE_MIGRATION_RENAMES, POSTGRES_MIGRATION_RENAMES, } from "./db/index.js";
|
|
41
42
|
export { parseIssueFiles, buildConflictMatrix, detectFileOverlap, sortAndFilterNonConflicting, } from "./pm/conflict-detector.js";
|
|
42
43
|
export { upsertActiveWork, removeActiveWork, checkFileOverlap as checkCoordinationOverlap, getActiveWork, getModifiedFiles, } from "./pm/coordination.js";
|
|
43
44
|
export * from "./release-manager/index.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,cAAc,YAAY,CAAC;AAC3B,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,oBAAoB,GAErB,MAAM,cAAc,CAAC;AACtB,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,gBAAgB,EAAuB,MAAM,eAAe,CAAC;AAC1G,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,7 +25,7 @@ export class CompositeNotifier {
|
|
|
25
25
|
await Promise.allSettled(this.notifiers.filter(n => n.onDailyTokenSummary).map(n => n.onDailyTokenSummary(summary)));
|
|
26
26
|
}
|
|
27
27
|
async onPRMerged(run) {
|
|
28
|
-
await Promise.allSettled(this.notifiers.
|
|
28
|
+
await Promise.allSettled(this.notifiers.map(n => n.onPRMerged?.(run)));
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
//# sourceMappingURL=composite.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composite.js","sourceRoot":"","sources":["../../src/notifier/composite.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,iBAAiB;IACR;IAApB,YAAoB,SAAqB;QAArB,cAAS,GAAT,SAAS,CAAY;IAAG,CAAC;IAE7C,KAAK,CAAC,eAAe,CAAC,GAAgB;QACpC,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,GAAgB,EAAE,KAAa,EAAE,MAAmB;QACxE,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3F,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,GAAgB,EAAE,MAAsB;QAC/D,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACvF,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,GAAgB,EAAE,KAAoB;QAC3D,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACpF,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,GAAgB,EAAE,KAAa,EAAE,MAAc;QACvE,MAAM,OAAO,CAAC,UAAU,CACtB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CACrE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,GAAgB,EAAE,UAAkB,EAAE,SAAiB;QAC9E,MAAM,OAAO,CAAC,UAAU,CACtB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAmB,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAC7G,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,OAA0B;QAClD,MAAM,OAAO,CAAC,UAAU,CACtB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAoB,CAAC,OAAO,CAAC,CAAC,CAC5F,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAgB;QAC/B,MAAM,OAAO,CAAC,UAAU,CACtB,IAAI,CAAC,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"composite.js","sourceRoot":"","sources":["../../src/notifier/composite.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,iBAAiB;IACR;IAApB,YAAoB,SAAqB;QAArB,cAAS,GAAT,SAAS,CAAY;IAAG,CAAC;IAE7C,KAAK,CAAC,eAAe,CAAC,GAAgB;QACpC,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,GAAgB,EAAE,KAAa,EAAE,MAAmB;QACxE,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3F,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,GAAgB,EAAE,MAAsB;QAC/D,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACvF,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,GAAgB,EAAE,KAAoB;QAC3D,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACpF,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,GAAgB,EAAE,KAAa,EAAE,MAAc;QACvE,MAAM,OAAO,CAAC,UAAU,CACtB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CACrE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,GAAgB,EAAE,UAAkB,EAAE,SAAiB;QAC9E,MAAM,OAAO,CAAC,UAAU,CACtB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAmB,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAC7G,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,OAA0B;QAClD,MAAM,OAAO,CAAC,UAAU,CACtB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAoB,CAAC,OAAO,CAAC,CAAC,CAC5F,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAgB;QAC/B,MAAM,OAAO,CAAC,UAAU,CACtB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,CAC7C,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -19,8 +19,8 @@ export declare class LinearNotifier implements Notifier {
|
|
|
19
19
|
onStageComplete(run: PipelineRun, stage: string, result: StageResult): Promise<void>;
|
|
20
20
|
onPipelineComplete(run: PipelineRun, result: PipelineResult): Promise<void>;
|
|
21
21
|
onHumanReviewNeeded(run: PipelineRun, prUrl: string, reason: string): Promise<void>;
|
|
22
|
-
onTokenBudgetAlert(run: PipelineRun, usedTokens: number, maxTokens: number): Promise<void>;
|
|
23
22
|
onPRMerged(run: PipelineRun): Promise<void>;
|
|
23
|
+
onTokenBudgetAlert(run: PipelineRun, usedTokens: number, maxTokens: number): Promise<void>;
|
|
24
24
|
onPipelineFailed(run: PipelineRun, error: PipelineError): Promise<void>;
|
|
25
25
|
private resolveIssueId;
|
|
26
26
|
private postComment;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linear.d.ts","sourceRoot":"","sources":["../../src/notifier/linear.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"linear.d.ts","sourceRoot":"","sources":["../../src/notifier/linear.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AA0CrG,eAAO,MAAM,aAAa;;;;;CAKhB,CAAC;AAEX,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,cAAe,YAAW,QAAQ;IAC7C,OAAO,CAAC,MAAM,CAAS;IAIvB,OAAO,CAAC,UAAU,CAAqD;IACvE,OAAO,CAAC,YAAY,CAA+E;IACnG,OAAO,CAAC,aAAa,CAA6B;gBAEtC,MAAM,EAAE,oBAAoB;YAI1B,SAAS;IASjB,eAAe,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAYhD,eAAe,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBpF,kBAAkB,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IA6B3E,mBAAmB,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYnF,UAAU,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAc3C,kBAAkB,CAAC,GAAG,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS1F,gBAAgB,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;YAY/D,cAAc;YAed,WAAW;YAYX,eAAe;CAuB9B"}
|
package/dist/notifier/linear.js
CHANGED
|
@@ -1,5 +1,41 @@
|
|
|
1
1
|
import { createLogger } from "../logger.js";
|
|
2
2
|
const log = createLogger({ component: "LinearNotifier" });
|
|
3
|
+
/**
|
|
4
|
+
* Simple bounded TTL cache. Entries expire after `ttlMs` milliseconds.
|
|
5
|
+
* When the map reaches `maxSize`, the oldest inserted entry is evicted
|
|
6
|
+
* (insertion-order eviction via Map's guaranteed iteration order).
|
|
7
|
+
*/
|
|
8
|
+
class TTLCache {
|
|
9
|
+
ttlMs;
|
|
10
|
+
maxSize;
|
|
11
|
+
entries = new Map();
|
|
12
|
+
constructor(ttlMs, maxSize) {
|
|
13
|
+
this.ttlMs = ttlMs;
|
|
14
|
+
this.maxSize = maxSize;
|
|
15
|
+
}
|
|
16
|
+
get(key) {
|
|
17
|
+
const entry = this.entries.get(key);
|
|
18
|
+
if (!entry)
|
|
19
|
+
return undefined;
|
|
20
|
+
if (Date.now() > entry.expiresAt) {
|
|
21
|
+
this.entries.delete(key);
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
24
|
+
return entry.value;
|
|
25
|
+
}
|
|
26
|
+
has(key) {
|
|
27
|
+
return this.get(key) !== undefined;
|
|
28
|
+
}
|
|
29
|
+
set(key, value) {
|
|
30
|
+
if (this.entries.size >= this.maxSize && !this.entries.has(key)) {
|
|
31
|
+
// Evict the oldest entry (first in insertion order)
|
|
32
|
+
const firstKey = this.entries.keys().next().value;
|
|
33
|
+
if (firstKey !== undefined)
|
|
34
|
+
this.entries.delete(firstKey);
|
|
35
|
+
}
|
|
36
|
+
this.entries.set(key, { value, expiresAt: Date.now() + this.ttlMs });
|
|
37
|
+
}
|
|
38
|
+
}
|
|
3
39
|
export const LINEAR_STATES = {
|
|
4
40
|
IN_PROGRESS: "In Progress",
|
|
5
41
|
IN_REVIEW: "In Review",
|
|
@@ -8,8 +44,11 @@ export const LINEAR_STATES = {
|
|
|
8
44
|
};
|
|
9
45
|
export class LinearNotifier {
|
|
10
46
|
apiKey;
|
|
11
|
-
|
|
12
|
-
|
|
47
|
+
// Bounded TTL caches: 15-min expiry, max 500/1000 entries.
|
|
48
|
+
// Prevents unbounded memory growth in long-running services processing
|
|
49
|
+
// hundreds of teams and issues.
|
|
50
|
+
stateCache = new TTLCache(15 * 60 * 1000, 500);
|
|
51
|
+
issueIdCache = new TTLCache(15 * 60 * 1000, 1000);
|
|
13
52
|
clientPromise = null;
|
|
14
53
|
constructor(config) {
|
|
15
54
|
this.apiKey = config.apiKey;
|
|
@@ -80,6 +119,14 @@ export class LinearNotifier {
|
|
|
80
119
|
this.transitionState(run.issueId, LINEAR_STATES.IN_REVIEW),
|
|
81
120
|
]);
|
|
82
121
|
}
|
|
122
|
+
async onPRMerged(run) {
|
|
123
|
+
await Promise.all([
|
|
124
|
+
this.postComment(run.issueId, `🤖 **Agent Run #${run.id.slice(0, 8)}** — PR Merged ✅\n\n` +
|
|
125
|
+
(run.prUrl ? `**PR**: ${run.prUrl}\n\n` : "") +
|
|
126
|
+
`The pull request has been merged.`),
|
|
127
|
+
this.transitionState(run.issueId, LINEAR_STATES.DONE),
|
|
128
|
+
]);
|
|
129
|
+
}
|
|
83
130
|
// onDailyTokenSummary intentionally omitted — daily summaries are cross-run
|
|
84
131
|
// aggregates that don't map to per-issue comments. Use Slack/Discord instead.
|
|
85
132
|
async onTokenBudgetAlert(run, usedTokens, maxTokens) {
|
|
@@ -88,13 +135,6 @@ export class LinearNotifier {
|
|
|
88
135
|
`Usage: ${usedTokens.toLocaleString()} / ${maxTokens.toLocaleString()} tokens (${pct}%)\n` +
|
|
89
136
|
`The run will be aborted if the budget is exceeded.`);
|
|
90
137
|
}
|
|
91
|
-
async onPRMerged(run) {
|
|
92
|
-
await Promise.all([
|
|
93
|
-
this.postComment(run.issueId, `🤖 **Agent Run #${run.id.slice(0, 8)}** — PR Merged ✅\n\n` +
|
|
94
|
-
`The PR has been merged. Closing this ticket.`),
|
|
95
|
-
this.transitionState(run.issueId, LINEAR_STATES.DONE),
|
|
96
|
-
]);
|
|
97
|
-
}
|
|
98
138
|
async onPipelineFailed(run, error) {
|
|
99
139
|
await Promise.all([
|
|
100
140
|
this.postComment(run.issueId, `🤖 **Agent Run #${run.id.slice(0, 8)}** — Pipeline Failed ❌\n\n` +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linear.js","sourceRoot":"","sources":["../../src/notifier/linear.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAC;AAE1D,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,WAAW,EAAE,aAAa;IAC1B,SAAS,EAAE,WAAW;IACtB,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,SAAS;CACV,CAAC;AAMX,MAAM,OAAO,cAAc;IACjB,MAAM,CAAS;
|
|
1
|
+
{"version":3,"file":"linear.js","sourceRoot":"","sources":["../../src/notifier/linear.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { AnyDb } from "../db/client.js";
|
|
2
|
+
import type { ReviewFinding } from "../types.js";
|
|
3
|
+
/**
|
|
4
|
+
* BEC-227 Phase 4 / Track B. Decides whether the review-fix loop can take
|
|
5
|
+
* the surgical (resume-based) path and, if so, builds the prompt.
|
|
6
|
+
*
|
|
7
|
+
* - `surgical`: agent_session_id non-null AND JSONL transcript on disk.
|
|
8
|
+
* The caller passes `prompt` to `executeStage` via `promptOverride`
|
|
9
|
+
* + `suppressHandoff: true`. The decisions snippet (if any) is
|
|
10
|
+
* embedded in `prompt`.
|
|
11
|
+
* - `legacy`: any of those conditions is false. The caller falls back
|
|
12
|
+
* to the existing full implement-template re-run.
|
|
13
|
+
*
|
|
14
|
+
* Either way, exactly one `pipeline.surgical_review_fix` audit event
|
|
15
|
+
* fires so operators can monitor the fallback rate.
|
|
16
|
+
*/
|
|
17
|
+
export declare function runSurgicalReviewFix(args: {
|
|
18
|
+
db: AnyDb;
|
|
19
|
+
runId: string;
|
|
20
|
+
issueId: string;
|
|
21
|
+
agentSessionId: string | null;
|
|
22
|
+
worktreePath: string;
|
|
23
|
+
blockingFindings: ReviewFinding[];
|
|
24
|
+
}): Promise<{
|
|
25
|
+
path: "surgical" | "legacy";
|
|
26
|
+
prompt: string;
|
|
27
|
+
decisionPayloadBytes: number;
|
|
28
|
+
}>;
|
|
29
|
+
//# sourceMappingURL=run-surgical-review-fix.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-surgical-review-fix.d.ts","sourceRoot":"","sources":["../../src/pipeline/run-surgical-review-fix.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE;IAC/C,EAAE,EAAE,KAAK,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,aAAa,EAAE,CAAC;CACnC,GAAG,OAAO,CAAC;IACV,IAAI,EAAE,UAAU,GAAG,QAAQ,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,oBAAoB,EAAE,MAAM,CAAC;CAC9B,CAAC,CAkCD"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { logAuditEvent } from "../audit/writer.js";
|
|
2
|
+
import { surgicalReviewFixEvent } from "../audit/events.js";
|
|
3
|
+
import { surgicalReviewFixPrompt } from "../executor/prompt/templates.js";
|
|
4
|
+
import { transcriptExists, defaultProjectsRoot } from "../executor/session-store.js";
|
|
5
|
+
import { getLatestDecisionArtifact } from "../db/decisions-store.js";
|
|
6
|
+
/**
|
|
7
|
+
* BEC-227 Phase 4 / Track B. Decides whether the review-fix loop can take
|
|
8
|
+
* the surgical (resume-based) path and, if so, builds the prompt.
|
|
9
|
+
*
|
|
10
|
+
* - `surgical`: agent_session_id non-null AND JSONL transcript on disk.
|
|
11
|
+
* The caller passes `prompt` to `executeStage` via `promptOverride`
|
|
12
|
+
* + `suppressHandoff: true`. The decisions snippet (if any) is
|
|
13
|
+
* embedded in `prompt`.
|
|
14
|
+
* - `legacy`: any of those conditions is false. The caller falls back
|
|
15
|
+
* to the existing full implement-template re-run.
|
|
16
|
+
*
|
|
17
|
+
* Either way, exactly one `pipeline.surgical_review_fix` audit event
|
|
18
|
+
* fires so operators can monitor the fallback rate.
|
|
19
|
+
*/
|
|
20
|
+
export async function runSurgicalReviewFix(args) {
|
|
21
|
+
const { db, runId, issueId, agentSessionId, worktreePath, blockingFindings } = args;
|
|
22
|
+
let path = "legacy";
|
|
23
|
+
let promptStr = "";
|
|
24
|
+
let decisionPayloadBytes = 0;
|
|
25
|
+
if (agentSessionId !== null) {
|
|
26
|
+
const exists = transcriptExists({
|
|
27
|
+
projectsRoot: defaultProjectsRoot(),
|
|
28
|
+
cwd: worktreePath,
|
|
29
|
+
sessionId: agentSessionId,
|
|
30
|
+
});
|
|
31
|
+
if (exists) {
|
|
32
|
+
const decisionRow = await getLatestDecisionArtifact(db, runId);
|
|
33
|
+
const decisions = decisionRow?.payload ?? null;
|
|
34
|
+
promptStr = surgicalReviewFixPrompt(blockingFindings, decisions);
|
|
35
|
+
decisionPayloadBytes = decisions ? JSON.stringify(decisions).length : 0;
|
|
36
|
+
path = "surgical";
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
void logAuditEvent(db, surgicalReviewFixEvent({
|
|
40
|
+
runId,
|
|
41
|
+
issueId,
|
|
42
|
+
path,
|
|
43
|
+
findingsCount: blockingFindings.length,
|
|
44
|
+
decisionPayloadBytes,
|
|
45
|
+
}));
|
|
46
|
+
return { path, prompt: promptStr, decisionPayloadBytes };
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=run-surgical-review-fix.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-surgical-review-fix.js","sourceRoot":"","sources":["../../src/pipeline/run-surgical-review-fix.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACrF,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAIrE;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAO1C;IAKC,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC;IAEpF,IAAI,IAAI,GAA0B,QAAQ,CAAC;IAC3C,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,IAAI,oBAAoB,GAAG,CAAC,CAAC;IAE7B,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,gBAAgB,CAAC;YAC9B,YAAY,EAAE,mBAAmB,EAAE;YACnC,GAAG,EAAE,YAAY;YACjB,SAAS,EAAE,cAAc;SAC1B,CAAC,CAAC;QACH,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,WAAW,GAAG,MAAM,yBAAyB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAC/D,MAAM,SAAS,GAAG,WAAW,EAAE,OAAO,IAAI,IAAI,CAAC;YAC/C,SAAS,GAAG,uBAAuB,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;YACjE,oBAAoB,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACxE,IAAI,GAAG,UAAU,CAAC;QACpB,CAAC;IACH,CAAC;IAED,KAAK,aAAa,CAChB,EAAE,EACF,sBAAsB,CAAC;QACrB,KAAK;QACL,OAAO;QACP,IAAI;QACJ,aAAa,EAAE,gBAAgB,CAAC,MAAM;QACtC,oBAAoB;KACrB,CAAC,CACH,CAAC;IAEF,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,oBAAoB,EAAE,CAAC;AAC3D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/pipeline/runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,UAAU,EAEV,QAAQ,EACR,WAAW,EAEX,cAAc,
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/pipeline/runner.ts"],"names":[],"mappings":"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"}
|