gsd-pi 2.49.0-dev.de3d9f6 → 2.50.0-dev.9476db8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/headless-ui.js +12 -2
- package/dist/headless.js +29 -13
- package/dist/resources/extensions/gsd/auto/infra-errors.js +1 -0
- package/dist/resources/extensions/gsd/auto/phases.js +11 -11
- package/dist/resources/extensions/gsd/auto/resolve.js +2 -2
- package/dist/resources/extensions/gsd/auto/run-unit.js +2 -2
- package/dist/resources/extensions/gsd/auto/session.js +4 -0
- package/dist/resources/extensions/gsd/auto-artifact-paths.js +8 -10
- package/dist/resources/extensions/gsd/auto-dashboard.js +6 -3
- package/dist/resources/extensions/gsd/auto-dispatch.js +33 -21
- package/dist/resources/extensions/gsd/auto-post-unit.js +17 -24
- package/dist/resources/extensions/gsd/auto-prompts.js +102 -21
- package/dist/resources/extensions/gsd/auto-recovery.js +62 -184
- package/dist/resources/extensions/gsd/auto-start.js +4 -31
- package/dist/resources/extensions/gsd/auto-timers.js +2 -2
- package/dist/resources/extensions/gsd/auto-verification.js +4 -7
- package/dist/resources/extensions/gsd/auto-worktree.js +257 -113
- package/dist/resources/extensions/gsd/auto.js +7 -5
- package/dist/resources/extensions/gsd/bootstrap/db-tools.js +89 -0
- package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +8 -1
- package/dist/resources/extensions/gsd/branch-patterns.js +13 -0
- package/dist/resources/extensions/gsd/doctor-checks.js +5 -1234
- package/dist/resources/extensions/gsd/doctor-engine-checks.js +168 -0
- package/dist/resources/extensions/gsd/doctor-environment.js +28 -7
- package/dist/resources/extensions/gsd/doctor-git-checks.js +405 -0
- package/dist/resources/extensions/gsd/doctor-global-checks.js +74 -0
- package/dist/resources/extensions/gsd/doctor-runtime-checks.js +600 -0
- package/dist/resources/extensions/gsd/doctor.js +9 -1
- package/dist/resources/extensions/gsd/extension-manifest.json +1 -1
- package/dist/resources/extensions/gsd/git-service.js +9 -10
- package/dist/resources/extensions/gsd/gsd-db.js +124 -1
- package/dist/resources/extensions/gsd/guided-flow-queue.js +10 -11
- package/dist/resources/extensions/gsd/markdown-renderer.js +33 -5
- package/dist/resources/extensions/gsd/preferences-types.js +2 -1
- package/dist/resources/extensions/gsd/preferences-validation.js +39 -0
- package/dist/resources/extensions/gsd/prompts/complete-milestone.md +27 -8
- package/dist/resources/extensions/gsd/prompts/complete-slice.md +9 -8
- package/dist/resources/extensions/gsd/prompts/execute-task.md +16 -13
- package/dist/resources/extensions/gsd/prompts/forensics.md +12 -5
- package/dist/resources/extensions/gsd/prompts/gate-evaluate.md +32 -0
- package/dist/resources/extensions/gsd/prompts/guided-complete-slice.md +1 -1
- package/dist/resources/extensions/gsd/prompts/guided-execute-task.md +1 -1
- package/dist/resources/extensions/gsd/prompts/guided-plan-milestone.md +1 -1
- package/dist/resources/extensions/gsd/prompts/guided-plan-slice.md +1 -1
- package/dist/resources/extensions/gsd/prompts/plan-milestone.md +1 -1
- package/dist/resources/extensions/gsd/prompts/plan-slice.md +8 -3
- package/dist/resources/extensions/gsd/prompts/reassess-roadmap.md +3 -0
- package/dist/resources/extensions/gsd/prompts/replan-slice.md +1 -1
- package/dist/resources/extensions/gsd/repo-identity.js +29 -0
- package/dist/resources/extensions/gsd/roadmap-slices.js +2 -2
- package/dist/resources/extensions/gsd/session-forensics.js +6 -11
- package/dist/resources/extensions/gsd/session-lock.js +67 -56
- package/dist/resources/extensions/gsd/state.js +34 -7
- package/dist/resources/extensions/gsd/templates/milestone-summary.md +8 -0
- package/dist/resources/extensions/gsd/templates/plan.md +16 -0
- package/dist/resources/extensions/gsd/templates/roadmap.md +13 -0
- package/dist/resources/extensions/gsd/templates/slice-summary.md +9 -0
- package/dist/resources/extensions/gsd/templates/task-plan.md +24 -0
- package/dist/resources/extensions/gsd/tools/plan-slice.js +14 -1
- package/dist/resources/extensions/gsd/tools/validate-milestone.js +3 -3
- package/dist/resources/extensions/gsd/verdict-parser.js +84 -0
- package/dist/resources/extensions/gsd/worktree-resolver.js +24 -0
- package/dist/resources/extensions/gsd/worktree.js +3 -2
- package/dist/resources/extensions/remote-questions/config.js +3 -5
- package/dist/resources/extensions/search-the-web/native-search.js +8 -3
- package/dist/resources/extensions/search-the-web/tool-search.js +19 -2
- package/dist/resources/skills/github-workflows/references/gh/SKILL.md +22 -1
- package/dist/web/standalone/.next/BUILD_ID +1 -1
- package/dist/web/standalone/.next/app-path-routes-manifest.json +15 -15
- package/dist/web/standalone/.next/build-manifest.json +3 -3
- package/dist/web/standalone/.next/prerender-manifest.json +3 -3
- package/dist/web/standalone/.next/react-loadable-manifest.json +1 -1
- package/dist/web/standalone/.next/required-server-files.json +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.html +2 -2
- package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.html +1 -1
- package/dist/web/standalone/.next/server/app/index.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app-paths-manifest.json +15 -15
- package/dist/web/standalone/.next/server/chunks/229.js +2 -2
- package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
- package/dist/web/standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/dist/web/standalone/.next/server/pages/404.html +1 -1
- package/dist/web/standalone/.next/server/pages/500.html +2 -2
- package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
- package/dist/web/standalone/.next/static/chunks/4024.7c75ac378de0f2b5.js +9 -0
- package/dist/web/standalone/.next/static/chunks/{webpack-0a4cd455ec4197d2.js → webpack-2473ce2c3879fff4.js} +1 -1
- package/dist/web/standalone/server.js +1 -1
- package/package.json +1 -1
- package/packages/pi-agent-core/dist/agent-loop.d.ts.map +1 -1
- package/packages/pi-agent-core/dist/agent-loop.js +4 -1
- package/packages/pi-agent-core/dist/agent-loop.js.map +1 -1
- package/packages/pi-agent-core/src/agent-loop.ts +4 -1
- package/packages/pi-ai/dist/providers/openai-codex-responses.js +39 -10
- package/packages/pi-ai/dist/providers/openai-codex-responses.js.map +1 -1
- package/packages/pi-ai/src/providers/openai-codex-responses.ts +39 -8
- package/packages/pi-coding-agent/dist/core/blob-store.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/blob-store.js +8 -3
- package/packages/pi-coding-agent/dist/core/blob-store.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/discovery-cache.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/discovery-cache.js +9 -2
- package/packages/pi-coding-agent/dist/core/discovery-cache.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/retry-handler.js +1 -1
- package/packages/pi-coding-agent/dist/core/retry-handler.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js +7 -32
- package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/rpc/jsonl.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/rpc/jsonl.js +5 -0
- package/packages/pi-coding-agent/dist/modes/rpc/jsonl.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/rpc/rpc-client.js +0 -1
- package/packages/pi-coding-agent/dist/modes/rpc/rpc-client.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/rpc/rpc-mode.js +1 -1
- package/packages/pi-coding-agent/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/packages/pi-coding-agent/package.json +1 -1
- package/packages/pi-coding-agent/src/core/blob-store.ts +6 -3
- package/packages/pi-coding-agent/src/core/discovery-cache.ts +9 -2
- package/packages/pi-coding-agent/src/core/retry-handler.ts +1 -1
- package/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts +7 -32
- package/packages/pi-coding-agent/src/modes/rpc/jsonl.ts +6 -0
- package/packages/pi-coding-agent/src/modes/rpc/rpc-client.ts +0 -2
- package/packages/pi-coding-agent/src/modes/rpc/rpc-mode.ts +2 -2
- package/pkg/package.json +1 -1
- package/src/resources/extensions/gsd/auto/infra-errors.ts +1 -0
- package/src/resources/extensions/gsd/auto/phases.ts +10 -11
- package/src/resources/extensions/gsd/auto/resolve.ts +3 -3
- package/src/resources/extensions/gsd/auto/run-unit.ts +2 -2
- package/src/resources/extensions/gsd/auto/session.ts +5 -0
- package/src/resources/extensions/gsd/auto/types.ts +13 -0
- package/src/resources/extensions/gsd/auto-artifact-paths.ts +19 -21
- package/src/resources/extensions/gsd/auto-dashboard.ts +5 -2
- package/src/resources/extensions/gsd/auto-dispatch.ts +39 -21
- package/src/resources/extensions/gsd/auto-loop.ts +1 -1
- package/src/resources/extensions/gsd/auto-post-unit.ts +18 -28
- package/src/resources/extensions/gsd/auto-prompts.ts +113 -19
- package/src/resources/extensions/gsd/auto-recovery.ts +65 -199
- package/src/resources/extensions/gsd/auto-start.ts +7 -27
- package/src/resources/extensions/gsd/auto-timers.ts +2 -2
- package/src/resources/extensions/gsd/auto-verification.ts +4 -7
- package/src/resources/extensions/gsd/auto-worktree.ts +305 -108
- package/src/resources/extensions/gsd/auto.ts +11 -10
- package/src/resources/extensions/gsd/bootstrap/db-tools.ts +93 -0
- package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +8 -0
- package/src/resources/extensions/gsd/branch-patterns.ts +16 -0
- package/src/resources/extensions/gsd/doctor-checks.ts +5 -1291
- package/src/resources/extensions/gsd/doctor-engine-checks.ts +182 -0
- package/src/resources/extensions/gsd/doctor-environment.ts +30 -7
- package/src/resources/extensions/gsd/doctor-git-checks.ts +415 -0
- package/src/resources/extensions/gsd/doctor-global-checks.ts +84 -0
- package/src/resources/extensions/gsd/doctor-runtime-checks.ts +626 -0
- package/src/resources/extensions/gsd/doctor.ts +9 -1
- package/src/resources/extensions/gsd/extension-manifest.json +1 -1
- package/src/resources/extensions/gsd/git-service.ts +7 -15
- package/src/resources/extensions/gsd/gsd-db.ts +150 -2
- package/src/resources/extensions/gsd/guided-flow-queue.ts +11 -12
- package/src/resources/extensions/gsd/markdown-renderer.ts +37 -4
- package/src/resources/extensions/gsd/preferences-types.ts +5 -1
- package/src/resources/extensions/gsd/preferences-validation.ts +37 -0
- package/src/resources/extensions/gsd/prompts/complete-milestone.md +27 -8
- package/src/resources/extensions/gsd/prompts/complete-slice.md +9 -8
- package/src/resources/extensions/gsd/prompts/execute-task.md +16 -13
- package/src/resources/extensions/gsd/prompts/forensics.md +12 -5
- package/src/resources/extensions/gsd/prompts/gate-evaluate.md +32 -0
- package/src/resources/extensions/gsd/prompts/guided-complete-slice.md +1 -1
- package/src/resources/extensions/gsd/prompts/guided-execute-task.md +1 -1
- package/src/resources/extensions/gsd/prompts/guided-plan-milestone.md +1 -1
- package/src/resources/extensions/gsd/prompts/guided-plan-slice.md +1 -1
- package/src/resources/extensions/gsd/prompts/plan-milestone.md +1 -1
- package/src/resources/extensions/gsd/prompts/plan-slice.md +8 -3
- package/src/resources/extensions/gsd/prompts/reassess-roadmap.md +3 -0
- package/src/resources/extensions/gsd/prompts/replan-slice.md +1 -1
- package/src/resources/extensions/gsd/repo-identity.ts +28 -0
- package/src/resources/extensions/gsd/roadmap-slices.ts +2 -2
- package/src/resources/extensions/gsd/session-forensics.ts +6 -11
- package/src/resources/extensions/gsd/session-lock.ts +92 -64
- package/src/resources/extensions/gsd/state.ts +38 -5
- package/src/resources/extensions/gsd/templates/milestone-summary.md +8 -0
- package/src/resources/extensions/gsd/templates/plan.md +16 -0
- package/src/resources/extensions/gsd/templates/roadmap.md +13 -0
- package/src/resources/extensions/gsd/templates/slice-summary.md +9 -0
- package/src/resources/extensions/gsd/templates/task-plan.md +24 -0
- package/src/resources/extensions/gsd/tests/agent-end-retry.test.ts +2 -2
- package/src/resources/extensions/gsd/tests/auto-loop.test.ts +35 -0
- package/src/resources/extensions/gsd/tests/auto-recovery.test.ts +1 -81
- package/src/resources/extensions/gsd/tests/complete-slice.test.ts +2 -2
- package/src/resources/extensions/gsd/tests/complete-task.test.ts +2 -2
- package/src/resources/extensions/gsd/tests/completed-units-metrics-sync.test.ts +9 -12
- package/src/resources/extensions/gsd/tests/doctor-environment.test.ts +115 -1
- package/src/resources/extensions/gsd/tests/doctor-fixlevel.test.ts +65 -1
- package/src/resources/extensions/gsd/tests/doctor-git.test.ts +50 -0
- package/src/resources/extensions/gsd/tests/gate-dispatch.test.ts +189 -0
- package/src/resources/extensions/gsd/tests/gate-storage.test.ts +156 -0
- package/src/resources/extensions/gsd/tests/git-service.test.ts +49 -0
- package/src/resources/extensions/gsd/tests/gsd-db.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/infra-error.test.ts +12 -2
- package/src/resources/extensions/gsd/tests/journal-integration.test.ts +39 -0
- package/src/resources/extensions/gsd/tests/md-importer.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/memory-store.test.ts +2 -2
- package/src/resources/extensions/gsd/tests/quality-gates.test.ts +347 -0
- package/src/resources/extensions/gsd/tests/queue-completed-milestone-perf.test.ts +155 -0
- package/src/resources/extensions/gsd/tests/replan-slice.test.ts +2 -1
- package/src/resources/extensions/gsd/tests/repo-identity-worktree.test.ts +32 -0
- package/src/resources/extensions/gsd/tests/roadmap-slices.test.ts +26 -0
- package/src/resources/extensions/gsd/tests/run-uat.test.ts +20 -16
- package/src/resources/extensions/gsd/tests/session-lock-transient-read.test.ts +223 -0
- package/src/resources/extensions/gsd/tests/skill-activation.test.ts +44 -4
- package/src/resources/extensions/gsd/tests/tool-naming.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/validate-milestone.test.ts +2 -1
- package/src/resources/extensions/gsd/tests/verification-gate.test.ts +0 -16
- package/src/resources/extensions/gsd/tests/worktree-resolver.test.ts +67 -0
- package/src/resources/extensions/gsd/tests/worktree-sync-milestones.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/worktree-sync-overwrite-loop.test.ts +204 -0
- package/src/resources/extensions/gsd/tools/plan-slice.ts +16 -0
- package/src/resources/extensions/gsd/tools/validate-milestone.ts +3 -3
- package/src/resources/extensions/gsd/types.ts +30 -0
- package/src/resources/extensions/gsd/verdict-parser.ts +95 -0
- package/src/resources/extensions/gsd/verification-gate.ts +0 -2
- package/src/resources/extensions/gsd/worktree-resolver.ts +31 -0
- package/src/resources/extensions/gsd/worktree.ts +3 -2
- package/src/resources/extensions/remote-questions/config.ts +3 -5
- package/src/resources/extensions/search-the-web/native-search.ts +8 -3
- package/src/resources/extensions/search-the-web/tool-search.ts +22 -2
- package/src/resources/skills/github-workflows/references/gh/SKILL.md +22 -1
- package/dist/resources/extensions/gsd/auto-worktree-sync.js +0 -191
- package/dist/resources/extensions/gsd/resource-version.js +0 -97
- package/dist/web/standalone/.next/static/chunks/4024.11ca5c01938e5948.js +0 -9
- package/src/resources/extensions/gsd/auto-worktree-sync.ts +0 -234
- package/src/resources/extensions/gsd/resource-version.ts +0 -101
- /package/dist/web/standalone/.next/static/{ceckLbAMjhzHaQ3RPtJnT → MkE9kzqUGny3-cSE0GNnm}/_buildManifest.js +0 -0
- /package/dist/web/standalone/.next/static/{ceckLbAMjhzHaQ3RPtJnT → MkE9kzqUGny3-cSE0GNnm}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Centralized verdict extraction, normalization, and schema validation.
|
|
3
|
+
*
|
|
4
|
+
* All verdict-related logic lives here so that normalization rules
|
|
5
|
+
* (e.g. `passed` → `pass`) are applied consistently across the codebase.
|
|
6
|
+
*/
|
|
7
|
+
import { extractUatType } from "./files.js";
|
|
8
|
+
// ── Verdict extraction ──────────────────────────────────────────────────
|
|
9
|
+
/**
|
|
10
|
+
* Extract and normalize the `verdict` value from YAML frontmatter.
|
|
11
|
+
*
|
|
12
|
+
* Normalization:
|
|
13
|
+
* - lowercased
|
|
14
|
+
* - `passed` → `pass`
|
|
15
|
+
*
|
|
16
|
+
* Returns `undefined` when frontmatter is absent or has no `verdict` field.
|
|
17
|
+
*/
|
|
18
|
+
export function extractVerdict(content) {
|
|
19
|
+
const fmMatch = content.match(/^---\n([\s\S]*?)\n---/);
|
|
20
|
+
if (!fmMatch)
|
|
21
|
+
return undefined;
|
|
22
|
+
const verdictMatch = fmMatch[1].match(/verdict:\s*([\w-]+)/i);
|
|
23
|
+
if (!verdictMatch)
|
|
24
|
+
return undefined;
|
|
25
|
+
let v = verdictMatch[1].toLowerCase();
|
|
26
|
+
if (v === "passed")
|
|
27
|
+
v = "pass";
|
|
28
|
+
return v;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Returns `true` when the content's frontmatter contains a `verdict` field.
|
|
32
|
+
*/
|
|
33
|
+
export function hasVerdict(content) {
|
|
34
|
+
return /verdict:\s*[\w-]+/i.test(content);
|
|
35
|
+
}
|
|
36
|
+
// ── UAT verdict schema ──────────────────────────────────────────────────
|
|
37
|
+
/**
|
|
38
|
+
* Base verdicts that are always acceptable for UAT results.
|
|
39
|
+
*/
|
|
40
|
+
export const UAT_ACCEPTABLE_VERDICTS = ["pass", "passed"];
|
|
41
|
+
/**
|
|
42
|
+
* UAT types whose results may legitimately produce a `partial` verdict
|
|
43
|
+
* when all automatable checks pass but human-only checks remain.
|
|
44
|
+
*/
|
|
45
|
+
const PARTIAL_ELIGIBLE_UAT_TYPES = [
|
|
46
|
+
"mixed",
|
|
47
|
+
"human-experience",
|
|
48
|
+
"live-runtime",
|
|
49
|
+
];
|
|
50
|
+
/**
|
|
51
|
+
* Check whether a verdict is acceptable for a given UAT type.
|
|
52
|
+
*
|
|
53
|
+
* `pass` / `passed` are always acceptable. `partial` is acceptable only for
|
|
54
|
+
* UAT types that include non-automatable human checks.
|
|
55
|
+
*/
|
|
56
|
+
export function isAcceptableUatVerdict(verdict, uatType) {
|
|
57
|
+
if (UAT_ACCEPTABLE_VERDICTS.includes(verdict))
|
|
58
|
+
return true;
|
|
59
|
+
if (verdict === "partial" && uatType && PARTIAL_ELIGIBLE_UAT_TYPES.includes(uatType)) {
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
// ── Milestone validation verdict schema ─────────────────────────────────
|
|
65
|
+
/**
|
|
66
|
+
* Valid verdicts for the `validate-milestone` tool.
|
|
67
|
+
*/
|
|
68
|
+
export const VALIDATION_VERDICTS = ["pass", "needs-attention", "needs-remediation"];
|
|
69
|
+
/**
|
|
70
|
+
* Check whether a string is a valid milestone validation verdict.
|
|
71
|
+
*/
|
|
72
|
+
export function isValidMilestoneVerdict(verdict) {
|
|
73
|
+
return VALIDATION_VERDICTS.includes(verdict);
|
|
74
|
+
}
|
|
75
|
+
// ── UAT type helper ─────────────────────────────────────────────────────
|
|
76
|
+
/**
|
|
77
|
+
* Extract the UAT type from content, defaulting to `"artifact-driven"`.
|
|
78
|
+
*
|
|
79
|
+
* The `"artifact-driven"` fallback is the original default used throughout
|
|
80
|
+
* the codebase when a UAT file lacks an explicit `## UAT Type` section.
|
|
81
|
+
*/
|
|
82
|
+
export function getUatType(content) {
|
|
83
|
+
return extractUatType(content) ?? "artifact-driven";
|
|
84
|
+
}
|
|
@@ -72,6 +72,16 @@ export class WorktreeResolver {
|
|
|
72
72
|
*/
|
|
73
73
|
enterMilestone(milestoneId, ctx) {
|
|
74
74
|
this.validateMilestoneId(milestoneId);
|
|
75
|
+
// If worktree creation failed earlier this session, skip all future attempts
|
|
76
|
+
if (this.s.isolationDegraded) {
|
|
77
|
+
debugLog("WorktreeResolver", {
|
|
78
|
+
action: "enterMilestone",
|
|
79
|
+
milestoneId,
|
|
80
|
+
skipped: true,
|
|
81
|
+
reason: "isolation-degraded",
|
|
82
|
+
});
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
75
85
|
if (!this.deps.shouldUseWorktreeIsolation()) {
|
|
76
86
|
debugLog("WorktreeResolver", {
|
|
77
87
|
action: "enterMilestone",
|
|
@@ -136,6 +146,9 @@ export class WorktreeResolver {
|
|
|
136
146
|
data: { milestoneId, error: msg, fallback: "project-root" },
|
|
137
147
|
});
|
|
138
148
|
ctx.notify(`Auto-worktree creation for ${milestoneId} failed: ${msg}. Continuing in project root.`, "warning");
|
|
149
|
+
// Degrade isolation for the rest of this session so mergeAndExit
|
|
150
|
+
// doesn't try to merge a nonexistent worktree branch (#2483)
|
|
151
|
+
this.s.isolationDegraded = true;
|
|
139
152
|
// Do NOT update s.basePath — stay in project root
|
|
140
153
|
}
|
|
141
154
|
}
|
|
@@ -210,6 +223,17 @@ export class WorktreeResolver {
|
|
|
210
223
|
*/
|
|
211
224
|
mergeAndExit(milestoneId, ctx) {
|
|
212
225
|
this.validateMilestoneId(milestoneId);
|
|
226
|
+
// If worktree creation failed earlier, skip merge — work is on current branch (#2483)
|
|
227
|
+
if (this.s.isolationDegraded) {
|
|
228
|
+
debugLog("WorktreeResolver", {
|
|
229
|
+
action: "mergeAndExit",
|
|
230
|
+
milestoneId,
|
|
231
|
+
skipped: true,
|
|
232
|
+
reason: "isolation-degraded",
|
|
233
|
+
});
|
|
234
|
+
ctx.notify(`Skipping worktree merge for ${milestoneId} — isolation was degraded (worktree creation failed earlier). Work is on the current branch.`, "info");
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
213
237
|
const mode = this.deps.getIsolationMode();
|
|
214
238
|
debugLog("WorktreeResolver", {
|
|
215
239
|
action: "mergeAndExit",
|
|
@@ -220,8 +220,9 @@ export function getSliceBranchName(milestoneId, sliceId, worktreeName) {
|
|
|
220
220
|
}
|
|
221
221
|
return `gsd/${milestoneId}/${sliceId}`;
|
|
222
222
|
}
|
|
223
|
-
/**
|
|
224
|
-
export
|
|
223
|
+
/** Re-export for backward compatibility — canonical definition in branch-patterns.ts */
|
|
224
|
+
export { SLICE_BRANCH_RE } from "./branch-patterns.js";
|
|
225
|
+
import { SLICE_BRANCH_RE } from "./branch-patterns.js";
|
|
225
226
|
/**
|
|
226
227
|
* Parse a slice branch name into its components.
|
|
227
228
|
* Handles both `gsd/M001/S01` and `gsd/myworktree/M001/S01`.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Remote Questions — configuration resolution and validation
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
4
|
+
import { AuthStorage } from "@gsd/pi-coding-agent";
|
|
5
5
|
import { loadEffectiveGSDPreferences } from "../gsd/preferences.js";
|
|
6
6
|
const ENV_KEYS = {
|
|
7
7
|
slack: "SLACK_BOT_TOKEN",
|
|
@@ -39,9 +39,7 @@ function hydrateRemoteTokensFromAuth() {
|
|
|
39
39
|
if (needed.length === 0)
|
|
40
40
|
return;
|
|
41
41
|
try {
|
|
42
|
-
const
|
|
43
|
-
const authPath = join(process.env.HOME ?? "~", ".gsd", "agent", "auth.json");
|
|
44
|
-
const auth = AuthStorage.create(authPath);
|
|
42
|
+
const auth = AuthStorage.create();
|
|
45
43
|
for (const [providerId, envVar] of needed) {
|
|
46
44
|
try {
|
|
47
45
|
const creds = auth.getCredentialsForProvider(providerId);
|
|
@@ -56,7 +54,7 @@ function hydrateRemoteTokensFromAuth() {
|
|
|
56
54
|
}
|
|
57
55
|
}
|
|
58
56
|
catch {
|
|
59
|
-
// AuthStorage unavailable
|
|
57
|
+
// AuthStorage unavailable or auth.json missing/unreadable — skip silently.
|
|
60
58
|
}
|
|
61
59
|
}
|
|
62
60
|
export function resolveRemoteConfig() {
|
|
@@ -148,11 +148,15 @@ export function registerNativeSearchHooks(pi) {
|
|
|
148
148
|
// the model and causes it to pick custom tools which can fail with network errors.
|
|
149
149
|
tools = tools.filter((t) => !CUSTOM_SEARCH_TOOL_NAMES.includes(t.name));
|
|
150
150
|
payload.tools = tools;
|
|
151
|
-
// ── Session-level search budget (#1309)
|
|
151
|
+
// ── Session-level search budget (#1309, #compaction-safe) ─────────────
|
|
152
152
|
// Count web_search_tool_result blocks in the conversation history to
|
|
153
153
|
// determine how many native searches have already been used this session.
|
|
154
154
|
// The Anthropic API's max_uses resets per request, so without this guard,
|
|
155
155
|
// pause_turn → resubmit cycles allow unlimited total searches.
|
|
156
|
+
//
|
|
157
|
+
// Use the monotonic high-water mark: take the max of the history count
|
|
158
|
+
// and the running counter. This prevents budget resets when context
|
|
159
|
+
// compaction removes web_search_tool_result blocks from history.
|
|
156
160
|
if (Array.isArray(messages)) {
|
|
157
161
|
let historySearchCount = 0;
|
|
158
162
|
for (const msg of messages) {
|
|
@@ -165,8 +169,9 @@ export function registerNativeSearchHooks(pi) {
|
|
|
165
169
|
}
|
|
166
170
|
}
|
|
167
171
|
}
|
|
168
|
-
//
|
|
169
|
-
|
|
172
|
+
// High-water mark: never decrease the counter, even if compaction
|
|
173
|
+
// removes web_search_tool_result blocks from the visible history.
|
|
174
|
+
sessionSearchCount = Math.max(sessionSearchCount, historySearchCount);
|
|
170
175
|
}
|
|
171
176
|
const remaining = Math.max(0, MAX_NATIVE_SEARCHES_PER_SESSION - sessionSearchCount);
|
|
172
177
|
if (remaining <= 0) {
|
|
@@ -27,13 +27,18 @@ const searchCache = new LRUTTLCache({ max: 100, ttlMs: 600_000 });
|
|
|
27
27
|
searchCache.startPurgeInterval(60_000);
|
|
28
28
|
// Consecutive duplicate search guard (#949)
|
|
29
29
|
// Tracks recent query keys to detect and break search loops.
|
|
30
|
-
const MAX_CONSECUTIVE_DUPES =
|
|
30
|
+
const MAX_CONSECUTIVE_DUPES = 1;
|
|
31
31
|
let lastSearchKey = "";
|
|
32
32
|
let consecutiveDupeCount = 0;
|
|
33
|
-
|
|
33
|
+
// Session-level total search budget (all queries, not just duplicates).
|
|
34
|
+
// Prevents unbounded search accumulation across varied queries.
|
|
35
|
+
const MAX_SEARCHES_PER_SESSION = 15;
|
|
36
|
+
let sessionTotalSearches = 0;
|
|
37
|
+
/** Reset session-scoped search guard state (both duplicate and budget). */
|
|
34
38
|
export function resetSearchLoopGuardState() {
|
|
35
39
|
lastSearchKey = "";
|
|
36
40
|
consecutiveDupeCount = 0;
|
|
41
|
+
sessionTotalSearches = 0;
|
|
37
42
|
}
|
|
38
43
|
// Summarizer responses: max 50 entries, 15-minute TTL
|
|
39
44
|
const summarizerCache = new LRUTTLCache({ max: 50, ttlMs: 900_000 });
|
|
@@ -221,6 +226,16 @@ export function registerSearchTool(pi) {
|
|
|
221
226
|
details: { errorKind: "auth_error", error: "No search API key set" },
|
|
222
227
|
};
|
|
223
228
|
}
|
|
229
|
+
// ------------------------------------------------------------------
|
|
230
|
+
// Session-level search budget
|
|
231
|
+
// ------------------------------------------------------------------
|
|
232
|
+
if (sessionTotalSearches >= MAX_SEARCHES_PER_SESSION) {
|
|
233
|
+
return {
|
|
234
|
+
content: [{ type: "text", text: `⚠️ Search budget exhausted: ${sessionTotalSearches}/${MAX_SEARCHES_PER_SESSION} searches used this session. The information you need should already be in previous search results. Stop searching and use those results to proceed with your task.` }],
|
|
235
|
+
isError: true,
|
|
236
|
+
details: { errorKind: "budget_exhausted", error: `Session search budget exhausted (${MAX_SEARCHES_PER_SESSION})` },
|
|
237
|
+
};
|
|
238
|
+
}
|
|
224
239
|
const count = params.count ?? 5;
|
|
225
240
|
const wantSummary = params.summary ?? false;
|
|
226
241
|
// ------------------------------------------------------------------
|
|
@@ -271,6 +286,8 @@ export function registerSearchTool(pi) {
|
|
|
271
286
|
lastSearchKey = cacheKey;
|
|
272
287
|
consecutiveDupeCount = 1;
|
|
273
288
|
}
|
|
289
|
+
// Count every search that passes the guards toward the session budget.
|
|
290
|
+
sessionTotalSearches++;
|
|
274
291
|
const cached = searchCache.get(cacheKey);
|
|
275
292
|
if (cached) {
|
|
276
293
|
const limited = cached.results.slice(0, count);
|
|
@@ -103,9 +103,12 @@ gh issue list -R gsd-build/gsd-2
|
|
|
103
103
|
gh issue list -R gsd-build/gsd-2 --label "priority:p1" --state open
|
|
104
104
|
|
|
105
105
|
# Create issue with labels and milestone
|
|
106
|
+
# NOTE: Do NOT use labels for issue classification (bug, feature, etc.)
|
|
107
|
+
# Use labels for metadata (priority, status, auto-generated) only.
|
|
108
|
+
# Issue classification uses GitHub Issue Types, set via GraphQL after creation.
|
|
106
109
|
gh issue create -R gsd-build/gsd-2 \
|
|
107
110
|
--title "feat: add feature X" \
|
|
108
|
-
--label "priority:p1"
|
|
111
|
+
--label "priority:p1" \
|
|
109
112
|
--milestone "v1.0"
|
|
110
113
|
|
|
111
114
|
# View issue
|
|
@@ -120,6 +123,24 @@ gh issue edit <number> -R gsd-build/gsd-2 \
|
|
|
120
123
|
--remove-label "status:needs-grooming"
|
|
121
124
|
```
|
|
122
125
|
|
|
126
|
+
### Issue Types (Classification)
|
|
127
|
+
|
|
128
|
+
`gh issue create` has no `--type` flag. Issue types (Bug, Feature Request, etc.) are set via GraphQL after creation:
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
# Step 1: Create the issue (returns URL)
|
|
132
|
+
ISSUE_URL=$(gh issue create -R gsd-build/gsd-2 \
|
|
133
|
+
--title "..." --body "...")
|
|
134
|
+
|
|
135
|
+
# Step 2: Set the issue type via GraphQL
|
|
136
|
+
ISSUE_NUM=$(echo "$ISSUE_URL" | grep -oE '[0-9]+$')
|
|
137
|
+
ISSUE_ID=$(gh api graphql -f query='{ repository(owner:"gsd-build",name:"gsd-2") { issue(number:'"$ISSUE_NUM"') { id } } }' --jq '.data.repository.issue.id')
|
|
138
|
+
TYPE_ID=$(gh api graphql -f query='{ repository(owner:"gsd-build",name:"gsd-2") { issueTypes(first:20) { nodes { id name } } } }' --jq '.data.repository.issueTypes.nodes[] | select(.name=="Bug") | .id')
|
|
139
|
+
gh api graphql -f query='mutation { updateIssue(input:{id:"'"$ISSUE_ID"'",issueTypeId:"'"$TYPE_ID"'"}) { issue { number } } }'
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
Replace `"Bug"` with the appropriate type name (`"Feature Request"`, `"Task"`, etc.).
|
|
143
|
+
|
|
123
144
|
### Labels
|
|
124
145
|
|
|
125
146
|
```bash
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
MkE9kzqUGny3-cSE0GNnm
|
|
@@ -1,44 +1,44 @@
|
|
|
1
1
|
{
|
|
2
2
|
"/_not-found/page": "/_not-found",
|
|
3
3
|
"/_global-error/page": "/_global-error",
|
|
4
|
-
"/api/boot/route": "/api/boot",
|
|
5
4
|
"/api/bridge-terminal/input/route": "/api/bridge-terminal/input",
|
|
6
5
|
"/api/bridge-terminal/resize/route": "/api/bridge-terminal/resize",
|
|
6
|
+
"/api/browse-directories/route": "/api/browse-directories",
|
|
7
|
+
"/api/boot/route": "/api/boot",
|
|
7
8
|
"/api/bridge-terminal/stream/route": "/api/bridge-terminal/stream",
|
|
9
|
+
"/api/dev-mode/route": "/api/dev-mode",
|
|
8
10
|
"/api/doctor/route": "/api/doctor",
|
|
9
11
|
"/api/cleanup/route": "/api/cleanup",
|
|
10
|
-
"/api/export-data/route": "/api/export-data",
|
|
11
|
-
"/api/dev-mode/route": "/api/dev-mode",
|
|
12
|
-
"/api/git/route": "/api/git",
|
|
13
12
|
"/api/captures/route": "/api/captures",
|
|
14
13
|
"/api/forensics/route": "/api/forensics",
|
|
14
|
+
"/api/git/route": "/api/git",
|
|
15
15
|
"/api/history/route": "/api/history",
|
|
16
|
-
"/api/hooks/route": "/api/hooks",
|
|
17
16
|
"/api/inspect/route": "/api/inspect",
|
|
18
17
|
"/api/knowledge/route": "/api/knowledge",
|
|
19
|
-
"/api/
|
|
18
|
+
"/api/hooks/route": "/api/hooks",
|
|
19
|
+
"/api/export-data/route": "/api/export-data",
|
|
20
20
|
"/api/live-state/route": "/api/live-state",
|
|
21
21
|
"/api/preferences/route": "/api/preferences",
|
|
22
|
+
"/api/recovery/route": "/api/recovery",
|
|
22
23
|
"/api/onboarding/route": "/api/onboarding",
|
|
23
24
|
"/api/projects/route": "/api/projects",
|
|
24
|
-
"/api/recovery/route": "/api/recovery",
|
|
25
|
-
"/api/session/events/route": "/api/session/events",
|
|
26
|
-
"/api/session/command/route": "/api/session/command",
|
|
27
25
|
"/api/session/browser/route": "/api/session/browser",
|
|
28
|
-
"/api/
|
|
29
|
-
"/api/session/manage/route": "/api/session/manage",
|
|
26
|
+
"/api/session/command/route": "/api/session/command",
|
|
30
27
|
"/api/shutdown/route": "/api/shutdown",
|
|
28
|
+
"/api/session/events/route": "/api/session/events",
|
|
29
|
+
"/api/session/manage/route": "/api/session/manage",
|
|
30
|
+
"/api/settings-data/route": "/api/settings-data",
|
|
31
31
|
"/api/skill-health/route": "/api/skill-health",
|
|
32
32
|
"/api/steer/route": "/api/steer",
|
|
33
|
+
"/api/terminal/input/route": "/api/terminal/input",
|
|
33
34
|
"/api/terminal/resize/route": "/api/terminal/resize",
|
|
34
35
|
"/api/files/route": "/api/files",
|
|
35
36
|
"/api/switch-root/route": "/api/switch-root",
|
|
36
|
-
"/api/terminal/input/route": "/api/terminal/input",
|
|
37
|
-
"/api/undo/route": "/api/undo",
|
|
38
|
-
"/api/terminal/upload/route": "/api/terminal/upload",
|
|
39
37
|
"/api/terminal/stream/route": "/api/terminal/stream",
|
|
40
|
-
"/api/visualizer/route": "/api/visualizer",
|
|
41
38
|
"/api/terminal/sessions/route": "/api/terminal/sessions",
|
|
39
|
+
"/api/terminal/upload/route": "/api/terminal/upload",
|
|
40
|
+
"/api/visualizer/route": "/api/visualizer",
|
|
41
|
+
"/api/undo/route": "/api/undo",
|
|
42
42
|
"/api/remote-questions/route": "/api/remote-questions",
|
|
43
43
|
"/api/update/route": "/api/update",
|
|
44
44
|
"/page": "/"
|
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
],
|
|
5
5
|
"devFiles": [],
|
|
6
6
|
"lowPriorityFiles": [
|
|
7
|
-
"static/
|
|
8
|
-
"static/
|
|
7
|
+
"static/MkE9kzqUGny3-cSE0GNnm/_buildManifest.js",
|
|
8
|
+
"static/MkE9kzqUGny3-cSE0GNnm/_ssgManifest.js"
|
|
9
9
|
],
|
|
10
10
|
"rootMainFiles": [
|
|
11
|
-
"static/chunks/webpack-
|
|
11
|
+
"static/chunks/webpack-2473ce2c3879fff4.js",
|
|
12
12
|
"static/chunks/4bd1b696-e5d7c65570c947b7.js",
|
|
13
13
|
"static/chunks/3794-337d1ca25ad99a89.js",
|
|
14
14
|
"static/chunks/main-app-fdab67f7802d7832.js"
|
|
@@ -78,8 +78,8 @@
|
|
|
78
78
|
"dynamicRoutes": {},
|
|
79
79
|
"notFoundRoutes": [],
|
|
80
80
|
"preview": {
|
|
81
|
-
"previewModeId": "
|
|
82
|
-
"previewModeSigningKey": "
|
|
83
|
-
"previewModeEncryptionKey": "
|
|
81
|
+
"previewModeId": "aae32c3c220fe523a03409dee73da8e1",
|
|
82
|
+
"previewModeSigningKey": "3c56c1c8b76cefa46dd1ec853d0c1ca1b43760aba2e3f4950012763ec3d738db",
|
|
83
|
+
"previewModeEncryptionKey": "cd2ec266df334af56f57470efee08cbfd0e0a69b01217c2f2a101f0c9d0cb58d"
|
|
84
84
|
}
|
|
85
85
|
}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"static/chunks/363642f4.f9053a63f1b97508.js",
|
|
7
7
|
"static/chunks/4986-c2fc8845ce785303.js",
|
|
8
8
|
"static/chunks/485.243af25f0cdf50d6.js",
|
|
9
|
-
"static/chunks/4024.
|
|
9
|
+
"static/chunks/4024.7c75ac378de0f2b5.js"
|
|
10
10
|
]
|
|
11
11
|
},
|
|
12
12
|
"components/gsd/chat-mode.tsx -> react-markdown": {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
<!DOCTYPE html><!--
|
|
2
|
-
@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-
|
|
1
|
+
<!DOCTYPE html><!--MkE9kzqUGny3_cSE0GNnm--><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-2473ce2c3879fff4.js"/><script src="/_next/static/chunks/4bd1b696-e5d7c65570c947b7.js" async=""></script><script src="/_next/static/chunks/3794-337d1ca25ad99a89.js" async=""></script><script src="/_next/static/chunks/main-app-fdab67f7802d7832.js" async=""></script><meta name="next-size-adjust" content=""/><title>500: Internal Server Error.</title><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}
|
|
2
|
+
@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-2473ce2c3879fff4.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[57121,[],\"\"]\n3:I[74581,[],\"\"]\n4:I[90484,[],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n7:I[90484,[],\"ViewportBoundary\"]\n9:I[90484,[],\"MetadataBoundary\"]\nb:I[27123,[],\"\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"MkE9kzqUGny3-cSE0GNnm\",\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_global-error\",{\"children\":[\"__PAGE__\",{}]}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"title\",null,{\"children\":\"500: Internal Server Error.\"}]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"lineHeight\":\"48px\"},\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"paddingRight\":23,\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\"},\"children\":\"500\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"28px\"},\"children\":\"Internal Server Error.\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L7\",null,{\"children\":\"$L8\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L9\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$La\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$b\",[]],\"S\":true}\n"])</script><script>self.__next_f.push([1,"8:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\na:[]\n"])</script></body></html>
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
7:I[90484,[],"ViewportBoundary"]
|
|
7
7
|
9:I[90484,[],"MetadataBoundary"]
|
|
8
8
|
b:I[27123,[],""]
|
|
9
|
-
0:{"P":null,"b":"
|
|
9
|
+
0:{"P":null,"b":"MkE9kzqUGny3-cSE0GNnm","c":["","_global-error"],"q":"","i":false,"f":[[["",{"children":["_global-error",{"children":["__PAGE__",{}]}]}],[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":["$","title",null,{"children":"500: Internal Server Error."}]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"lineHeight":"48px"},"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","paddingRight":23,"fontSize":24,"fontWeight":500,"verticalAlign":"top"},"children":"500"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"28px"},"children":"Internal Server Error."}]}]]}]}]}]]}],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$L7",null,{"children":"$L8"}],["$","div",null,{"hidden":true,"children":["$","$L9",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$La"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$b",[]],"S":true}
|
|
10
10
|
8:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
|
|
11
11
|
6:null
|
|
12
12
|
a:[]
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
7:I[90484,[],"ViewportBoundary"]
|
|
7
7
|
9:I[90484,[],"MetadataBoundary"]
|
|
8
8
|
b:I[27123,[],""]
|
|
9
|
-
0:{"P":null,"b":"
|
|
9
|
+
0:{"P":null,"b":"MkE9kzqUGny3-cSE0GNnm","c":["","_global-error"],"q":"","i":false,"f":[[["",{"children":["_global-error",{"children":["__PAGE__",{}]}]}],[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":["$","title",null,{"children":"500: Internal Server Error."}]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"lineHeight":"48px"},"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","paddingRight":23,"fontSize":24,"fontWeight":500,"verticalAlign":"top"},"children":"500"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"28px"},"children":"Internal Server Error."}]}]]}]}]}]]}],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$L7",null,{"children":"$L8"}],["$","div",null,{"hidden":true,"children":["$","$L9",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$La"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$b",[]],"S":true}
|
|
10
10
|
8:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
|
|
11
11
|
6:null
|
|
12
12
|
a:[]
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
1:"$Sreact.fragment"
|
|
2
2
|
2:I[90484,[],"OutletBoundary"]
|
|
3
3
|
3:"$Sreact.suspense"
|
|
4
|
-
0:{"buildId":"
|
|
4
|
+
0:{"buildId":"MkE9kzqUGny3-cSE0GNnm","rsc":["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":["$","title",null,{"children":"500: Internal Server Error."}]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"lineHeight":"48px"},"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","paddingRight":23,"fontSize":24,"fontWeight":500,"verticalAlign":"top"},"children":"500"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"28px"},"children":"Internal Server Error."}]}]]}]}]}]]}],null,["$","$L2",null,{"children":["$","$3",null,{"name":"Next.MetadataOutlet","children":"$@4"}]}]]}],"loading":null,"isPartial":false}
|
|
5
5
|
4:null
|
package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
1:"$Sreact.fragment"
|
|
2
2
|
2:I[57121,[],""]
|
|
3
3
|
3:I[74581,[],""]
|
|
4
|
-
0:{"buildId":"
|
|
4
|
+
0:{"buildId":"MkE9kzqUGny3-cSE0GNnm","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false}
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
2:I[90484,[],"ViewportBoundary"]
|
|
3
3
|
3:I[90484,[],"MetadataBoundary"]
|
|
4
4
|
4:"$Sreact.suspense"
|
|
5
|
-
0:{"buildId":"
|
|
5
|
+
0:{"buildId":"MkE9kzqUGny3-cSE0GNnm","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"loading":null,"isPartial":false}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
1:"$Sreact.fragment"
|
|
2
2
|
2:I[57121,[],""]
|
|
3
3
|
3:I[74581,[],""]
|
|
4
|
-
0:{"buildId":"
|
|
4
|
+
0:{"buildId":"MkE9kzqUGny3-cSE0GNnm","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
0:{"buildId":"
|
|
1
|
+
0:{"buildId":"MkE9kzqUGny3-cSE0GNnm","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"_global-error","paramType":null,"paramKey":"_global-error","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":false},"staleTime":300}
|