supipowers 1.5.3 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -8
- package/bin/install.mjs +20 -5
- package/bin/install.ts +95 -0
- package/package.json +8 -4
- package/skills/context-mode/SKILL.md +17 -10
- package/skills/harness/SKILL.md +94 -0
- package/skills/ui-design/SKILL.md +63 -0
- package/skills/ui-design/sub-agent-templates/component-builder.md +29 -0
- package/skills/ui-design/sub-agent-templates/design-critic.md +46 -0
- package/skills/ui-design/sub-agent-templates/pencil/component-builder.md +29 -0
- package/skills/ui-design/sub-agent-templates/pencil/design-critic.md +42 -0
- package/skills/ui-design/sub-agent-templates/pencil/section-assembler.md +27 -0
- package/skills/ui-design/sub-agent-templates/section-assembler.md +27 -0
- package/skills/ultraplan-discover/SKILL.md +96 -0
- package/skills/ultraplan-intake/SKILL.md +89 -0
- package/skills/ultraplan-research/SKILL.md +129 -0
- package/skills/ultraplan-review/SKILL.md +86 -0
- package/skills/ultraplan-review-scope/SKILL.md +111 -0
- package/skills/ultraplan-review-structure/SKILL.md +120 -0
- package/skills/ultraplan-review-tdd/SKILL.md +142 -0
- package/skills/ultraplan-scout/SKILL.md +110 -0
- package/skills/ultraplan-synthesize/SKILL.md +124 -0
- package/src/{quality/ai-session.ts → ai/final-message.ts} +27 -0
- package/src/ai/schema-text.ts +129 -0
- package/src/ai/structured-output.ts +274 -0
- package/src/ai/template.ts +27 -0
- package/src/bootstrap.ts +63 -28
- package/src/commands/agents.ts +131 -42
- package/src/commands/ai-review.ts +251 -30
- package/src/commands/clear.ts +434 -0
- package/src/commands/commit.ts +1 -0
- package/src/commands/config.ts +242 -44
- package/src/commands/context.ts +55 -28
- package/src/commands/doctor.ts +234 -6
- package/src/commands/fix-pr.ts +306 -131
- package/src/commands/generate.ts +111 -21
- package/src/commands/memory.ts +192 -0
- package/src/commands/model-picker.ts +28 -21
- package/src/commands/model.ts +18 -8
- package/src/commands/optimize-context.ts +408 -29
- package/src/commands/plan.ts +2 -0
- package/src/commands/qa.ts +312 -137
- package/src/commands/release.ts +259 -76
- package/src/commands/review.ts +293 -59
- package/src/commands/status.ts +200 -13
- package/src/commands/supi.ts +3 -35
- package/src/commands/ui-design.ts +394 -0
- package/src/commands/ultraplan.ts +1518 -0
- package/src/commands/update.ts +86 -0
- package/src/config/defaults.ts +62 -0
- package/src/config/loader.ts +448 -60
- package/src/config/schema.ts +108 -2
- package/src/context/optimizer.ts +25 -33
- package/src/context/rule-renderer.ts +223 -0
- package/src/context/savings.ts +258 -0
- package/src/context/startup-check.ts +380 -0
- package/src/context/startup-optimizer.ts +355 -0
- package/src/context/tokenignore.ts +146 -0
- package/src/context-mode/cache-handle.ts +49 -0
- package/src/context-mode/cache-preview.ts +71 -0
- package/src/context-mode/cache-store.ts +738 -0
- package/src/context-mode/compressor.ts +131 -26
- package/src/context-mode/dedup.ts +108 -0
- package/src/context-mode/detector.ts +35 -4
- package/src/context-mode/event-extractor.ts +14 -12
- package/src/context-mode/event-store.ts +91 -36
- package/src/context-mode/hooks.ts +798 -56
- package/src/context-mode/knowledge/store.ts +255 -11
- package/src/context-mode/memory-store.ts +325 -0
- package/src/context-mode/metrics-recorder.ts +158 -0
- package/src/context-mode/metrics-store.ts +765 -0
- package/src/context-mode/model.ts +24 -0
- package/src/context-mode/processor-keys.ts +29 -0
- package/src/context-mode/processors/build.ts +66 -0
- package/src/context-mode/processors/docker.ts +57 -0
- package/src/context-mode/processors/git.ts +111 -0
- package/src/context-mode/processors/json.ts +112 -0
- package/src/context-mode/processors/k8s.ts +67 -0
- package/src/context-mode/processors/lint.ts +67 -0
- package/src/context-mode/processors/log.ts +86 -0
- package/src/context-mode/processors/registry.ts +116 -0
- package/src/context-mode/processors/test-runner.ts +102 -0
- package/src/context-mode/processors/types.ts +20 -0
- package/src/context-mode/repomap.ts +400 -0
- package/src/context-mode/routing.ts +97 -24
- package/src/context-mode/sandbox/runners.ts +5 -1
- package/src/context-mode/snapshot-builder.ts +106 -11
- package/src/context-mode/source-hash.ts +173 -0
- package/src/context-mode/tool-name.ts +11 -0
- package/src/context-mode/tools.ts +654 -22
- package/src/context-mode/web/fetcher.ts +31 -12
- package/src/debug/logger.ts +2 -1
- package/src/deps/registry.ts +1 -1
- package/src/discipline/failure-summarizer.ts +170 -0
- package/src/discipline/failure-taxonomy.ts +131 -0
- package/src/discipline/workflow-invariants.ts +125 -0
- package/src/discovery/index.ts +31 -0
- package/src/discovery/lsp.ts +87 -0
- package/src/discovery/rank.ts +144 -0
- package/src/discovery/sources.ts +89 -0
- package/src/discovery/workflow.ts +87 -0
- package/src/docs/contracts.ts +39 -0
- package/src/docs/drift.ts +117 -87
- package/src/fix-pr/assessment.ts +200 -0
- package/src/fix-pr/contracts.ts +47 -0
- package/src/fix-pr/fetch-comments.ts +80 -0
- package/src/fix-pr/prompt-builder.ts +58 -40
- package/src/fix-pr/scripts/exec.ts +34 -0
- package/src/fix-pr/scripts/trigger-review.ts +106 -0
- package/src/fix-pr/scripts/wait-and-check.ts +108 -0
- package/src/fix-pr/types.ts +4 -0
- package/src/git/branch-finish.ts +5 -0
- package/src/git/commit-contract.ts +83 -0
- package/src/git/commit.ts +121 -184
- package/src/git/status.ts +62 -8
- package/src/harness/anti_slop/architecture-parser.ts +210 -0
- package/src/harness/anti_slop/backend-factory.ts +30 -0
- package/src/harness/anti_slop/backend.ts +140 -0
- package/src/harness/anti_slop/desloppify-adapter.ts +319 -0
- package/src/harness/anti_slop/fallow-adapter.ts +305 -0
- package/src/harness/anti_slop/installer.ts +227 -0
- package/src/harness/anti_slop/queue.ts +216 -0
- package/src/harness/anti_slop/recommend.ts +84 -0
- package/src/harness/anti_slop/score.ts +180 -0
- package/src/harness/anti_slop/synthetic-edit-test.ts +128 -0
- package/src/harness/artifacts/agents-md.ts +88 -0
- package/src/harness/artifacts/checks-wiring.ts +57 -0
- package/src/harness/artifacts/docs-tree.ts +79 -0
- package/src/harness/artifacts/lint-configs.ts +136 -0
- package/src/harness/artifacts/review-agents.ts +67 -0
- package/src/harness/bare-entry.ts +108 -0
- package/src/harness/command.ts +1010 -0
- package/src/harness/default-agents/design.md +23 -0
- package/src/harness/default-agents/discover.md +18 -0
- package/src/harness/default-agents/implement.md +24 -0
- package/src/harness/default-agents/plan.md +19 -0
- package/src/harness/default-agents/research.md +21 -0
- package/src/harness/default-agents/validate.md +22 -0
- package/src/harness/gc/reporter.ts +28 -0
- package/src/harness/gc/runner.ts +136 -0
- package/src/harness/hooks/layer-context-inject.ts +155 -0
- package/src/harness/hooks/post-session-sweep.ts +130 -0
- package/src/harness/hooks/pre-edit-dupe-probe.ts +224 -0
- package/src/harness/hooks/register.ts +118 -0
- package/src/harness/model.ts +117 -0
- package/src/harness/pipeline.ts +348 -0
- package/src/harness/project-paths.ts +235 -0
- package/src/harness/stage-runner.ts +107 -0
- package/src/harness/stages/design.ts +386 -0
- package/src/harness/stages/discover.ts +454 -0
- package/src/harness/stages/implement.ts +162 -0
- package/src/harness/stages/plan.ts +335 -0
- package/src/harness/stages/research.ts +263 -0
- package/src/harness/stages/validate.ts +684 -0
- package/src/harness/storage.ts +467 -0
- package/src/harness/tools.ts +426 -0
- package/src/lsp/bridge.ts +56 -95
- package/src/lsp/capabilities.ts +108 -0
- package/src/lsp/contracts.ts +35 -0
- package/src/lsp/detector.ts +8 -12
- package/src/markdown-frontmatter.ts +68 -0
- package/src/mempalace/bridge.ts +135 -0
- package/src/mempalace/config.ts +75 -0
- package/src/mempalace/format.ts +163 -0
- package/src/mempalace/hooks.ts +370 -0
- package/src/mempalace/installer-helper.ts +194 -0
- package/src/mempalace/python/mempalace_bridge.py +440 -0
- package/src/mempalace/runtime.ts +565 -0
- package/src/mempalace/schema.ts +268 -0
- package/src/mempalace/session-summary.ts +198 -0
- package/src/mempalace/tool.ts +186 -0
- package/src/mempalace/uv.ts +256 -0
- package/src/migrate/runner.ts +354 -0
- package/src/planning/approval-flow.ts +206 -9
- package/src/planning/plan-writer-prompt.ts +4 -3
- package/src/planning/planning-ask-tool.ts +39 -0
- package/src/planning/render-markdown.ts +74 -0
- package/src/planning/spec.ts +42 -0
- package/src/planning/system-prompt.ts +11 -8
- package/src/planning/validate.ts +84 -0
- package/src/platform/omp.ts +15 -2
- package/src/platform/system-prompt.ts +37 -0
- package/src/platform/test-utils.ts +3 -0
- package/src/platform/types.ts +6 -1
- package/src/qa/config.ts +12 -6
- package/src/qa/detect-app-type.ts +13 -6
- package/src/qa/matrix.ts +12 -6
- package/src/qa/prompt-builder.ts +28 -30
- package/src/qa/scripts/dev-server-utils.ts +72 -0
- package/src/qa/scripts/run-e2e-tests.ts +226 -0
- package/src/qa/scripts/start-dev-server.ts +138 -0
- package/src/qa/scripts/stop-dev-server.ts +77 -0
- package/src/qa/session.ts +13 -7
- package/src/quality/ai-setup.ts +27 -25
- package/src/quality/contracts.ts +34 -0
- package/src/quality/gates/ai-review.ts +20 -58
- package/src/quality/gates/command.ts +249 -46
- package/src/quality/review-gates.ts +18 -2
- package/src/quality/runner.ts +63 -22
- package/src/quality/schemas.ts +37 -2
- package/src/quality/setup.ts +96 -16
- package/src/release/changelog.ts +1 -1
- package/src/release/channels/custom.ts +13 -3
- package/src/release/channels/types.ts +5 -0
- package/src/release/contracts.ts +90 -0
- package/src/release/executor.ts +122 -45
- package/src/release/prompt.ts +18 -2
- package/src/release/targets.ts +86 -0
- package/src/release/version.ts +96 -71
- package/src/review/agent-loader.ts +221 -109
- package/src/review/fixer.ts +10 -6
- package/src/review/multi-agent-runner.ts +114 -13
- package/src/review/output.ts +12 -139
- package/src/review/runner.ts +12 -6
- package/src/review/scope.ts +144 -24
- package/src/review/types.ts +1 -20
- package/src/review/validator.ts +12 -6
- package/src/storage/fix-pr-sessions.ts +21 -14
- package/src/storage/plans.ts +14 -5
- package/src/storage/qa-sessions.ts +25 -19
- package/src/storage/reliability-metrics.ts +180 -0
- package/src/storage/reports.ts +8 -7
- package/src/storage/review-sessions.ts +55 -20
- package/src/tool-catalog/active-tool-controller.ts +164 -0
- package/src/tool-catalog/active-tool-planner.ts +212 -0
- package/src/tool-catalog/tool-groups.ts +102 -0
- package/src/types.ts +1399 -5
- package/src/ui-design/backend-adapter.ts +78 -0
- package/src/ui-design/backends/local-html.ts +82 -0
- package/src/ui-design/backends/pencil-mcp.ts +111 -0
- package/src/ui-design/components-scanner.ts +124 -0
- package/src/ui-design/config.ts +55 -0
- package/src/ui-design/pen-scanner.ts +95 -0
- package/src/ui-design/pen-selector.ts +72 -0
- package/src/ui-design/prompt-builder.ts +73 -0
- package/src/ui-design/scanner.ts +136 -0
- package/src/ui-design/session.ts +974 -0
- package/src/ui-design/system-prompt.ts +312 -0
- package/src/ui-design/tokens-scanner.ts +181 -0
- package/src/ui-design/types.ts +96 -0
- package/src/ultraplan/agent-catalog.ts +522 -0
- package/src/ultraplan/authoring/agent-catalog.ts +310 -0
- package/src/ultraplan/authoring/authoring-tools.ts +552 -0
- package/src/ultraplan/authoring/command-handlers.ts +339 -0
- package/src/ultraplan/authoring/markdown.ts +510 -0
- package/src/ultraplan/authoring/model.ts +162 -0
- package/src/ultraplan/authoring/pipeline.ts +319 -0
- package/src/ultraplan/authoring/stage-runner.ts +141 -0
- package/src/ultraplan/authoring/stages/approve.ts +249 -0
- package/src/ultraplan/authoring/stages/discover.ts +289 -0
- package/src/ultraplan/authoring/stages/intake.ts +203 -0
- package/src/ultraplan/authoring/stages/research.ts +399 -0
- package/src/ultraplan/authoring/stages/review.ts +333 -0
- package/src/ultraplan/authoring/stages/scout.ts +188 -0
- package/src/ultraplan/authoring/stages/synthesize.ts +348 -0
- package/src/ultraplan/authoring/storage.ts +594 -0
- package/src/ultraplan/authoring/synth-gate.ts +165 -0
- package/src/ultraplan/authoring-draft.ts +653 -0
- package/src/ultraplan/authoring-persist.ts +180 -0
- package/src/ultraplan/authoring-tool.ts +608 -0
- package/src/ultraplan/authoring-wizard.ts +587 -0
- package/src/ultraplan/batch/merge.ts +98 -0
- package/src/ultraplan/batch/planner.ts +150 -0
- package/src/ultraplan/batch/presenter.ts +97 -0
- package/src/ultraplan/batch/storage.ts +420 -0
- package/src/ultraplan/batch/supervisor.ts +317 -0
- package/src/ultraplan/batch/worker.ts +26 -0
- package/src/ultraplan/batch/worktree.ts +110 -0
- package/src/ultraplan/contracts.ts +1593 -0
- package/src/ultraplan/default-agents/authoring/discoverer.md +12 -0
- package/src/ultraplan/default-agents/authoring/intake.md +12 -0
- package/src/ultraplan/default-agents/authoring/planner.md +12 -0
- package/src/ultraplan/default-agents/authoring/researcher.md +12 -0
- package/src/ultraplan/default-agents/authoring/scope-checker.md +12 -0
- package/src/ultraplan/default-agents/authoring/scout.md +12 -0
- package/src/ultraplan/default-agents/authoring/structure-checker.md +12 -0
- package/src/ultraplan/default-agents/authoring/tdd-checker.md +12 -0
- package/src/ultraplan/default-agents/backend-domain-reviewer.md +10 -0
- package/src/ultraplan/default-agents/backend-executor.md +10 -0
- package/src/ultraplan/default-agents/backend-stack-reviewer.md +10 -0
- package/src/ultraplan/default-agents/backend-tester.md +10 -0
- package/src/ultraplan/default-agents/frontend-domain-reviewer.md +10 -0
- package/src/ultraplan/default-agents/frontend-executor.md +10 -0
- package/src/ultraplan/default-agents/frontend-stack-reviewer.md +10 -0
- package/src/ultraplan/default-agents/frontend-tester.md +10 -0
- package/src/ultraplan/default-agents/infrastructure-domain-reviewer.md +10 -0
- package/src/ultraplan/default-agents/infrastructure-executor.md +10 -0
- package/src/ultraplan/default-agents/infrastructure-stack-reviewer.md +10 -0
- package/src/ultraplan/default-agents/infrastructure-tester.md +10 -0
- package/src/ultraplan/execution/contract.ts +71 -0
- package/src/ultraplan/execution/policy.ts +217 -0
- package/src/ultraplan/execution/runtime-tools.ts +107 -0
- package/src/ultraplan/execution/session-runner.ts +281 -0
- package/src/ultraplan/next-router.ts +85 -0
- package/src/ultraplan/presenter.ts +359 -0
- package/src/ultraplan/project-paths.ts +342 -0
- package/src/ultraplan/runtime/active-execution.ts +72 -0
- package/src/ultraplan/runtime/apply-mutation.ts +416 -0
- package/src/ultraplan/runtime/blockers.ts +243 -0
- package/src/ultraplan/runtime/hook-bridge.ts +486 -0
- package/src/ultraplan/runtime/launch-context.ts +207 -0
- package/src/ultraplan/runtime/migration.ts +524 -0
- package/src/ultraplan/runtime/normalize.ts +281 -0
- package/src/ultraplan/runtime/proof.ts +260 -0
- package/src/ultraplan/runtime/reducer.ts +416 -0
- package/src/ultraplan/runtime/repair.ts +251 -0
- package/src/ultraplan/runtime/tracker-storage.ts +368 -0
- package/src/ultraplan/session-selection.ts +291 -0
- package/src/ultraplan/storage.ts +374 -0
- package/src/utils/editor.ts +38 -0
- package/src/utils/executable.ts +80 -0
- package/src/utils/paths.ts +1 -20
- package/src/utils/shell.ts +31 -0
- package/src/visual/companion.ts +2 -1
- package/src/visual/scripts/frame-template.html +60 -0
- package/src/visual/scripts/index.js +59 -13
- package/src/visual/scripts/package.json +3 -0
- package/src/visual/start-server.ts +2 -1
- package/src/workspace/git-scope.ts +64 -0
- package/src/workspace/locks.ts +23 -0
- package/src/workspace/package-manager.ts +117 -0
- package/src/workspace/path-mapping.ts +75 -0
- package/src/workspace/project-slug.ts +92 -0
- package/src/workspace/repo-root.ts +137 -0
- package/src/workspace/selector.ts +115 -0
- package/src/workspace/state-paths.ts +118 -0
- package/src/workspace/targets.ts +313 -0
- package/src/fix-pr/scripts/diff-comments.sh +0 -33
- package/src/fix-pr/scripts/fetch-pr-comments.sh +0 -25
- package/src/fix-pr/scripts/trigger-review.sh +0 -36
- package/src/fix-pr/scripts/wait-and-check.sh +0 -37
- package/src/qa/scripts/detect-app-type.sh +0 -68
- package/src/qa/scripts/discover-routes.sh +0 -143
- package/src/qa/scripts/run-e2e-tests.sh +0 -131
- package/src/qa/scripts/start-dev-server.sh +0 -46
- package/src/qa/scripts/stop-dev-server.sh +0 -36
- package/src/review/prompts/fix-output-schema.md +0 -18
- package/src/review/prompts/review-output-schema.md +0 -38
- package/src/review/template.ts +0 -15
- /package/src/{review → ai}/prompts/invalid-output-retry.md +0 -0
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
UltraPlanAffectedUnitRef,
|
|
3
|
+
UltraPlanBlocker,
|
|
4
|
+
UltraPlanBlockerScope,
|
|
5
|
+
UltraPlanExecutionPhase,
|
|
6
|
+
UltraPlanRuntimeBlockerCode,
|
|
7
|
+
} from "../../types.js";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Slice-2 structured blocker factories.
|
|
11
|
+
*
|
|
12
|
+
* The reducer, repair engine, and migration engine only ever emit blockers by calling these
|
|
13
|
+
* factories so every runtime blocker has the same invariants: correct code, truthful recovery
|
|
14
|
+
* mode, non-empty nextAction, and audit-ready structured details.
|
|
15
|
+
*
|
|
16
|
+
* Defaults follow the approved runtime spec §failure policy and §structured blockers and the
|
|
17
|
+
* delta spec's migration failure classes.
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
interface BaseArgs {
|
|
21
|
+
detectedAt: string;
|
|
22
|
+
scope?: UltraPlanBlockerScope;
|
|
23
|
+
affected?: UltraPlanAffectedUnitRef;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function requireDetectedAt(args: BaseArgs): string {
|
|
27
|
+
if (!args.detectedAt || args.detectedAt.trim().length === 0) {
|
|
28
|
+
throw new Error("blocker factory: detectedAt is required");
|
|
29
|
+
}
|
|
30
|
+
return args.detectedAt;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function ensureAffected(args: BaseArgs): UltraPlanAffectedUnitRef {
|
|
34
|
+
return args.affected ?? { stack: null, domainId: null, level: null, scenarioId: null };
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function buildBlocker(
|
|
38
|
+
code: UltraPlanRuntimeBlockerCode,
|
|
39
|
+
args: BaseArgs,
|
|
40
|
+
spec: {
|
|
41
|
+
scope: UltraPlanBlockerScope;
|
|
42
|
+
message: string;
|
|
43
|
+
nextAction: string;
|
|
44
|
+
recoveryMode: UltraPlanBlocker["recoveryMode"];
|
|
45
|
+
retryable: boolean;
|
|
46
|
+
recoverable?: boolean;
|
|
47
|
+
details?: Record<string, unknown>;
|
|
48
|
+
},
|
|
49
|
+
): UltraPlanBlocker {
|
|
50
|
+
return {
|
|
51
|
+
code,
|
|
52
|
+
message: spec.message,
|
|
53
|
+
scope: args.scope ?? spec.scope,
|
|
54
|
+
affected: ensureAffected(args),
|
|
55
|
+
recoverable: spec.recoverable ?? true,
|
|
56
|
+
recoveryMode: spec.recoveryMode,
|
|
57
|
+
nextAction: spec.nextAction,
|
|
58
|
+
retryable: spec.retryable,
|
|
59
|
+
detectedAt: requireDetectedAt(args),
|
|
60
|
+
...(spec.details ? { details: spec.details } : {}),
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// ---------------------------------------------------------------------------
|
|
65
|
+
// Correlation ambiguity
|
|
66
|
+
// ---------------------------------------------------------------------------
|
|
67
|
+
|
|
68
|
+
export interface CorrelationAmbiguousArgs extends BaseArgs {
|
|
69
|
+
reason: string;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export function buildCorrelationAmbiguousBlocker(args: CorrelationAmbiguousArgs): UltraPlanBlocker {
|
|
73
|
+
return buildBlocker("correlation-ambiguous", args, {
|
|
74
|
+
scope: "session",
|
|
75
|
+
message: `UltraPlan correlation is ambiguous: ${args.reason}`,
|
|
76
|
+
nextAction: "Inspect the normalized hook trail and identify which attempt the event belongs to, then resume manually.",
|
|
77
|
+
recoveryMode: "manual",
|
|
78
|
+
retryable: false,
|
|
79
|
+
details: { reason: args.reason },
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// ---------------------------------------------------------------------------
|
|
84
|
+
// Proof failures
|
|
85
|
+
// ---------------------------------------------------------------------------
|
|
86
|
+
|
|
87
|
+
export interface ProofMissingArgs extends BaseArgs {
|
|
88
|
+
expectedPhase: UltraPlanExecutionPhase;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export function buildProofMissingBlocker(args: ProofMissingArgs): UltraPlanBlocker {
|
|
92
|
+
return buildBlocker("proof-missing", args, {
|
|
93
|
+
scope: "scenario",
|
|
94
|
+
message: `Expected ${args.expectedPhase}-phase proof but none was observed.`,
|
|
95
|
+
nextAction: `Re-run the ${args.expectedPhase}-phase step and capture proof before finalization.`,
|
|
96
|
+
recoveryMode: "retry",
|
|
97
|
+
retryable: true,
|
|
98
|
+
details: { expectedPhase: args.expectedPhase },
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
export interface ProofInvalidArgs extends BaseArgs {
|
|
103
|
+
reason: string;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
export function buildProofInvalidBlocker(args: ProofInvalidArgs): UltraPlanBlocker {
|
|
107
|
+
return buildBlocker("proof-invalid", args, {
|
|
108
|
+
scope: "scenario",
|
|
109
|
+
message: `Proof artifact was present but invalid: ${args.reason}`,
|
|
110
|
+
nextAction: "Regenerate proof with the required phase/target match and retry.",
|
|
111
|
+
recoveryMode: "retry",
|
|
112
|
+
retryable: true,
|
|
113
|
+
details: { reason: args.reason },
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// ---------------------------------------------------------------------------
|
|
118
|
+
// Conflicting evidence (fail closed)
|
|
119
|
+
// ---------------------------------------------------------------------------
|
|
120
|
+
|
|
121
|
+
export interface ConflictingEvidenceArgs extends BaseArgs {
|
|
122
|
+
reason: string;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
export function buildConflictingEvidenceBlocker(args: ConflictingEvidenceArgs): UltraPlanBlocker {
|
|
126
|
+
return buildBlocker("conflicting-evidence", args, {
|
|
127
|
+
scope: "scenario",
|
|
128
|
+
message: `Conflicting evidence observed: ${args.reason}`,
|
|
129
|
+
nextAction: "Resolve the conflict manually: either discard the contradicting evidence or fix the upstream source, then rerun.",
|
|
130
|
+
recoveryMode: "manual",
|
|
131
|
+
retryable: false,
|
|
132
|
+
details: { reason: args.reason },
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// ---------------------------------------------------------------------------
|
|
137
|
+
// Interrupted attempt
|
|
138
|
+
// ---------------------------------------------------------------------------
|
|
139
|
+
|
|
140
|
+
export interface InterruptedAttemptArgs extends BaseArgs {
|
|
141
|
+
attemptId: string;
|
|
142
|
+
reason?: string;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
export function buildInterruptedAttemptBlocker(args: InterruptedAttemptArgs): UltraPlanBlocker {
|
|
146
|
+
return buildBlocker("interrupted-attempt", args, {
|
|
147
|
+
scope: "scenario",
|
|
148
|
+
message: args.reason
|
|
149
|
+
? `Attempt ${args.attemptId} was interrupted: ${args.reason}`
|
|
150
|
+
: `Attempt ${args.attemptId} was interrupted before finalization.`,
|
|
151
|
+
nextAction: "Retry the attempt with a fresh launch; do not reuse the interrupted attempt id.",
|
|
152
|
+
recoveryMode: "retry",
|
|
153
|
+
retryable: true,
|
|
154
|
+
details: {
|
|
155
|
+
attemptId: args.attemptId,
|
|
156
|
+
...(args.reason ? { reason: args.reason } : {}),
|
|
157
|
+
},
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
// ---------------------------------------------------------------------------
|
|
162
|
+
// Persistence failure
|
|
163
|
+
// ---------------------------------------------------------------------------
|
|
164
|
+
|
|
165
|
+
export interface PersistenceFailureArgs extends BaseArgs {
|
|
166
|
+
reason: string;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
export function buildPersistenceFailureBlocker(args: PersistenceFailureArgs): UltraPlanBlocker {
|
|
170
|
+
return buildBlocker("persistence-failure", args, {
|
|
171
|
+
scope: "session",
|
|
172
|
+
message: `UltraPlan persistence failure: ${args.reason}`,
|
|
173
|
+
nextAction: "Inspect runtime-tracker.json, manifest.json, and hooks-log.jsonl for partial writes and recover manually before resuming.",
|
|
174
|
+
recoveryMode: "manual",
|
|
175
|
+
retryable: false,
|
|
176
|
+
details: { reason: args.reason },
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
// ---------------------------------------------------------------------------
|
|
181
|
+
// Unsafe repair required
|
|
182
|
+
// ---------------------------------------------------------------------------
|
|
183
|
+
|
|
184
|
+
export interface UnsafeRepairRequiredArgs extends BaseArgs {
|
|
185
|
+
reason: string;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
export function buildUnsafeRepairRequiredBlocker(args: UnsafeRepairRequiredArgs): UltraPlanBlocker {
|
|
189
|
+
return buildBlocker("unsafe-repair-required", args, {
|
|
190
|
+
scope: "session",
|
|
191
|
+
message: `Deterministic repair is unsafe: ${args.reason}`,
|
|
192
|
+
nextAction: "Manually reconcile tracker, manifest, and authored state. Do not advance any scenario until the ambiguity is resolved.",
|
|
193
|
+
recoveryMode: "manual",
|
|
194
|
+
retryable: false,
|
|
195
|
+
details: { reason: args.reason },
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
// ---------------------------------------------------------------------------
|
|
200
|
+
// Migration failures (delta spec §fail-closed rule)
|
|
201
|
+
// ---------------------------------------------------------------------------
|
|
202
|
+
|
|
203
|
+
export interface MigrationUnsafeArgs extends BaseArgs {
|
|
204
|
+
legacyPath: string;
|
|
205
|
+
reason: string;
|
|
206
|
+
interruptedPath?: string;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
export function buildMigrationUnsafeBlocker(args: MigrationUnsafeArgs): UltraPlanBlocker {
|
|
210
|
+
return buildBlocker("migration-unsafe", args, {
|
|
211
|
+
scope: "session",
|
|
212
|
+
message: `UltraPlan migration cannot complete safely: ${args.reason}`,
|
|
213
|
+
nextAction: `Inspect ${args.legacyPath}${args.interruptedPath ? ` and ${args.interruptedPath}` : ""} and resolve the inconsistency manually before retrying.`,
|
|
214
|
+
recoveryMode: "manual",
|
|
215
|
+
retryable: false,
|
|
216
|
+
details: {
|
|
217
|
+
legacyPath: args.legacyPath,
|
|
218
|
+
...(args.interruptedPath ? { interruptedPath: args.interruptedPath } : {}),
|
|
219
|
+
reason: args.reason,
|
|
220
|
+
},
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
export interface MigrationConflictArgs extends BaseArgs {
|
|
225
|
+
legacyPath: string;
|
|
226
|
+
globalPath: string;
|
|
227
|
+
reason: string;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
export function buildMigrationConflictBlocker(args: MigrationConflictArgs): UltraPlanBlocker {
|
|
231
|
+
return buildBlocker("migration-conflict", args, {
|
|
232
|
+
scope: "session",
|
|
233
|
+
message: `UltraPlan migration conflict: ${args.reason}`,
|
|
234
|
+
nextAction: `Decide which of ${args.legacyPath} or ${args.globalPath} is canonical, reconcile the other, and retry.`,
|
|
235
|
+
recoveryMode: "manual",
|
|
236
|
+
retryable: false,
|
|
237
|
+
details: {
|
|
238
|
+
legacyPath: args.legacyPath,
|
|
239
|
+
globalPath: args.globalPath,
|
|
240
|
+
reason: args.reason,
|
|
241
|
+
},
|
|
242
|
+
});
|
|
243
|
+
}
|