prizmkit 1.1.70 → 1.1.74

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.
Files changed (57) hide show
  1. package/bundled/VERSION.json +3 -3
  2. package/bundled/agents/prizm-dev-team-dev.md +11 -1
  3. package/bundled/dev-pipeline/lib/common.sh +427 -0
  4. package/bundled/dev-pipeline/lib/heartbeat.sh +101 -36
  5. package/bundled/dev-pipeline/run-feature.sh +109 -29
  6. package/bundled/dev-pipeline/scripts/parse-stream-progress.py +198 -3
  7. package/bundled/dev-pipeline/scripts/update-feature-status.py +27 -3
  8. package/bundled/dev-pipeline/templates/agent-prompts/dev-implement.md +21 -0
  9. package/bundled/dev-pipeline/templates/bootstrap-tier2.md +1 -1
  10. package/bundled/dev-pipeline/templates/bootstrap-tier3.md +5 -9
  11. package/bundled/dev-pipeline/templates/sections/feature-context.md +3 -18
  12. package/bundled/dev-pipeline/templates/sections/phase-commit-full.md +11 -0
  13. package/bundled/dev-pipeline/templates/sections/phase-commit.md +11 -0
  14. package/bundled/dev-pipeline/templates/sections/phase-context-snapshot-agent-suffix.md +1 -1
  15. package/bundled/dev-pipeline/templates/sections/phase-context-snapshot-base.md +6 -12
  16. package/bundled/dev-pipeline/templates/sections/phase-context-snapshot-lite-suffix.md +10 -3
  17. package/bundled/dev-pipeline/templates/sections/phase-implement-agent.md +1 -0
  18. package/bundled/dev-pipeline/templates/sections/phase-specify-plan-full.md +4 -8
  19. package/bundled/dev-pipeline-windows/lib/common.ps1 +61 -1
  20. package/bundled/dev-pipeline-windows/lib/pipeline.ps1 +325 -16
  21. package/bundled/dev-pipeline-windows/scripts/parse-stream-progress.py +198 -3
  22. package/bundled/dev-pipeline-windows/scripts/update-feature-status.py +27 -3
  23. package/bundled/dev-pipeline-windows/templates/agent-prompts/dev-implement.md +21 -0
  24. package/bundled/dev-pipeline-windows/templates/agent-prompts/reviewer-review.md +1 -1
  25. package/bundled/dev-pipeline-windows/templates/bootstrap-prompt.md +27 -0
  26. package/bundled/dev-pipeline-windows/templates/bootstrap-tier1.md +543 -14
  27. package/bundled/dev-pipeline-windows/templates/bootstrap-tier2.md +664 -14
  28. package/bundled/dev-pipeline-windows/templates/bootstrap-tier3.md +741 -14
  29. package/bundled/dev-pipeline-windows/templates/bugfix-bootstrap-prompt.md +2 -2
  30. package/bundled/dev-pipeline-windows/templates/feature-list-schema.json +1 -1
  31. package/bundled/dev-pipeline-windows/templates/refactor-bootstrap-prompt.md +1 -1
  32. package/bundled/dev-pipeline-windows/templates/refactor-list-schema.json +1 -1
  33. package/bundled/dev-pipeline-windows/templates/sections/context-budget-rules.md +3 -3
  34. package/bundled/dev-pipeline-windows/templates/sections/failure-capture.md +1 -1
  35. package/bundled/dev-pipeline-windows/templates/sections/feature-context.md +3 -18
  36. package/bundled/dev-pipeline-windows/templates/sections/phase-browser-verification-auto.md +239 -40
  37. package/bundled/dev-pipeline-windows/templates/sections/phase-browser-verification-opencli.md +75 -26
  38. package/bundled/dev-pipeline-windows/templates/sections/phase-browser-verification.md +142 -36
  39. package/bundled/dev-pipeline-windows/templates/sections/phase-commit-full.md +13 -2
  40. package/bundled/dev-pipeline-windows/templates/sections/phase-commit.md +12 -1
  41. package/bundled/dev-pipeline-windows/templates/sections/phase-context-snapshot-agent-suffix.md +1 -1
  42. package/bundled/dev-pipeline-windows/templates/sections/phase-context-snapshot-base.md +7 -17
  43. package/bundled/dev-pipeline-windows/templates/sections/phase-context-snapshot-lite-suffix.md +10 -3
  44. package/bundled/dev-pipeline-windows/templates/sections/phase-critic-plan-full.md +1 -1
  45. package/bundled/dev-pipeline-windows/templates/sections/phase-critic-plan.md +1 -1
  46. package/bundled/dev-pipeline-windows/templates/sections/phase-implement-agent.md +3 -1
  47. package/bundled/dev-pipeline-windows/templates/sections/phase-implement-full.md +7 -3
  48. package/bundled/dev-pipeline-windows/templates/sections/phase-implement-lite.md +1 -3
  49. package/bundled/dev-pipeline-windows/templates/sections/phase-plan-agent.md +1 -1
  50. package/bundled/dev-pipeline-windows/templates/sections/phase-plan-lite.md +1 -1
  51. package/bundled/dev-pipeline-windows/templates/sections/phase-review-agent.md +1 -1
  52. package/bundled/dev-pipeline-windows/templates/sections/phase-review-full.md +2 -2
  53. package/bundled/dev-pipeline-windows/templates/sections/phase-specify-plan-full.md +13 -17
  54. package/bundled/dev-pipeline-windows/templates/sections/phase0-test-baseline.md +2 -4
  55. package/bundled/dev-pipeline-windows/templates/sections/subagent-timeout-recovery.md +1 -1
  56. package/bundled/skills/_metadata.json +1 -1
  57. package/package.json +1 -1
