prizmkit 1.1.57 → 1.1.60
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/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/skills/_metadata.json +1 -1
- package/bundled/skills/app-planner/SKILL.md +26 -18
- 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-init/SKILL.md +7 -6
- 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 +68 -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/package.json +3 -2
- package/src/clean.js +73 -2
- package/src/config.js +159 -50
- package/src/detect-platform.js +16 -8
- package/src/external-skills.js +26 -19
- package/src/index.js +31 -9
- package/src/manifest.js +6 -2
- package/src/metadata.js +43 -5
- package/src/platforms.js +36 -0
- package/src/prompts.js +31 -6
- package/src/runtimes.js +20 -0
- package/src/scaffold.js +314 -110
- package/src/upgrade.js +81 -41
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';
|
|
@@ -206,12 +232,24 @@ export async function runUpgrade(directory, options = {}) {
|
|
|
206
232
|
platform = oldManifest.platform;
|
|
207
233
|
} else {
|
|
208
234
|
// Fallback: detect from filesystem for legacy manifests without platform field
|
|
209
|
-
const
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
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
|
+
if (hasClaude && hasCodeBuddy && hasCodex) platform = 'all';
|
|
251
|
+
else if (hasClaude && hasCodeBuddy) platform = 'both';
|
|
252
|
+
else if (hasCodex) platform = 'codex';
|
|
215
253
|
else if (hasCodeBuddy) platform = 'codebuddy';
|
|
216
254
|
else if (hasClaude) platform = 'claude';
|
|
217
255
|
else platform = 'claude'; // ultimate fallback
|
|
@@ -221,11 +259,10 @@ export async function runUpgrade(directory, options = {}) {
|
|
|
221
259
|
const agentsDir = getAgentsDir();
|
|
222
260
|
const newAgentFiles = (await fs.readdir(agentsDir)).filter(f => f.endsWith('.md'));
|
|
223
261
|
const rulesMeta = await loadRulesMetadata();
|
|
224
|
-
const
|
|
225
|
-
const newRuleFiles = (rulesPresetDef?.rules || []).map(name => `${name}.md`);
|
|
262
|
+
const newRuleFiles = resolveRuleNamesForRuntime(rulesMeta, rulesPreset, runtime).map(name => `${name}.md`);
|
|
226
263
|
|
|
227
264
|
// Resolve pipeline file list from source (for manifest diff)
|
|
228
|
-
const newPipelineFiles = pipeline ? resolvePipelineFileList() : [];
|
|
265
|
+
const newPipelineFiles = pipeline ? resolvePipelineFileList(runtime) : [];
|
|
229
266
|
|
|
230
267
|
// Resolve extras: merge old manifest extras + default extras for old manifests without the field
|
|
231
268
|
const extrasToInstall = [...new Set([
|
|
@@ -238,6 +275,7 @@ export async function runUpgrade(directory, options = {}) {
|
|
|
238
275
|
const newManifest = buildManifest({
|
|
239
276
|
version: pkg.version,
|
|
240
277
|
platform,
|
|
278
|
+
runtime,
|
|
241
279
|
suite,
|
|
242
280
|
skills: newSkillList,
|
|
243
281
|
agents: newAgentFiles,
|
|
@@ -261,6 +299,7 @@ export async function runUpgrade(directory, options = {}) {
|
|
|
261
299
|
console.log(chalk.bold(' Upgrade Summary:'));
|
|
262
300
|
console.log(` Version: ${chalk.gray(oldVersion)} → ${chalk.cyan(pkg.version)}`);
|
|
263
301
|
console.log(` Platform: ${platform}${!oldManifest?.platform ? chalk.yellow(' (detected from filesystem — no platform in manifest)') : ''}`);
|
|
302
|
+
console.log(` Runtime: ${runtimeLabel(runtime)}${!oldManifest?.runtime ? chalk.yellow(' (defaulted)') : ''}`);
|
|
264
303
|
console.log(` Suite: ${suite}`);
|
|
265
304
|
console.log('');
|
|
266
305
|
|
|
@@ -299,7 +338,7 @@ export async function runUpgrade(directory, options = {}) {
|
|
|
299
338
|
}
|
|
300
339
|
|
|
301
340
|
// 7. Execute
|
|
302
|
-
const platforms = platform
|
|
341
|
+
const platforms = expandPlatforms(platform);
|
|
303
342
|
|
|
304
343
|
// 7a. Remove orphaned files
|
|
305
344
|
if (diff.skills.removed.length || diff.agents.removed.length || diff.rules.removed.length || diff.pipeline.removed.length) {
|
|
@@ -328,12 +367,11 @@ export async function runUpgrade(directory, options = {}) {
|
|
|
328
367
|
console.log(chalk.bold('\n Updating files...\n'));
|
|
329
368
|
|
|
330
369
|
for (const p of platforms) {
|
|
331
|
-
|
|
332
|
-
console.log(chalk.bold(` Installing ${platformLabel} environment...\n`));
|
|
370
|
+
console.log(chalk.bold(` Installing ${platformLabel(p)} environment...\n`));
|
|
333
371
|
|
|
334
372
|
// Skills
|
|
335
373
|
console.log(chalk.blue(' Skills:'));
|
|
336
|
-
await installSkills(p, newSkillList, projectRoot, dryRun);
|
|
374
|
+
await installSkills(p, newSkillList, projectRoot, dryRun, runtime);
|
|
337
375
|
|
|
338
376
|
// Agents
|
|
339
377
|
console.log(chalk.blue('\n Agents:'));
|
|
@@ -341,7 +379,7 @@ export async function runUpgrade(directory, options = {}) {
|
|
|
341
379
|
|
|
342
380
|
// Settings/Rules
|
|
343
381
|
console.log(chalk.blue('\n Settings & Rules:'));
|
|
344
|
-
await installSettings(p, projectRoot, { pipeline, rules: rulesPreset }, dryRun);
|
|
382
|
+
await installSettings(p, projectRoot, { pipeline, rules: rulesPreset }, dryRun, runtime);
|
|
345
383
|
|
|
346
384
|
console.log('');
|
|
347
385
|
}
|
|
@@ -349,7 +387,7 @@ export async function runUpgrade(directory, options = {}) {
|
|
|
349
387
|
// Pipeline (with forceOverwrite)
|
|
350
388
|
if (pipeline) {
|
|
351
389
|
console.log(chalk.blue(' Pipeline:'));
|
|
352
|
-
await installPipeline(projectRoot, dryRun, { forceOverwrite: true });
|
|
390
|
+
await installPipeline(projectRoot, dryRun, { forceOverwrite: true, runtime });
|
|
353
391
|
console.log('');
|
|
354
392
|
}
|
|
355
393
|
|
|
@@ -366,7 +404,7 @@ export async function runUpgrade(directory, options = {}) {
|
|
|
366
404
|
|
|
367
405
|
// Git hook
|
|
368
406
|
console.log(chalk.blue(' Git Hook:'));
|
|
369
|
-
await installGitHook(projectRoot, dryRun);
|
|
407
|
+
await installGitHook(projectRoot, dryRun, runtime);
|
|
370
408
|
|
|
371
409
|
// .gitignore
|
|
372
410
|
console.log(chalk.blue(' Gitignore:'));
|
|
@@ -374,11 +412,13 @@ export async function runUpgrade(directory, options = {}) {
|
|
|
374
412
|
|
|
375
413
|
// PrizmKit scripts
|
|
376
414
|
console.log(chalk.blue(' PrizmKit Scripts:'));
|
|
377
|
-
await installPrizmkitScripts(projectRoot, dryRun);
|
|
415
|
+
await installPrizmkitScripts(projectRoot, dryRun, runtime);
|
|
378
416
|
|
|
379
417
|
// 7c. Project memory — smart merge via markers
|
|
380
418
|
console.log(chalk.blue('\n Project Memory:'));
|
|
381
|
-
|
|
419
|
+
for (const p of platforms) {
|
|
420
|
+
await installProjectMemory(p, projectRoot, dryRun);
|
|
421
|
+
}
|
|
382
422
|
|
|
383
423
|
// 8. Write new manifest
|
|
384
424
|
if (!dryRun) {
|