specrails-core 4.8.2 → 4.9.1
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/specrails-core.mjs +5 -1
- package/dist/installer/cli.js +46 -6
- package/dist/installer/cli.js.map +1 -1
- package/dist/installer/commands/doctor.js +14 -5
- package/dist/installer/commands/doctor.js.map +1 -1
- package/dist/installer/commands/framework.js +134 -0
- package/dist/installer/commands/framework.js.map +1 -0
- package/dist/installer/commands/init.js +107 -32
- package/dist/installer/commands/init.js.map +1 -1
- package/dist/installer/commands/update.js +75 -35
- package/dist/installer/commands/update.js.map +1 -1
- package/dist/installer/phases/scaffold.js +493 -73
- package/dist/installer/phases/scaffold.js.map +1 -1
- package/dist/installer/util/fs.js +143 -1
- package/dist/installer/util/fs.js.map +1 -1
- package/dist/installer/util/registry.js +339 -0
- package/dist/installer/util/registry.js.map +1 -0
- package/package.json +2 -1
- package/pinned-versions.json +1 -1
- package/templates/agents/sr-architect.md +14 -10
- package/templates/agents/sr-backend-developer.md +4 -2
- package/templates/agents/sr-developer.md +20 -8
- package/templates/agents/sr-frontend-developer.md +4 -2
- package/templates/agents/sr-reviewer.md +10 -6
- package/templates/codex-skills/implement/SKILL.md +19 -10
- package/templates/codex-skills/rails/sr-architect/SKILL.md +17 -8
- package/templates/codex-skills/rails/sr-backend-developer/SKILL.md +4 -1
- package/templates/codex-skills/rails/sr-developer/SKILL.md +13 -4
- package/templates/codex-skills/rails/sr-doc-sync/SKILL.md +3 -2
- package/templates/codex-skills/rails/sr-frontend-developer/SKILL.md +4 -1
- package/templates/codex-skills/rails/sr-product-manager/SKILL.md +9 -7
- package/templates/codex-skills/rails/sr-reviewer/SKILL.md +13 -7
- package/templates/codex-skills/retry/SKILL.md +10 -5
- package/templates/commands/specrails/implement.md +41 -23
- package/templates/commands/specrails/retry.md +3 -1
- package/templates/gemini-commands/implement.toml +10 -6
|
@@ -6,7 +6,9 @@ import { copyDir, isDir, pathExists, readTextFile } from '../util/fs.js';
|
|
|
6
6
|
import { loadInstallConfig, resolveConfigPath } from '../phases/install-config.js';
|
|
7
7
|
import { buildManifest, writeManifestFiles } from '../phases/manifest.js';
|
|
8
8
|
import { derivedPaths, detectAvailability, resolveProvider } from '../phases/provider-detect.js';
|
|
9
|
-
import {
|
|
9
|
+
import { assembleProjectWorkspace } from '../phases/scaffold.js';
|
|
10
|
+
import { frameworkRoot, resolveArtifacts } from '../util/registry.js';
|
|
11
|
+
import { ensureFramework } from './init.js';
|
|
10
12
|
const VALID_ONLY = new Set([
|
|
11
13
|
'all',
|
|
12
14
|
'core',
|
|
@@ -22,17 +24,45 @@ export async function runUpdate(flags) {
|
|
|
22
24
|
// Read install-config.yaml so the user's original choices (tier,
|
|
23
25
|
// agent_teams) survive the update. Flag overrides win when present;
|
|
24
26
|
// missing config falls back to defaults (tier=full, agent_teams=false).
|
|
25
|
-
|
|
27
|
+
// ─── Relocate-always: resolve where artifacts live ───────────────────
|
|
28
|
+
// All Specrails artifacts (incl. the specrails-version marker, manifest,
|
|
29
|
+
// install-config) live under `artifactRoot` (the $HOME workspace), never the
|
|
30
|
+
// repo. On update the registry entry already exists (created by init), so the
|
|
31
|
+
// `providers` hint is ignored; we resolve first, then read the install.
|
|
32
|
+
const { artifactRoot, codeRoot } = resolveArtifacts(repoRoot, {
|
|
33
|
+
allocate: true,
|
|
34
|
+
allocator: 'core-standalone',
|
|
35
|
+
home: process.env.SPECRAILS_REGISTRY_HOME,
|
|
36
|
+
coreVersion: currentVersion,
|
|
37
|
+
});
|
|
38
|
+
// install-config.yaml is a USER-authored file that lives in the repo (the user
|
|
39
|
+
// can't know the relocated workspace path), so it is read from repoRoot — NOT
|
|
40
|
+
// the artifactRoot. Falls back to a workspace copy if present (none today).
|
|
41
|
+
const config = loadInstallConfig(resolveConfigPath(repoRoot)) ?? loadInstallConfig(resolveConfigPath(artifactRoot));
|
|
26
42
|
const tier = config?.tier ?? 'full';
|
|
27
43
|
const agentTeams = flags['agent-teams'] === true || config?.agent_teams === true;
|
|
28
44
|
const selectedAgents = config?.agents.selected;
|
|
29
|
-
const marker = path.join(
|
|
45
|
+
const marker = path.join(artifactRoot, '.specrails', 'specrails-version');
|
|
30
46
|
if (!pathExists(marker)) {
|
|
31
47
|
throw new PrerequisiteError(`No existing specrails install detected at ${repoRoot}. Run \`npx specrails-core init\` first.`);
|
|
32
48
|
}
|
|
33
|
-
const previousVersion = readExistingVersion(
|
|
34
|
-
|
|
35
|
-
|
|
49
|
+
const previousVersion = readExistingVersion(artifactRoot);
|
|
50
|
+
// Provider can be FORCED via --provider (e.g. specrails-desktop updating one
|
|
51
|
+
// provider on a multi-provider workspace, where auto-detection would always
|
|
52
|
+
// resolve `.claude` first and never reach codex/gemini). Absent ⇒ auto-detect
|
|
53
|
+
// from the existing install — byte-identical single-provider behaviour.
|
|
54
|
+
let provider;
|
|
55
|
+
if (typeof flags.provider === 'string') {
|
|
56
|
+
if (flags.provider !== 'claude' && flags.provider !== 'codex' && flags.provider !== 'gemini') {
|
|
57
|
+
throw new InstallerError(`--provider value must be 'claude', 'codex', or 'gemini', got: ${flags.provider}`, 40);
|
|
58
|
+
}
|
|
59
|
+
provider = flags.provider;
|
|
60
|
+
step(`Update: using requested provider ${provider}`);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
step('Update: resolving provider from existing install');
|
|
64
|
+
provider = await resolveExistingProvider(artifactRoot);
|
|
65
|
+
}
|
|
36
66
|
const { providerDir } = derivedPaths(provider);
|
|
37
67
|
ok(`Detected provider: ${provider} (${providerDir})`);
|
|
38
68
|
// ─── Resolve --only scope ────────────────────────────────────────
|
|
@@ -52,35 +82,45 @@ export async function runUpdate(flags) {
|
|
|
52
82
|
}
|
|
53
83
|
step(`Update: refreshing scaffold [scope=${scope}] (${previousVersion ?? '?'} → ${currentVersion})`);
|
|
54
84
|
if (scope === 'all' || scope === 'core') {
|
|
55
|
-
|
|
85
|
+
// Bundled-framework update: re-materialize the framework to the (possibly
|
|
86
|
+
// new) version dir, atomically swap `current`, then RE-ASSEMBLE the
|
|
87
|
+
// workspace (re-link the static subtrees at the new `current` + re-seed the
|
|
88
|
+
// project layer). `assembleProjectWorkspace` rewrites the manifest itself.
|
|
89
|
+
const fwDir = frameworkRoot(process.env.SPECRAILS_REGISTRY_HOME);
|
|
90
|
+
ensureFramework({
|
|
56
91
|
scriptDir,
|
|
57
|
-
|
|
92
|
+
frameworkDir: fwDir,
|
|
58
93
|
provider,
|
|
59
94
|
providerDir,
|
|
95
|
+
version: currentVersion,
|
|
60
96
|
agentTeams,
|
|
61
97
|
selectedAgents,
|
|
62
|
-
// tier read from install-config.yaml above. If the user installed
|
|
63
|
-
// with --quick, we re-apply the quick-tier direct placement
|
|
64
|
-
// (agents + commands into <providerDir> with placeholder substitution
|
|
65
|
-
// and VPC exclusion) instead of leaving the live agents/ stale.
|
|
66
|
-
tier,
|
|
67
98
|
});
|
|
99
|
+
assembleProjectWorkspace({
|
|
100
|
+
workspace: artifactRoot,
|
|
101
|
+
frameworkDir: fwDir,
|
|
102
|
+
provider,
|
|
103
|
+
providerDir,
|
|
104
|
+
version: currentVersion,
|
|
105
|
+
codeRoot,
|
|
106
|
+
scriptDir,
|
|
107
|
+
selectedAgents,
|
|
108
|
+
agentTeams,
|
|
109
|
+
});
|
|
110
|
+
ok(`Re-linked ${providerDir}/ at framework ${currentVersion} + rewrote manifest`);
|
|
68
111
|
}
|
|
69
|
-
else if (scope === 'rules') {
|
|
70
|
-
rescaffoldComponent(
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
112
|
+
else if (scope === 'rules' || scope === 'agents') {
|
|
113
|
+
rescaffoldComponent(scope, { scriptDir, artifactRoot });
|
|
114
|
+
step('Update: rewriting manifest');
|
|
115
|
+
const manifest = buildManifest({
|
|
116
|
+
scriptDir,
|
|
117
|
+
repoRoot: artifactRoot,
|
|
118
|
+
version: currentVersion,
|
|
119
|
+
});
|
|
120
|
+
const { manifestPath, versionPath } = writeManifestFiles(artifactRoot, manifest);
|
|
121
|
+
ok(`Wrote ${path.relative(artifactRoot, manifestPath)}`);
|
|
122
|
+
ok(`Wrote ${path.relative(artifactRoot, versionPath)}`);
|
|
74
123
|
}
|
|
75
|
-
step('Update: rewriting manifest');
|
|
76
|
-
const manifest = buildManifest({
|
|
77
|
-
scriptDir,
|
|
78
|
-
repoRoot,
|
|
79
|
-
version: currentVersion,
|
|
80
|
-
});
|
|
81
|
-
const { manifestPath, versionPath } = writeManifestFiles(repoRoot, manifest);
|
|
82
|
-
ok(`Wrote ${path.relative(repoRoot, manifestPath)}`);
|
|
83
|
-
ok(`Wrote ${path.relative(repoRoot, versionPath)}`);
|
|
84
124
|
step('Update complete');
|
|
85
125
|
info(`specrails-core ${previousVersion ?? '?'} → ${currentVersion}`);
|
|
86
126
|
// Terminal sentinel for programmatic consumers (see comment in init.ts).
|
|
@@ -100,7 +140,7 @@ function rescaffoldComponent(component, args) {
|
|
|
100
140
|
warn(`templates/${component} not found at ${src} — nothing to update`);
|
|
101
141
|
return;
|
|
102
142
|
}
|
|
103
|
-
const stagingDest = path.join(args.
|
|
143
|
+
const stagingDest = path.join(args.artifactRoot, '.specrails', 'setup-templates', component);
|
|
104
144
|
copyDir(src, stagingDest, {
|
|
105
145
|
filter: (_s, rel) => !rel.includes('node_modules') && !rel.endsWith('package-lock.json'),
|
|
106
146
|
});
|
|
@@ -122,12 +162,12 @@ function resolveScope(only) {
|
|
|
122
162
|
}
|
|
123
163
|
return normalised;
|
|
124
164
|
}
|
|
125
|
-
async function resolveExistingProvider(
|
|
126
|
-
if (pathExists(path.join(
|
|
165
|
+
async function resolveExistingProvider(artifactRoot) {
|
|
166
|
+
if (pathExists(path.join(artifactRoot, '.claude')))
|
|
127
167
|
return 'claude';
|
|
128
|
-
if (pathExists(path.join(
|
|
168
|
+
if (pathExists(path.join(artifactRoot, '.codex')))
|
|
129
169
|
return 'codex';
|
|
130
|
-
if (pathExists(path.join(
|
|
170
|
+
if (pathExists(path.join(artifactRoot, '.gemini')))
|
|
131
171
|
return 'gemini';
|
|
132
172
|
// None present — fall back to resolving via CLI availability.
|
|
133
173
|
const avail = await detectAvailability();
|
|
@@ -137,11 +177,11 @@ async function resolveExistingProvider(repoRoot) {
|
|
|
137
177
|
catch (err) {
|
|
138
178
|
if (err instanceof InstallerError)
|
|
139
179
|
throw err;
|
|
140
|
-
throw new InstallerError(`could not determine provider of existing install at ${
|
|
180
|
+
throw new InstallerError(`could not determine provider of existing install at ${artifactRoot}`, 40);
|
|
141
181
|
}
|
|
142
182
|
}
|
|
143
|
-
function readExistingVersion(
|
|
144
|
-
const p = path.join(
|
|
183
|
+
function readExistingVersion(artifactRoot) {
|
|
184
|
+
const p = path.join(artifactRoot, '.specrails', 'specrails-version');
|
|
145
185
|
if (!pathExists(p))
|
|
146
186
|
return null;
|
|
147
187
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/installer/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAExE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAa,MAAM,6BAA6B,CAAA;AAC7F,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAA0B,MAAM,uBAAuB,CAAA;AACjG,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAiB,MAAM,8BAA8B,CAAA;AAC/G,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/installer/commands/update.ts"],"names":[],"mappings":"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"}
|