@@ -148,12 +148,9 @@ If `EXISTING_CODE` is non-empty: your spec/plan/tasks must reflect this existing
148
148
  Identify the top-level source directories from the results.
149
149
  3. Scan the detected source directories for files related to this feature; read each one
150
150
  4. Write `.prizmkit/specs/{{FEATURE_SLUG}}/context-snapshot.md`:
151
- - **Section 1 — Feature Brief**: feature description + acceptance criteria (copy from above)
152
- - **Section 2 — Project Structure**: run the following to get a visual directory tree, then paste output:
153
- ```bash
154
- find . -maxdepth 2 -type d -not -path '*/node_modules/*' -not -path '*/.git/*' -not -path '*/dist/*' -not -path '*/build/*' -not -path '*/__pycache__/*' -not -path '*/vendor/*' | sed -e 's;[^/]*/;|____;g;s;____|; |;g'
155
- ```
156
- - **Section 3 — Prizm Context**: full content of root.prizm and relevant L1/L2 docs
151
+ - **Section 1 — Feature Brief**: feature description (2-3 lines) + acceptance criteria (copy from above)
152
+ - **Section 2 — Verification Gates**: copy the gate checklist from the Task Contract above
153
+ - **Section 3 — Key TRAPS & RULES**: extract only relevant TRAPS/RULES from prizm-docs that apply to files in this scope. Do NOT copy full L0/L1/L2 content.
157
154
  - **Section 4 — File Manifest**: For each file relevant to this feature, list: file path, why it's needed (modify/reference/test), key interface signatures (function names + params + return types). Do NOT include full file content — agents read files on-demand. Format:
158
155
  ### Files to Modify
159
156
  | File | Why Needed | Key Interfaces |
@@ -167,7 +164,6 @@ If `EXISTING_CODE` is non-empty: your spec/plan/tasks must reflect this existing
167
164
 
168
165
  ### Known TRAPS (from .prizmkit/prizm-docs/)
169
166
  - <trap entries extracted from L1/L2 docs>
170
- - **Section 5 — Existing Tests**: full content of related test files as code blocks
171
167
  4. Confirm: `ls .prizmkit/specs/{{FEATURE_SLUG}}/context-snapshot.md`
172
168
 
173
169
  **After Step A**: Use context-snapshot.md Section 4 File Manifest to guide targeted file reads. Do NOT scan directories or read unrelated files.
@@ -200,7 +196,7 @@ Spawn failure cap: for team/config/lock errors, retry at most once for this Revi
200
196
 
201
197
  Prompt:
202
198
  > "Read {{REVIEWER_SUBAGENT_PATH}}. For feature {{FEATURE_ID}} (slug: {{FEATURE_SLUG}}):
203
- > 1. Read `.prizmkit/specs/{{FEATURE_SLUG}}/context-snapshot.md` FIRST — Section 3 has project context, Section 4 has file manifest.
199
+ > 1. Read `.prizmkit/specs/{{FEATURE_SLUG}}/context-snapshot.md` FIRST — Section 3 has TRAPS/RULES, Section 4 has file manifest.
204
200
  > 2. Cross-check `spec.md` and `plan.md` (including Tasks section) for consistency.
