prizmkit 1.1.111 → 1.1.113
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/bundled/VERSION.json +3 -3
- package/bundled/adapters/codex/skill-adapter.js +4 -0
- package/bundled/agents/prizm-dev-team-reviewer.md +12 -1
- package/bundled/dev-pipeline/SCHEMA_ANALYSIS.md +10 -10
- package/bundled/dev-pipeline/prizmkit_runtime/interoperability.py +1 -0
- package/bundled/dev-pipeline/scripts/generate-bootstrap-prompt.py +20 -73
- package/bundled/dev-pipeline/scripts/generate-bugfix-prompt.py +290 -421
- package/bundled/dev-pipeline/scripts/generate-recovery-prompt.py +1 -1
- package/bundled/dev-pipeline/scripts/generate-refactor-prompt.py +259 -481
- package/bundled/dev-pipeline/scripts/init-bugfix-pipeline.py +34 -0
- package/bundled/dev-pipeline/scripts/init-pipeline.py +12 -0
- package/bundled/dev-pipeline/scripts/init-refactor-pipeline.py +24 -1
- package/bundled/dev-pipeline/scripts/prompt_framework.py +312 -0
- package/bundled/dev-pipeline/scripts/update-bug-status.py +87 -20
- package/bundled/dev-pipeline/scripts/update-feature-status.py +82 -16
- package/bundled/dev-pipeline/scripts/update-refactor-status.py +68 -28
- package/bundled/dev-pipeline/scripts/utils.py +171 -0
- package/bundled/dev-pipeline/templates/bootstrap-prompt.md +1 -1
- package/bundled/dev-pipeline/templates/bootstrap-tier1.md +7 -1
- package/bundled/dev-pipeline/templates/bootstrap-tier2.md +17 -19
- package/bundled/dev-pipeline/templates/bootstrap-tier3.md +21 -26
- package/bundled/dev-pipeline/templates/bug-fix-list-schema.json +9 -1
- package/bundled/dev-pipeline/templates/bugfix-bootstrap-prompt.md +11 -8
- package/bundled/dev-pipeline/templates/refactor-bootstrap-prompt.md +122 -182
- package/bundled/dev-pipeline/templates/sections/bugfix-artifacts.md +16 -0
- package/bundled/dev-pipeline/templates/sections/bugfix-critical-paths.md +12 -0
- package/bundled/dev-pipeline/templates/sections/bugfix-mission.md +9 -0
- package/bundled/dev-pipeline/templates/sections/bugfix-phase-commit-report.md +31 -0
- package/bundled/dev-pipeline/templates/sections/bugfix-phase-critic.md +22 -0
- package/bundled/dev-pipeline/templates/sections/bugfix-phase-diagnose-plan.md +23 -0
- package/bundled/dev-pipeline/templates/sections/bugfix-phase-implement.md +20 -0
- package/bundled/dev-pipeline/templates/sections/bugfix-phase-init.md +9 -0
- package/bundled/dev-pipeline/templates/sections/bugfix-phase-manual-verification.md +15 -0
- package/bundled/dev-pipeline/templates/sections/bugfix-phase-review.md +29 -0
- package/bundled/dev-pipeline/templates/sections/bugfix-reminders.md +11 -0
- package/bundled/dev-pipeline/templates/sections/bugfix-session-context.md +7 -0
- package/bundled/dev-pipeline/templates/sections/bugfix-session-status.md +31 -0
- package/bundled/dev-pipeline/templates/sections/bugfix-task-contract.md +40 -0
- package/bundled/dev-pipeline/templates/sections/failure-capture.md +2 -2
- package/bundled/dev-pipeline/templates/sections/phase-browser-verification-auto.md +8 -2
- package/bundled/dev-pipeline/templates/sections/phase-browser-verification-opencli.md +7 -1
- package/bundled/dev-pipeline/templates/sections/phase-browser-verification.md +7 -1
- package/bundled/dev-pipeline/templates/sections/refactor-artifacts.md +17 -0
- package/bundled/dev-pipeline/templates/sections/refactor-critical-paths.md +13 -0
- package/bundled/dev-pipeline/templates/sections/refactor-mission.md +9 -0
- package/bundled/dev-pipeline/templates/sections/refactor-phase-commit-report.md +37 -0
- package/bundled/dev-pipeline/templates/sections/refactor-phase-critic.md +22 -0
- package/bundled/dev-pipeline/templates/sections/refactor-phase-implement.md +16 -0
- package/bundled/dev-pipeline/templates/sections/refactor-phase-init.md +9 -0
- package/bundled/dev-pipeline/templates/sections/refactor-phase-plan.md +22 -0
- package/bundled/dev-pipeline/templates/sections/refactor-phase-review.md +19 -0
- package/bundled/dev-pipeline/templates/sections/refactor-reminders.md +11 -0
- package/bundled/dev-pipeline/templates/sections/refactor-session-context.md +7 -0
- package/bundled/dev-pipeline/templates/sections/refactor-session-status.md +28 -0
- package/bundled/dev-pipeline/templates/sections/refactor-task-contract.md +52 -0
- package/bundled/dev-pipeline/tests/test_generate_bootstrap_prompt.py +104 -26
- package/bundled/dev-pipeline/tests/test_generate_bugfix_prompt.py +14 -0
- package/bundled/dev-pipeline/tests/test_python_runner_parity.py +239 -0
- package/bundled/dev-pipeline/tests/test_unified_cli.py +6 -2
- package/bundled/dev-pipeline/tests/test_utils.py +66 -1
- package/bundled/skills/_metadata.json +1 -1
- package/bundled/skills/app-planner/SKILL.md +8 -7
- package/bundled/skills/app-planner/references/project-brief-guide.md +2 -2
- package/bundled/skills/app-planner/references/rules/backend/derivation-rules.md +1 -1
- package/bundled/skills/app-planner/references/rules/frontend/derivation-rules.md +1 -1
- package/bundled/skills/app-planner/references/rules-configuration.md +53 -26
- package/bundled/skills/bug-fix-workflow/SKILL.md +191 -336
- package/bundled/skills/bug-planner/SKILL.md +6 -5
- package/bundled/skills/bug-planner/references/critic-and-verification.md +3 -3
- package/bundled/skills/bug-planner/references/schema-validation.md +2 -1
- package/bundled/skills/bug-planner/scripts/validate-bug-list.py +70 -1
- package/bundled/skills/bugfix-pipeline-launcher/SKILL.md +21 -21
- package/bundled/skills/bugfix-pipeline-launcher/references/configuration.md +2 -2
- package/bundled/skills/feature-pipeline-launcher/SKILL.md +25 -26
- package/bundled/skills/feature-planner/SKILL.md +9 -11
- package/bundled/skills/feature-planner/assets/planning-guide.md +1 -1
- package/bundled/skills/feature-planner/references/decomposition-patterns.md +1 -1
- package/bundled/skills/feature-planner/references/error-recovery.md +2 -1
- package/bundled/skills/feature-planner/references/incremental-feature-planning.md +2 -2
- package/bundled/skills/feature-planner/references/new-project-planning.md +35 -39
- package/bundled/skills/feature-planner/scripts/validate-and-generate.py +1 -1
- package/bundled/skills/feature-workflow/SKILL.md +170 -298
- package/bundled/skills/prizmkit/SKILL.md +103 -57
- package/bundled/skills/prizmkit-code-review/SKILL.md +97 -116
- package/bundled/skills/prizmkit-code-review/references/review-report-template.md +1 -0
- package/bundled/skills/prizmkit-code-review/references/reviewer-agent-prompt.md +14 -3
- package/bundled/skills/prizmkit-committer/SKILL.md +59 -47
- package/bundled/skills/prizmkit-deploy/SKILL.md +162 -381
- package/bundled/skills/prizmkit-deploy/references/database-setup.md +12 -3
- package/bundled/skills/prizmkit-deploy/references/ssh-adapter-flow.md +220 -0
- package/bundled/skills/prizmkit-implement/SKILL.md +51 -40
- package/bundled/skills/prizmkit-init/SKILL.md +4 -3
- package/bundled/skills/prizmkit-plan/SKILL.md +85 -70
- package/bundled/skills/prizmkit-prizm-docs/SKILL.md +94 -73
- package/bundled/skills/prizmkit-prizm-docs/assets/prizm-docs-format.md +20 -18
- package/bundled/skills/prizmkit-prizm-docs/references/op-init.md +11 -13
- package/bundled/skills/prizmkit-prizm-docs/references/op-update.md +18 -14
- package/bundled/skills/prizmkit-retrospective/SKILL.md +56 -48
- package/bundled/skills/prizmkit-retrospective/references/structural-sync-steps.md +79 -27
- package/bundled/skills/prizmkit-test/SKILL.md +138 -141
- package/bundled/skills/prizmkit-test/references/boundary-coverage-protocol.md +1 -1
- package/bundled/skills/prizmkit-test/references/examples.md +11 -9
- package/bundled/skills/prizmkit-test/references/test-generation-steps.md +1 -1
- package/bundled/skills/prizmkit-test/references/test-report-template.md +2 -2
- package/bundled/skills/recovery-workflow/SKILL.md +195 -256
- package/bundled/skills/recovery-workflow/evals/evals.json +21 -13
- package/bundled/skills/recovery-workflow/references/detection.md +48 -39
- package/bundled/skills/recovery-workflow/scripts/detect-recovery-state.py +258 -322
- package/bundled/skills/refactor-pipeline-launcher/SKILL.md +32 -13
- package/bundled/skills/refactor-planner/SKILL.md +2 -2
- package/bundled/skills/refactor-planner/references/behavior-preservation.md +24 -19
- package/bundled/skills/refactor-planner/references/fast-path.md +2 -4
- package/bundled/skills/refactor-planner/references/planning-phases.md +2 -2
- package/bundled/skills/refactor-workflow/SKILL.md +174 -307
- package/package.json +1 -1
- package/src/scaffold.js +5 -0
- package/bundled/dev-pipeline/templates/agent-prompts/reviewer-review.md +0 -6
- package/bundled/skills/feature-workflow/references/brainstorm-guide.md +0 -137
- package/bundled/skills/refactor-workflow/references/brainstorm-guide.md +0 -116
package/bundled/VERSION.json
CHANGED
|
@@ -21,6 +21,10 @@ function applyCodexInteractionCompatibility(content) {
|
|
|
21
21
|
|
|
22
22
|
return content
|
|
23
23
|
.replace(/\bAskUserQuestion\b/g, 'request_user_input')
|
|
24
|
+
.replace(
|
|
25
|
+
/Use `request_user_input`; do not render path options as plain text\./g,
|
|
26
|
+
fallbackInstruction
|
|
27
|
+
)
|
|
24
28
|
.replace(
|
|
25
29
|
/Do NOT render options as plain text — the user must be able to click\/select\./g,
|
|
26
30
|
fallbackInstruction
|
|
@@ -25,7 +25,18 @@ You are the team's "senior engineer doing code review" — you diagnose problems
|
|
|
25
25
|
2. If no `context-snapshot.md`: read `spec.md`, `plan.md` from the artifact directory, then `.prizmkit/prizm-docs/root.prizm` and relevant L1/L2 docs
|
|
26
26
|
3. Identify changed files from `## Implementation Log` or completed tasks in plan.md
|
|
27
27
|
|
|
28
|
-
**
|
|
28
|
+
**Active Checkout Requirement**: You must review only the active checkout provided by the orchestrator. `/prizmkit-code-review` does not support worktree review.
|
|
29
|
+
|
|
30
|
+
The orchestrator must provide the expected active checkout git top-level in the workspace context. Before reviewing, verify that your current git top-level matches that expected active checkout.
|
|
31
|
+
|
|
32
|
+
If you detect that you are running inside a temporary worktree, `.claude/worktrees/...`, `.prizmkit/state/worktrees/...`, a remote workspace, a copied checkout, or any checkout whose git top-level does not match the orchestrator-provided active checkout root:
|
|
33
|
+
- Stop immediately.
|
|
34
|
+
- Do not read or review files.
|
|
35
|
+
- Do not produce normal review findings.
|
|
36
|
+
- Report `WRONG_CHECKOUT`.
|
|
37
|
+
- State that `/prizmkit-code-review` cannot continue because the reviewer subagent was not started in the active checkout/no-worktree mode required by this skill.
|
|
38
|
+
|
|
39
|
+
Do NOT request or create `.claude/worktrees/...` tool worktrees. Do NOT re-discover or re-index the whole repository; use the orchestrator-provided context as your review scope and request only targeted file reads.
|
|
29
40
|
|
|
30
41
|
**File Reading Rule**: Read ONLY files listed in the Implementation Log for diagnosis — do not explore unrelated files. Exception: during Fix Strategy Formulation, you MAY read additional files to trace impact (callers, dependents, shared patterns).
|
|
31
42
|
|
|
@@ -81,8 +81,8 @@ acceptance_criteria, status
|
|
|
81
81
|
|
|
82
82
|
**Optional fields:**
|
|
83
83
|
```
|
|
84
|
-
priority, affected_feature, affected_modules, environment, critic,
|
|
85
|
-
critic_count, model
|
|
84
|
+
priority, dependencies, affected_feature, affected_modules, environment, critic,
|
|
85
|
+
critic_count, model, browser_interaction
|
|
86
86
|
```
|
|
87
87
|
|
|
88
88
|
| Property | Type | Enum/Pattern | Notes |
|
|
@@ -95,7 +95,8 @@ critic_count, model
|
|
|
95
95
|
| `error_source` | object | type enum: `stack_trace, user_report, failed_test, log_pattern, monitoring_alert` | ✓ REQUIRED |
|
|
96
96
|
| `verification_type` | string | `automated, manual, hybrid` | ✓ REQUIRED |
|
|
97
97
|
| `acceptance_criteria` | array | N/A | minItems: 1 |
|
|
98
|
-
| `status` | string | `pending,
|
|
98
|
+
| `status` | string | `pending, in_progress, completed, failed, skipped, needs_info` | ✓ REQUIRED; external list status only |
|
|
99
|
+
| `dependencies` | array | Pattern: `^B-\d{3}$` | Optional; bug IDs that must complete first |
|
|
99
100
|
| `affected_feature` | string | Pattern: `^F-\d{3}(-[A-Z])?$` | Optional; link to original feature |
|
|
100
101
|
| `affected_modules` | array | N/A | Optional; module names |
|
|
101
102
|
| `environment` | object | N/A | Optional; os, runtime, browser, version |
|
|
@@ -209,12 +210,11 @@ design_system, ci_pipeline
|
|
|
209
210
|
pending, in_progress, completed, failed, skipped, split, auto_skipped
|
|
210
211
|
```
|
|
211
212
|
|
|
212
|
-
**Bug Fix Status (
|
|
213
|
+
**Bug Fix Status (6 external values):**
|
|
213
214
|
```
|
|
214
|
-
pending,
|
|
215
|
+
pending, in_progress, completed, failed, skipped, needs_info
|
|
215
216
|
```
|
|
216
|
-
*
|
|
217
|
-
*NO "split" or "auto_skipped"*
|
|
217
|
+
*External bug-list status stays coarse. Fine-grained triage/reproduction/fix/verification phases belong in logs, checkpoints, and session metadata, not `bugs[].status`.*
|
|
218
218
|
|
|
219
219
|
**Refactor Status (5 values):**
|
|
220
220
|
```
|
|
@@ -227,10 +227,10 @@ pending, in_progress, completed, failed, skipped
|
|
|
227
227
|
| Schema | Dependencies | Pattern |
|
|
228
228
|
|--------|--------------|---------|
|
|
229
229
|
| Feature | `dependencies` (required) | `^F-\d{3}(-[A-Z])?$` - can reference sub-features |
|
|
230
|
-
| Bug Fix |
|
|
230
|
+
| Bug Fix | `dependencies` (optional) | `^B-\d{3}$` - can reference prerequisite bug fixes |
|
|
231
231
|
| Refactor | `dependencies` (required) | `^R-\d{3}$` - ONLY refactor IDs, no sub-IDs |
|
|
232
232
|
|
|
233
|
-
**
|
|
233
|
+
**Contract:** Bug Fix dependencies are supported as optional prerequisites. Runtime selects eligible bugs in stable list order after dependencies are completed.
|
|
234
234
|
|
|
235
235
|
### 4.5 Acceptance Criteria vs Task Lists
|
|
236
236
|
|
|
@@ -493,7 +493,7 @@ Located in `/dev-pipeline/templates/`:
|
|
|
493
493
|
|
|
494
494
|
### Status Enums
|
|
495
495
|
- **Feature**: `[pending, in_progress, completed, failed, skipped, split, auto_skipped]` (7 values)
|
|
496
|
-
- **Bug Fix**: `[pending,
|
|
496
|
+
- **Bug Fix**: `[pending, in_progress, completed, failed, skipped, needs_info]` (6 external values)
|
|
497
497
|
- **Refactor**: `[pending, in_progress, completed, failed, skipped]` (5 values)
|
|
498
498
|
|
|
499
499
|
### Complexity/Estimated Complexity Enums
|
|
@@ -33,6 +33,7 @@ UTILITY_ENTRYPOINTS = {
|
|
|
33
33
|
|
|
34
34
|
UTILITY_LIBRARY_ONLY = {
|
|
35
35
|
"continuation.py": "shared continuation helpers imported by prompt generators",
|
|
36
|
+
"prompt_framework.py": "shared prompt rendering and checkpoint helpers imported by prompt generators",
|
|
36
37
|
"utils.py": "shared utility helpers imported by runtime scripts",
|
|
37
38
|
}
|
|
38
39
|
|
|
@@ -29,6 +29,7 @@ import sys
|
|
|
29
29
|
|
|
30
30
|
from utils import enrich_global_context, helper_replacements, load_json_file, resolve_prompt_platform, setup_logging
|
|
31
31
|
from continuation import add_continuation_args, append_continuation_handoff, is_continuation
|
|
32
|
+
from prompt_framework import browser_enabled_from_item, detect_dev_server_port
|
|
32
33
|
|
|
33
34
|
|
|
34
35
|
DEFAULT_MAX_RETRIES = 3
|
|
@@ -693,10 +694,13 @@ SECTION_TO_SKILL = {
|
|
|
693
694
|
"phase-commit": None, # special: split into retrospective + committer
|
|
694
695
|
}
|
|
695
696
|
|
|
696
|
-
# phase-commit is split into
|
|
697
|
+
# phase-commit is split into durable checkpoint steps. CLI flags are not
|
|
698
|
+
# artifacts; only real files/globs belong in required_artifacts.
|
|
697
699
|
_COMMIT_STEPS = [
|
|
698
700
|
("prizmkit-retrospective", "Retrospective", []),
|
|
699
|
-
("prizmkit-committer", "Commit", [
|
|
701
|
+
("prizmkit-committer", "Commit", []),
|
|
702
|
+
("completion-summary", "Completion Summary",
|
|
703
|
+
[".prizmkit/specs/{slug}/completion-summary.json"]),
|
|
700
704
|
]
|
|
701
705
|
|
|
702
706
|
|
|
@@ -1295,7 +1299,6 @@ def load_section(sections_dir, name):
|
|
|
1295
1299
|
|
|
1296
1300
|
ACTIVE_AGENT_PROMPTS = {
|
|
1297
1301
|
"critic-plan-challenge.md": "{{AGENT_PROMPT_CRITIC_PLAN_CHALLENGE}}",
|
|
1298
|
-
"reviewer-review.md": "{{AGENT_PROMPT_REVIEWER_REVIEW}}",
|
|
1299
1302
|
}
|
|
1300
1303
|
|
|
1301
1304
|
|
|
@@ -1834,48 +1837,16 @@ def build_replacements(args, feature, features, global_context, script_dir):
|
|
|
1834
1837
|
)
|
|
1835
1838
|
critic_enabled = False
|
|
1836
1839
|
|
|
1837
|
-
# Browser
|
|
1838
|
-
|
|
1839
|
-
browser_enabled =
|
|
1840
|
-
browser_verify_steps = ""
|
|
1841
|
-
browser_tool = "auto" # default: AI chooses at runtime
|
|
1840
|
+
# Browser verification defaults to a mandatory attempt. It is disabled only
|
|
1841
|
+
# by BROWSER_VERIFY=false or browser_interaction.enabled=false.
|
|
1842
|
+
browser_enabled, browser_tool, browser_verify_steps, browser_blocking = browser_enabled_from_item(feature)
|
|
1842
1843
|
|
|
1843
|
-
|
|
1844
|
-
|
|
1845
|
-
|
|
1846
|
-
|
|
1847
|
-
|
|
1848
|
-
# Simple boolean: browser verification enabled, no specific goals
|
|
1849
|
-
browser_enabled = True
|
|
1844
|
+
if browser_tool not in ("playwright-cli", "opencli", "auto"):
|
|
1845
|
+
LOGGER.warning(
|
|
1846
|
+
"Unknown browser_interaction.tool '%s', defaulting to 'auto'",
|
|
1847
|
+
browser_tool,
|
|
1848
|
+
)
|
|
1850
1849
|
browser_tool = "auto"
|
|
1851
|
-
browser_verify_steps = (
|
|
1852
|
-
" # (no specific verify goals — explore the app and "
|
|
1853
|
-
"verify the feature works as expected)")
|
|
1854
|
-
elif browser_interaction and isinstance(browser_interaction, dict):
|
|
1855
|
-
# Extract tool preference (playwright-cli / opencli / auto)
|
|
1856
|
-
browser_tool = browser_interaction.get("tool", "auto")
|
|
1857
|
-
if browser_tool not in ("playwright-cli", "opencli", "auto"):
|
|
1858
|
-
LOGGER.warning(
|
|
1859
|
-
"Unknown browser_interaction.tool '%s', defaulting to 'auto'",
|
|
1860
|
-
browser_tool,
|
|
1861
|
-
)
|
|
1862
|
-
browser_tool = "auto"
|
|
1863
|
-
|
|
1864
|
-
# browser_interaction only needs verify_steps — AI auto-detects
|
|
1865
|
-
# dev server command, URL, and port from project config
|
|
1866
|
-
steps = browser_interaction.get("verify_steps", [])
|
|
1867
|
-
if steps:
|
|
1868
|
-
browser_enabled = True
|
|
1869
|
-
browser_verify_steps = "\n".join(
|
|
1870
|
-
" # Goal {}: {}".format(i + 1, step)
|
|
1871
|
-
for i, step in enumerate(steps)
|
|
1872
|
-
)
|
|
1873
|
-
elif browser_interaction.get("url") or browser_interaction.get("enabled", True):
|
|
1874
|
-
# Backward compat: old format had url/setup_command fields
|
|
1875
|
-
browser_enabled = True
|
|
1876
|
-
browser_verify_steps = (
|
|
1877
|
-
" # (no specific verify goals — explore the app and "
|
|
1878
|
-
"verify the feature works as expected)")
|
|
1879
1850
|
|
|
1880
1851
|
# Auto-detect test commands from project structure
|
|
1881
1852
|
test_cmd = detect_test_commands(project_root)
|
|
@@ -1893,36 +1864,10 @@ def build_replacements(args, feature, features, global_context, script_dir):
|
|
|
1893
1864
|
if isinstance(testing_config, dict):
|
|
1894
1865
|
coverage_target = str(testing_config.get("coverage_target", 80))
|
|
1895
1866
|
|
|
1896
|
-
# Detect dev server port from
|
|
1897
|
-
|
|
1898
|
-
|
|
1899
|
-
|
|
1900
|
-
if os.path.isfile(pkg_path):
|
|
1901
|
-
with open(pkg_path, "r", encoding="utf-8") as f:
|
|
1902
|
-
pkg = json.load(f)
|
|
1903
|
-
dev_script = pkg.get("scripts", {}).get("dev", "")
|
|
1904
|
-
# Extract -p <port> from dev script
|
|
1905
|
-
port_match = re.search(r"-p\s+(\d+)", dev_script)
|
|
1906
|
-
if port_match:
|
|
1907
|
-
dev_port = port_match.group(1)
|
|
1908
|
-
else:
|
|
1909
|
-
# Fallback: try NEXT_PUBLIC_SITE_URL from .env files
|
|
1910
|
-
for env_file in [".env.local", ".env"]:
|
|
1911
|
-
env_path = os.path.join(project_root, env_file)
|
|
1912
|
-
if os.path.isfile(env_path):
|
|
1913
|
-
with open(env_path, "r", encoding="utf-8") as ef:
|
|
1914
|
-
for line in ef:
|
|
1915
|
-
m = re.match(
|
|
1916
|
-
r"NEXT_PUBLIC_SITE_URL\s*=\s*.*?:([0-9]+)", line.strip()
|
|
1917
|
-
)
|
|
1918
|
-
if m:
|
|
1919
|
-
dev_port = m.group(1)
|
|
1920
|
-
break
|
|
1921
|
-
if dev_port != "3000":
|
|
1922
|
-
break
|
|
1923
|
-
except Exception:
|
|
1924
|
-
pass # Keep default 3000 on any error
|
|
1925
|
-
dev_url = f"http://localhost:{dev_port}"
|
|
1867
|
+
# Detect dev server port from project config. Do not guess a default port;
|
|
1868
|
+
# browser prompt sections require the agent to discover it when unknown.
|
|
1869
|
+
dev_port = detect_dev_server_port(project_root)
|
|
1870
|
+
dev_url = "http://localhost:{}".format(dev_port) if dev_port.isdigit() else "<UNKNOWN_DETECT_FROM_PROJECT_CONFIG>"
|
|
1926
1871
|
|
|
1927
1872
|
replacements = {
|
|
1928
1873
|
"{{RUN_ID}}": args.run_id,
|
|
@@ -1948,6 +1893,7 @@ def build_replacements(args, feature, features, global_context, script_dir):
|
|
|
1948
1893
|
"{{SESSION_STATUS_PATH}}": session_status_abs,
|
|
1949
1894
|
"{{PROJECT_ROOT}}": project_root,
|
|
1950
1895
|
"{{FEATURE_SLUG}}": feature_slug,
|
|
1896
|
+
"{{ARTIFACT_DIR}}": os.path.join(".prizmkit", "specs", feature_slug),
|
|
1951
1897
|
"{{CHECKPOINT_PATH}}": os.path.join(
|
|
1952
1898
|
".prizmkit", "specs", feature_slug, "workflow-checkpoint.json",
|
|
1953
1899
|
),
|
|
@@ -1960,6 +1906,7 @@ def build_replacements(args, feature, features, global_context, script_dir):
|
|
|
1960
1906
|
"{{HAS_PLAN}}": "true" if artifacts["has_plan"] else "false",
|
|
1961
1907
|
"{{BROWSER_VERIFY_STEPS}}": browser_verify_steps,
|
|
1962
1908
|
"{{BROWSER_TOOL}}": browser_tool,
|
|
1909
|
+
"{{BROWSER_BLOCKING}}": "true" if browser_blocking else "false",
|
|
1963
1910
|
"{{AC_CHECKLIST}}": format_ac_checklist(
|
|
1964
1911
|
feature.get("acceptance_criteria", [])
|
|
1965
1912
|
),
|