prizmkit 1.1.58 → 1.1.61
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/bin/create-prizmkit.js +8 -6
- package/bundled/VERSION.json +3 -3
- package/bundled/adapters/codex/agent-adapter.js +38 -0
- package/bundled/adapters/codex/paths.js +27 -0
- package/bundled/adapters/codex/rules-adapter.js +30 -0
- package/bundled/adapters/codex/settings-adapter.js +27 -0
- package/bundled/adapters/codex/skill-adapter.js +65 -0
- package/bundled/adapters/codex/team-adapter.js +37 -0
- package/bundled/agents/prizm-dev-team-dev.md +6 -5
- package/bundled/dev-pipeline/.env.example +2 -1
- package/bundled/dev-pipeline/README.md +10 -7
- package/bundled/dev-pipeline/lib/common.sh +278 -37
- package/bundled/dev-pipeline/run-bugfix.sh +10 -61
- package/bundled/dev-pipeline/run-feature.sh +10 -78
- package/bundled/dev-pipeline/run-recovery.sh +10 -46
- package/bundled/dev-pipeline/run-refactor.sh +10 -61
- package/bundled/dev-pipeline/scripts/generate-bootstrap-prompt.py +17 -7
- package/bundled/dev-pipeline/scripts/generate-bugfix-prompt.py +9 -3
- package/bundled/dev-pipeline/scripts/generate-refactor-prompt.py +9 -3
- package/bundled/dev-pipeline/scripts/utils.py +6 -4
- package/bundled/dev-pipeline-windows/.env.example +28 -0
- package/bundled/dev-pipeline-windows/README.md +30 -0
- package/bundled/dev-pipeline-windows/SCHEMA_ANALYSIS.md +525 -0
- package/bundled/dev-pipeline-windows/assets/feature-list-example.json +146 -0
- package/bundled/dev-pipeline-windows/assets/prizm-dev-team-integration.md +138 -0
- package/bundled/dev-pipeline-windows/launch-bugfix-daemon.ps1 +9 -0
- package/bundled/dev-pipeline-windows/launch-feature-daemon.ps1 +9 -0
- package/bundled/dev-pipeline-windows/launch-refactor-daemon.ps1 +9 -0
- package/bundled/dev-pipeline-windows/lib/common.ps1 +432 -0
- package/bundled/dev-pipeline-windows/lib/daemon.ps1 +140 -0
- package/bundled/dev-pipeline-windows/lib/pipeline.ps1 +446 -0
- package/bundled/dev-pipeline-windows/lib/reset.ps1 +87 -0
- package/bundled/dev-pipeline-windows/reset-bug.ps1 +9 -0
- package/bundled/dev-pipeline-windows/reset-feature.ps1 +9 -0
- package/bundled/dev-pipeline-windows/reset-refactor.ps1 +9 -0
- package/bundled/dev-pipeline-windows/run-bugfix.ps1 +9 -0
- package/bundled/dev-pipeline-windows/run-feature.ps1 +9 -0
- package/bundled/dev-pipeline-windows/run-recovery.ps1 +76 -0
- package/bundled/dev-pipeline-windows/run-refactor.ps1 +9 -0
- package/bundled/dev-pipeline-windows/scripts/check-session-status.py +228 -0
- package/bundled/dev-pipeline-windows/scripts/cleanup-logs.py +192 -0
- package/bundled/dev-pipeline-windows/scripts/detect-stuck.py +530 -0
- package/bundled/dev-pipeline-windows/scripts/generate-bootstrap-prompt.py +1737 -0
- package/bundled/dev-pipeline-windows/scripts/generate-bugfix-prompt.py +685 -0
- package/bundled/dev-pipeline-windows/scripts/generate-recovery-prompt.py +805 -0
- package/bundled/dev-pipeline-windows/scripts/generate-refactor-prompt.py +763 -0
- package/bundled/dev-pipeline-windows/scripts/init-bugfix-pipeline.py +316 -0
- package/bundled/dev-pipeline-windows/scripts/init-dev-team.py +134 -0
- package/bundled/dev-pipeline-windows/scripts/init-pipeline.py +380 -0
- package/bundled/dev-pipeline-windows/scripts/init-refactor-pipeline.py +399 -0
- package/bundled/dev-pipeline-windows/scripts/parse-stream-progress.py +388 -0
- package/bundled/dev-pipeline-windows/scripts/patch-completion-notes.py +191 -0
- package/bundled/dev-pipeline-windows/scripts/update-bug-status.py +864 -0
- package/bundled/dev-pipeline-windows/scripts/update-checkpoint.py +173 -0
- package/bundled/dev-pipeline-windows/scripts/update-feature-status.py +1501 -0
- package/bundled/dev-pipeline-windows/scripts/update-refactor-status.py +1073 -0
- package/bundled/dev-pipeline-windows/scripts/utils.py +542 -0
- package/bundled/dev-pipeline-windows/templates/agent-prompts/critic-plan-challenge.md +7 -0
- package/bundled/dev-pipeline-windows/templates/agent-prompts/dev-fix.md +7 -0
- package/bundled/dev-pipeline-windows/templates/agent-prompts/dev-implement.md +30 -0
- package/bundled/dev-pipeline-windows/templates/agent-prompts/dev-resume.md +5 -0
- package/bundled/dev-pipeline-windows/templates/agent-prompts/reviewer-review.md +7 -0
- package/bundled/dev-pipeline-windows/templates/bootstrap-prompt.md +46 -0
- package/bundled/dev-pipeline-windows/templates/bootstrap-tier1.md +43 -0
- package/bundled/dev-pipeline-windows/templates/bootstrap-tier2.md +43 -0
- package/bundled/dev-pipeline-windows/templates/bootstrap-tier3.md +43 -0
- package/bundled/dev-pipeline-windows/templates/bug-fix-list-schema.json +263 -0
- package/bundled/dev-pipeline-windows/templates/bugfix-bootstrap-prompt.md +320 -0
- package/bundled/dev-pipeline-windows/templates/feature-list-schema.json +237 -0
- package/bundled/dev-pipeline-windows/templates/refactor-bootstrap-prompt.md +331 -0
- package/bundled/dev-pipeline-windows/templates/refactor-list-schema.json +270 -0
- package/bundled/dev-pipeline-windows/templates/sections/ac-verification-checklist.md +13 -0
- package/bundled/dev-pipeline-windows/templates/sections/checkpoint-system.md +91 -0
- package/bundled/dev-pipeline-windows/templates/sections/context-budget-rules.md +33 -0
- package/bundled/dev-pipeline-windows/templates/sections/critical-paths-agent.md +10 -0
- package/bundled/dev-pipeline-windows/templates/sections/critical-paths-full.md +12 -0
- package/bundled/dev-pipeline-windows/templates/sections/critical-paths-lite.md +7 -0
- package/bundled/dev-pipeline-windows/templates/sections/directory-convention-agent.md +8 -0
- package/bundled/dev-pipeline-windows/templates/sections/directory-convention-full.md +9 -0
- package/bundled/dev-pipeline-windows/templates/sections/directory-convention-lite.md +6 -0
- package/bundled/dev-pipeline-windows/templates/sections/failure-capture.md +21 -0
- package/bundled/dev-pipeline-windows/templates/sections/feature-context.md +31 -0
- package/bundled/dev-pipeline-windows/templates/sections/phase-browser-verification-auto.md +72 -0
- package/bundled/dev-pipeline-windows/templates/sections/phase-browser-verification-opencli.md +63 -0
- package/bundled/dev-pipeline-windows/templates/sections/phase-browser-verification.md +62 -0
- package/bundled/dev-pipeline-windows/templates/sections/phase-commit-full.md +71 -0
- package/bundled/dev-pipeline-windows/templates/sections/phase-commit.md +64 -0
- package/bundled/dev-pipeline-windows/templates/sections/phase-context-snapshot-agent-suffix.md +23 -0
- package/bundled/dev-pipeline-windows/templates/sections/phase-context-snapshot-base.md +24 -0
- package/bundled/dev-pipeline-windows/templates/sections/phase-context-snapshot-lite-suffix.md +12 -0
- package/bundled/dev-pipeline-windows/templates/sections/phase-critic-plan-full.md +53 -0
- package/bundled/dev-pipeline-windows/templates/sections/phase-critic-plan.md +32 -0
- package/bundled/dev-pipeline-windows/templates/sections/phase-implement-agent.md +37 -0
- package/bundled/dev-pipeline-windows/templates/sections/phase-implement-full.md +50 -0
- package/bundled/dev-pipeline-windows/templates/sections/phase-implement-lite.md +52 -0
- package/bundled/dev-pipeline-windows/templates/sections/phase-plan-agent.md +27 -0
- package/bundled/dev-pipeline-windows/templates/sections/phase-plan-lite.md +27 -0
- package/bundled/dev-pipeline-windows/templates/sections/phase-review-agent.md +27 -0
- package/bundled/dev-pipeline-windows/templates/sections/phase-review-full.md +29 -0
- package/bundled/dev-pipeline-windows/templates/sections/phase-specify-plan-full.md +77 -0
- package/bundled/dev-pipeline-windows/templates/sections/phase0-init.md +13 -0
- package/bundled/dev-pipeline-windows/templates/sections/phase0-test-baseline.md +23 -0
- package/bundled/dev-pipeline-windows/templates/sections/session-context.md +5 -0
- package/bundled/dev-pipeline-windows/templates/sections/subagent-timeout-recovery.md +6 -0
- package/bundled/dev-pipeline-windows/templates/sections/test-failure-recovery-agent.md +67 -0
- package/bundled/dev-pipeline-windows/templates/sections/test-failure-recovery-lite.md +58 -0
- package/bundled/dev-pipeline-windows/templates/session-status-schema.json +83 -0
- package/bundled/rules/prizm/prizm-documentation.md +2 -4
- package/bundled/rules/prizm/prizm-progressive-loading.md +2 -1
- package/bundled/skills/_metadata.json +1 -1
- package/bundled/skills/app-planner/SKILL.md +24 -16
- package/bundled/skills/app-planner/references/architecture-decisions.md +9 -5
- package/bundled/skills/app-planner/references/frontend-design-guide.md +1 -1
- package/bundled/skills/feature-planner/SKILL.md +9 -2
- package/bundled/skills/prizmkit-implement/SKILL.md +1 -0
- package/bundled/skills/prizmkit-init/SKILL.md +8 -7
- package/bundled/skills/prizmkit-init/references/config-schema.md +3 -1
- package/bundled/skills/prizmkit-plan/SKILL.md +2 -0
- package/bundled/skills/prizmkit-prizm-docs/assets/prizm-docs-format.md +6 -1
- package/bundled/skills/prizmkit-prizm-docs/references/op-init.md +2 -2
- package/bundled/skills/prizmkit-prizm-docs/references/op-update.md +2 -1
- package/bundled/skills/prizmkit-prizm-docs/references/op-validate.md +2 -2
- package/bundled/skills/prizmkit-retrospective/SKILL.md +2 -0
- package/bundled/skills/prizmkit-retrospective/references/knowledge-injection-steps.md +2 -0
- package/bundled/skills/prizmkit-retrospective/references/structural-sync-steps.md +2 -0
- package/bundled/skills/recovery-workflow/scripts/detect-recovery-state.py +2 -0
- package/bundled/skills-windows/app-planner/SKILL.md +639 -0
- package/bundled/skills-windows/app-planner/assets/app-design-guide.md +101 -0
- package/bundled/skills-windows/app-planner/references/architecture-decisions.md +52 -0
- package/bundled/skills-windows/app-planner/references/brainstorm-guide.md +101 -0
- package/bundled/skills-windows/app-planner/references/frontend-design-guide.md +71 -0
- package/bundled/skills-windows/app-planner/references/project-brief-guide.md +82 -0
- package/bundled/skills-windows/app-planner/references/red-team-checklist.md +40 -0
- package/bundled/skills-windows/app-planner/references/rules/backend/derivation-rules.md +609 -0
- package/bundled/skills-windows/app-planner/references/rules/backend/fixed-rules.md +285 -0
- package/bundled/skills-windows/app-planner/references/rules/backend/question-bank.md +249 -0
- package/bundled/skills-windows/app-planner/references/rules/backend/template.md +173 -0
- package/bundled/skills-windows/app-planner/references/rules/database/derivation-rules.md +373 -0
- package/bundled/skills-windows/app-planner/references/rules/database/fixed-rules.md +211 -0
- package/bundled/skills-windows/app-planner/references/rules/database/question-bank.md +184 -0
- package/bundled/skills-windows/app-planner/references/rules/database/template.md +158 -0
- package/bundled/skills-windows/app-planner/references/rules/frontend/derivation-rules.md +810 -0
- package/bundled/skills-windows/app-planner/references/rules/frontend/fixed-rules.md +188 -0
- package/bundled/skills-windows/app-planner/references/rules/frontend/question-bank.md +302 -0
- package/bundled/skills-windows/app-planner/references/rules/frontend/template.md +320 -0
- package/bundled/skills-windows/app-planner/references/rules/mobile/derivation-rules.md +639 -0
- package/bundled/skills-windows/app-planner/references/rules/mobile/fixed-rules.md +290 -0
- package/bundled/skills-windows/app-planner/references/rules/mobile/question-bank.md +232 -0
- package/bundled/skills-windows/app-planner/references/rules/mobile/template.md +175 -0
- package/bundled/skills-windows/bug-fix-workflow/SKILL.md +415 -0
- package/bundled/skills-windows/bug-planner/SKILL.md +395 -0
- package/bundled/skills-windows/bug-planner/assets/bug-confirmation-template.md +43 -0
- package/bundled/skills-windows/bug-planner/references/critic-and-verification.md +44 -0
- package/bundled/skills-windows/bug-planner/references/error-recovery.md +73 -0
- package/bundled/skills-windows/bug-planner/references/input-formats.md +53 -0
- package/bundled/skills-windows/bug-planner/references/schema-validation.md +25 -0
- package/bundled/skills-windows/bug-planner/references/severity-rules.md +16 -0
- package/bundled/skills-windows/bug-planner/scripts/validate-bug-list.py +322 -0
- package/bundled/skills-windows/bugfix-pipeline-launcher/SKILL.md +380 -0
- package/bundled/skills-windows/feature-pipeline-launcher/SKILL.md +441 -0
- package/bundled/skills-windows/feature-pipeline-launcher/scripts/preflight-check.py +462 -0
- package/bundled/skills-windows/feature-planner/SKILL.md +401 -0
- package/bundled/skills-windows/feature-planner/assets/evaluation-guide.md +64 -0
- package/bundled/skills-windows/feature-planner/assets/planning-guide.md +214 -0
- package/bundled/skills-windows/feature-planner/references/browser-interaction.md +59 -0
- package/bundled/skills-windows/feature-planner/references/completeness-review.md +57 -0
- package/bundled/skills-windows/feature-planner/references/decomposition-patterns.md +75 -0
- package/bundled/skills-windows/feature-planner/references/error-recovery.md +90 -0
- package/bundled/skills-windows/feature-planner/references/incremental-feature-planning.md +112 -0
- package/bundled/skills-windows/feature-planner/references/new-project-planning.md +85 -0
- package/bundled/skills-windows/feature-planner/scripts/validate-and-generate.py +1029 -0
- package/bundled/skills-windows/feature-workflow/SKILL.md +531 -0
- package/bundled/skills-windows/prizmkit-init/SKILL.md +356 -0
- package/bundled/skills-windows/prizmkit-init/assets/project-brief-template.md +82 -0
- package/bundled/skills-windows/prizmkit-init/references/config-schema.md +70 -0
- package/bundled/skills-windows/prizmkit-init/references/rules/layer-detection.md +41 -0
- package/bundled/skills-windows/prizmkit-init/references/tech-stack-catalog.md +13 -0
- package/bundled/skills-windows/prizmkit-init/references/update-supplement.md +9 -0
- package/bundled/skills-windows/recovery-workflow/SKILL.md +456 -0
- package/bundled/skills-windows/recovery-workflow/evals/evals.json +46 -0
- package/bundled/skills-windows/recovery-workflow/scripts/detect-recovery-state.py +544 -0
- package/bundled/skills-windows/refactor-pipeline-launcher/SKILL.md +406 -0
- package/bundled/skills-windows/refactor-planner/SKILL.md +540 -0
- package/bundled/skills-windows/refactor-planner/assets/planning-guide.md +292 -0
- package/bundled/skills-windows/refactor-planner/references/behavior-preservation.md +301 -0
- package/bundled/skills-windows/refactor-planner/references/refactor-scoping-guide.md +221 -0
- package/bundled/skills-windows/refactor-planner/scripts/validate-and-generate-refactor.py +858 -0
- package/bundled/skills-windows/refactor-workflow/SKILL.md +503 -0
- package/bundled/templates/hooks/diff-prizm-docs.sh +1 -1
- package/bundled/templates/hooks/prizm-pre-commit.sh +53 -4
- package/bundled/templates/hooks/validate-prizm-docs.sh +62 -7
- package/bundled/templates/project-memory-template.md +2 -1
- package/package.json +3 -2
- package/src/clean.js +73 -2
- package/src/config.js +167 -50
- package/src/detect-platform.js +15 -9
- package/src/external-skills.js +26 -19
- package/src/index.js +28 -10
- package/src/manifest.js +6 -2
- package/src/metadata.js +43 -5
- package/src/platforms.js +38 -0
- package/src/prompts.js +50 -9
- package/src/runtimes.js +20 -0
- package/src/scaffold.js +447 -114
- package/src/upgrade.js +87 -44
package/src/upgrade.js
CHANGED
|
@@ -15,10 +15,8 @@ import { confirm } from '@inquirer/prompts';
|
|
|
15
15
|
|
|
16
16
|
import { readManifest, writeManifest, buildManifest, diffManifest } from './manifest.js';
|
|
17
17
|
import {
|
|
18
|
-
loadMetadata,
|
|
19
18
|
loadRulesMetadata,
|
|
20
19
|
getAgentsDir,
|
|
21
|
-
getRulesDir,
|
|
22
20
|
} from './metadata.js';
|
|
23
21
|
import {
|
|
24
22
|
installSkills,
|
|
@@ -30,9 +28,12 @@ import {
|
|
|
30
28
|
installGitignore,
|
|
31
29
|
installProjectMemory,
|
|
32
30
|
resolvePipelineFileList,
|
|
31
|
+
resolveRuleNamesForRuntime,
|
|
33
32
|
resolveSkillList,
|
|
34
33
|
EXTRAS_REGISTRY,
|
|
35
34
|
} from './scaffold.js';
|
|
35
|
+
import { expandPlatforms, platformLabel } from './platforms.js';
|
|
36
|
+
import { normalizeRuntime, runtimeLabel } from './runtimes.js';
|
|
36
37
|
|
|
37
38
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
38
39
|
const pkg = JSON.parse(readFileSync(join(__dirname, '..', 'package.json'), 'utf-8'));
|
|
@@ -71,6 +72,16 @@ export async function removeSkillFiles(platform, projectRoot, skillNames, dryRun
|
|
|
71
72
|
console.log(chalk.red(` ✗ removed .codebuddy/skills/${skillName}/`));
|
|
72
73
|
}
|
|
73
74
|
}
|
|
75
|
+
} else if (platform === 'codex') {
|
|
76
|
+
const skillDir = path.join(projectRoot, '.agents', 'skills', skillName);
|
|
77
|
+
if (await fs.pathExists(skillDir)) {
|
|
78
|
+
if (dryRun) {
|
|
79
|
+
console.log(chalk.gray(` [dry-run] remove .agents/skills/${skillName}/`));
|
|
80
|
+
} else {
|
|
81
|
+
await fs.remove(skillDir);
|
|
82
|
+
console.log(chalk.red(` ✗ removed .agents/skills/${skillName}/`));
|
|
83
|
+
}
|
|
84
|
+
}
|
|
74
85
|
}
|
|
75
86
|
}
|
|
76
87
|
}
|
|
@@ -82,14 +93,21 @@ export async function removeAgentFiles(platform, projectRoot, agentFileNames, dr
|
|
|
82
93
|
for (const fileName of agentFileNames) {
|
|
83
94
|
const dir = platform === 'claude'
|
|
84
95
|
? path.join(projectRoot, '.claude', 'agents')
|
|
85
|
-
:
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
96
|
+
: platform === 'codex'
|
|
97
|
+
? path.join(projectRoot, '.codex', 'agents')
|
|
98
|
+
: path.join(projectRoot, '.codebuddy', 'agents');
|
|
99
|
+
const targetNames = platform === 'codex'
|
|
100
|
+
? [...new Set([fileName.replace(/\.md$/, '.toml'), fileName])]
|
|
101
|
+
: [fileName];
|
|
102
|
+
for (const targetName of targetNames) {
|
|
103
|
+
const filePath = path.join(dir, targetName);
|
|
104
|
+
if (await fs.pathExists(filePath)) {
|
|
105
|
+
if (dryRun) {
|
|
106
|
+
console.log(chalk.gray(` [dry-run] remove ${path.relative(projectRoot, filePath)}`));
|
|
107
|
+
} else {
|
|
108
|
+
await fs.remove(filePath);
|
|
109
|
+
console.log(chalk.red(` ✗ removed ${path.relative(projectRoot, filePath)}`));
|
|
110
|
+
}
|
|
93
111
|
}
|
|
94
112
|
}
|
|
95
113
|
}
|
|
@@ -100,21 +118,30 @@ export async function removeAgentFiles(platform, projectRoot, agentFileNames, dr
|
|
|
100
118
|
*/
|
|
101
119
|
export async function removeRuleFiles(platform, projectRoot, ruleFileNames, dryRun) {
|
|
102
120
|
for (const fileName of ruleFileNames) {
|
|
103
|
-
const
|
|
121
|
+
const baseName = path.basename(fileName);
|
|
104
122
|
const dir = platform === 'claude'
|
|
105
123
|
? path.join(projectRoot, '.claude', 'rules')
|
|
106
|
-
:
|
|
124
|
+
: platform === 'codex'
|
|
125
|
+
? path.join(projectRoot, '.agents', 'rules')
|
|
126
|
+
: path.join(projectRoot, '.codebuddy', 'rules');
|
|
107
127
|
// Rules are stored as .md for claude, .mdc for codebuddy
|
|
108
128
|
const targetName = platform === 'codebuddy'
|
|
109
|
-
?
|
|
110
|
-
:
|
|
111
|
-
const
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
129
|
+
? baseName.replace(/\.md$/, '.mdc')
|
|
130
|
+
: baseName;
|
|
131
|
+
const filePaths = platform === 'codex'
|
|
132
|
+
? [
|
|
133
|
+
path.join(dir, targetName),
|
|
134
|
+
path.join(projectRoot, '.codex', 'rules', targetName),
|
|
135
|
+
]
|
|
136
|
+
: [path.join(dir, targetName)];
|
|
137
|
+
for (const filePath of filePaths) {
|
|
138
|
+
if (await fs.pathExists(filePath)) {
|
|
139
|
+
if (dryRun) {
|
|
140
|
+
console.log(chalk.gray(` [dry-run] remove ${path.relative(projectRoot, filePath)}`));
|
|
141
|
+
} else {
|
|
142
|
+
await fs.remove(filePath);
|
|
143
|
+
console.log(chalk.red(` ✗ removed ${path.relative(projectRoot, filePath)}`));
|
|
144
|
+
}
|
|
118
145
|
}
|
|
119
146
|
}
|
|
120
147
|
}
|
|
@@ -149,7 +176,6 @@ export async function runUpgrade(directory, options = {}) {
|
|
|
149
176
|
const projectRoot = path.resolve(directory || '.');
|
|
150
177
|
const dryRun = Boolean(options.dryRun);
|
|
151
178
|
const nonInteractive = Boolean(options.nonInteractive);
|
|
152
|
-
const force = Boolean(options.force);
|
|
153
179
|
|
|
154
180
|
console.log('');
|
|
155
181
|
console.log(chalk.bold(' PrizmKit Upgrade'));
|
|
@@ -191,8 +217,8 @@ export async function runUpgrade(directory, options = {}) {
|
|
|
191
217
|
}
|
|
192
218
|
|
|
193
219
|
// 3. Resolve new skill list using old manifest's suite + platform (or defaults)
|
|
194
|
-
const oldManifestPlatform = oldManifest?.platform || 'claude';
|
|
195
220
|
const suite = oldManifest?.suite || 'core';
|
|
221
|
+
const runtime = normalizeRuntime(oldManifest?.runtime || 'unix');
|
|
196
222
|
const team = oldManifest?.options?.team ?? true;
|
|
197
223
|
const pipeline = oldManifest?.options?.pipeline ?? true;
|
|
198
224
|
const rulesPreset = oldManifest?.options?.rules || 'recommended';
|
|
@@ -203,17 +229,32 @@ export async function runUpgrade(directory, options = {}) {
|
|
|
203
229
|
// (e.g. legacy installs before manifest tracked platform).
|
|
204
230
|
let platform;
|
|
205
231
|
if (oldManifest?.platform) {
|
|
206
|
-
platform = oldManifest.platform;
|
|
232
|
+
platform = oldManifest.platform === 'both' ? 'all' : oldManifest.platform;
|
|
207
233
|
} else {
|
|
208
234
|
// Fallback: detect from filesystem for legacy manifests without platform field
|
|
209
|
-
const
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
235
|
+
const hasPlatformFiles = async (dir) => {
|
|
236
|
+
if (!await fs.pathExists(dir)) return false;
|
|
237
|
+
try {
|
|
238
|
+
return (await fs.readdir(dir)).length > 0;
|
|
239
|
+
} catch {
|
|
240
|
+
return false;
|
|
241
|
+
}
|
|
242
|
+
};
|
|
243
|
+
const hasClaude = await hasPlatformFiles(path.join(projectRoot, '.claude', 'commands'))
|
|
244
|
+
|| await hasPlatformFiles(path.join(projectRoot, '.claude', 'agents'));
|
|
245
|
+
const hasCodeBuddy = await hasPlatformFiles(path.join(projectRoot, '.codebuddy', 'skills'))
|
|
246
|
+
|| await hasPlatformFiles(path.join(projectRoot, '.codebuddy', 'agents'));
|
|
247
|
+
const hasCodex = await hasPlatformFiles(path.join(projectRoot, '.agents', 'skills'))
|
|
248
|
+
|| await hasPlatformFiles(path.join(projectRoot, '.codex', 'agents'));
|
|
249
|
+
|
|
250
|
+
const detectedPlatforms = [
|
|
251
|
+
hasCodeBuddy && 'codebuddy',
|
|
252
|
+
hasClaude && 'claude',
|
|
253
|
+
hasCodex && 'codex',
|
|
254
|
+
].filter(Boolean);
|
|
255
|
+
|
|
256
|
+
if (detectedPlatforms.length > 1) platform = 'all';
|
|
257
|
+
else if (detectedPlatforms.length === 1) platform = detectedPlatforms[0];
|
|
217
258
|
else platform = 'claude'; // ultimate fallback
|
|
218
259
|
}
|
|
219
260
|
|
|
@@ -221,11 +262,10 @@ export async function runUpgrade(directory, options = {}) {
|
|
|
221
262
|
const agentsDir = getAgentsDir();
|
|
222
263
|
const newAgentFiles = (await fs.readdir(agentsDir)).filter(f => f.endsWith('.md'));
|
|
223
264
|
const rulesMeta = await loadRulesMetadata();
|
|
224
|
-
const
|
|
225
|
-
const newRuleFiles = (rulesPresetDef?.rules || []).map(name => `${name}.md`);
|
|
265
|
+
const newRuleFiles = resolveRuleNamesForRuntime(rulesMeta, rulesPreset, runtime).map(name => `${name}.md`);
|
|
226
266
|
|
|
227
267
|
// Resolve pipeline file list from source (for manifest diff)
|
|
228
|
-
const newPipelineFiles = pipeline ? resolvePipelineFileList() : [];
|
|
268
|
+
const newPipelineFiles = pipeline ? resolvePipelineFileList(runtime) : [];
|
|
229
269
|
|
|
230
270
|
// Resolve extras: merge old manifest extras + default extras for old manifests without the field
|
|
231
271
|
const extrasToInstall = [...new Set([
|
|
@@ -238,6 +278,7 @@ export async function runUpgrade(directory, options = {}) {
|
|
|
238
278
|
const newManifest = buildManifest({
|
|
239
279
|
version: pkg.version,
|
|
240
280
|
platform,
|
|
281
|
+
runtime,
|
|
241
282
|
suite,
|
|
242
283
|
skills: newSkillList,
|
|
243
284
|
agents: newAgentFiles,
|
|
@@ -261,6 +302,7 @@ export async function runUpgrade(directory, options = {}) {
|
|
|
261
302
|
console.log(chalk.bold(' Upgrade Summary:'));
|
|
262
303
|
console.log(` Version: ${chalk.gray(oldVersion)} → ${chalk.cyan(pkg.version)}`);
|
|
263
304
|
console.log(` Platform: ${platform}${!oldManifest?.platform ? chalk.yellow(' (detected from filesystem — no platform in manifest)') : ''}`);
|
|
305
|
+
console.log(` Runtime: ${runtimeLabel(runtime)}${!oldManifest?.runtime ? chalk.yellow(' (defaulted)') : ''}`);
|
|
264
306
|
console.log(` Suite: ${suite}`);
|
|
265
307
|
console.log('');
|
|
266
308
|
|
|
@@ -299,7 +341,7 @@ export async function runUpgrade(directory, options = {}) {
|
|
|
299
341
|
}
|
|
300
342
|
|
|
301
343
|
// 7. Execute
|
|
302
|
-
const platforms = platform
|
|
344
|
+
const platforms = expandPlatforms(platform);
|
|
303
345
|
|
|
304
346
|
// 7a. Remove orphaned files
|
|
305
347
|
if (diff.skills.removed.length || diff.agents.removed.length || diff.rules.removed.length || diff.pipeline.removed.length) {
|
|
@@ -328,12 +370,11 @@ export async function runUpgrade(directory, options = {}) {
|
|
|
328
370
|
console.log(chalk.bold('\n Updating files...\n'));
|
|
329
371
|
|
|
330
372
|
for (const p of platforms) {
|
|
331
|
-
|
|
332
|
-
console.log(chalk.bold(` Installing ${platformLabel} environment...\n`));
|
|
373
|
+
console.log(chalk.bold(` Installing ${platformLabel(p)} environment...\n`));
|
|
333
374
|
|
|
334
375
|
// Skills
|
|
335
376
|
console.log(chalk.blue(' Skills:'));
|
|
336
|
-
await installSkills(p, newSkillList, projectRoot, dryRun);
|
|
377
|
+
await installSkills(p, newSkillList, projectRoot, dryRun, runtime);
|
|
337
378
|
|
|
338
379
|
// Agents
|
|
339
380
|
console.log(chalk.blue('\n Agents:'));
|
|
@@ -341,7 +382,7 @@ export async function runUpgrade(directory, options = {}) {
|
|
|
341
382
|
|
|
342
383
|
// Settings/Rules
|
|
343
384
|
console.log(chalk.blue('\n Settings & Rules:'));
|
|
344
|
-
await installSettings(p, projectRoot, { pipeline, rules: rulesPreset }, dryRun);
|
|
385
|
+
await installSettings(p, projectRoot, { pipeline, rules: rulesPreset }, dryRun, runtime);
|
|
345
386
|
|
|
346
387
|
console.log('');
|
|
347
388
|
}
|
|
@@ -349,7 +390,7 @@ export async function runUpgrade(directory, options = {}) {
|
|
|
349
390
|
// Pipeline (with forceOverwrite)
|
|
350
391
|
if (pipeline) {
|
|
351
392
|
console.log(chalk.blue(' Pipeline:'));
|
|
352
|
-
await installPipeline(projectRoot, dryRun, { forceOverwrite: true });
|
|
393
|
+
await installPipeline(projectRoot, dryRun, { forceOverwrite: true, runtime });
|
|
353
394
|
console.log('');
|
|
354
395
|
}
|
|
355
396
|
|
|
@@ -366,7 +407,7 @@ export async function runUpgrade(directory, options = {}) {
|
|
|
366
407
|
|
|
367
408
|
// Git hook
|
|
368
409
|
console.log(chalk.blue(' Git Hook:'));
|
|
369
|
-
await installGitHook(projectRoot, dryRun);
|
|
410
|
+
await installGitHook(projectRoot, dryRun, runtime);
|
|
370
411
|
|
|
371
412
|
// .gitignore
|
|
372
413
|
console.log(chalk.blue(' Gitignore:'));
|
|
@@ -374,11 +415,13 @@ export async function runUpgrade(directory, options = {}) {
|
|
|
374
415
|
|
|
375
416
|
// PrizmKit scripts
|
|
376
417
|
console.log(chalk.blue(' PrizmKit Scripts:'));
|
|
377
|
-
await installPrizmkitScripts(projectRoot, dryRun);
|
|
418
|
+
await installPrizmkitScripts(projectRoot, dryRun, runtime);
|
|
378
419
|
|
|
379
420
|
// 7c. Project memory — smart merge via markers
|
|
380
421
|
console.log(chalk.blue('\n Project Memory:'));
|
|
381
|
-
|
|
422
|
+
for (const p of platforms) {
|
|
423
|
+
await installProjectMemory(p, projectRoot, dryRun);
|
|
424
|
+
}
|
|
382
425
|
|
|
383
426
|
// 8. Write new manifest
|
|
384
427
|
if (!dryRun) {
|