205
201
  > 3. Before flagging CRITICAL or HIGH issues, read the relevant source files listed in the File Manifest to verify.
206
202
  > Report: CRITICAL, HIGH, MEDIUM issues found (or 'No issues found')."
@@ -230,7 +226,7 @@ Spawn failure cap: for team/config/lock errors, retry at most once for this Crit
230
226
  Prompt:
231
227
  > "Read {{CRITIC_SUBAGENT_PATH}}. For feature {{FEATURE_ID}} (slug: {{FEATURE_SLUG}}):
232
228
  > **MODE: Plan Challenge**
233
- > 1. Read `.prizmkit/specs/{{FEATURE_SLUG}}/context-snapshot.md` FIRST — Section 3 has project context, Section 4 has file manifest.
229
+ > 1. Read `.prizmkit/specs/{{FEATURE_SLUG}}/context-snapshot.md` FIRST — Section 3 has TRAPS/RULES, Section 4 has file manifest.
234
230
  > 2. Read `.prizmkit/prizm-docs/root.prizm` and relevant L1/L2 docs for affected modules.
235
231
  > 3. Read existing source files in the modules this plan touches.
236
232
  > 4. Challenge plan.md against the project's existing architecture, patterns, and style.
@@ -4,33 +4,18 @@
4
4
  Use this material according to the following priority:
5
5
 
6
6
  1. **Task Contract** — defines current scope and Verification Gates.
7
- 2. **User Raw Context** — authoritative constraints, but not automatic scope expansion.
8
- 3. **Completed Dependencies** — existing behavior and interfaces; do not re-implement them.
9
- 4. **Project Brief** — product background and architecture alignment.
10
- 5. **App Global Context** — stack, runtime, and testing conventions.
11
- 6. **Project Conventions** — repository-specific rules.
12
-
13
- ### User Raw Context
14
-
15
- {{USER_CONTEXT}}
7
+ 2. **Completed Dependencies** — existing interfaces; do not re-implement.
8
+ 3. **App Global Context** — stack, runtime, testing conventions.
16
9
 
17
10
  ### Completed Dependencies
18
11
 
19
- > Use this section to understand available interfaces and avoid duplicating completed work.
20
-
21
12
  {{COMPLETED_DEPENDENCIES}}
22
13
 
23
- ### Project Brief
24
-
25
- > Use this section for alignment only. Do not treat unrelated backlog items as current feature scope.
26
-
27
- {{PROJECT_BRIEF}}
28
-
29
14
  ### App Global Context
30
15
 
31
16
  {{GLOBAL_CONTEXT}}
32
17
 
33
18
  ### Project Conventions
34
19
 
35
- > Read {{PLATFORM_CONVENTIONS}} for project-level coding standards, architecture decisions, and development rules. Follow these conventions throughout implementation.
20
+ > Read {{PLATFORM_CONVENTIONS}} for project-level coding standards and architecture decisions.
36
21
  </feature-context>
@@ -69,3 +69,14 @@ python3 $PIPELINE_DIR/scripts/update-checkpoint.py \
69
69
  --step prizmkit-committer \
70
70
  --status completed
71
71
  ```
72
+
73
+ ### TERMINAL STOP — S09 Completed
74
+
75
+ After all of the following are true, the session is **TERMINAL**:
76
+
77
+ - `/prizmkit-committer` has completed
78
+ - `git status --short` is clean (except ignored/local-only pipeline artifacts)
79
+ - `.prizmkit/specs/{{FEATURE_SLUG}}/completion-summary.json` is written
80
+ - the S09 / `prizmkit-committer` checkpoint is marked `completed`
81
+
82
+ At that point, stop immediately. Do **not** process delayed teammate/reviewer findings, do **not** edit files, do **not** amend the commit, and do **not** start any new tool calls. Any findings that arrive after S09 is completed are follow-up work for a later session, not part of this feature commit.
@@ -62,3 +62,14 @@ python3 $PIPELINE_DIR/scripts/update-checkpoint.py \
62
62
  --step prizmkit-committer \
63
63
  --status completed
64
64
  ```
