specrails-core 4.9.1 → 4.10.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/bin/specrails-core.mjs +1 -1
- package/bin/tui-installer.mjs +0 -19
- package/commands/enrich.md +0 -2
- package/dist/installer/commands/framework.js +0 -2
- package/dist/installer/commands/framework.js.map +1 -1
- package/dist/installer/commands/init.js +25 -14
- package/dist/installer/commands/init.js.map +1 -1
- package/dist/installer/commands/update.js +19 -17
- package/dist/installer/commands/update.js.map +1 -1
- package/dist/installer/phases/install-config.js +2 -3
- package/dist/installer/phases/install-config.js.map +1 -1
- package/dist/installer/phases/scaffold.js +23 -97
- package/dist/installer/phases/scaffold.js.map +1 -1
- package/dist/installer/util/fs.js +21 -2
- package/dist/installer/util/fs.js.map +1 -1
- package/docs/installation.md +0 -1
- package/docs/testing/test-matrix-codex.md +1 -1
- package/integration-contract.json +1 -2
- package/package.json +1 -1
- package/templates/commands/specrails/enrich.md +0 -2
- package/templates/commands/specrails/team-debug.md +0 -286
- package/templates/commands/specrails/team-review.md +0 -341
package/bin/specrails-core.mjs
CHANGED
|
@@ -163,7 +163,7 @@ if (subcommand === 'init') {
|
|
|
163
163
|
}
|
|
164
164
|
|
|
165
165
|
// TUI succeeded — re-enter init with --from-config so the Node
|
|
166
|
-
// command reads provider/tier
|
|
166
|
+
// command reads provider/tier from install-config.yaml.
|
|
167
167
|
const nextArgs = subargs
|
|
168
168
|
.filter((a) => a !== '--no-tui' && a !== '--no-direct')
|
|
169
169
|
.concat(['--yes', '--from-config'])
|
package/bin/tui-installer.mjs
CHANGED
|
@@ -196,7 +196,6 @@ function writeInstallConfig(specrailsDir, cfg) {
|
|
|
196
196
|
` preset: ${cfg.modelPreset}`,
|
|
197
197
|
` defaults: { model: ${cfg.modelDefaults} }`,
|
|
198
198
|
` overrides:${overridesYaml}`,
|
|
199
|
-
`agent_teams: ${cfg.agentTeams}`,
|
|
200
199
|
'',
|
|
201
200
|
].join('\n');
|
|
202
201
|
|
|
@@ -214,7 +213,6 @@ function writeDefaultConfig(specrailsDir, provider) {
|
|
|
214
213
|
modelPreset: 'balanced',
|
|
215
214
|
modelDefaults: PROVIDER_DEFAULT_MODEL[provider] ?? 'sonnet',
|
|
216
215
|
modelOverrides: {},
|
|
217
|
-
agentTeams: false,
|
|
218
216
|
});
|
|
219
217
|
}
|
|
220
218
|
|
|
@@ -429,22 +427,6 @@ async function run() {
|
|
|
429
427
|
console.log(` → Model: ${modelDefaults} (${provider} uses one model for all agents)\n`);
|
|
430
428
|
}
|
|
431
429
|
|
|
432
|
-
// ── Step 5: Agent Teams (Claude only) ──────────────────────────────────────
|
|
433
|
-
|
|
434
|
-
clearScreen();
|
|
435
|
-
console.log(` Provider: ${provider} | Tier: ${tier} | Agents: ${selectedAgents.length} | Preset: ${modelPreset}\n`);
|
|
436
|
-
|
|
437
|
-
let agentTeams = false;
|
|
438
|
-
if (provider === 'claude') {
|
|
439
|
-
agentTeams = await select({
|
|
440
|
-
message: 'Install Agent Teams commands? (experimental)',
|
|
441
|
-
choices: [
|
|
442
|
-
{ value: false, name: 'No — standard single-agent workflow (recommended)' },
|
|
443
|
-
{ value: true, name: 'Yes — /specrails:team-review and :team-debug (requires CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1)' },
|
|
444
|
-
],
|
|
445
|
-
});
|
|
446
|
-
}
|
|
447
|
-
|
|
448
430
|
// ── Write config & exit fullscreen ──────────────────────────────────────────
|
|
449
431
|
|
|
450
432
|
exitFullscreen();
|
|
@@ -457,7 +439,6 @@ async function run() {
|
|
|
457
439
|
modelPreset,
|
|
458
440
|
modelDefaults,
|
|
459
441
|
modelOverrides,
|
|
460
|
-
agentTeams,
|
|
461
442
|
});
|
|
462
443
|
|
|
463
444
|
console.log(`\n ✓ Config written to .specrails/install-config.yaml`);
|
package/commands/enrich.md
CHANGED
|
@@ -52,7 +52,6 @@ Parse the YAML and extract:
|
|
|
52
52
|
- `config.models.preset` — `balanced`, `budget`, or `max` (see Model Presets below)
|
|
53
53
|
- `config.models.defaults.model` — default model override (overrides preset)
|
|
54
54
|
- `config.models.overrides` — per-agent model overrides (highest priority)
|
|
55
|
-
- `config.agent_teams` — boolean; whether to install team-review/team-debug commands
|
|
56
55
|
|
|
57
56
|
Store all values in variables prefixed `FC_`.
|
|
58
57
|
|
|
@@ -94,7 +93,6 @@ If `FC_tier == "quick"`:
|
|
|
94
93
|
- Generate only agents in `FC_AGENTS_SELECTED` (skip any not in the list)
|
|
95
94
|
- Apply model resolution (FC1 preset/override logic) to each agent's frontmatter
|
|
96
95
|
- Run all Phase 4 sub-phases (4.1, 4.2, 4.3, 4.4) normally but without interactive prompts
|
|
97
|
-
- If `FC_agent_teams == true`, also install team-review and team-debug commands
|
|
98
96
|
|
|
99
97
|
**Phase 5 (Normal):** Run Phase 5 cleanup normally.
|
|
100
98
|
|
|
@@ -52,7 +52,6 @@ export async function runInstallFramework(flags) {
|
|
|
52
52
|
provider,
|
|
53
53
|
providerDir,
|
|
54
54
|
version,
|
|
55
|
-
agentTeams: flags['agent-teams'] === true,
|
|
56
55
|
swapCurrent,
|
|
57
56
|
});
|
|
58
57
|
if (swapCurrent) {
|
|
@@ -112,7 +111,6 @@ export async function runAssemble(flags) {
|
|
|
112
111
|
codeRoot,
|
|
113
112
|
scriptDir,
|
|
114
113
|
selectedAgents,
|
|
115
|
-
agentTeams: flags['agent-teams'] === true,
|
|
116
114
|
});
|
|
117
115
|
ok(`Linked ${providerDir}/ from framework ${version} + seeded project layer`);
|
|
118
116
|
return { workspace, frameworkDir, provider, version, codeRoot, providerDir };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"framework.js","sourceRoot":"","sources":["../../../src/installer/commands/framework.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAGxD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAC3D,OAAO,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AACtF,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"framework.js","sourceRoot":"","sources":["../../../src/installer/commands/framework.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,11 +20,10 @@ export async function runInit(flags) {
|
|
|
20
20
|
const repoRoot = path.resolve(typeof flags['root-dir'] === 'string' ? flags['root-dir'] : process.cwd());
|
|
21
21
|
const autoYes = flags.yes === true;
|
|
22
22
|
const skipPrereqs = process.env.SPECRAILS_SKIP_PREREQS === '1';
|
|
23
|
-
// --from-config: read provider + tier
|
|
23
|
+
// --from-config: read provider + tier from yaml.
|
|
24
24
|
const fromConfigFlag = flags['from-config'];
|
|
25
25
|
let providerHint;
|
|
26
26
|
let tierHint;
|
|
27
|
-
let agentTeamsHint = flags['agent-teams'] === true;
|
|
28
27
|
let selectedAgentsHint;
|
|
29
28
|
if (fromConfigFlag !== undefined) {
|
|
30
29
|
const explicitPath = typeof fromConfigFlag === 'string' ? fromConfigFlag : undefined;
|
|
@@ -33,8 +32,6 @@ export async function runInit(flags) {
|
|
|
33
32
|
if (config) {
|
|
34
33
|
providerHint = config.provider;
|
|
35
34
|
tierHint = config.tier;
|
|
36
|
-
if (config.agent_teams)
|
|
37
|
-
agentTeamsHint = true;
|
|
38
35
|
selectedAgentsHint = config.agents.selected;
|
|
39
36
|
info(`Loaded install config from ${resolved}`);
|
|
40
37
|
}
|
|
@@ -59,17 +56,27 @@ export async function runInit(flags) {
|
|
|
59
56
|
explicitProvider: providerHint,
|
|
60
57
|
skipPrereqs,
|
|
61
58
|
});
|
|
62
|
-
// ───
|
|
63
|
-
//
|
|
64
|
-
//
|
|
65
|
-
//
|
|
59
|
+
// ─── Resolve where artifacts live: in-repo (default) vs relocated ─────
|
|
60
|
+
// Standalone `init` installs IN-REPO by default so a user's CLI finds the
|
|
61
|
+
// agents/commands in their own repo. Relocation (the $HOME workspace, with the
|
|
62
|
+
// framework symlinked in) is opt-in via `--relocate` / `SPECRAILS_RELOCATE=1`,
|
|
63
|
+
// and is what specrails-desktop drives (it pre-creates the registry entry, so
|
|
64
|
+
// `allocate:false` still resolves an EXISTING relocated entry → relocated).
|
|
65
|
+
//
|
|
66
|
+
// `allocate:false` + no existing entry ⇒ legacy in-repo layout where
|
|
67
|
+
// `artifactRoot === codeRoot === repoRoot`. `allocate:true` (relocate) allocates
|
|
68
|
+
// a $HOME workspace entry. EVERY Specrails artifact lands under `artifactRoot`;
|
|
69
|
+
// the ONLY in-repo writes are `openspec/**` (below) and git/worktree ops.
|
|
70
|
+
const relocate = flags.relocate === true || process.env.SPECRAILS_RELOCATE === '1';
|
|
66
71
|
const { artifactRoot, codeRoot } = resolveArtifacts(repoRoot, {
|
|
67
|
-
allocate:
|
|
72
|
+
allocate: relocate,
|
|
68
73
|
allocator: 'core-standalone',
|
|
69
74
|
home: process.env.SPECRAILS_REGISTRY_HOME,
|
|
70
75
|
providers: [prereqs.provider],
|
|
71
76
|
coreVersion: version,
|
|
72
77
|
});
|
|
78
|
+
// In-repo when the resolution did NOT relocate the artifacts out of the repo.
|
|
79
|
+
const inRepo = artifactRoot === codeRoot;
|
|
73
80
|
// ─── Phase 2 + 3 ──────────────────────────────────────────────────────
|
|
74
81
|
// Bundled-framework flow: materialize the provider-INVARIANT framework ONCE
|
|
75
82
|
// under `<home>/.specrails/framework/<version>/<providerDir>/`, point `current`
|
|
@@ -85,7 +92,6 @@ export async function runInit(flags) {
|
|
|
85
92
|
provider: prereqs.provider,
|
|
86
93
|
providerDir,
|
|
87
94
|
version,
|
|
88
|
-
agentTeams: agentTeamsHint,
|
|
89
95
|
selectedAgents: selectedAgentsHint,
|
|
90
96
|
});
|
|
91
97
|
assembleProjectWorkspace({
|
|
@@ -97,9 +103,16 @@ export async function runInit(flags) {
|
|
|
97
103
|
codeRoot,
|
|
98
104
|
scriptDir,
|
|
99
105
|
selectedAgents: selectedAgentsHint,
|
|
100
|
-
|
|
106
|
+
// In-repo: COPY the framework statics as real, committable files. Relocated:
|
|
107
|
+
// symlink from the framework store (O(1) update on a version swap).
|
|
108
|
+
copyStatics: inRepo,
|
|
101
109
|
});
|
|
102
|
-
|
|
110
|
+
if (inRepo) {
|
|
111
|
+
ok(`Copied ${providerDir}/ from framework ${version} into the repo + seeded project layer`);
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
ok(`Linked ${providerDir}/ from framework ${version} + seeded project layer`);
|
|
115
|
+
}
|
|
103
116
|
// openspec STAYS in the repo (codeRoot) — unchanged behaviour.
|
|
104
117
|
await installOpenSpecProject(codeRoot, prereqs.provider);
|
|
105
118
|
const tier = tierHint ?? 'full';
|
|
@@ -120,7 +133,6 @@ export async function runInit(flags) {
|
|
|
120
133
|
repoRoot,
|
|
121
134
|
provider: prereqs.provider,
|
|
122
135
|
tier,
|
|
123
|
-
agentTeams: agentTeamsHint,
|
|
124
136
|
};
|
|
125
137
|
}
|
|
126
138
|
/**
|
|
@@ -142,7 +154,6 @@ export function ensureFramework(input) {
|
|
|
142
154
|
provider: input.provider,
|
|
143
155
|
providerDir: input.providerDir,
|
|
144
156
|
version: input.version,
|
|
145
|
-
agentTeams: input.agentTeams,
|
|
146
157
|
selectedAgents: input.selectedAgents,
|
|
147
158
|
});
|
|
148
159
|
if (input.swapCurrent !== false) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/installer/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAExD,OAAO,EAGL,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,6BAA6B,CAAA;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAC3D,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/installer/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,16 +21,19 @@ export async function runUpdate(flags) {
|
|
|
21
21
|
const currentVersion = readVersion(scriptDir);
|
|
22
22
|
const repoRoot = path.resolve(typeof flags['root-dir'] === 'string' ? flags['root-dir'] : process.cwd());
|
|
23
23
|
const dryRun = flags['dry-run'] === true;
|
|
24
|
-
// Read install-config.yaml so the user's original choices (tier
|
|
25
|
-
//
|
|
26
|
-
//
|
|
27
|
-
// ───
|
|
28
|
-
//
|
|
29
|
-
//
|
|
30
|
-
//
|
|
31
|
-
//
|
|
24
|
+
// Read install-config.yaml so the user's original choices (tier) survive
|
|
25
|
+
// the update. Flag overrides win when present; missing config falls back to
|
|
26
|
+
// defaults (tier=full).
|
|
27
|
+
// ─── Resolve where artifacts live: in-repo (default) vs relocated ─────
|
|
28
|
+
// Mirrors init: standalone updates resolve IN-REPO by default (`allocate:false`
|
|
29
|
+
// + no registry entry ⇒ `artifactRoot === codeRoot === repoRoot`); desktop and
|
|
30
|
+
// `--relocate`/`SPECRAILS_RELOCATE=1` users resolve the relocated $HOME
|
|
31
|
+
// workspace (desktop's registry entry already exists, so even `allocate:false`
|
|
32
|
+
// returns it). All Specrails artifacts (the specrails-version marker, manifest,
|
|
33
|
+
// install-config) live under `artifactRoot`.
|
|
34
|
+
const relocate = flags.relocate === true || process.env.SPECRAILS_RELOCATE === '1';
|
|
32
35
|
const { artifactRoot, codeRoot } = resolveArtifacts(repoRoot, {
|
|
33
|
-
allocate:
|
|
36
|
+
allocate: relocate,
|
|
34
37
|
allocator: 'core-standalone',
|
|
35
38
|
home: process.env.SPECRAILS_REGISTRY_HOME,
|
|
36
39
|
coreVersion: currentVersion,
|
|
@@ -40,7 +43,6 @@ export async function runUpdate(flags) {
|
|
|
40
43
|
// the artifactRoot. Falls back to a workspace copy if present (none today).
|
|
41
44
|
const config = loadInstallConfig(resolveConfigPath(repoRoot)) ?? loadInstallConfig(resolveConfigPath(artifactRoot));
|
|
42
45
|
const tier = config?.tier ?? 'full';
|
|
43
|
-
const agentTeams = flags['agent-teams'] === true || config?.agent_teams === true;
|
|
44
46
|
const selectedAgents = config?.agents.selected;
|
|
45
47
|
const marker = path.join(artifactRoot, '.specrails', 'specrails-version');
|
|
46
48
|
if (!pathExists(marker)) {
|
|
@@ -70,15 +72,15 @@ export async function runUpdate(flags) {
|
|
|
70
72
|
if (scope === 'web-manager') {
|
|
71
73
|
warn('--only=web-manager is deprecated. The standalone web-manager has been retired; ' +
|
|
72
74
|
'specrails-desktop is the supported dashboard. Skipping with no changes.');
|
|
73
|
-
return { repoRoot, previousVersion, currentVersion, provider, dryRun, scope, tier
|
|
75
|
+
return { repoRoot, previousVersion, currentVersion, provider, dryRun, scope, tier };
|
|
74
76
|
}
|
|
75
77
|
if (config) {
|
|
76
|
-
info(`Honouring install-config.yaml: tier=${tier}
|
|
78
|
+
info(`Honouring install-config.yaml: tier=${tier}`);
|
|
77
79
|
}
|
|
78
80
|
if (dryRun) {
|
|
79
|
-
info(`Dry run: would update [${scope}, tier=${tier}
|
|
81
|
+
info(`Dry run: would update [${scope}, tier=${tier}] ` +
|
|
80
82
|
`for ${previousVersion ?? '(unknown)'} → ${currentVersion}.`);
|
|
81
|
-
return { repoRoot, previousVersion, currentVersion, provider, dryRun, scope, tier
|
|
83
|
+
return { repoRoot, previousVersion, currentVersion, provider, dryRun, scope, tier };
|
|
82
84
|
}
|
|
83
85
|
step(`Update: refreshing scaffold [scope=${scope}] (${previousVersion ?? '?'} → ${currentVersion})`);
|
|
84
86
|
if (scope === 'all' || scope === 'core') {
|
|
@@ -93,7 +95,6 @@ export async function runUpdate(flags) {
|
|
|
93
95
|
provider,
|
|
94
96
|
providerDir,
|
|
95
97
|
version: currentVersion,
|
|
96
|
-
agentTeams,
|
|
97
98
|
selectedAgents,
|
|
98
99
|
});
|
|
99
100
|
assembleProjectWorkspace({
|
|
@@ -105,7 +106,8 @@ export async function runUpdate(flags) {
|
|
|
105
106
|
codeRoot,
|
|
106
107
|
scriptDir,
|
|
107
108
|
selectedAgents,
|
|
108
|
-
|
|
109
|
+
// In-repo updates COPY real files; relocated workspaces symlink.
|
|
110
|
+
copyStatics: artifactRoot === codeRoot,
|
|
109
111
|
});
|
|
110
112
|
ok(`Re-linked ${providerDir}/ at framework ${currentVersion} + rewrote manifest`);
|
|
111
113
|
}
|
|
@@ -125,7 +127,7 @@ export async function runUpdate(flags) {
|
|
|
125
127
|
info(`specrails-core ${previousVersion ?? '?'} → ${currentVersion}`);
|
|
126
128
|
// Terminal sentinel for programmatic consumers (see comment in init.ts).
|
|
127
129
|
ok('update complete');
|
|
128
|
-
return { repoRoot, previousVersion, currentVersion, provider, dryRun: false, scope, tier
|
|
130
|
+
return { repoRoot, previousVersion, currentVersion, provider, dryRun: false, scope, tier };
|
|
129
131
|
}
|
|
130
132
|
/**
|
|
131
133
|
* Re-applies a single subtree (rules or agents) from the bundled
|
|
@@ -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,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAChE,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAErE,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAS3C,MAAM,UAAU,GAAwB,IAAI,GAAG,CAAC;IAC9C,KAAK;IACL,MAAM;IACN,OAAO;IACP,QAAQ;IACR,aAAa;CACd,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/installer/commands/update.ts"],"names":[],"mappings":"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"}
|
|
@@ -89,9 +89,8 @@ export function validateInstallConfig(raw) {
|
|
|
89
89
|
selected,
|
|
90
90
|
},
|
|
91
91
|
};
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
}
|
|
92
|
+
// NOTE: a legacy `agent_teams` field may still be present in older configs.
|
|
93
|
+
// It is intentionally ignored (not rejected) for backward compatibility.
|
|
95
94
|
if (doc.tier !== undefined) {
|
|
96
95
|
result.tier = doc.tier;
|
|
97
96
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install-config.js","sourceRoot":"","sources":["../../../src/installer/phases/install-config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,IAAI,MAAM,SAAS,CAAA;AAE1B,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AACnE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"install-config.js","sourceRoot":"","sources":["../../../src/installer/phases/install-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -346,19 +346,18 @@ export function installFramework(input) {
|
|
|
346
346
|
// STATIC subtree (the project-named instruction files are skipped below), so
|
|
347
347
|
// we hand it the framework dir to satisfy the contract — and we DELETE any
|
|
348
348
|
// project-named instruction file the settings helpers wrote.
|
|
349
|
-
// The SHARED framework store is always the FULL SUPERSET — EVERY agent
|
|
350
|
-
//
|
|
351
|
-
//
|
|
352
|
-
//
|
|
353
|
-
//
|
|
354
|
-
//
|
|
349
|
+
// The SHARED framework store is always the FULL SUPERSET — EVERY agent — so a
|
|
350
|
+
// SECOND project with a DIFFERENT agent selection links its specialists from
|
|
351
|
+
// the same materialized copy instead of inheriting the first project's
|
|
352
|
+
// narrower set. Per-project filtering moves to the workspace LINK step
|
|
353
|
+
// (`linkAgentFiles` via `assembleProjectWorkspace`). `selectedAgents` on the
|
|
354
|
+
// input is intentionally IGNORED here.
|
|
355
355
|
const staticInput = {
|
|
356
356
|
scriptDir: input.scriptDir,
|
|
357
357
|
artifactRoot: versionDir,
|
|
358
358
|
codeRoot: versionDir,
|
|
359
359
|
provider: input.provider,
|
|
360
360
|
providerDir: input.providerDir,
|
|
361
|
-
agentTeams: true,
|
|
362
361
|
tier: 'quick',
|
|
363
362
|
selectedAgents: undefined,
|
|
364
363
|
materializeAllAgents: true,
|
|
@@ -412,7 +411,9 @@ export function assembleProjectWorkspace(input) {
|
|
|
412
411
|
const selectedAgentSet = input.selectedAgents
|
|
413
412
|
? new Set([...input.selectedAgents, ...CORE_AGENTS])
|
|
414
413
|
: new Set([...CORE_AGENTS]);
|
|
415
|
-
|
|
414
|
+
// In-repo standalone install COPIES the static subtrees as real files; the
|
|
415
|
+
// relocated (desktop / --relocate) path symlinks them. Defaults to symlink.
|
|
416
|
+
const preferCopy = input.copyStatics === true;
|
|
416
417
|
const links = {};
|
|
417
418
|
for (const sub of LINKED_PROVIDER_SUBTREES[input.provider]) {
|
|
418
419
|
const target = path.join(currentProviderDir, sub);
|
|
@@ -420,17 +421,13 @@ export function assembleProjectWorkspace(input) {
|
|
|
420
421
|
continue;
|
|
421
422
|
const dest = path.join(workspaceProviderDir, sub);
|
|
422
423
|
if (sub === 'agents') {
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
// Lean install AND the superset store actually carries `team-*` entries:
|
|
427
|
-
// link this subtree PER-FILE, excluding the team commands/skills. The
|
|
428
|
-
// common case (no team-* in the store) keeps the cheap whole-dir symlink
|
|
429
|
-
// below — preserving the single-inode contract.
|
|
430
|
-
links[sub] = linkSubtreeExcludingTeams(target, dest);
|
|
424
|
+
// `agents/` is linked PER-FILE so the workspace can carry user/desktop
|
|
425
|
+
// `custom-*.md` agents alongside the framework agents.
|
|
426
|
+
links[sub] = linkAgentFiles(target, dest, selectedAgentSet, preferCopy);
|
|
431
427
|
}
|
|
432
428
|
else {
|
|
433
|
-
|
|
429
|
+
// Every other subtree holds no user files → whole-dir symlink (single inode).
|
|
430
|
+
links[sub] = symlinkOrCopy(target, dest, preferCopy);
|
|
434
431
|
}
|
|
435
432
|
}
|
|
436
433
|
// Link the provider-invariant settings file (codex config.toml / gemini
|
|
@@ -441,7 +438,7 @@ export function assembleProjectWorkspace(input) {
|
|
|
441
438
|
const settingsTarget = path.join(currentProviderDir, settingsFile);
|
|
442
439
|
const settingsLink = path.join(workspaceProviderDir, settingsFile);
|
|
443
440
|
if (pathExists(settingsTarget) && !pathExists(settingsLink)) {
|
|
444
|
-
links[settingsFile] = symlinkOrCopy(settingsTarget, settingsLink);
|
|
441
|
+
links[settingsFile] = symlinkOrCopy(settingsTarget, settingsLink, preferCopy);
|
|
445
442
|
}
|
|
446
443
|
}
|
|
447
444
|
// (b) Seed the PROJECT layer (real writable files / dirs).
|
|
@@ -527,10 +524,15 @@ function seedProjectLayer(input, currentProviderDir) {
|
|
|
527
524
|
* superset, so this is where per-project filtering lands. `undefined` ⇒ link
|
|
528
525
|
* every framework agent (used by the legacy callers / parity tests).
|
|
529
526
|
*
|
|
527
|
+
* When `preferCopy` is true each agent is COPIED as a real file rather than
|
|
528
|
+
* symlinked (the in-repo standalone install — so a standalone user's CLI finds
|
|
529
|
+
* real agent files in the repo, not links into `$HOME`).
|
|
530
|
+
*
|
|
530
531
|
* Returns the dominant mechanism used across the linked files (`copy` if any
|
|
531
|
-
* file fell back to copy — the normal case on Windows without Developer Mode
|
|
532
|
+
* file fell back to copy — the normal case on Windows without Developer Mode, or
|
|
533
|
+
* always when `preferCopy` is set).
|
|
532
534
|
*/
|
|
533
|
-
function linkAgentFiles(frameworkAgentsDir, workspaceAgentsDir, selectedIds) {
|
|
535
|
+
function linkAgentFiles(frameworkAgentsDir, workspaceAgentsDir, selectedIds, preferCopy = false) {
|
|
534
536
|
mkdirp(workspaceAgentsDir);
|
|
535
537
|
// Names the framework currently PROVIDES (regardless of selection) — used to
|
|
536
538
|
// distinguish a framework-owned file from a user `custom-*.md` during cleanup.
|
|
@@ -547,7 +549,7 @@ function linkAgentFiles(frameworkAgentsDir, workspaceAgentsDir, selectedIds) {
|
|
|
547
549
|
if (selectedIds && (!selectedIds.has(id) || QUICK_EXCLUDED_AGENTS.has(id)))
|
|
548
550
|
continue;
|
|
549
551
|
linkedNames.add(name);
|
|
550
|
-
const m = symlinkOrCopy(src, path.join(workspaceAgentsDir, name));
|
|
552
|
+
const m = symlinkOrCopy(src, path.join(workspaceAgentsDir, name), preferCopy);
|
|
551
553
|
if (m === 'copy')
|
|
552
554
|
mechanism = 'copy';
|
|
553
555
|
else if (m === 'junction' && mechanism !== 'copy')
|
|
@@ -593,68 +595,6 @@ function linkAgentFiles(frameworkAgentsDir, workspaceAgentsDir, selectedIds) {
|
|
|
593
595
|
function isFrameworkAgentName(name) {
|
|
594
596
|
return /^sr-[a-z0-9-]+\.md$/.test(name);
|
|
595
597
|
}
|
|
596
|
-
/**
|
|
597
|
-
* True when a framework subtree (`commands`/`skills`) contains any `team-*`
|
|
598
|
-
* entry (a `team-*.md` file or a `team-*` skill dir), recursively. Gates the
|
|
599
|
-
* per-file team-excluding link path: when no team entries exist the workspace
|
|
600
|
-
* keeps the cheap whole-dir symlink. Recurses into real subdirs (e.g.
|
|
601
|
-
* `.claude/commands/specrails/`).
|
|
602
|
-
*/
|
|
603
|
-
function subtreeHasTeamEntries(subtreeDir) {
|
|
604
|
-
for (const entry of listDir(subtreeDir)) {
|
|
605
|
-
const name = path.basename(entry);
|
|
606
|
-
if (/^team-/.test(name) || /^team-/.test(name.replace(/\.md$/, '')))
|
|
607
|
-
return true;
|
|
608
|
-
if (isDir(entry) && !isSymlink(entry) && subtreeHasTeamEntries(entry))
|
|
609
|
-
return true;
|
|
610
|
-
}
|
|
611
|
-
return false;
|
|
612
|
-
}
|
|
613
|
-
/**
|
|
614
|
-
* Link a whole framework subtree (`commands`/`skills`) into the workspace
|
|
615
|
-
* PER-FILE, EXCLUDING the Agent-Teams `team-*` entries. Used when `agentTeams`
|
|
616
|
-
* is off and the shared framework store (always the superset) carries the team
|
|
617
|
-
* commands the lean install must not surface. Recurses into subdirs (e.g.
|
|
618
|
-
* `.claude/commands/specrails/`). Returns the dominant mechanism.
|
|
619
|
-
*/
|
|
620
|
-
function linkSubtreeExcludingTeams(frameworkSubtreeDir, workspaceSubtreeDir) {
|
|
621
|
-
mkdirp(workspaceSubtreeDir);
|
|
622
|
-
let mechanism = 'symlink';
|
|
623
|
-
const bump = (m) => {
|
|
624
|
-
if (m === 'copy')
|
|
625
|
-
mechanism = 'copy';
|
|
626
|
-
else if (m === 'junction' && mechanism !== 'copy')
|
|
627
|
-
mechanism = 'junction';
|
|
628
|
-
};
|
|
629
|
-
const linkedNames = new Set();
|
|
630
|
-
for (const src of listDir(frameworkSubtreeDir)) {
|
|
631
|
-
const name = path.basename(src);
|
|
632
|
-
// Exclude team commands/skills whether they ship as `team-*.md` files or
|
|
633
|
-
// `team-*/` skill dirs.
|
|
634
|
-
if (/^team-/.test(name) || /^team-/.test(name.replace(/\.md$/, '')))
|
|
635
|
-
continue;
|
|
636
|
-
linkedNames.add(name);
|
|
637
|
-
const dest = path.join(workspaceSubtreeDir, name);
|
|
638
|
-
if (isDir(src) && !isSymlink(src)) {
|
|
639
|
-
// Recurse: a real framework subdir is mirrored as a real workspace subdir
|
|
640
|
-
// so a future agentTeams=false re-link can prune team-* inside it too.
|
|
641
|
-
bump(linkSubtreeExcludingTeams(src, dest));
|
|
642
|
-
}
|
|
643
|
-
else {
|
|
644
|
-
bump(symlinkOrCopy(src, dest));
|
|
645
|
-
}
|
|
646
|
-
}
|
|
647
|
-
// Drop stale framework entries (including team-* left from a prior agentTeams
|
|
648
|
-
// run) that are no longer linked. Only symlinks/copied framework files — there
|
|
649
|
-
// are no user files under commands/skills.
|
|
650
|
-
for (const existing of listDir(workspaceSubtreeDir)) {
|
|
651
|
-
const name = path.basename(existing);
|
|
652
|
-
if (linkedNames.has(name))
|
|
653
|
-
continue;
|
|
654
|
-
removePath(existing);
|
|
655
|
-
}
|
|
656
|
-
return mechanism;
|
|
657
|
-
}
|
|
658
598
|
/** Write or sentinel-upsert a project instruction file (AGENTS.md/GEMINI.md). */
|
|
659
599
|
function seedInstructionFile(filePath, content) {
|
|
660
600
|
if (!pathExists(filePath)) {
|
|
@@ -683,8 +623,6 @@ function copyBundledCommands(input) {
|
|
|
683
623
|
continue;
|
|
684
624
|
if (name === 'setup.md')
|
|
685
625
|
continue;
|
|
686
|
-
if (!input.agentTeams && /^team-/.test(name))
|
|
687
|
-
continue;
|
|
688
626
|
const skillName = name.replace(/\.md$/, '');
|
|
689
627
|
const destDir = path.join(input.artifactRoot, input.providerDir, 'skills', skillName);
|
|
690
628
|
// A codex-native override (written for spawn_agent semantics + the
|
|
@@ -719,8 +657,6 @@ function copyBundledCommands(input) {
|
|
|
719
657
|
continue;
|
|
720
658
|
if (name === 'setup.md')
|
|
721
659
|
continue;
|
|
722
|
-
if (!input.agentTeams && /^team-/.test(name))
|
|
723
|
-
continue;
|
|
724
660
|
writeGeminiCommandFromCommand({
|
|
725
661
|
src: entry,
|
|
726
662
|
dest: path.join(destDir, `${name.replace(/\.md$/, '')}.toml`),
|
|
@@ -739,8 +675,6 @@ function copyBundledCommands(input) {
|
|
|
739
675
|
continue;
|
|
740
676
|
if (name === 'setup.md')
|
|
741
677
|
continue;
|
|
742
|
-
if (!input.agentTeams && /^team-/.test(name))
|
|
743
|
-
continue;
|
|
744
678
|
copyFile(entry, path.join(destDir, name));
|
|
745
679
|
count++;
|
|
746
680
|
}
|
|
@@ -1185,8 +1119,6 @@ function placeQuickTierArtefacts(input) {
|
|
|
1185
1119
|
continue;
|
|
1186
1120
|
if (name === 'setup.md')
|
|
1187
1121
|
continue;
|
|
1188
|
-
if (!input.agentTeams && /^team-/.test(name))
|
|
1189
|
-
continue;
|
|
1190
1122
|
const skillName = name.slice(0, -3);
|
|
1191
1123
|
const dest = path.join(input.artifactRoot, input.providerDir, 'skills', skillName, 'SKILL.md');
|
|
1192
1124
|
// If a codex-native override exists, ship it verbatim and skip the
|
|
@@ -1225,8 +1157,6 @@ function placeQuickTierArtefacts(input) {
|
|
|
1225
1157
|
continue;
|
|
1226
1158
|
if (name === 'setup.md')
|
|
1227
1159
|
continue;
|
|
1228
|
-
if (!input.agentTeams && /^team-/.test(name))
|
|
1229
|
-
continue;
|
|
1230
1160
|
const cmdName = name.slice(0, -3);
|
|
1231
1161
|
const dest = path.join(input.artifactRoot, input.providerDir, 'commands', 'specrails', `${cmdName}.toml`);
|
|
1232
1162
|
const overrideToml = path.join(overridesSrc, `${cmdName}.toml`);
|
|
@@ -1308,10 +1238,6 @@ function placeQuickTierArtefacts(input) {
|
|
|
1308
1238
|
if (!hasAllRequired)
|
|
1309
1239
|
excludedCommands.add(dep.command);
|
|
1310
1240
|
}
|
|
1311
|
-
if (!input.agentTeams) {
|
|
1312
|
-
excludedCommands.add('team-debug');
|
|
1313
|
-
excludedCommands.add('team-review');
|
|
1314
|
-
}
|
|
1315
1241
|
const commandsSrc = path.join(setupTemplates, 'commands', 'specrails');
|
|
1316
1242
|
const commandsDest = path.join(providerDirAbs, 'commands', 'specrails');
|
|
1317
1243
|
let commandsPlaced = 0;
|