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.
- package/bundled/VERSION.json +3 -3
- package/bundled/agents/prizm-dev-team-dev.md +11 -1
- package/bundled/dev-pipeline/lib/common.sh +427 -0
- package/bundled/dev-pipeline/lib/heartbeat.sh +101 -36
- package/bundled/dev-pipeline/run-feature.sh +109 -29
- package/bundled/dev-pipeline/scripts/parse-stream-progress.py +198 -3
- package/bundled/dev-pipeline/scripts/update-feature-status.py +27 -3
- package/bundled/dev-pipeline/templates/agent-prompts/dev-implement.md +21 -0
- package/bundled/dev-pipeline/templates/bootstrap-tier2.md +1 -1
- package/bundled/dev-pipeline/templates/bootstrap-tier3.md +5 -9
- package/bundled/dev-pipeline/templates/sections/feature-context.md +3 -18
- package/bundled/dev-pipeline/templates/sections/phase-commit-full.md +11 -0
- package/bundled/dev-pipeline/templates/sections/phase-commit.md +11 -0
- package/bundled/dev-pipeline/templates/sections/phase-context-snapshot-agent-suffix.md +1 -1
- package/bundled/dev-pipeline/templates/sections/phase-context-snapshot-base.md +6 -12
- package/bundled/dev-pipeline/templates/sections/phase-context-snapshot-lite-suffix.md +10 -3
- package/bundled/dev-pipeline/templates/sections/phase-implement-agent.md +1 -0
- package/bundled/dev-pipeline/templates/sections/phase-specify-plan-full.md +4 -8
- package/bundled/dev-pipeline-windows/lib/common.ps1 +61 -1
- package/bundled/dev-pipeline-windows/lib/pipeline.ps1 +325 -16
- package/bundled/dev-pipeline-windows/scripts/parse-stream-progress.py +198 -3
- package/bundled/dev-pipeline-windows/scripts/update-feature-status.py +27 -3
- package/bundled/dev-pipeline-windows/templates/agent-prompts/dev-implement.md +21 -0
- package/bundled/dev-pipeline-windows/templates/agent-prompts/reviewer-review.md +1 -1
- package/bundled/dev-pipeline-windows/templates/bootstrap-prompt.md +27 -0
- package/bundled/dev-pipeline-windows/templates/bootstrap-tier1.md +543 -14
- package/bundled/dev-pipeline-windows/templates/bootstrap-tier2.md +664 -14
- package/bundled/dev-pipeline-windows/templates/bootstrap-tier3.md +741 -14
- package/bundled/dev-pipeline-windows/templates/bugfix-bootstrap-prompt.md +2 -2
- package/bundled/dev-pipeline-windows/templates/feature-list-schema.json +1 -1
- package/bundled/dev-pipeline-windows/templates/refactor-bootstrap-prompt.md +1 -1
- package/bundled/dev-pipeline-windows/templates/refactor-list-schema.json +1 -1
- package/bundled/dev-pipeline-windows/templates/sections/context-budget-rules.md +3 -3
- package/bundled/dev-pipeline-windows/templates/sections/failure-capture.md +1 -1
- package/bundled/dev-pipeline-windows/templates/sections/feature-context.md +3 -18
- package/bundled/dev-pipeline-windows/templates/sections/phase-browser-verification-auto.md +239 -40
- package/bundled/dev-pipeline-windows/templates/sections/phase-browser-verification-opencli.md +75 -26
- package/bundled/dev-pipeline-windows/templates/sections/phase-browser-verification.md +142 -36
- package/bundled/dev-pipeline-windows/templates/sections/phase-commit-full.md +13 -2
- package/bundled/dev-pipeline-windows/templates/sections/phase-commit.md +12 -1
- package/bundled/dev-pipeline-windows/templates/sections/phase-context-snapshot-agent-suffix.md +1 -1
- package/bundled/dev-pipeline-windows/templates/sections/phase-context-snapshot-base.md +7 -17
- package/bundled/dev-pipeline-windows/templates/sections/phase-context-snapshot-lite-suffix.md +10 -3
- package/bundled/dev-pipeline-windows/templates/sections/phase-critic-plan-full.md +1 -1
- package/bundled/dev-pipeline-windows/templates/sections/phase-critic-plan.md +1 -1
- package/bundled/dev-pipeline-windows/templates/sections/phase-implement-agent.md +3 -1
- package/bundled/dev-pipeline-windows/templates/sections/phase-implement-full.md +7 -3
- package/bundled/dev-pipeline-windows/templates/sections/phase-implement-lite.md +1 -3
- package/bundled/dev-pipeline-windows/templates/sections/phase-plan-agent.md +1 -1
- package/bundled/dev-pipeline-windows/templates/sections/phase-plan-lite.md +1 -1
- package/bundled/dev-pipeline-windows/templates/sections/phase-review-agent.md +1 -1
- package/bundled/dev-pipeline-windows/templates/sections/phase-review-full.md +2 -2
- package/bundled/dev-pipeline-windows/templates/sections/phase-specify-plan-full.md +13 -17
- package/bundled/dev-pipeline-windows/templates/sections/phase0-test-baseline.md +2 -4
- package/bundled/dev-pipeline-windows/templates/sections/subagent-timeout-recovery.md +1 -1
- package/bundled/skills/_metadata.json +1 -1
- 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 —
|
|
153
|
-
|
|
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
|
|
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
|
|
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. **
|
|
8
|
-
3. **
|
|
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
|
|
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 —
|
|
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.
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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 —
|
|
2
|
-
- **Section 4 —
|
|
3
|
-
|
|
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 —
|
|
23
|
-
- **Section 2 —
|
|
24
|
-
|
|
25
|
-
|
|
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
|
-
|
|
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)
|