65
+
66
+ ### TERMINAL STOP — S09 Completed
67
+
68
+ After all of the following are true, the session is **TERMINAL**:
69
+
70
+ - `/prizmkit-committer` has completed
71
+ - `git status --short` is clean (except ignored/local-only pipeline artifacts)
72
+ - `.prizmkit/specs/{{FEATURE_SLUG}}/completion-summary.json` is written
73
+ - the S09 / `prizmkit-committer` checkpoint is marked `completed`
74
+
75
+ At that point, stop immediately. Do **not** process delayed teammate/reviewer findings, do **not** edit files, do **not** amend the commit, and do **not** start any new tool calls. Any findings that arrive after S09 is completed are follow-up work for a later session, not part of this feature commit.
@@ -1,4 +1,4 @@
1
- - **Section 3 — Prizm Context**: full content of root.prizm and relevant L1/L2 docs
1
+ - **Section 3 — Key TRAPS & RULES**: extract only relevant TRAPS/RULES from prizm-docs. Do NOT copy full L0/L1/L2 content — the orchestrator already loaded them.
2
2
  - **Section 4 — File Manifest**: For each file relevant to this feature, list: file path, why it's needed (modify/reference/test), key interface signatures (function names + params + return types). Do NOT include full file content — agents read files on-demand. Format:
3
3
  ### Files to Modify
4
4
  | File | Why Needed | Key Interfaces |
@@ -6,15 +6,9 @@ ls .prizmkit/specs/{{FEATURE_SLUG}}/context-snapshot.md 2>/dev/null && echo "EXI
6
6
 
7
7
  If MISSING — build it now:
8
8
  1. Read `.prizmkit/prizm-docs/root.prizm` and relevant L1/L2 prizm docs
9
- 2. Detect source code directories: read KEY_FILES and STRUCTURE sections from `root.prizm` to identify where source code lives (e.g. `src/`, `app/`, `lib/`, `cmd/`, `packages/`, or project root). If `root.prizm` is missing, scan the project tree:
10
- ```bash
11
- find . -maxdepth 2 -type f \( -name "*.js" -o -name "*.ts" -o -name "*.py" -o -name "*.go" -o -name "*.java" -o -name "*.rb" -o -name "*.rs" \) -not -path '*/node_modules/*' -not -path '*/.git/*' -not -path '*/dist/*' -not -path '*/build/*' -not -path '*/vendor/*' | head -30
12
- ```
13
- Identify the top-level source directories from the results.
14
- 3. Scan the detected source directories for files related to this feature; read each one
15
- 4. Write `.prizmkit/specs/{{FEATURE_SLUG}}/context-snapshot.md`:
16
- - **Section 1 — Task Contract**: Objective, scope rule, non-scope rule, and Verification Gates from the Task Contract above
17
- - **Section 2 — Project Structure**: run the following to get a visual directory tree, then paste output:
18
- ```bash
19
- find . -maxdepth 2 -type d -not -path '*/node_modules/*' -not -path '*/.git/*' -not -path '*/dist/*' -not -path '*/build/*' -not -path '*/__pycache__/*' -not -path '*/vendor/*' | sed -e 's;[^/]*/;|____;g;s;____|; |;g'
20
- ```
9
+ 2. Read source files listed in the feature's scope (use prizm-docs KEY_FILES for guidance)
10
+ 3. Write `.prizmkit/specs/{{FEATURE_SLUG}}/context-snapshot.md`:
11
+ - **Section 1 Feature Brief**: 2-3 line feature description from Task Contract
12
+ - **Section 2 — Verification Gates**: gate checklist from Task Contract
13
+ - **Section 3 Key TRAPS & RULES**: extract only relevant TRAPS/RULES from prizm-docs that apply to files in this scope. Do NOT copy full L0/L1/L2 content.
14
+ - **Section 4 File Manifest**: file path, why needed, key interfaces. Format: Files to Modify | Files for Reference tables.
@@ -1,6 +1,13 @@
1
- - **Section 3 — Prizm Context**: content of root.prizm and relevant L1/L2 docs
2
- - **Section 4 — Existing Source Files**: **full verbatim content** of each related file in fenced code blocks (with `### path/to/file` heading and line count). Include ALL files needed for implementation and review downstream phases read this section instead of re-reading individual source files
3
- - **Section 5 — Existing Tests**: full content of related test files as code block
1
+ - **Section 3 — Key TRAPS & RULES**: extract only relevant TRAPS/RULES from prizm-docs that apply to files in this scope. Do NOT copy full L0/L1/L2 content.
2
+ - **Section 4 — File Manifest**: For each relevant file, list path, why needed, key interface signatures. Use table format:
3
+
4
+ ### Files to Modify
5
+ | File | Why Needed | Key Interfaces |
6
+ |------|-----------|----------------|
7
+
8
+ ### Files for Reference
9
+ | File | Why Needed | Key Interfaces |
10
+ |------|-----------|----------------|
4
11
 
