@opengsd/gsd-core 1.17.0 → 1.19.0
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/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +2 -1
- package/.opencode/plugins/gsd-core.js +2 -3
- package/agents/gsd-advisor-researcher.compact.md +1 -1
- package/agents/gsd-advisor-researcher.md +1 -1
- package/agents/gsd-assumptions-analyzer.compact.md +1 -1
- package/agents/gsd-assumptions-analyzer.md +1 -1
- package/agents/gsd-code-fixer.compact.md +3 -3
- package/agents/gsd-code-fixer.md +5 -4
- package/agents/gsd-code-reviewer.compact.md +1 -1
- package/agents/gsd-code-reviewer.md +1 -1
- package/agents/gsd-codebase-mapper.compact.md +1 -1
- package/agents/gsd-codebase-mapper.md +1 -1
- package/agents/gsd-debugger.md +1 -1
- package/agents/gsd-doc-verifier.compact.md +4 -4
- package/agents/gsd-doc-verifier.md +4 -3
- package/agents/gsd-doc-writer.compact.md +23 -5
- package/agents/gsd-doc-writer.md +19 -6
- package/agents/gsd-eval-auditor.compact.md +1 -1
- package/agents/gsd-eval-auditor.md +1 -1
- package/agents/gsd-executor.md +7 -3
- package/agents/gsd-integration-checker.compact.md +1 -1
- package/agents/gsd-integration-checker.md +1 -1
- package/agents/gsd-nyquist-auditor.compact.md +1 -1
- package/agents/gsd-nyquist-auditor.md +1 -1
- package/agents/gsd-phase-researcher.md +1 -1
- package/agents/gsd-plan-checker.md +2 -1
- package/agents/gsd-planner.md +5 -4
- package/agents/gsd-project-researcher.compact.md +1 -1
- package/agents/gsd-project-researcher.md +1 -1
- package/agents/gsd-research-synthesizer.compact.md +5 -5
- package/agents/gsd-research-synthesizer.md +5 -5
- package/agents/gsd-roadmapper.compact.md +1 -1
- package/agents/gsd-roadmapper.md +1 -1
- package/agents/gsd-security-auditor.compact.md +1 -1
- package/agents/gsd-security-auditor.md +1 -1
- package/agents/gsd-ui-auditor.compact.md +1 -1
- package/agents/gsd-ui-auditor.md +1 -1
- package/agents/gsd-ui-checker.compact.md +1 -1
- package/agents/gsd-ui-checker.md +1 -1
- package/agents/gsd-ui-researcher.compact.md +13 -1
- package/agents/gsd-ui-researcher.md +28 -1
- package/agents/gsd-verifier.md +2 -2
- package/bin/install.js +460 -105
- package/commands/gsd/code-review.md +8 -0
- package/commands/gsd/pause-work.md +1 -1
- package/gsd-core/bin/gsd-tools.cjs +124 -18
- package/gsd-core/bin/lib/agent-install-check.cjs +29 -3
- package/gsd-core/bin/lib/args-terminator.cjs +114 -0
- package/gsd-core/bin/lib/broken-windows.cjs +59 -1
- package/gsd-core/bin/lib/capability-ledger.cjs +25 -0
- package/gsd-core/bin/lib/capability-lock.cjs +41 -8
- package/gsd-core/bin/lib/capability-registry.cjs +162 -74
- package/gsd-core/bin/lib/capability-source.cjs +3 -1
- package/gsd-core/bin/lib/capability-state.cjs +20 -11
- package/gsd-core/bin/lib/capability-validator.cjs +23 -4
- package/gsd-core/bin/lib/commands.cjs +5 -1
- package/gsd-core/bin/lib/config-loader.cjs +13 -3
- package/gsd-core/bin/lib/config.cjs +256 -58
- package/gsd-core/bin/lib/core-utils.cjs +34 -0
- package/gsd-core/bin/lib/decision-coverage-support.cjs +93 -0
- package/gsd-core/bin/lib/gate-context-drift.cjs +8 -3
- package/gsd-core/bin/lib/gate-decision-coverage-plan.cjs +21 -1
- package/gsd-core/bin/lib/gate-decision-coverage-verify.cjs +19 -1
- package/gsd-core/bin/lib/gate-evaluation-scope.cjs +134 -13
- package/gsd-core/bin/lib/gate-predicate-evaluator.cjs +23 -3
- package/gsd-core/bin/lib/gate-predicate.cjs +8 -12
- package/gsd-core/bin/lib/gate-tdd-review-checkpoint.cjs +114 -18
- package/gsd-core/bin/lib/gate-ui-safety.cjs +23 -5
- package/gsd-core/bin/lib/git-info-exclude.cjs +57 -0
- package/gsd-core/bin/lib/health-diagnostic-rules/phase-structure.cjs +18 -3
- package/gsd-core/bin/lib/health-diagnostic-types.cjs +4 -0
- package/gsd-core/bin/lib/health-diagnostic.cjs +52 -1
- package/gsd-core/bin/lib/host-integration.cjs +13 -6
- package/gsd-core/bin/lib/init.cjs +76 -5
- package/gsd-core/bin/lib/install-effort-resolver.cjs +2 -2
- package/gsd-core/bin/lib/install-engine.cjs +246 -32
- package/gsd-core/bin/lib/install-model-override-resolver.cjs +4 -3
- package/gsd-core/bin/lib/install-profiles.cjs +14 -7
- package/gsd-core/bin/lib/installer-migration-report.cjs +2 -0
- package/gsd-core/bin/lib/markdown-line-diff.cjs +147 -0
- package/gsd-core/bin/lib/markdown-sectionizer.cjs +113 -0
- package/gsd-core/bin/lib/milestone-lock.cjs +8 -1
- package/gsd-core/bin/lib/milestone-release-map.cjs +244 -0
- package/gsd-core/bin/lib/milestone-release-tags.cjs +440 -0
- package/gsd-core/bin/lib/milestone.cjs +43 -1
- package/gsd-core/bin/lib/model-catalog.cjs +8 -0
- package/gsd-core/bin/lib/normalize-test-command.cjs +67 -0
- package/gsd-core/bin/lib/phase-id.cjs +21 -4
- package/gsd-core/bin/lib/phase-lifecycle.cjs +37 -4
- package/gsd-core/bin/lib/phase.cjs +235 -37
- package/gsd-core/bin/lib/planning-snapshot.cjs +3 -1
- package/gsd-core/bin/lib/planning-workspace.cjs +18 -0
- package/gsd-core/bin/lib/pristine-baseline.cjs +11 -3
- package/gsd-core/bin/lib/read-only-git-env.cjs +58 -0
- package/gsd-core/bin/lib/report-parser.cjs +57 -1
- package/gsd-core/bin/lib/review-lane-descriptor.cjs +35 -2
- package/gsd-core/bin/lib/review-lane-invocation.cjs +40 -0
- package/gsd-core/bin/lib/review-lane-runner.cjs +33 -4
- package/gsd-core/bin/lib/review-reviewer-selection.cjs +20 -1
- package/gsd-core/bin/lib/roadmap-parser.cjs +12 -0
- package/gsd-core/bin/lib/roadmap-upgrade.cjs +39 -2
- package/gsd-core/bin/lib/roadmap.cjs +89 -30
- package/gsd-core/bin/lib/runtime-artifact-conversion.cjs +428 -16
- package/gsd-core/bin/lib/runtime-artifact-layout.cjs +8 -4
- package/gsd-core/bin/lib/runtime-homes.cjs +18 -0
- package/gsd-core/bin/lib/runtime-hooks-surface.cjs +60 -16
- package/gsd-core/bin/lib/shell-command-projection.cjs +123 -16
- package/gsd-core/bin/lib/smart-entry.cjs +37 -16
- package/gsd-core/bin/lib/state-contract.cjs +29 -9
- package/gsd-core/bin/lib/state-document.cjs +47 -5
- package/gsd-core/bin/lib/state-transition.cjs +150 -34
- package/gsd-core/bin/lib/state.cjs +140 -88
- package/gsd-core/bin/lib/surface.cjs +9 -0
- package/gsd-core/bin/lib/task-command-router.cjs +7 -28
- package/gsd-core/bin/lib/task-content-resolution.cjs +46 -1
- package/gsd-core/bin/lib/tdd-red-evidence.cjs +5 -0
- package/gsd-core/bin/lib/tdd-test-files.cjs +42 -0
- package/gsd-core/bin/lib/verification.cjs +96 -9
- package/gsd-core/bin/lib/verify.cjs +38 -1
- package/gsd-core/bin/lib/worktree-safety.cjs +22 -1
- package/gsd-core/bin/shared/config-defaults.manifest.json +1 -0
- package/gsd-core/bin/shared/config-schema.manifest.json +1 -0
- package/gsd-core/references/agent-contracts.md +1 -1
- package/gsd-core/references/agent-skills-bootstrap.md +26 -7
- package/gsd-core/references/git-integration.md +14 -3
- package/gsd-core/references/loop-hook-dispatch.md +13 -6
- package/gsd-core/references/planner-reversibility.md +18 -4
- package/gsd-core/references/planner-verify-command-grounding.md +18 -0
- package/gsd-core/references/planning-config.md +2 -0
- package/gsd-core/references/tdd.md +5 -4
- package/gsd-core/references/verifier-phase-gates.md +8 -1
- package/gsd-core/templates/DEBUG.md +16 -0
- package/gsd-core/templates/config.json +2 -1
- package/gsd-core/templates/verification-report.md +1 -1
- package/gsd-core/workflows/add-backlog.md +10 -2
- package/gsd-core/workflows/add-phase.md +5 -1
- package/gsd-core/workflows/add-tests.md +5 -1
- package/gsd-core/workflows/add-todo.md +5 -1
- package/gsd-core/workflows/ai-integration-phase.md +5 -1
- package/gsd-core/workflows/audit-fix.md +2 -1
- package/gsd-core/workflows/audit-milestone.md +21 -9
- package/gsd-core/workflows/autonomous/templates/minimal-context.md +41 -0
- package/gsd-core/workflows/autonomous.md +52 -64
- package/gsd-core/workflows/check-todos.md +5 -1
- package/gsd-core/workflows/code-review/steps/structural-pre-pass.md +10 -1
- package/gsd-core/workflows/code-review-fix.md +5 -1
- package/gsd-core/workflows/code-review.md +66 -8
- package/gsd-core/workflows/complete-milestone/detail/elaboration.md +5 -1
- package/gsd-core/workflows/complete-milestone/steps/project-md-evolution-review.md +145 -0
- package/gsd-core/workflows/complete-milestone/steps/release-map.md +80 -0
- package/gsd-core/workflows/complete-milestone.md +64 -157
- package/gsd-core/workflows/debug.md +5 -1
- package/gsd-core/workflows/diagnose-issues.md +34 -6
- package/gsd-core/workflows/discuss-phase/modes/chain.md +5 -1
- package/gsd-core/workflows/discuss-phase/modes/power.md +1 -1
- package/gsd-core/workflows/discuss-phase-assumptions.md +44 -5
- package/gsd-core/workflows/discuss-phase-power.md +19 -2
- package/gsd-core/workflows/discuss-phase.md +11 -11
- package/gsd-core/workflows/docs-update/detail/elaboration.md +7 -6
- package/gsd-core/workflows/docs-update.md +27 -5
- package/gsd-core/workflows/edit-phase.md +5 -1
- package/gsd-core/workflows/eval-review.md +11 -3
- package/gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md +5 -1
- package/gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md +13 -7
- package/gsd-core/workflows/execute-phase/steps/post-merge-gate.md +19 -8
- package/gsd-core/workflows/execute-phase/steps/regression-gate-run.md +21 -3
- package/gsd-core/workflows/execute-phase/steps/regression-gate.md +18 -1
- package/gsd-core/workflows/execute-phase/steps/verify-phase-goal.md +7 -3
- package/gsd-core/workflows/execute-phase/steps/wave-post-gate-hooks.md +11 -2
- package/gsd-core/workflows/execute-phase.md +46 -11
- package/gsd-core/workflows/execute-plan.md +8 -4
- package/gsd-core/workflows/extract-learnings.md +6 -2
- package/gsd-core/workflows/forensics.md +5 -1
- package/gsd-core/workflows/health.md +2 -1
- package/gsd-core/workflows/import.md +6 -2
- package/gsd-core/workflows/insert-phase.md +5 -1
- package/gsd-core/workflows/manager.md +10 -2
- package/gsd-core/workflows/map-codebase.md +5 -1
- package/gsd-core/workflows/milestone-summary.md +10 -2
- package/gsd-core/workflows/new-milestone.md +13 -5
- package/gsd-core/workflows/new-project.md +9 -5
- package/gsd-core/workflows/next.md +8 -4
- package/gsd-core/workflows/pause-work.md +3 -3
- package/gsd-core/workflows/plan-phase/steps/auto-advance-check.md +70 -0
- package/gsd-core/workflows/plan-phase/steps/chunked-planning-mode.md +7 -3
- package/gsd-core/workflows/plan-phase/steps/closed-phase-gate.md +6 -2
- package/gsd-core/workflows/plan-phase.md +54 -86
- package/gsd-core/workflows/plan-review-convergence.md +17 -5
- package/gsd-core/workflows/plant-seed.md +8 -4
- package/gsd-core/workflows/progress.md +6 -2
- package/gsd-core/workflows/quick/steps/plan-checker-loop.md +1 -1
- package/gsd-core/workflows/quick/steps/worktree-pre-dispatch-commit.md +8 -1
- package/gsd-core/workflows/quick-batch/steps/plan-checker-loop.md +2 -1
- package/gsd-core/workflows/quick-batch.md +5 -1
- package/gsd-core/workflows/quick.md +23 -8
- package/gsd-core/workflows/remove-phase.md +5 -1
- package/gsd-core/workflows/resume-project.md +5 -1
- package/gsd-core/workflows/review.md +22 -15
- package/gsd-core/workflows/scan.md +5 -1
- package/gsd-core/workflows/section-manifest.json +5 -0
- package/gsd-core/workflows/secure-phase.md +6 -2
- package/gsd-core/workflows/settings.md +4 -3
- package/gsd-core/workflows/ship.md +16 -14
- package/gsd-core/workflows/spec-phase.md +3 -6
- package/gsd-core/workflows/thread.md +10 -2
- package/gsd-core/workflows/transition.md +5 -1
- package/gsd-core/workflows/ui-phase.md +5 -1
- package/gsd-core/workflows/ui-review.md +6 -2
- package/gsd-core/workflows/ultraplan-phase.md +5 -1
- package/gsd-core/workflows/update.md +5 -1
- package/gsd-core/workflows/validate-phase.md +6 -2
- package/gsd-core/workflows/verify-work/detail/elaboration.md +1 -1
- package/gsd-core/workflows/verify-work/steps/mvp-uat-framing.md +5 -1
- package/gsd-core/workflows/verify-work.md +15 -6
- package/hooks/dist/gsd-agent-isolation-guard.js +14 -2
- package/hooks/dist/gsd-cursor-subagent-start.js +8 -3
- package/hooks/dist/gsd-path-export.js +95 -0
- package/hooks/dist/gsd-secret-read-guard.js +244 -53
- package/hooks/dist/gsd-statusline.js +35 -2
- package/hooks/dist/gsd-validate-commit.sh +27 -5
- package/hooks/dist/gsd-windsurf-pre-write.js +28 -1
- package/hooks/dist/gsd-workflow-guard.js +1 -1
- package/hooks/dist/gsd-worktree-path-guard.js +28 -1
- package/hooks/dist/lib/isolation-sentinel.js +44 -0
- package/hooks/dist/managed-hooks-registry.cjs +1 -0
- package/hooks/gsd-agent-isolation-guard.js +14 -2
- package/hooks/gsd-cursor-subagent-start.js +8 -3
- package/hooks/gsd-path-export.js +95 -0
- package/hooks/gsd-secret-read-guard.js +244 -53
- package/hooks/gsd-statusline.js +35 -2
- package/hooks/gsd-validate-commit.sh +27 -5
- package/hooks/gsd-windsurf-pre-write.js +28 -1
- package/hooks/gsd-workflow-guard.js +1 -1
- package/hooks/gsd-worktree-path-guard.js +28 -1
- package/hooks/hooks.json +1 -0
- package/hooks/lib/isolation-sentinel.js +44 -0
- package/hooks/managed-hooks-registry.cjs +1 -0
- package/package.json +13 -6
- package/pi/gsd.cjs +1047 -10
- package/pi/package-agents/gsd-advisor-researcher.md +113 -0
- package/pi/package-agents/gsd-ai-researcher.md +111 -0
- package/pi/package-agents/gsd-assumptions-analyzer.md +110 -0
- package/pi/package-agents/gsd-code-fixer.md +769 -0
- package/pi/package-agents/gsd-code-reviewer.md +402 -0
- package/pi/package-agents/gsd-codebase-mapper.md +850 -0
- package/pi/package-agents/gsd-debug-session-manager.md +416 -0
- package/pi/package-agents/gsd-debugger.md +1274 -0
- package/pi/package-agents/gsd-doc-classifier.md +269 -0
- package/pi/package-agents/gsd-doc-synthesizer.md +259 -0
- package/pi/package-agents/gsd-doc-verifier.md +212 -0
- package/pi/package-agents/gsd-doc-writer.md +626 -0
- package/pi/package-agents/gsd-dom-verifier.md +164 -0
- package/pi/package-agents/gsd-domain-researcher.md +144 -0
- package/pi/package-agents/gsd-eval-auditor.md +185 -0
- package/pi/package-agents/gsd-eval-planner.md +149 -0
- package/pi/package-agents/gsd-executor.md +894 -0
- package/pi/package-agents/gsd-framework-selector.md +159 -0
- package/pi/package-agents/gsd-integration-checker.md +476 -0
- package/pi/package-agents/gsd-intel-updater.md +338 -0
- package/pi/package-agents/gsd-mempalace-curator.md +49 -0
- package/pi/package-agents/gsd-nyquist-auditor.md +200 -0
- package/pi/package-agents/gsd-pattern-mapper.md +340 -0
- package/pi/package-agents/gsd-phase-researcher.md +897 -0
- package/pi/package-agents/gsd-plan-checker.md +1077 -0
- package/pi/package-agents/gsd-planner.md +1003 -0
- package/pi/package-agents/gsd-project-researcher.md +611 -0
- package/pi/package-agents/gsd-research-synthesizer.md +259 -0
- package/pi/package-agents/gsd-roadmapper.md +779 -0
- package/pi/package-agents/gsd-security-auditor.md +171 -0
- package/pi/package-agents/gsd-ui-auditor.md +581 -0
- package/pi/package-agents/gsd-ui-checker.md +417 -0
- package/pi/package-agents/gsd-ui-researcher.md +469 -0
- package/pi/package-agents/gsd-user-profiler.md +174 -0
- package/pi/package-agents/gsd-verifier.md +963 -0
- package/pi/package-agents/manifest.json +39 -0
- package/pi/package-skills/gsd-add-tests/SKILL.md +39 -0
- package/pi/package-skills/gsd-ai-integration-phase/SKILL.md +36 -0
- package/pi/package-skills/gsd-audit-fix/SKILL.md +34 -0
- package/pi/package-skills/gsd-audit-milestone/SKILL.md +40 -0
- package/pi/package-skills/gsd-audit-uat/SKILL.md +26 -0
- package/pi/package-skills/gsd-autonomous/SKILL.md +52 -0
- package/pi/package-skills/gsd-capture/SKILL.md +68 -0
- package/pi/package-skills/gsd-cleanup/SKILL.md +25 -0
- package/pi/package-skills/gsd-code-review/SKILL.md +71 -0
- package/pi/package-skills/gsd-complete-milestone/SKILL.md +147 -0
- package/pi/package-skills/gsd-config/SKILL.md +60 -0
- package/pi/package-skills/gsd-debug/SKILL.md +64 -0
- package/pi/package-skills/gsd-discuss-phase/SKILL.md +74 -0
- package/pi/package-skills/gsd-docs-update/SKILL.md +50 -0
- package/pi/package-skills/gsd-eval-review/SKILL.md +35 -0
- package/pi/package-skills/gsd-execute-phase/SKILL.md +62 -0
- package/pi/package-skills/gsd-explore/SKILL.md +26 -0
- package/pi/package-skills/gsd-extract-learnings/SKILL.md +25 -0
- package/pi/package-skills/gsd-fast/SKILL.md +33 -0
- package/pi/package-skills/gsd-forensics/SKILL.md +59 -0
- package/pi/package-skills/gsd-graphify/SKILL.md +210 -0
- package/pi/package-skills/gsd-health/SKILL.md +36 -0
- package/pi/package-skills/gsd-help/SKILL.md +37 -0
- package/pi/package-skills/gsd-import/SKILL.md +46 -0
- package/pi/package-skills/gsd-inbox/SKILL.md +42 -0
- package/pi/package-skills/gsd-ingest-docs/SKILL.md +43 -0
- package/pi/package-skills/gsd-manager/SKILL.md +46 -0
- package/pi/package-skills/gsd-map-codebase/SKILL.md +85 -0
- package/pi/package-skills/gsd-mempalace-capture/SKILL.md +111 -0
- package/pi/package-skills/gsd-mempalace-recall/SKILL.md +111 -0
- package/pi/package-skills/gsd-milestone-summary/SKILL.md +54 -0
- package/pi/package-skills/gsd-mvp-phase/SKILL.md +45 -0
- package/pi/package-skills/gsd-new-milestone/SKILL.md +49 -0
- package/pi/package-skills/gsd-new-project/SKILL.md +49 -0
- package/pi/package-skills/gsd-next/SKILL.md +34 -0
- package/pi/package-skills/gsd-ns-context/SKILL.md +31 -0
- package/pi/package-skills/gsd-ns-ideate/SKILL.md +30 -0
- package/pi/package-skills/gsd-ns-manage/SKILL.md +42 -0
- package/pi/package-skills/gsd-ns-project/SKILL.md +34 -0
- package/pi/package-skills/gsd-ns-review/SKILL.md +35 -0
- package/pi/package-skills/gsd-ns-workflow/SKILL.md +44 -0
- package/pi/package-skills/gsd-onboard/SKILL.md +46 -0
- package/pi/package-skills/gsd-pause-work/SKILL.md +48 -0
- package/pi/package-skills/gsd-phase/SKILL.md +61 -0
- package/pi/package-skills/gsd-plan-phase/SKILL.md +62 -0
- package/pi/package-skills/gsd-plan-review-convergence/SKILL.md +63 -0
- package/pi/package-skills/gsd-pr-branch/SKILL.md +31 -0
- package/pi/package-skills/gsd-profile-user/SKILL.md +48 -0
- package/pi/package-skills/gsd-progress/SKILL.md +51 -0
- package/pi/package-skills/gsd-quick/SKILL.md +179 -0
- package/pi/package-skills/gsd-quick-batch/SKILL.md +114 -0
- package/pi/package-skills/gsd-resume-work/SKILL.md +31 -0
- package/pi/package-skills/gsd-review/SKILL.md +50 -0
- package/pi/package-skills/gsd-review-backlog/SKILL.md +65 -0
- package/pi/package-skills/gsd-secure-phase/SKILL.md +37 -0
- package/pi/package-skills/gsd-settings/SKILL.md +30 -0
- package/pi/package-skills/gsd-ship/SKILL.md +27 -0
- package/pi/package-skills/gsd-sketch/SKILL.md +56 -0
- package/pi/package-skills/gsd-spec-phase/SKILL.md +63 -0
- package/pi/package-skills/gsd-spike/SKILL.md +53 -0
- package/pi/package-skills/gsd-stats/SKILL.md +22 -0
- package/pi/package-skills/gsd-surface/SKILL.md +177 -0
- package/pi/package-skills/gsd-thread/SKILL.md +29 -0
- package/pi/package-skills/gsd-ui-phase/SKILL.md +35 -0
- package/pi/package-skills/gsd-ui-review/SKILL.md +35 -0
- package/pi/package-skills/gsd-ultraplan-phase/SKILL.md +38 -0
- package/pi/package-skills/gsd-undo/SKILL.md +38 -0
- package/pi/package-skills/gsd-update/SKILL.md +51 -0
- package/pi/package-skills/gsd-validate-phase/SKILL.md +37 -0
- package/pi/package-skills/gsd-verify-work/SKILL.md +41 -0
- package/pi/package-skills/gsd-workspace/SKILL.md +57 -0
- package/pi/package-skills/gsd-workstreams/SKILL.md +73 -0
- package/scripts/audit-workflow-script-paths.cjs +1 -1
- package/scripts/build-hooks.js +4 -0
- package/scripts/command-contract-helpers.cjs +1 -1
- package/scripts/diagnose-windows-spawn-watcher.cjs +317 -0
- package/scripts/docs-guard-registry.cjs +22 -7
- package/scripts/gen-health-docs.cjs +13 -1
- package/scripts/gen-pi-package-skills.cjs +217 -0
- package/scripts/lib/macos-conformance-tier.generated.cjs +19 -0
- package/scripts/lib/platform-conformance-tier.generated.cjs +41 -0
- package/scripts/lint-docs-guard-registration.exempt-baseline.cjs +3 -3
- package/scripts/lint-phase-arg-assignment.cjs +2 -2
- package/scripts/lint-retired-runtime-name.cjs +5 -0
- package/scripts/lint-workflow-shellcheck-baseline.json +16 -16
- package/scripts/npm-audit-baseline.cjs +41 -7
- package/scripts/release-tarball-smoke.cjs +1 -0
- package/scripts/reviewed-or-maintainer-policy.cjs +181 -0
- package/scripts/select-docs-guards.cjs +1 -1
- package/scripts/self-test-report-policy.cjs +350 -0
- package/skills/gsd-code-review/SKILL.md +8 -0
- package/skills/gsd-pause-work/SKILL.md +1 -1
- package/vscode/package.json +1 -1
|
@@ -32,6 +32,8 @@ const node_os_1 = __importDefault(require("node:os"));
|
|
|
32
32
|
const node_https_1 = __importDefault(require("node:https"));
|
|
33
33
|
const node_crypto_1 = __importDefault(require("node:crypto"));
|
|
34
34
|
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
35
|
+
const { resolveGsdHome } = require('./runtime-homes.cjs');
|
|
36
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
35
37
|
const shellSeam = require('./shell-command-projection.cjs');
|
|
36
38
|
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
37
39
|
const capValidator = require('./capability-validator.cjs');
|
|
@@ -984,7 +986,7 @@ async function resolveTarball(parsed, opts, gsdHome, hostVersion) {
|
|
|
984
986
|
async function resolveCapabilitySource(spec, opts = {}) {
|
|
985
987
|
const parsed = parseSpec(spec);
|
|
986
988
|
const hostVersion = opts.hostVersion ?? readHostVersion();
|
|
987
|
-
const gsdHome = opts.gsdHome
|
|
989
|
+
const gsdHome = opts.gsdHome || resolveGsdHome();
|
|
988
990
|
switch (parsed.kind) {
|
|
989
991
|
case 'local':
|
|
990
992
|
return resolveLocal(parsed, opts, gsdHome, hostVersion);
|
|
@@ -47,6 +47,8 @@ const { loadConfig } = configLoaderMod;
|
|
|
47
47
|
const installProfilesMod = require("./install-profiles.cjs");
|
|
48
48
|
const { readActiveProfile, loadSkillsManifest, resolveProfile, parseRequires, parseCallsAgents, workflowAgentRefs } = installProfilesMod;
|
|
49
49
|
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
50
|
+
const ledgerMod = require("./capability-ledger.cjs");
|
|
51
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
50
52
|
const surfaceMod = require("./surface.cjs");
|
|
51
53
|
const { resolveSurface } = surfaceMod;
|
|
52
54
|
// ─── Prototype-pollution guard (inline literal, CodeQL barrier) ───────────────
|
|
@@ -231,14 +233,17 @@ function _resolveCommandsGsdDir() {
|
|
|
231
233
|
* Only directories whose names start with gsd- are included so user-created
|
|
232
234
|
* skills (without the gsd- prefix) are not accidentally pulled in.
|
|
233
235
|
*
|
|
234
|
-
*
|
|
235
|
-
*
|
|
236
|
+
* Dependencies use the same parseRequires, parseCallsAgents, and
|
|
237
|
+
* workflowAgentRefs helpers as loadSkillsManifest. Workflow references resolve
|
|
238
|
+
* against this runtime's own gsd-core/workflows tree, including its fragments,
|
|
239
|
+
* so a custom config directory never borrows another installation's agents.
|
|
236
240
|
*
|
|
237
241
|
* Returns an empty Map when the skills dir does not exist.
|
|
238
242
|
*/
|
|
239
243
|
function _loadInstalledSkillsManifest(configDir) {
|
|
240
244
|
const manifest = new Map();
|
|
241
245
|
const skillsDir = node_path_1.default.join(configDir, 'skills');
|
|
246
|
+
const workflowsDir = node_path_1.default.join(configDir, 'gsd-core', 'workflows');
|
|
242
247
|
if (!node_fs_1.default.existsSync(skillsDir))
|
|
243
248
|
return manifest;
|
|
244
249
|
let entries;
|
|
@@ -265,26 +270,30 @@ function _loadInstalledSkillsManifest(configDir) {
|
|
|
265
270
|
// SKILL.md must NOT register the stem — otherwise the capability would be
|
|
266
271
|
// wrongly reported surfaced/enabled and a verify:post hook would render
|
|
267
272
|
// for a skill that cannot run.
|
|
268
|
-
|
|
269
|
-
continue;
|
|
273
|
+
// #5121: bounded read — a missing, non-regular (FIFO/device) or oversized SKILL.md registers no stem.
|
|
270
274
|
let content = '';
|
|
271
275
|
try {
|
|
272
|
-
content =
|
|
276
|
+
content = ledgerMod.readSkillFile(skillMdPath);
|
|
273
277
|
}
|
|
274
278
|
catch {
|
|
275
279
|
// SKILL.md present but unreadable — register with no deps (parity with
|
|
276
280
|
// loadSkillsManifest's readFileSync catch branch).
|
|
277
281
|
}
|
|
282
|
+
if (content === null)
|
|
283
|
+
continue;
|
|
278
284
|
// Parse requires: via the SAME shared parser loadSkillsManifest uses, so
|
|
279
285
|
// installed-runtime dependency resolution can never silently diverge from
|
|
280
286
|
// the source-tree path (single source of truth — no duplicated regex).
|
|
281
287
|
manifest.set(stem, content ? parseRequires(content) : []);
|
|
282
|
-
//
|
|
283
|
-
//
|
|
284
|
-
//
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
+
// Installed skills delegate to workflows just as source commands do.
|
|
289
|
+
// Preserve their agent closure so surface materialization only prunes
|
|
290
|
+
// agents no retained skill requires (#5356).
|
|
291
|
+
manifest.set(`_calls_agents_${stem}`, [
|
|
292
|
+
...new Set([
|
|
293
|
+
...parseCallsAgents(content),
|
|
294
|
+
...workflowAgentRefs(content, workflowsDir),
|
|
295
|
+
]),
|
|
296
|
+
]);
|
|
288
297
|
}
|
|
289
298
|
return manifest;
|
|
290
299
|
}
|
|
@@ -856,6 +856,7 @@ const VALID_CONVERTER_NAMES = new Set([
|
|
|
856
856
|
'convertClaudeCommandToKimiSkill',
|
|
857
857
|
'convertClaudeCommandToKimiCodeSkill',
|
|
858
858
|
'convertClaudeCommandToOpencodeSkill',
|
|
859
|
+
'convertClaudeCommandToPiSkill',
|
|
859
860
|
'convertClaudeCommandToTraeSkill',
|
|
860
861
|
'convertClaudeCommandToWindsurfSkill',
|
|
861
862
|
'convertClaudeCommandToWindsurfWorkflow',
|
|
@@ -879,6 +880,8 @@ const VALID_CONVERTER_NAMES = new Set([
|
|
|
879
880
|
// and the kilo/opencode agent converters (shared with those runtimes'
|
|
880
881
|
// commands-kind entries, options-bag signature `(content, {isAgent, modelOverride})`).
|
|
881
882
|
'convertClaudeAgentToHermesAgent',
|
|
883
|
+
// #5569 (ADR-5559 §3) — the role file Pi's gsd_dispatch loads.
|
|
884
|
+
'convertClaudeAgentToPiAgent',
|
|
882
885
|
'convertClaudeToKiloFrontmatter',
|
|
883
886
|
'convertClaudeToOpencodeFrontmatter',
|
|
884
887
|
]);
|
|
@@ -1236,6 +1239,20 @@ function validateArtifactKindEntry(capId, entry, prefix) {
|
|
|
1236
1239
|
}
|
|
1237
1240
|
}
|
|
1238
1241
|
|
|
1242
|
+
// excludeSuffixes — optional; filename suffixes the agents staging skips (#5569: Pi omits .compact.md)
|
|
1243
|
+
if (entry.excludeSuffixes !== undefined) {
|
|
1244
|
+
if (!Array.isArray(entry.excludeSuffixes)) {
|
|
1245
|
+
errors.push(ctx + '.excludeSuffixes must be an array of non-empty strings if present');
|
|
1246
|
+
} else {
|
|
1247
|
+
for (let i = 0; i < entry.excludeSuffixes.length; i++) {
|
|
1248
|
+
const s = entry.excludeSuffixes[i];
|
|
1249
|
+
if (typeof s !== 'string' || s.length === 0 || s.includes('/') || s.includes('\\')) {
|
|
1250
|
+
errors.push(ctx + '.excludeSuffixes[' + i + '] must be a non-empty string without path separators');
|
|
1251
|
+
}
|
|
1252
|
+
}
|
|
1253
|
+
}
|
|
1254
|
+
}
|
|
1255
|
+
|
|
1239
1256
|
// converter — required; must be a string or null (closed ConverterName enum — now enforced in phase 5e)
|
|
1240
1257
|
if (!Object.prototype.hasOwnProperty.call(entry, 'converter')) {
|
|
1241
1258
|
errors.push(ctx + '.converter is required (must be a string or null)');
|
|
@@ -1899,6 +1916,10 @@ const REVIEWER_EFFORT_LEVELS = new Set(['minimal', 'low', 'medium', 'high', 'xhi
|
|
|
1899
1916
|
* silently rot away from reality (DEFECT.GENERATIVE-FIX).
|
|
1900
1917
|
*/
|
|
1901
1918
|
const KNOWN_HOST_BEHAVIORS = new Set([
|
|
1919
|
+
// #2586: declares runtime-level feature axes GSD does not/cannot support on
|
|
1920
|
+
// omitting the key on every other runtime carries no inverted meaning.
|
|
1921
|
+
// this host (e.g. Codex's `["context-warnings","phase-lifecycle-display"]`)
|
|
1922
|
+
// — present-and-populated / absent-is-unsupported-empty convention, so
|
|
1902
1923
|
'agentFileExtension',
|
|
1903
1924
|
'agentFrontmatterExtensions',
|
|
1904
1925
|
'agentManifestStyle',
|
|
@@ -1916,6 +1937,7 @@ const KNOWN_HOST_BEHAVIORS = new Set([
|
|
|
1916
1937
|
'combinedFamilyInstall',
|
|
1917
1938
|
'commandBodyConverter',
|
|
1918
1939
|
'contentRewriteProfile',
|
|
1940
|
+
'defaultHomeIncludeRoot',
|
|
1919
1941
|
'doneBannerStyle',
|
|
1920
1942
|
'flatCommandDir',
|
|
1921
1943
|
'frontmatterDialect',
|
|
@@ -1953,6 +1975,7 @@ const KNOWN_HOST_BEHAVIORS = new Set([
|
|
|
1953
1975
|
'requiresSubagentPair',
|
|
1954
1976
|
'restoreAtRefTildeInAgents',
|
|
1955
1977
|
'restoreAtRefTildeInSpecTree',
|
|
1978
|
+
'retargetsGsdCoreProsePath',
|
|
1956
1979
|
'retiredArtifacts',
|
|
1957
1980
|
'rewriteClaudeAtIncludes',
|
|
1958
1981
|
'settingsFileByScope',
|
|
@@ -1972,10 +1995,6 @@ const KNOWN_HOST_BEHAVIORS = new Set([
|
|
|
1972
1995
|
'specRootSkillPass',
|
|
1973
1996
|
'tomlConfigInstall',
|
|
1974
1997
|
'trackCategoryDescription',
|
|
1975
|
-
// #2586: declares runtime-level feature axes GSD does not/cannot support on
|
|
1976
|
-
// this host (e.g. Codex's `["context-warnings","phase-lifecycle-display"]`)
|
|
1977
|
-
// — present-and-populated / absent-is-unsupported-empty convention, so
|
|
1978
|
-
// omitting the key on every other runtime carries no inverted meaning.
|
|
1979
1998
|
'unsupportedFeatures',
|
|
1980
1999
|
'verificationStyle',
|
|
1981
2000
|
'writeCategoryDescription',
|
|
@@ -2986,6 +2986,8 @@ async function cmdWebsearch(query, options, raw) {
|
|
|
2986
2986
|
'Accept': 'application/json',
|
|
2987
2987
|
'X-Subscription-Token': apiKey
|
|
2988
2988
|
},
|
|
2989
|
+
// never follow redirects: X-Subscription-Token must not leave api.search.brave.com (#5409)
|
|
2990
|
+
redirect: 'manual',
|
|
2989
2991
|
signal: ac.signal
|
|
2990
2992
|
});
|
|
2991
2993
|
}
|
|
@@ -3011,7 +3013,9 @@ async function cmdWebsearch(query, options, raw) {
|
|
|
3011
3013
|
const status = response.status;
|
|
3012
3014
|
const isRetryable = status === 429 || status >= 500;
|
|
3013
3015
|
if (!isRetryable) {
|
|
3014
|
-
// Non-retryable 4xx
|
|
3016
|
+
// Non-retryable 4xx and every 3xx (redirect: 'manual' hands them back as-is, #5409) —
|
|
3017
|
+
// fail immediately, no attempts field. Keep 3xx out of isRetryable.
|
|
3018
|
+
response.body?.cancel().catch(() => { });
|
|
3015
3019
|
output({ available: false, error: `API error: ${status}` }, raw, '');
|
|
3016
3020
|
return;
|
|
3017
3021
|
}
|
|
@@ -25,11 +25,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
25
25
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
26
26
|
};
|
|
27
27
|
const node_fs_1 = __importDefault(require("node:fs"));
|
|
28
|
-
const node_os_1 = __importDefault(require("node:os"));
|
|
29
28
|
const node_path_1 = __importDefault(require("node:path"));
|
|
30
29
|
const shell_command_projection_cjs_1 = require("./shell-command-projection.cjs");
|
|
31
30
|
// #4717: runtime-identity fill — env rung + per-install marker rung.
|
|
32
31
|
const runtime_slash_cjs_1 = require("./runtime-slash.cjs");
|
|
32
|
+
const runtime_homes_cjs_1 = require("./runtime-homes.cjs");
|
|
33
33
|
const runtime_name_policy_cjs_1 = require("./runtime-name-policy.cjs");
|
|
34
34
|
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
35
35
|
const planningWorkspace = require("./planning-workspace.cjs");
|
|
@@ -156,6 +156,15 @@ const CONFIG_DEFAULTS = {
|
|
|
156
156
|
planner_stall_detection_enabled: _getNestedConfigDefault('planner', 'stall_detection_enabled'),
|
|
157
157
|
max_prompt_tokens: _getNestedConfigDefault('review', 'max_prompt_tokens'),
|
|
158
158
|
};
|
|
159
|
+
/**
|
|
160
|
+
* Resolve `git.repo_tagging` (#5706) from hand-edited configuration. Only the
|
|
161
|
+
* two documented enum members are honored; any other stored value (a number,
|
|
162
|
+
* null, an unknown string, a wrong-case spelling) reads as the default `single`
|
|
163
|
+
* and never throws, so a bad hand edit cannot enable per-repository tagging.
|
|
164
|
+
*/
|
|
165
|
+
function resolveRepoTagging(value) {
|
|
166
|
+
return value === 'per_repo' ? 'per_repo' : 'single';
|
|
167
|
+
}
|
|
159
168
|
/**
|
|
160
169
|
* Resolve the planner watchdog policy from hand-edited configuration.
|
|
161
170
|
* Only a real JSON boolean may override the default; strings/numbers/null
|
|
@@ -849,6 +858,7 @@ function loadConfigResolvedInternal(cwd, options = {}) {
|
|
|
849
858
|
base_branch: get('base_branch', { section: 'git', field: 'base_branch' }),
|
|
850
859
|
protected_branches: getNested('git', 'protected_branches'),
|
|
851
860
|
allow_default_branch_commits: getNested('git', 'allow_default_branch_commits'),
|
|
861
|
+
repo_tagging: resolveRepoTagging(getNested('git', 'repo_tagging')),
|
|
852
862
|
phase_branch_template: get('phase_branch_template', { section: 'git', field: 'phase_branch_template' }) ?? defaults.phase_branch_template,
|
|
853
863
|
milestone_branch_template: get('milestone_branch_template', { section: 'git', field: 'milestone_branch_template' }) ?? defaults.milestone_branch_template,
|
|
854
864
|
quick_branch_template: get('quick_branch_template', { section: 'git', field: 'quick_branch_template' }) ?? defaults.quick_branch_template,
|
|
@@ -935,7 +945,7 @@ function loadConfigResolvedInternal(cwd, options = {}) {
|
|
|
935
945
|
// untouched. Faults in the global file stay silent in this branch (the
|
|
936
946
|
// project config governs; the nearer file is the actionable one).
|
|
937
947
|
try {
|
|
938
|
-
const shadowHome =
|
|
948
|
+
const shadowHome = (0, runtime_homes_cjs_1.resolveGsdHome)();
|
|
939
949
|
const shadowPath = node_path_1.default.join(shadowHome, '.gsd', 'defaults.json');
|
|
940
950
|
const shadowRead = _readConfigFile(shadowPath);
|
|
941
951
|
if (shadowRead.kind === 'ok') {
|
|
@@ -997,7 +1007,7 @@ function loadConfigResolvedInternal(cwd, options = {}) {
|
|
|
997
1007
|
}
|
|
998
1008
|
// Branch D or E: no .planning/
|
|
999
1009
|
try {
|
|
1000
|
-
const home =
|
|
1010
|
+
const home = (0, runtime_homes_cjs_1.resolveGsdHome)();
|
|
1001
1011
|
const globalDefaultsPath = node_path_1.default.join(home, '.gsd', 'defaults.json');
|
|
1002
1012
|
const globalRead = _readConfigFile(globalDefaultsPath);
|
|
1003
1013
|
if (globalRead.kind === 'fault') {
|