@seanmars/tospec 0.19.0-beta.5 → 0.19.0-beta.7
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/CHANGELOG.md +95 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +15 -4
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +19 -2
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/dashboard.d.ts +32 -7
- package/dist/commands/dashboard.d.ts.map +1 -1
- package/dist/commands/dashboard.js +139 -12
- package/dist/commands/dashboard.js.map +1 -1
- package/dist/commands/decision.d.ts.map +1 -1
- package/dist/commands/decision.js +32 -8
- package/dist/commands/decision.js.map +1 -1
- package/dist/commands/show.d.ts.map +1 -1
- package/dist/commands/show.js +11 -2
- package/dist/commands/show.js.map +1 -1
- package/dist/commands/validate.d.ts +19 -0
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +50 -9
- package/dist/commands/validate.js.map +1 -1
- package/dist/commands/workflow/status.d.ts.map +1 -1
- package/dist/commands/workflow/status.js +3 -0
- package/dist/commands/workflow/status.js.map +1 -1
- package/dist/core/archive.d.ts.map +1 -1
- package/dist/core/archive.js +52 -15
- package/dist/core/archive.js.map +1 -1
- package/dist/core/artifact-graph/graph.d.ts +13 -3
- package/dist/core/artifact-graph/graph.d.ts.map +1 -1
- package/dist/core/artifact-graph/graph.js +16 -6
- package/dist/core/artifact-graph/graph.js.map +1 -1
- package/dist/core/artifact-graph/instruction-loader.d.ts +11 -0
- package/dist/core/artifact-graph/instruction-loader.d.ts.map +1 -1
- package/dist/core/artifact-graph/instruction-loader.js +45 -6
- package/dist/core/artifact-graph/instruction-loader.js.map +1 -1
- package/dist/core/artifact-graph/outputs.d.ts +17 -6
- package/dist/core/artifact-graph/outputs.d.ts.map +1 -1
- package/dist/core/artifact-graph/outputs.js +17 -6
- package/dist/core/artifact-graph/outputs.js.map +1 -1
- package/dist/core/codex-residue.d.ts +6 -5
- package/dist/core/codex-residue.d.ts.map +1 -1
- package/dist/core/codex-residue.js +23 -8
- package/dist/core/codex-residue.js.map +1 -1
- package/dist/core/config.d.ts +7 -0
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +12 -1
- package/dist/core/config.js.map +1 -1
- package/dist/core/init.d.ts +4 -2
- package/dist/core/init.d.ts.map +1 -1
- package/dist/core/init.js +53 -45
- package/dist/core/init.js.map +1 -1
- package/dist/core/local-server.d.ts +30 -4
- package/dist/core/local-server.d.ts.map +1 -1
- package/dist/core/local-server.js +48 -13
- package/dist/core/local-server.js.map +1 -1
- package/dist/core/migrate.d.ts +3 -1
- package/dist/core/migrate.d.ts.map +1 -1
- package/dist/core/migrate.js +54 -4
- package/dist/core/migrate.js.map +1 -1
- package/dist/core/parsers/requirement-blocks.js +32 -9
- package/dist/core/parsers/requirement-blocks.js.map +1 -1
- package/dist/core/templates/workflows/issue.d.ts.map +1 -1
- package/dist/core/templates/workflows/issue.js +3 -0
- package/dist/core/templates/workflows/issue.js.map +1 -1
- package/dist/core/update.js +7 -7
- package/dist/core/update.js.map +1 -1
- package/dist/core/validation/validator.d.ts +21 -2
- package/dist/core/validation/validator.d.ts.map +1 -1
- package/dist/core/validation/validator.js +75 -28
- package/dist/core/validation/validator.js.map +1 -1
- package/dist/utils/change-utils.d.ts +3 -2
- package/dist/utils/change-utils.d.ts.map +1 -1
- package/dist/utils/change-utils.js +12 -11
- package/dist/utils/change-utils.js.map +1 -1
- package/dist/utils/link.d.ts +19 -16
- package/dist/utils/link.d.ts.map +1 -1
- package/dist/utils/link.js +18 -54
- package/dist/utils/link.js.map +1 -1
- package/dist/utils/spec-files.d.ts +12 -0
- package/dist/utils/spec-files.d.ts.map +1 -1
- package/dist/utils/spec-files.js +34 -0
- package/dist/utils/spec-files.js.map +1 -1
- package/package.json +1 -1
- package/schemas/issue/schema.yaml +4 -2
- package/schemas/issue/templates/spec.md +12 -2
- package/schemas/sdd/schema.yaml +4 -0
- package/schemas/sdd/templates/spec.md +12 -2
package/dist/core/init.js
CHANGED
|
@@ -11,7 +11,7 @@ import { ensureDirectoryAnchor, tospecLayoutDirs } from './project-layout.js';
|
|
|
11
11
|
import { AI_TOOLS, TOSPEC_DIR_NAME, fallbackToolIds, resolveToolSelection, } from './config.js';
|
|
12
12
|
import { isInteractive } from '../utils/interactive.js';
|
|
13
13
|
import { serializeConfig } from './config-prompts.js';
|
|
14
|
-
import {
|
|
14
|
+
import { copyDir } from '../utils/link.js';
|
|
15
15
|
import { removeLegacySkillDirs, removeLegacyToolSkillLayout, getToolsWithSkillsDir, getToolStates, getSkillTemplates, writeSkillDir, writeToolCommands, writeToolRules, } from './shared/index.js';
|
|
16
16
|
import { getGlobalConfig } from './global-config.js';
|
|
17
17
|
import { runLegacyUserStateMigration } from './user-state-migration.js';
|
|
@@ -26,6 +26,15 @@ const { version: TOSPEC_VERSION } = require('../../package.json');
|
|
|
26
26
|
// Constants
|
|
27
27
|
// -----------------------------------------------------------------------------
|
|
28
28
|
const DEFAULT_SCHEMA = 'sdd';
|
|
29
|
+
/**
|
|
30
|
+
* The canonical skills directory every dependent target is copied from. Named
|
|
31
|
+
* once because two things now key off it — the loop that skips copying a
|
|
32
|
+
* directory onto itself, and the summary line that only applies to targets
|
|
33
|
+
* holding a copy.
|
|
34
|
+
*/
|
|
35
|
+
function agentsSkillsDirFor(projectPath) {
|
|
36
|
+
return path.join(projectPath, '.agents', 'skills');
|
|
37
|
+
}
|
|
29
38
|
// -----------------------------------------------------------------------------
|
|
30
39
|
// Init Command Class
|
|
31
40
|
// -----------------------------------------------------------------------------
|
|
@@ -59,7 +68,6 @@ export class InitCommand {
|
|
|
59
68
|
this.resolveProfileOverride();
|
|
60
69
|
// Get tool states before processing
|
|
61
70
|
const toolStates = getToolStates(projectPath);
|
|
62
|
-
this.discloseToolDependencies();
|
|
63
71
|
// Get tool selection (pass detected tools for pre-selection)
|
|
64
72
|
const selectedToolIds = await this.getSelectedTools(toolStates, extendMode, detectedTools, projectPath);
|
|
65
73
|
// Validate selected tools
|
|
@@ -103,13 +111,12 @@ export class InitCommand {
|
|
|
103
111
|
* prompt: an explanation reaching the user after they answered cannot inform
|
|
104
112
|
* the answer. Derived from the table so a future dependency documents itself.
|
|
105
113
|
*
|
|
106
|
-
*
|
|
107
|
-
*
|
|
114
|
+
* Which is also why it is called from the prompt path only. A run driven by
|
|
115
|
+
* `--tools` or `--interactive=false` has no answer to inform, so the same
|
|
116
|
+
* lines there are just an unprompted paragraph about targets the user may not
|
|
117
|
+
* have picked — `tospec init --tools agents` explaining Claude Code.
|
|
108
118
|
*/
|
|
109
119
|
discloseToolDependencies() {
|
|
110
|
-
const fromArg = this.resolveToolsArg();
|
|
111
|
-
if (fromArg !== null && fromArg.length === 0)
|
|
112
|
-
return;
|
|
113
120
|
for (const tool of AI_TOOLS) {
|
|
114
121
|
if (!tool.requires?.length)
|
|
115
122
|
continue;
|
|
@@ -216,6 +223,9 @@ export class InitCommand {
|
|
|
216
223
|
: 'not pre-selected';
|
|
217
224
|
console.log(`Detected tool directories: ${detectedOnlyNames.join(', ')} (${detectionLabel})`);
|
|
218
225
|
}
|
|
226
|
+
// Last thing before the question, so the dependency is on screen while it
|
|
227
|
+
// can still change the answer.
|
|
228
|
+
this.discloseToolDependencies();
|
|
219
229
|
// No minimum: clearing every checkbox means "write no agent content", the
|
|
220
230
|
// same as `--tools none`. Refusing it would reject an answer tospec can
|
|
221
231
|
// honour, and honouring it partially would make the list a suggestion.
|
|
@@ -316,7 +326,6 @@ export class InitCommand {
|
|
|
316
326
|
const createdTools = [];
|
|
317
327
|
const refreshedTools = [];
|
|
318
328
|
const failedTools = [];
|
|
319
|
-
const deliveries = new Map();
|
|
320
329
|
let removedCommandCount = 0;
|
|
321
330
|
// Read global config for profile settings (use --profile override if set)
|
|
322
331
|
const globalConfig = getGlobalConfig();
|
|
@@ -324,7 +333,7 @@ export class InitCommand {
|
|
|
324
333
|
const workflows = getProfileWorkflows(profile, globalConfig.workflows);
|
|
325
334
|
const skillTemplates = getSkillTemplates(workflows);
|
|
326
335
|
// Write canonical files once to .agents/ — the single source of truth
|
|
327
|
-
// every dependent target
|
|
336
|
+
// every dependent target is copied from.
|
|
328
337
|
//
|
|
329
338
|
// Gated on the selection rather than unconditional, so an empty selection
|
|
330
339
|
// (and `--tools none`) really writes nothing. The condition is "any target
|
|
@@ -332,43 +341,37 @@ export class InitCommand {
|
|
|
332
341
|
// guarantees it is present whenever anything else is, and a selection that
|
|
333
342
|
// somehow omitted it would still need canonical content or its dependents
|
|
334
343
|
// would link at nothing.
|
|
335
|
-
const agentsSkillsDir =
|
|
344
|
+
const agentsSkillsDir = agentsSkillsDirFor(projectPath);
|
|
336
345
|
if (tools.length > 0) {
|
|
337
346
|
for (const { template, dirName } of skillTemplates) {
|
|
338
347
|
await writeSkillDir(agentsSkillsDir, dirName, template, TOSPEC_VERSION);
|
|
339
348
|
}
|
|
340
|
-
await removeLegacySkillDirs(agentsSkillsDir);
|
|
341
349
|
}
|
|
350
|
+
// Outside the gate: retiring a workflow tospec itself generated is not
|
|
351
|
+
// conditional on this run writing anything new. Gated, `--tools none` — the
|
|
352
|
+
// way a user stops tospec writing agent content — would leave a retired
|
|
353
|
+
// skill dir on disk and loadable by every agent that reads .agents/skills/,
|
|
354
|
+
// which is the opposite of what they asked for.
|
|
355
|
+
await removeLegacySkillDirs(agentsSkillsDir);
|
|
342
356
|
removedCommandCount += await this.removeLegacyCommands(projectPath);
|
|
343
357
|
// Process each tool
|
|
344
358
|
for (const tool of tools) {
|
|
345
359
|
console.log(`Setting up ${tool.name}...`);
|
|
346
360
|
try {
|
|
347
|
-
//
|
|
348
|
-
//
|
|
349
|
-
//
|
|
361
|
+
// Copy each skill dir out of .agents/skills/ into the tool's standard
|
|
362
|
+
// `skills/` dir. Project-scope skills can't live in a nested sub-folder,
|
|
363
|
+
// so skills stay flat and prefixed:
|
|
350
364
|
// `<tool>/skills/tospec-<workflow>/SKILL.md`. Clean up the intermediate
|
|
351
365
|
// grouped/bare layouts (and the retired verify skill) from older builds first.
|
|
352
366
|
const skillsDir = path.join(projectPath, tool.skillsDir, 'skills');
|
|
353
367
|
await removeLegacyToolSkillLayout(path.join(projectPath, tool.skillsDir));
|
|
354
368
|
await removeLegacySkillDirs(skillsDir);
|
|
355
|
-
//
|
|
356
|
-
//
|
|
357
|
-
//
|
|
358
|
-
// recorded per tool so the summary can say which the user actually got.
|
|
359
|
-
//
|
|
360
|
-
// The canonical target *is* .agents/skills, and linkOrCopyDir clears
|
|
361
|
-
// its dest first, so pointing it at itself would delete the source.
|
|
369
|
+
// Independent copies, not links: see the header of utils/link.ts. The
|
|
370
|
+
// canonical target *is* .agents/skills, and copyDir clears its dest
|
|
371
|
+
// first, so pointing it at itself would delete the source.
|
|
362
372
|
if (path.resolve(skillsDir) !== path.resolve(agentsSkillsDir)) {
|
|
363
373
|
for (const { dirName } of skillTemplates) {
|
|
364
|
-
|
|
365
|
-
const dest = path.join(skillsDir, dirName);
|
|
366
|
-
const kind = await linkOrCopyDir(src, dest);
|
|
367
|
-
// One copy anywhere in the tool makes the whole tool a copy: the
|
|
368
|
-
// user cares whether edits propagate, and a partial answer is "no".
|
|
369
|
-
if (kind === 'copy' || !deliveries.has(tool.value)) {
|
|
370
|
-
deliveries.set(tool.value, kind);
|
|
371
|
-
}
|
|
374
|
+
await copyDir(path.join(agentsSkillsDir, dirName), path.join(skillsDir, dirName));
|
|
372
375
|
}
|
|
373
376
|
}
|
|
374
377
|
// Commands: for tools with a registered adapter (Claude Code), write
|
|
@@ -396,7 +399,6 @@ export class InitCommand {
|
|
|
396
399
|
refreshedTools,
|
|
397
400
|
failedTools,
|
|
398
401
|
removedCommandCount,
|
|
399
|
-
deliveries,
|
|
400
402
|
};
|
|
401
403
|
}
|
|
402
404
|
// ═══════════════════════════════════════════════════════════
|
|
@@ -430,6 +432,14 @@ export class InitCommand {
|
|
|
430
432
|
if (results.refreshedTools.length > 0) {
|
|
431
433
|
console.log(`Refreshed: ${results.refreshedTools.map((t) => t.name).join(', ')}`);
|
|
432
434
|
}
|
|
435
|
+
// An empty selection is an answer tospec honours by writing nothing, so the
|
|
436
|
+
// report has to say that. Every block below is keyed off a non-empty
|
|
437
|
+
// selection, which left the run printing the "Setup Complete" banner and a
|
|
438
|
+
// config line with no statement anywhere that no skills exist — the user
|
|
439
|
+
// finds out by looking for them.
|
|
440
|
+
if (tools.length === 0) {
|
|
441
|
+
console.log('No tools selected: no skills, commands or rules were written.');
|
|
442
|
+
}
|
|
433
443
|
// Show counts (respecting profile filter)
|
|
434
444
|
const successfulTools = [...results.createdTools, ...results.refreshedTools];
|
|
435
445
|
if (successfulTools.length > 0) {
|
|
@@ -441,17 +451,12 @@ export class InitCommand {
|
|
|
441
451
|
const toolDirs = [...new Set(successfulTools.map((t) => `${t.skillsDir}/`))].join(', ');
|
|
442
452
|
const skillCount = getSkillTemplates(workflows).length;
|
|
443
453
|
console.log(`${skillCount} skills in ${toolDirs}`);
|
|
444
|
-
//
|
|
445
|
-
//
|
|
446
|
-
//
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
if (linked.length > 0) {
|
|
451
|
-
console.log(`Linked into .agents/skills/: ${linked.map((t) => t.name).join(', ')}`);
|
|
452
|
-
}
|
|
453
|
-
if (copied.length > 0) {
|
|
454
|
-
console.log(`Copied (this filesystem refused links): ${copied.map((t) => t.name).join(', ')} — rerun 'tospec update' after editing .agents/skills/`);
|
|
454
|
+
// Dependent targets hold independent copies, so an edit to the canonical
|
|
455
|
+
// skill does not reach them on its own. Saying so is what stops a user
|
|
456
|
+
// editing .agents/skills/ and wondering why the tool never changed.
|
|
457
|
+
const dependents = successfulTools.filter((t) => path.resolve(projectPath, t.skillsDir, 'skills') !== path.resolve(agentsSkillsDirFor(projectPath)));
|
|
458
|
+
if (dependents.length > 0) {
|
|
459
|
+
console.log(`Copied from .agents/skills/: ${dependents.map((t) => t.name).join(', ')} — rerun 'tospec update' after editing the canonical skills`);
|
|
455
460
|
}
|
|
456
461
|
}
|
|
457
462
|
// Show failures
|
|
@@ -479,16 +484,19 @@ export class InitCommand {
|
|
|
479
484
|
const activeProfile = this.profileOverride ?? globalCfg.profile ?? 'core';
|
|
480
485
|
const activeWorkflows = [...getProfileWorkflows(activeProfile, globalCfg.workflows)];
|
|
481
486
|
console.log();
|
|
482
|
-
if (
|
|
487
|
+
if (tools.length === 0) {
|
|
488
|
+
// `tospec-propose` is a skill, and this run wrote none — advising it here
|
|
489
|
+
// would send the user to invoke something that is not on disk.
|
|
490
|
+
console.log('Getting started:');
|
|
491
|
+
console.log(" Add agent skills: tospec init --tools <tool> (or rerun 'tospec init')");
|
|
492
|
+
}
|
|
493
|
+
else if (activeWorkflows.includes('propose')) {
|
|
483
494
|
console.log('Getting started:');
|
|
484
495
|
console.log(' Start your first change: tospec-propose "your idea"');
|
|
485
496
|
}
|
|
486
497
|
else {
|
|
487
498
|
console.log("Done. Run 'tospec config profile' to configure your workflows.");
|
|
488
499
|
}
|
|
489
|
-
// Links
|
|
490
|
-
console.log();
|
|
491
|
-
console.log(`Documentation: README.md`);
|
|
492
500
|
// Restart instruction if any tools were configured
|
|
493
501
|
if (results.createdTools.length > 0 || results.refreshedTools.length > 0) {
|
|
494
502
|
console.log();
|
package/dist/core/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/core/init.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/core/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,12 +11,38 @@
|
|
|
11
11
|
* implementation serve both.
|
|
12
12
|
*/
|
|
13
13
|
import * as http from 'node:http';
|
|
14
|
-
/**
|
|
14
|
+
/**
|
|
15
|
+
* Canonical form of a bind address or Host-header name, so the sets below hold
|
|
16
|
+
* addresses rather than spellings.
|
|
17
|
+
*
|
|
18
|
+
* `::`, `::0` and `0:0:0:0:0:0:0:0` are one address, and every one of them is
|
|
19
|
+
* something a user can legitimately type after `--host`. Matching spellings
|
|
20
|
+
* means the next one nobody thought to list silently takes the wrong branch —
|
|
21
|
+
* which is how `--allow-remote --host ::0` bound every interface and then 403'd
|
|
22
|
+
* every request that arrived on one.
|
|
23
|
+
*
|
|
24
|
+
* The WHATWG URL parser is the normalizer because it is the only IPv6/IPv4
|
|
25
|
+
* canonicalizer already in Node's core: it collapses every spelling above to
|
|
26
|
+
* `::`, and the brackets it adds back are stripped here.
|
|
27
|
+
*
|
|
28
|
+
* Anything that does not parse as a host is returned lowercased and otherwise
|
|
29
|
+
* untouched. Every check in this module treats an unrecognized value as neither
|
|
30
|
+
* loopback nor wildcard, which is the refusing side of each of them.
|
|
31
|
+
*/
|
|
32
|
+
export declare function normalizeHost(host: string): string;
|
|
33
|
+
/**
|
|
34
|
+
* Hosts considered loopback for binding and Host-header checks, in the
|
|
35
|
+
* canonical form `normalizeHost` produces.
|
|
36
|
+
*/
|
|
15
37
|
export declare const LOOPBACK_HOSTS: Set<string>;
|
|
16
38
|
/**
|
|
17
|
-
* Bind addresses that mean "every interface". These are
|
|
18
|
-
* sends as a Host header, which is what makes them the one
|
|
19
|
-
* match in `isAllowedHostHeader` can never satisfy.
|
|
39
|
+
* Bind addresses that mean "every interface", canonical forms only. These are
|
|
40
|
+
* not names any client sends as a Host header, which is what makes them the one
|
|
41
|
+
* case the literal match in `isAllowedHostHeader` can never satisfy.
|
|
42
|
+
*
|
|
43
|
+
* `::ffff:0:0` is the IPv4-mapped spelling of the same unspecified address; it
|
|
44
|
+
* is listed because it survives normalization as a distinct string, not because
|
|
45
|
+
* it means anything different.
|
|
20
46
|
*/
|
|
21
47
|
export declare const WILDCARD_HOSTS: Set<string>;
|
|
22
48
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-server.d.ts","sourceRoot":"","sources":["../../src/core/local-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAYlC,
|
|
1
|
+
{"version":3,"file":"local-server.d.ts","sourceRoot":"","sources":["../../src/core/local-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAYlC;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAUlD;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,aAA6C,CAAC;AAEzE;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,aAA2C,CAAC;AAEvE;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,OAAO,GAAG,SAAS,EAChC,MAAM,EAAE,MAAM,GACb,IAAI,CAKN;AAMD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAGzF;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGrD;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAC9B,GAAG,EAAE,IAAI,CAAC,cAAc,EACxB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAkBf;AAMD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,SAAS,EAAE,MAAM,EACjB,aAAa,UAAQ,GACpB,OAAO,CAaT;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAGtF;AAMD,+EAA+E;AAC/E,wBAAgB,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAczF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,WAAW,SAAM,GAChB,OAAO,CAAC,MAAM,CAAC,CAiBjB;AAMD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,EACX,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,MAAM,CAIR;AAED,mFAAmF;AACnF,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAQ7C"}
|
|
@@ -19,18 +19,51 @@ const ASSET_CONTENT_TYPES = {
|
|
|
19
19
|
'.js': 'text/javascript',
|
|
20
20
|
'.css': 'text/css',
|
|
21
21
|
};
|
|
22
|
-
/**
|
|
22
|
+
/**
|
|
23
|
+
* Canonical form of a bind address or Host-header name, so the sets below hold
|
|
24
|
+
* addresses rather than spellings.
|
|
25
|
+
*
|
|
26
|
+
* `::`, `::0` and `0:0:0:0:0:0:0:0` are one address, and every one of them is
|
|
27
|
+
* something a user can legitimately type after `--host`. Matching spellings
|
|
28
|
+
* means the next one nobody thought to list silently takes the wrong branch —
|
|
29
|
+
* which is how `--allow-remote --host ::0` bound every interface and then 403'd
|
|
30
|
+
* every request that arrived on one.
|
|
31
|
+
*
|
|
32
|
+
* The WHATWG URL parser is the normalizer because it is the only IPv6/IPv4
|
|
33
|
+
* canonicalizer already in Node's core: it collapses every spelling above to
|
|
34
|
+
* `::`, and the brackets it adds back are stripped here.
|
|
35
|
+
*
|
|
36
|
+
* Anything that does not parse as a host is returned lowercased and otherwise
|
|
37
|
+
* untouched. Every check in this module treats an unrecognized value as neither
|
|
38
|
+
* loopback nor wildcard, which is the refusing side of each of them.
|
|
39
|
+
*/
|
|
40
|
+
export function normalizeHost(host) {
|
|
41
|
+
const bare = host.trim().toLowerCase().replace(/^\[|\]$/g, '');
|
|
42
|
+
try {
|
|
43
|
+
// A bare IPv6 literal has to be bracketed before the URL parser will read
|
|
44
|
+
// its colons as an address rather than as a port separator.
|
|
45
|
+
const authority = bare.includes(':') ? `[${bare}]` : bare;
|
|
46
|
+
return new URL(`http://${authority}/`).hostname.replace(/^\[|\]$/g, '');
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return bare;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Hosts considered loopback for binding and Host-header checks, in the
|
|
54
|
+
* canonical form `normalizeHost` produces.
|
|
55
|
+
*/
|
|
23
56
|
export const LOOPBACK_HOSTS = new Set(['127.0.0.1', 'localhost', '::1']);
|
|
24
57
|
/**
|
|
25
|
-
* Bind addresses that mean "every interface". These are
|
|
26
|
-
* sends as a Host header, which is what makes them the one
|
|
27
|
-
* match in `isAllowedHostHeader` can never satisfy.
|
|
58
|
+
* Bind addresses that mean "every interface", canonical forms only. These are
|
|
59
|
+
* not names any client sends as a Host header, which is what makes them the one
|
|
60
|
+
* case the literal match in `isAllowedHostHeader` can never satisfy.
|
|
61
|
+
*
|
|
62
|
+
* `::ffff:0:0` is the IPv4-mapped spelling of the same unspecified address; it
|
|
63
|
+
* is listed because it survives normalization as a distinct string, not because
|
|
64
|
+
* it means anything different.
|
|
28
65
|
*/
|
|
29
|
-
export const WILDCARD_HOSTS = new Set([
|
|
30
|
-
'0.0.0.0',
|
|
31
|
-
'::',
|
|
32
|
-
'0000:0000:0000:0000:0000:0000:0000:0000',
|
|
33
|
-
]);
|
|
66
|
+
export const WILDCARD_HOSTS = new Set(['0.0.0.0', '::', '::ffff:0:0']);
|
|
34
67
|
/**
|
|
35
68
|
* The bind guard, in one place because it is the third trust boundary this
|
|
36
69
|
* module owns.
|
|
@@ -50,7 +83,7 @@ export const WILDCARD_HOSTS = new Set([
|
|
|
50
83
|
* its own escape hatch rather than silently inherit one it may not have.
|
|
51
84
|
*/
|
|
52
85
|
export function assertBindableHost(host, serverName, allowRemote, remedy) {
|
|
53
|
-
if (LOOPBACK_HOSTS.has(host
|
|
86
|
+
if (LOOPBACK_HOSTS.has(normalizeHost(host)) || allowRemote)
|
|
54
87
|
return;
|
|
55
88
|
throw new Error(`Refusing to bind non-loopback host '${host}': the ${serverName} would be readable by anyone who can reach this machine. ${remedy}`);
|
|
56
89
|
}
|
|
@@ -118,14 +151,16 @@ export function isAllowedHostHeader(hostHeader, boundHost, acceptAnyHost = false
|
|
|
118
151
|
const match = hostHeader.match(/^(\[[^\]]+\]|[^:]+)(:\d+)?$/);
|
|
119
152
|
if (!match)
|
|
120
153
|
return false;
|
|
121
|
-
|
|
154
|
+
// Normalized on both sides so the comparison is between addresses, not
|
|
155
|
+
// between the spelling the client sent and the spelling the operator typed.
|
|
156
|
+
const name = normalizeHost(match[1]);
|
|
122
157
|
if (LOOPBACK_HOSTS.has(name))
|
|
123
158
|
return true;
|
|
124
159
|
// Still parsed and still last: an unparseable Host header is refused even
|
|
125
160
|
// here, so the opt-in widens who may be named, not what counts as a name.
|
|
126
161
|
if (acceptAnyHost)
|
|
127
162
|
return true;
|
|
128
|
-
return name === boundHost
|
|
163
|
+
return name === normalizeHost(boundHost);
|
|
129
164
|
}
|
|
130
165
|
/**
|
|
131
166
|
* The Host-header policy, resolved once at startup rather than re-derived per
|
|
@@ -144,7 +179,7 @@ export function isAllowedHostHeader(hostHeader, boundHost, acceptAnyHost = false
|
|
|
144
179
|
export function acceptsAnyHostHeader(boundHost, allowRemote) {
|
|
145
180
|
if (!allowRemote)
|
|
146
181
|
return false;
|
|
147
|
-
return WILDCARD_HOSTS.has(boundHost
|
|
182
|
+
return WILDCARD_HOSTS.has(normalizeHost(boundHost));
|
|
148
183
|
}
|
|
149
184
|
// -----------------------------------------------------------------------------
|
|
150
185
|
// Lifecycle
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-server.js","sourceRoot":"","sources":["../../src/core/local-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE1C,MAAM,mBAAmB,GAA2B;IAClD,OAAO,EAAE,WAAW;IACpB,KAAK,EAAE,iBAAiB;IACxB,MAAM,EAAE,UAAU;CACnB,CAAC;AAEF,
|
|
1
|
+
{"version":3,"file":"local-server.js","sourceRoot":"","sources":["../../src/core/local-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE1C,MAAM,mBAAmB,GAA2B;IAClD,OAAO,EAAE,WAAW;IACpB,KAAK,EAAE,iBAAiB;IACxB,MAAM,EAAE,UAAU;CACnB,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC/D,IAAI,CAAC;QACH,0EAA0E;QAC1E,4DAA4D;QAC5D,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1D,OAAO,IAAI,GAAG,CAAC,UAAU,SAAS,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC1E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;AAEzE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;AAEvE;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAAY,EACZ,UAAkB,EAClB,WAAgC,EAChC,MAAc;IAEd,IAAI,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,WAAW;QAAE,OAAO;IACnE,MAAM,IAAI,KAAK,CACb,uCAAuC,IAAI,UAAU,UAAU,4DAA4D,MAAM,EAAE,CACpI,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF,MAAM,UAAU,QAAQ,CAAC,GAAwB,EAAE,MAAc,EAAE,OAAgB;IACjF,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,cAAc,EAAE,iCAAiC,EAAE,CAAC,CAAC;IAC7E,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;AACnC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AACrD,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,GAAwB,EACxB,GAAW,EACX,OAAe;IAEf,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACzC,IAAI,QAAQ,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7D,OAAO,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,GAAG,IAAI,iBAAiB,EAAE,CAAC,CAAC;IACjE,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACnB,CAAC;AAED,gFAAgF;AAChF,iBAAiB;AACjB,gFAAgF;AAEhF;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CACjC,UAA8B,EAC9B,SAAiB,EACjB,aAAa,GAAG,KAAK;IAErB,IAAI,CAAC,UAAU;QAAE,OAAO,KAAK,CAAC;IAC9B,4DAA4D;IAC5D,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAC9D,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,uEAAuE;IACvE,4EAA4E;IAC5E,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,0EAA0E;IAC1E,0EAA0E;IAC1E,IAAI,aAAa;QAAE,OAAO,IAAI,CAAC;IAC/B,OAAO,IAAI,KAAK,aAAa,CAAC,SAAS,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,oBAAoB,CAAC,SAAiB,EAAE,WAAqB;IAC3E,IAAI,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC;IAC/B,OAAO,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF,+EAA+E;AAC/E,MAAM,UAAU,UAAU,CAAC,MAAmB,EAAE,IAAY,EAAE,IAAY;IACxE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,OAAO,GAAG,CAAC,GAAU,EAAE,EAAE;YAC7B,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YAChD,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC;QACF,MAAM,WAAW,GAAG,GAAG,EAAE;YACvB,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACxC,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAmB,EACnB,QAAgB,EAChB,IAAY,EACZ,WAAW,GAAG,GAAG;IAEjB,IAAI,IAAI,GAAG,QAAQ,CAAC;IACpB,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,EAAE,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,MAAM,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YACrC,MAAM;QACR,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAK,GAA6B,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,KAAK,CAAC,IAAI,OAAO,GAAG,WAAW,EAAE,CAAC;gBAChG,IAAI,EAAE,CAAC;gBACP,SAAS;YACX,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IACD,kEAAkE;IAClE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;IACjC,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACtE,CAAC;AAED,gFAAgF;AAChF,UAAU;AACV,gFAAgF;AAEhF;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAChC,GAAW,EACX,QAAQ,GAAoB,OAAO,CAAC,QAAQ;IAE5C,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,aAAa,GAAG,GAAG,CAAC;IACrD,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO,SAAS,GAAG,GAAG,CAAC;IAClD,OAAO,aAAa,GAAG,GAAG,CAAC;AAC7B,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,4EAA4E;IAC5E,0EAA0E;IAC1E,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE;QAC3D,IAAI,GAAG,EAAE,CAAC;YACR,OAAO,CAAC,IAAI,CAAC,2CAA2C,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/core/migrate.d.ts
CHANGED
|
@@ -13,6 +13,8 @@ export interface MigrateSummary {
|
|
|
13
13
|
archived: number;
|
|
14
14
|
metadataCreated: number;
|
|
15
15
|
};
|
|
16
|
+
/** How the source project context was handled. */
|
|
17
|
+
context: 'carried' | 'conflict' | 'empty' | 'absent';
|
|
16
18
|
/** REMOVED requirements dropped during main-spec normalization (`spec/name`). */
|
|
17
19
|
removedRequirements: string[];
|
|
18
20
|
/** RENAMED requirement blocks kept as MODIFIED content (`spec/name`). */
|
|
@@ -48,7 +50,7 @@ export declare function normalizeMainSpec(content: string, capabilityName: strin
|
|
|
48
50
|
} | null;
|
|
49
51
|
export declare class MigrateCommand {
|
|
50
52
|
execute(sourceDir?: string, options?: MigrateOptions): Promise<void>;
|
|
51
|
-
/** Copies config.yaml with the schema value rewritten
|
|
53
|
+
/** Copies config.yaml with the schema value rewritten, carrying project.md context when needed. */
|
|
52
54
|
private migrateConfig;
|
|
53
55
|
/**
|
|
54
56
|
* Replaces `.openspec.yaml` with `.tospec.yaml` (schema rewritten to sdd,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/core/migrate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/core/migrate.ts"],"names":[],"mappings":"AAmCA,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAC;QAAC,oBAAoB,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;IACvG,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,CAAC;IACvE,kDAAkD;IAClD,OAAO,EAAE,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC;IACrD,iFAAiF;IACjF,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,yEAAyE;IACzE,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,qBAAa,YAAa,SAAQ,KAAK;IAG5B,UAAU,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE;IAFtC,YACE,OAAO,EAAE,MAAM,EACR,UAAU,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,YAAA,EAIrC;CACF;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAO7D;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,GACrB;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,GAAG,YAAY,CAAC;IAC9B,8EAA8E;IAC9E,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,8EAA8E;IAC9E,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB,GAAG,IAAI,CA4GP;AAqCD,qBAAa,cAAc;IACnB,OAAO,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA6IzE;IAED,mGAAmG;YACrF,aAAa;IA+B3B;;;;;;OAMG;YACW,eAAe;IAe7B;;;;;OAKG;YACW,cAAc;CAiB7B"}
|
package/dist/core/migrate.js
CHANGED
|
@@ -2,6 +2,7 @@ import { promises as fs } from 'fs';
|
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import { parse as parseYaml, stringify as stringifyYaml } from 'yaml';
|
|
4
4
|
import { moveDirectory, moveFile } from './archive.js';
|
|
5
|
+
import { serializeConfig } from './config-prompts.js';
|
|
5
6
|
import { formatLocalDate } from '../utils/timestamp.js';
|
|
6
7
|
/**
|
|
7
8
|
* `tospec migrate [openspec-dir]` — one-shot conversion of an OpenSpec project
|
|
@@ -180,6 +181,24 @@ function convertMetadata(raw, defaults) {
|
|
|
180
181
|
parsed.goal = defaults.goal;
|
|
181
182
|
return stringifyYaml(parsed);
|
|
182
183
|
}
|
|
184
|
+
/** Appends prose as a YAML literal block so its Markdown characters stay verbatim. */
|
|
185
|
+
function appendContext(config, context) {
|
|
186
|
+
const prefix = config.endsWith('\n') ? config : `${config}\n`;
|
|
187
|
+
const normalized = context.replace(/\r\n/g, '\n');
|
|
188
|
+
const trailingNewlines = normalized.match(/\n*$/)?.[0].length ?? 0;
|
|
189
|
+
const chomping = trailingNewlines === 0 ? '-' : trailingNewlines === 1 ? '' : '+';
|
|
190
|
+
const lines = normalized.split('\n');
|
|
191
|
+
if (trailingNewlines > 0)
|
|
192
|
+
lines.pop();
|
|
193
|
+
// The `2` is an explicit indentation indicator, not decoration. Without it
|
|
194
|
+
// YAML infers the block's indentation from the first non-empty line, so a
|
|
195
|
+
// project.md opening with an indented line (a four-space code block, a nested
|
|
196
|
+
// list) makes the inferred width 6 and every ordinary line below it falls
|
|
197
|
+
// short, terminating the block mid-value and yielding an unparseable file.
|
|
198
|
+
return `${prefix}context: |2${chomping}\n${lines
|
|
199
|
+
.map((line) => ` ${line}`)
|
|
200
|
+
.join('\n')}\n`;
|
|
201
|
+
}
|
|
183
202
|
export class MigrateCommand {
|
|
184
203
|
async execute(sourceDir, options) {
|
|
185
204
|
const projectRoot = process.cwd();
|
|
@@ -223,6 +242,7 @@ export class MigrateCommand {
|
|
|
223
242
|
const summary = {
|
|
224
243
|
specs: { copied: 0, normalizedDelta: 0, normalizedHeaderless: 0, skippedEmpty: 0 },
|
|
225
244
|
changes: { active: 0, archived: 0, metadataCreated: 0 },
|
|
245
|
+
context: 'absent',
|
|
226
246
|
removedRequirements: [],
|
|
227
247
|
renamedKept: [],
|
|
228
248
|
};
|
|
@@ -235,7 +255,7 @@ export class MigrateCommand {
|
|
|
235
255
|
await fs.mkdir(path.join(staging, 'specs'), { recursive: true });
|
|
236
256
|
await fs.mkdir(path.join(staging, 'changes', 'archive'), { recursive: true });
|
|
237
257
|
await fs.mkdir(path.join(staging, 'tickets', 'archive'), { recursive: true });
|
|
238
|
-
await this.migrateConfig(source, staging);
|
|
258
|
+
summary.context = await this.migrateConfig(source, staging);
|
|
239
259
|
for (const dir of specDirs) {
|
|
240
260
|
const specFile = path.join(source, 'specs', dir, 'spec.md');
|
|
241
261
|
if (!(await exists(specFile))) {
|
|
@@ -285,26 +305,56 @@ export class MigrateCommand {
|
|
|
285
305
|
if (summary.removedRequirements.length > 0) {
|
|
286
306
|
console.log(` REMOVED requirements dropped during normalization: ${summary.removedRequirements.join(', ')}`);
|
|
287
307
|
}
|
|
308
|
+
switch (summary.context) {
|
|
309
|
+
case 'carried':
|
|
310
|
+
console.log(` Context: project.md -> config.yaml context:`);
|
|
311
|
+
break;
|
|
312
|
+
case 'conflict':
|
|
313
|
+
console.log(` Context: project.md was not carried because config.yaml already has existing context.`);
|
|
314
|
+
break;
|
|
315
|
+
case 'empty':
|
|
316
|
+
console.log(` Context: project.md was empty and was not carried.`);
|
|
317
|
+
break;
|
|
318
|
+
case 'absent':
|
|
319
|
+
console.log(` Context: no project.md was carried.`);
|
|
320
|
+
break;
|
|
321
|
+
}
|
|
288
322
|
console.log(` Specs: ${summary.specs.copied} copied` +
|
|
289
323
|
` (${summary.specs.normalizedDelta} delta-form + ${summary.specs.normalizedHeaderless} headerless normalized` +
|
|
290
324
|
`, ${summary.specs.skippedEmpty} empty skipped)`);
|
|
291
325
|
console.log(` Changes: ${summary.changes.active} active, ${summary.changes.archived} archived` +
|
|
292
326
|
` (${summary.changes.metadataCreated} metadata files created)`);
|
|
327
|
+
const migratedChanges = summary.changes.active + summary.changes.archived;
|
|
328
|
+
if (migratedChanges > 0) {
|
|
329
|
+
console.log(` Tickets: ticket stubs deferred for ${migratedChanges} migrated changes; timestamped filenames are CLI-owned.`);
|
|
330
|
+
}
|
|
293
331
|
console.log(` Run 'tospec validate --all' to verify, then 'tospec init' to set up skills.`);
|
|
294
332
|
}
|
|
295
|
-
/** Copies config.yaml with the schema value rewritten
|
|
333
|
+
/** Copies config.yaml with the schema value rewritten, carrying project.md context when needed. */
|
|
296
334
|
async migrateConfig(source, target) {
|
|
297
335
|
const sourceConfig = path.join(source, 'config.yaml');
|
|
336
|
+
const sourceProject = path.join(source, 'project.md');
|
|
298
337
|
const targetConfig = path.join(target, 'config.yaml');
|
|
338
|
+
const projectContext = (await exists(sourceProject)) ? await fs.readFile(sourceProject, 'utf-8') : null;
|
|
339
|
+
const hasProjectContext = projectContext !== null && projectContext.length > 0;
|
|
299
340
|
if (await exists(sourceConfig)) {
|
|
300
341
|
const raw = await fs.readFile(sourceConfig, 'utf-8');
|
|
301
342
|
// Line-level replace to preserve the file's comments and formatting.
|
|
302
343
|
const rewritten = raw.replace(/^schema:.*$/m, `schema: ${TARGET_SCHEMA}`);
|
|
303
344
|
const content = /^schema:/m.test(rewritten) ? rewritten : `schema: ${TARGET_SCHEMA}\n${rewritten}`;
|
|
304
|
-
|
|
345
|
+
const hasExistingContext = /^context\s*:/m.test(content);
|
|
346
|
+
await fs.writeFile(targetConfig, hasProjectContext && !hasExistingContext
|
|
347
|
+
? appendContext(content, projectContext)
|
|
348
|
+
: content);
|
|
349
|
+
if (!hasProjectContext)
|
|
350
|
+
return projectContext === '' ? 'empty' : 'absent';
|
|
351
|
+
return hasExistingContext ? 'conflict' : 'carried';
|
|
305
352
|
}
|
|
306
353
|
else {
|
|
307
|
-
await fs.writeFile(targetConfig,
|
|
354
|
+
await fs.writeFile(targetConfig, hasProjectContext
|
|
355
|
+
? appendContext(serializeConfig({ schema: TARGET_SCHEMA }), projectContext)
|
|
356
|
+
: serializeConfig({ schema: TARGET_SCHEMA }));
|
|
357
|
+
return hasProjectContext ? 'carried' : projectContext === '' ? 'empty' : 'absent';
|
|
308
358
|
}
|
|
309
359
|
}
|
|
310
360
|
/**
|