5
12
 
6
13
  **Checkpoint update**: Run the update script to set step `context-snapshot` to `"completed"`:
@@ -7,6 +7,7 @@
7
7
  |-----------|-------|
8
8
  | subagent_type | prizm-dev-team-dev |
9
9
  | run_in_background | false |
10
+ | isolation | Leave empty — Dev works directly in the repo, no worktree |
10
11
 
11
12
  **Agent spawn failure policy**:
12
13
  - If spawning Dev fails with team/config/lock errors, retry at most once.
@@ -19,13 +19,10 @@ ls .prizmkit/specs/{{FEATURE_SLUG}}/ 2>/dev/null
19
19
  Identify the top-level source directories from the results.
20
20
  3. Scan the detected source directories for files related to this feature; read each one
21
21
  4. Write `.prizmkit/specs/{{FEATURE_SLUG}}/context-snapshot.md`:
22
- - **Section 1 — Task Contract**: Objective, scope rule, non-scope rule, and Verification Gates from the Task Contract above
23
- - **Section 2 — Project Structure**: run the following to get a visual directory tree, then paste output:
24
- ```bash
25
- find . -maxdepth 2 -type d -not -path '*/node_modules/*' -not -path '*/.git/*' -not -path '*/dist/*' -not -path '*/build/*' -not -path '*/__pycache__/*' -not -path '*/vendor/*' | sed -e 's;[^/]*/;|____;g;s;____|; |;g'
26
- ```
27
- - **Section 3 — Prizm Context**: full content of root.prizm and relevant L1/L2 docs
28
- - **Section 4 — File Manifest**: For each file relevant to this feature, list: file path, why it's needed (modify/reference/test), key interface signatures (function names + params + return types). Do NOT include full file content — agents read files on-demand. Format:
22
+ - **Section 1 — Feature Brief**: feature description (copy from Task Contract above, 2-3 lines only)
23
+ - **Section 2 — Verification Gates**: copy the gate checklist from the Task Contract above
24
+ - **Section 3 — Key TRAPS & RULES**: extract TRAPS and RULES entries from loaded prizm-docs that apply to files in this feature's scope. Do NOT copy full L0/L1/L2 content — only the specific TRAPS/RULES lines relevant to the files listed in Section 4.
25
+ - **Section 4 File Manifest**: For each file relevant to this feature, list path, why needed (modify/reference/test), key interface signatures. Do NOT include full file content. Format:
29
26
  ### Files to Modify
30
27
  | File | Why Needed | Key Interfaces |
31
28
  |------|-----------|----------------|
@@ -38,7 +35,6 @@ ls .prizmkit/specs/{{FEATURE_SLUG}}/ 2>/dev/null
38
35
 
39
36
  ### Known TRAPS (from .prizmkit/prizm-docs/)
40
37
  - <trap entries extracted from L1/L2 docs>
41
- - **Section 5 — Existing Tests**: full content of related test files as code blocks
42
38
  5. Confirm: `ls .prizmkit/specs/{{FEATURE_SLUG}}/context-snapshot.md`
43
39
 
44
40
  **After Step A**: Use context-snapshot.md Section 4 File Manifest to guide targeted file reads. Do NOT scan directories or read unrelated files.
@@ -3,7 +3,9 @@ $ErrorActionPreference = 'Stop'
3
3
 
4
4
  $script:PrizmAiProcess = $null
5
5
 
6
- if (-not ('PrizmLineLogBridge' -as [type])) {
6
+ function Initialize-PrizmLineLogBridgeType {
7
+ if ('PrizmLineLogBridge' -as [type]) { return }
8
+
7
9
  Add-Type -TypeDefinition @'
8
10
  using System;
9
11
  using System.Diagnostics;
@@ -164,6 +166,63 @@ function Test-PrizmInfraError {
164
166
  return ($haystack -match '(?i)auth_unavailable|no auth available|502 Bad Gateway|503 Service Unavailable|504 Gateway Timeout|gateway timeout|upstream (connect )?error|connection reset|ECONNRESET|ETIMEDOUT|ENOTFOUND|EAI_AGAIN|rate limit|rate_limit|temporarily unavailable|overloaded')
165
167
  }
166
168
 
169
+ function Test-PrizmAiRuntimeError {
170
+ param([string]$SessionLog, [string]$ProgressJson)
171
+
172
+ if ($ProgressJson -and (Test-Path $ProgressJson)) {
173
+ try {
174
+ $progress = Get-Content $ProgressJson -Raw -ErrorAction Stop | ConvertFrom-Json -ErrorAction Stop
175
+ if ($progress.PSObject.Properties['fatal_error_code'] -and $progress.fatal_error_code) {
176
+ return $true
177
+ }
178
+ } catch {}
179
+ }
180
+
181
+ $parts = @()
182
+ if ($SessionLog -and (Test-Path $SessionLog)) {
183
+ try {
184
+ $text = Get-Content $SessionLog -Raw -ErrorAction Stop
185
+ if ($text.Length -gt 65536) { $text = $text.Substring($text.Length - 65536) }
186
+ $parts += $text
187
+ } catch {}
188
+ }
189
+ if ($ProgressJson -and (Test-Path $ProgressJson)) {
190
+ try { $parts += (Get-Content $ProgressJson -Raw -ErrorAction Stop) } catch {}
191
+ }
192
+ if ($parts.Count -eq 0) { return $false }
193
+
194
+ $haystack = $parts -join "`n"
195
+ $contextPattern = '(?i)context_too_large|model_context_window_exceeded|input exceeds the context window|context window of this model|context window (was )?exceeded|exceeded (the )?context window|invalid_request_error.*context window|context window.*invalid_request_error'
196
+ $errorPattern = '(?i)api error|invalid_request_error|api_error_status|api_error_code|status\s*[:=]?\s*(400|413)|last_result_is_error\s*["'':=]?\s*true|is_error\s*["'':=]?\s*true'
197
+ if (($haystack -match $contextPattern) -and ($haystack -match $errorPattern)) { return $true }
198
+ return $false
199
+ }
200
+
201
+ function Get-PrizmProgressFatalErrorCode {
202
+ param([string]$ProgressFile)
203
+ if (-not (Test-Path $ProgressFile)) { return '' }
204
+ try {
205
+ $progress = Get-Content $ProgressFile -Raw -ErrorAction Stop | ConvertFrom-Json -ErrorAction Stop
206
+ if ($progress.PSObject.Properties['fatal_error_code'] -and $progress.fatal_error_code) {
207
+ return [string]$progress.fatal_error_code
208
+ }
209
+ } catch {}
210
+ return ''
211
+ }
212
+
213
+ function Write-PrizmFatalErrorMarker {
214
+ param([string]$MarkerPath, [string]$FatalErrorCode, [int]$StaleSeconds, [int]$Threshold)
215
+ $markerDir = Split-Path $MarkerPath -Parent
216
+ if ($markerDir) { New-Item -ItemType Directory -Force -Path $markerDir | Out-Null }
217
+ [ordered]@{
218
+ killed_at = (Get-Date).ToUniversalTime().ToString('yyyy-MM-ddTHH:mm:ssZ')
219
+ reason = $FatalErrorCode
220
+ fatal_error_code = $FatalErrorCode
221
+ stale_seconds = $StaleSeconds
222
+ threshold = $Threshold
223
+ } | ConvertTo-Json -Compress | Set-Content -Path $MarkerPath -Encoding UTF8
224
+ }
225
+
167
226
  function Get-PrizmConfigValue {
168
227
  param([string]$ConfigPath, [string]$Key)
169
228
  if (-not (Test-Path $ConfigPath)) { return $null }
@@ -638,6 +697,7 @@ function Invoke-PrizmAiSession {
638
697
  $psi.Arguments = $argumentString
639
698
  }
640
699
 
700
+ Initialize-PrizmLineLogBridgeType
641
701
  $process = [System.Diagnostics.Process]::Start($psi)
642
702
  $script:PrizmAiProcess = $process
643
703
  $logBridge = [PrizmLineLogBridge]::new($LogPath)