@wemuda/launchrail 1.13.0 → 1.14.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/README.md +1 -1
- package/assets/agents-docs/domain.md +2 -2
- package/assets/agents-docs/issue-tracker-github.md +1 -1
- package/assets/agents-docs/issue-tracker-linear.md +1 -1
- package/assets/ralph.workflow.js +640 -273
- package/assets/skills/NOTICE.md +4 -0
- package/assets/skills/launchrail/launch/SKILL.md +2 -2
- package/assets/skills/launchrail/launch/workflow.md +2 -2
- package/assets/skills/launchrail/launch-code-review/SKILL.md +1 -1
- package/assets/skills/launchrail/launch-design-handoff/SKILL.md +1 -1
- package/assets/skills/launchrail/launch-design-validation/SKILL.md +2 -2
- package/assets/skills/launchrail/launch-discovery/SKILL.md +2 -2
- package/assets/skills/launchrail/launch-grill/SKILL.md +8 -2
- package/assets/skills/launchrail/launch-grill/domain-modeling.md +3 -1
- package/assets/skills/launchrail/launch-implement/SKILL.md +10 -10
- package/assets/skills/launchrail/launch-project-alignment/SKILL.md +1 -1
- package/assets/skills/launchrail/launch-ralph/SKILL.md +79 -59
- package/assets/skills/launchrail/launch-ralph-implement/SKILL.md +8 -7
- package/assets/skills/launchrail/launch-resolving-merge-conflicts/SKILL.md +1 -1
- package/assets/skills/launchrail/launch-spec/SKILL.md +3 -3
- package/assets/skills/launchrail/launch-tickets/SKILL.md +6 -7
- package/assets/skills/launchrail/launch-wayfinder/SKILL.md +6 -6
- package/dist/commands/add.js +2 -1
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/doctor.js +29 -0
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init.js +2 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/verify.d.ts +11 -2
- package/dist/commands/verify.js +22 -7
- package/dist/commands/verify.js.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/adr.d.ts +27 -0
- package/dist/lib/adr.js +87 -0
- package/dist/lib/adr.js.map +1 -0
- package/dist/lib/manifest.d.ts +7 -1
- package/dist/lib/manifest.js +8 -1
- package/dist/lib/manifest.js.map +1 -1
- package/dist/lib/project.d.ts +2 -0
- package/dist/lib/project.js +2 -1
- package/dist/lib/project.js.map +1 -1
- package/dist/lib/seeds.d.ts +2 -0
- package/dist/lib/seeds.js +13 -5
- package/dist/lib/seeds.js.map +1 -1
- package/package.json +1 -1
package/dist/lib/adr.js
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { existsSync, readdirSync, readFileSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
export const ADR_DIR = "docs/adr";
|
|
4
|
+
export const ADR_TEMPLATE_FILENAME = "0000-template.md";
|
|
5
|
+
export const ADR_REGISTRY_PATH = `${ADR_DIR}/README.md`;
|
|
6
|
+
const ADR_FILENAME = /^(\d{4})-.+\.md$/;
|
|
7
|
+
const TITLE_PREFIX = /^ADR[-\s]?\d+\s*[:—–-]\s*/i;
|
|
8
|
+
function adrTitle(abs, file) {
|
|
9
|
+
try {
|
|
10
|
+
const heading = /^#\s+(.+)$/m.exec(readFileSync(abs, "utf8"))?.[1];
|
|
11
|
+
if (heading)
|
|
12
|
+
return heading.replace(TITLE_PREFIX, "").trim();
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
// Unreadable file — fall through to the filename.
|
|
16
|
+
}
|
|
17
|
+
return file.replace(/\.md$/, "");
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* The decision records already in a repository's docs/adr/ (template and
|
|
21
|
+
* registry excluded), sorted by number then filename. Read-only.
|
|
22
|
+
*/
|
|
23
|
+
export function scanAdrs(cwd) {
|
|
24
|
+
const dir = join(cwd, ADR_DIR);
|
|
25
|
+
if (!existsSync(dir))
|
|
26
|
+
return [];
|
|
27
|
+
return readdirSync(dir)
|
|
28
|
+
.filter((file) => file !== ADR_TEMPLATE_FILENAME && ADR_FILENAME.test(file))
|
|
29
|
+
.sort()
|
|
30
|
+
.map((file) => ({
|
|
31
|
+
// The filter above guarantees the four leading digits.
|
|
32
|
+
number: file.slice(0, 4),
|
|
33
|
+
file,
|
|
34
|
+
title: adrTitle(join(dir, file), file),
|
|
35
|
+
}));
|
|
36
|
+
}
|
|
37
|
+
/** Numbers claimed by more than one record — every reference by number is ambiguous. */
|
|
38
|
+
export function duplicateAdrNumbers(entries) {
|
|
39
|
+
const counts = new Map();
|
|
40
|
+
for (const entry of entries)
|
|
41
|
+
counts.set(entry.number, (counts.get(entry.number) ?? 0) + 1);
|
|
42
|
+
return [...counts.entries()].filter(([, n]) => n > 1).map(([number]) => number);
|
|
43
|
+
}
|
|
44
|
+
/** Records whose filename never appears in the registry — rows the index is missing. */
|
|
45
|
+
export function unindexedAdrs(registrySource, entries) {
|
|
46
|
+
return entries.filter((entry) => !registrySource.includes(entry.file));
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* The seeded ADR registry. When init/sync adopts a repository that already has
|
|
50
|
+
* decision records, the index prefills from them (status Unclassified — only
|
|
51
|
+
* the project can know which decisions still stand); a fresh repository gets
|
|
52
|
+
* the empty index. Seeded once, then project-owned: the project maintains it.
|
|
53
|
+
*/
|
|
54
|
+
export function adrRegistryContent(entries) {
|
|
55
|
+
const header = "| ADR | Title | Status |\n| --- | --- | --- |";
|
|
56
|
+
const rows = entries.map((e) => `| [${e.number}](${e.file}) | ${e.title} | Unclassified |`).join("\n");
|
|
57
|
+
const index = entries.length === 0 ? header : `${header}\n${rows}`;
|
|
58
|
+
const unclassifiedNote = entries.length === 0
|
|
59
|
+
? ""
|
|
60
|
+
: "\n\nRows marked **Unclassified** existed before this registry was seeded. Classify each as you next touch its area: set the record's status (`Accepted`, `Accepted — amended by ADR-NNNN`, `Superseded by ADR-NNNN`) and mirror it here.";
|
|
61
|
+
const livePicture = entries.length === 0
|
|
62
|
+
? "_No decisions recorded yet. When ADRs land, summarize here how they compose into the current system, and name the few a newcomer should read first._"
|
|
63
|
+
: "_Not yet written. Summarize how the accepted decisions compose into the current system, and name the few ADRs a newcomer should read first._";
|
|
64
|
+
return `# ADR registry
|
|
65
|
+
|
|
66
|
+
The index of every architecture decision record in this repository. Read this first, then open only the ADRs that touch the area you are working in — the index is the cheap surface; the records are depth.
|
|
67
|
+
|
|
68
|
+
An ADR records a decision and the context it was made in. It is **not documentation of the current system**: never treat an ADR as evidence that a component exists or still works as described — the code is the source of truth for what exists today.
|
|
69
|
+
|
|
70
|
+
## Index
|
|
71
|
+
|
|
72
|
+
${index}${unclassifiedNote}
|
|
73
|
+
|
|
74
|
+
## The live picture
|
|
75
|
+
|
|
76
|
+
How the accepted decisions compose into the current system. This section describes the present — rewrite it freely as the system grows; the ADRs behind it are history and stay untouched.
|
|
77
|
+
|
|
78
|
+
${livePicture}
|
|
79
|
+
|
|
80
|
+
## Maintaining this registry
|
|
81
|
+
|
|
82
|
+
- New ADRs copy [0000-template.md](0000-template.md), take the next free number (\`NNNN-short-slug.md\` — check both this index and the files on disk), and add their row here **in the same commit**. The shared row turns two branches minting the same number into a visible merge conflict instead of a silent collision.
|
|
83
|
+
- When a new ADR supersedes or amends an earlier one — including reversing part of the earlier one's context — update the earlier ADR's \`## Status\` line and its row here in the same commit.
|
|
84
|
+
- Never delete or renumber an ADR once it is referenced; superseded ADRs are historical records other documents link to.
|
|
85
|
+
`;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=adr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adr.js","sourceRoot":"","sources":["../../src/lib/adr.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/manifest.d.ts
CHANGED
|
@@ -8,7 +8,13 @@ export declare const ORIGINS: readonly ["new", "existing"];
|
|
|
8
8
|
export type Origin = (typeof ORIGINS)[number];
|
|
9
9
|
export declare const ISSUE_TRACKERS: readonly ["github", "gitlab", "linear", "local", "none"];
|
|
10
10
|
export type IssueTracker = (typeof ISSUE_TRACKERS)[number];
|
|
11
|
-
|
|
11
|
+
/**
|
|
12
|
+
* `checkCommand` is the optional fast gate — lint, typecheck, and the unit tests
|
|
13
|
+
* that finish in a minute or two. `verify --fast` runs it (falling back to
|
|
14
|
+
* `unitCommand`); the full `verify` still runs `unitCommand` and, with the
|
|
15
|
+
* browser-testing module, `e2eCommand`.
|
|
16
|
+
*/
|
|
17
|
+
export declare const TESTING_KEYS: readonly ["unitCommand", "checkCommand", "devCommand", "e2eCommand", "smokeCommand", "appUrl"];
|
|
12
18
|
export type TestingKey = (typeof TESTING_KEYS)[number];
|
|
13
19
|
export interface Manifest {
|
|
14
20
|
schemaVersion: 1;
|
package/dist/lib/manifest.js
CHANGED
|
@@ -7,7 +7,13 @@ export const MANIFEST_FILENAME = ".launchrail.yml";
|
|
|
7
7
|
*/
|
|
8
8
|
export const ORIGINS = ["new", "existing"];
|
|
9
9
|
export const ISSUE_TRACKERS = ["github", "gitlab", "linear", "local", "none"];
|
|
10
|
-
|
|
10
|
+
/**
|
|
11
|
+
* `checkCommand` is the optional fast gate — lint, typecheck, and the unit tests
|
|
12
|
+
* that finish in a minute or two. `verify --fast` runs it (falling back to
|
|
13
|
+
* `unitCommand`); the full `verify` still runs `unitCommand` and, with the
|
|
14
|
+
* browser-testing module, `e2eCommand`.
|
|
15
|
+
*/
|
|
16
|
+
export const TESTING_KEYS = ["unitCommand", "checkCommand", "devCommand", "e2eCommand", "smokeCommand", "appUrl"];
|
|
11
17
|
function isRecord(value) {
|
|
12
18
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
13
19
|
}
|
|
@@ -54,6 +60,7 @@ export function validateManifest(data) {
|
|
|
54
60
|
}
|
|
55
61
|
const testing = {
|
|
56
62
|
unitCommand: null,
|
|
63
|
+
checkCommand: null,
|
|
57
64
|
devCommand: null,
|
|
58
65
|
e2eCommand: null,
|
|
59
66
|
smokeCommand: null,
|
package/dist/lib/manifest.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/lib/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAEvD,MAAM,CAAC,MAAM,iBAAiB,GAAG,iBAAiB,CAAC;AAEnD;;;;GAIG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,UAAU,CAAU,CAAC;AAGpD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAU,CAAC;AAGvF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,QAAQ,CAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/lib/manifest.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/project.d.ts
CHANGED
|
@@ -6,6 +6,8 @@ export interface ProjectState {
|
|
|
6
6
|
manifest: Manifest;
|
|
7
7
|
lockfile: Lockfile;
|
|
8
8
|
detection: RepoDetection;
|
|
9
|
+
/** Project root the state was loaded from — seeds that read the repo need it. */
|
|
10
|
+
cwd: string;
|
|
9
11
|
}
|
|
10
12
|
export interface ProjectLoadResult {
|
|
11
13
|
state: ProjectState | null;
|
package/dist/lib/project.js
CHANGED
|
@@ -25,7 +25,7 @@ export function loadProject(cwd) {
|
|
|
25
25
|
if (!lockfile) {
|
|
26
26
|
return { state: null, errors: [`${LOCKFILE_FILENAME} not found — run \`launchrail init\` first.`] };
|
|
27
27
|
}
|
|
28
|
-
return { state: { manifest: parsed.manifest, lockfile, detection }, errors: [] };
|
|
28
|
+
return { state: { manifest: parsed.manifest, lockfile, detection, cwd }, errors: [] };
|
|
29
29
|
}
|
|
30
30
|
/** The files each enabled module contributes at the current version, rendered for this project. */
|
|
31
31
|
export function moduleSpecs(state) {
|
|
@@ -33,6 +33,7 @@ export function moduleSpecs(state) {
|
|
|
33
33
|
projectName: state.detection.projectName,
|
|
34
34
|
manifest: state.manifest,
|
|
35
35
|
launchrailVersion: VERSION,
|
|
36
|
+
cwd: state.cwd,
|
|
36
37
|
};
|
|
37
38
|
// Skills ship as managed files on every project (ADR-0019/0020) — not
|
|
38
39
|
// module-gated, so they ship regardless of which modules are enabled. The
|
package/dist/lib/project.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/lib/project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,UAAU,EAAsB,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAiB,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAiB,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/lib/project.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/seeds.d.ts
CHANGED
|
@@ -4,6 +4,8 @@ export interface SeedContext {
|
|
|
4
4
|
projectName: string;
|
|
5
5
|
manifest: Manifest;
|
|
6
6
|
launchrailVersion: string;
|
|
7
|
+
/** Project root. Seeds that adopt existing repository content (the ADR registry) read it. */
|
|
8
|
+
cwd: string;
|
|
7
9
|
}
|
|
8
10
|
/** The managed Claude instructions file — regenerated whenever module configuration changes. */
|
|
9
11
|
export declare function claudeGeneratedFile(ctx: SeedContext): FileSpec;
|
package/dist/lib/seeds.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ADR_REGISTRY_PATH, adrRegistryContent, scanAdrs } from "./adr.js";
|
|
1
2
|
function agentsMd(ctx) {
|
|
2
3
|
const { manifest } = ctx;
|
|
3
4
|
const commands = manifest.testing.unitCommand
|
|
@@ -26,7 +27,7 @@ TODO: One paragraph on what this project is, who it serves, and what it is not.
|
|
|
26
27
|
## Canonical context
|
|
27
28
|
|
|
28
29
|
1. [docs/vision.md](docs/vision.md) — product vision and non-goals
|
|
29
|
-
2. [docs/adr/](docs/adr/) —
|
|
30
|
+
2. [docs/adr/README.md](docs/adr/README.md) — the decision registry: read its index first, then only the ADRs touching your area
|
|
30
31
|
3. ${specPointer}
|
|
31
32
|
|
|
32
33
|
## Commands
|
|
@@ -38,7 +39,7 @@ ${commitSection}
|
|
|
38
39
|
- Ask, don't guess. On product decisions, data-model or schema changes, security-relevant behaviour, or anything genuinely ambiguous, stop and ask rather than guessing — a wrong guess on these costs more than the question.
|
|
39
40
|
- Do not silently change scope; surface deviations from the spec or ADRs.
|
|
40
41
|
- If implementation invalidates an artifact (vision, spec, ADR, design note), update that artifact in the same change.
|
|
41
|
-
-
|
|
42
|
+
- Decisions that are hard to reverse, surprising without context, and the result of a real trade-off become lightweight ADRs in \`docs/adr/\` using [docs/adr/0000-template.md](docs/adr/0000-template.md), with a row added to the registry index in the same commit. Prefer amending the ADR that owns an area over minting a sibling; product decisions belong in the spec, not an ADR.
|
|
42
43
|
|
|
43
44
|
## Definition of done
|
|
44
45
|
|
|
@@ -75,9 +76,10 @@ function claudeGeneratedMd(ctx) {
|
|
|
75
76
|
## The Ralph loop
|
|
76
77
|
|
|
77
78
|
- Implementation starts with \`/launch-implement\` — all ready tickets, or one with \`/launch-implement <ticket>\`. Multi-ticket runs execute as the \`ralph\` workflow (\`.claude/workflows/ralph.js\`), supervised per the \`launch-ralph\` skill; single tickets build in-session. Only ever started explicitly by the user.
|
|
78
|
-
- Every run declares one integration target: by default a consolidation branch (named via the \`target\` workflow arg, it collects the campaign and ends by offering one release PR to the default branch, which stays untouched), or the default branch (trunk) as an explicit opt-in
|
|
79
|
+
- Every run declares one integration target: by default a consolidation branch (named via the \`target\` workflow arg, it collects the campaign and ends by offering one release PR to the default branch, which stays untouched), or the default branch (trunk) as an explicit opt-in. The loop lands each finished \`ralph/<n>-*\` branch itself — a local squash-merge onto the base under \`npx @wemuda/launchrail verify --fast\`, pushed — and runs the full \`npx @wemuda/launchrail verify\` every few lands and at release; no per-ticket PR, no CI wait — cloud CI runs once, on the offered release PR. The run's recap states where the work lives and the single next step.
|
|
80
|
+
- Implementers push their branch from the first commit on and after every green step; a relaunch adopts pushed branches (pass \`knownGreen: "<sha>"\` to skip re-proving a verified base). Name a quick lint/typecheck/unit gate as \`testing.checkCommand\` in \`.launchrail.yml\` to make every land cheaper (the fast gate falls back to the unit command).
|
|
79
81
|
- Tickets enter the loop with the \`ready-for-agent\` label and explicit \`Blocked by: #n\` edges; parked tickets carry \`needs-info\` plus their failure history.
|
|
80
|
-
- A ticket counts done only when its
|
|
82
|
+
- A ticket counts done only when its landing commit is on the remote base, the issue is closed, and the gates are green — agent reports are claims, not evidence.
|
|
81
83
|
- \`.claude/workflows/ralph.js\` is managed by Launchrail: override policy per run via workflow args (e.g. \`{ width: 1 }\`), never by editing the file.
|
|
82
84
|
- Launch unattended runs in a non-prompting permission mode (bypass/autonomous); a guard hook (\`.claude/hooks/ralph-permission-guard.py\`) warns if the \`ralph\` workflow starts in an interactive mode, since one benign prompt can stall a walk-away run and lose the container mid-ticket.
|
|
83
85
|
`
|
|
@@ -88,6 +90,7 @@ function claudeGeneratedMd(ctx) {
|
|
|
88
90
|
|
|
89
91
|
- This project follows the Launchrail rail — six phases: Intent → Exploration → Decisions → Blueprint → Build → Ship. Report position with the rail banner at every transition; the stage detail and the interaction contract live in \`.claude/skills/launch/workflow.md\`.
|
|
90
92
|
- Product knowledge (vision, specs, ADRs, designs, tickets, code) is project-owned; Launchrail never overwrites it.
|
|
93
|
+
- Architecture decisions: read \`docs/adr/README.md\` — the registry index — first, and open only the ADRs touching your area. An ADR records a decision, not the current system; never take one as evidence that a component exists or still works as described — the code is the source of truth.
|
|
91
94
|
- \`.launchrail.yml\` is project configuration; \`.launchrail-lock.json\` is machine-managed — do not hand-edit it.
|
|
92
95
|
- The issue-tracker workflow (labels included) and the domain-doc consumer rules live in \`docs/agents/\` — seeded from \`.launchrail.yml\`, yours to edit.
|
|
93
96
|
- Before claiming completion, run the project's deterministic checks. Completion requires evidence, not assertion.
|
|
@@ -98,7 +101,9 @@ function adrTemplate() {
|
|
|
98
101
|
return `# ADR-NNNN: Short decision title
|
|
99
102
|
|
|
100
103
|
## Status
|
|
101
|
-
Proposed | Accepted | Superseded by ADR-NNNN
|
|
104
|
+
Proposed | Accepted | Accepted — amended by ADR-NNNN | Superseded by ADR-NNNN
|
|
105
|
+
|
|
106
|
+
When a later ADR amends or supersedes this one, update this line and the registry index ([README.md](README.md)) in the same commit.
|
|
102
107
|
|
|
103
108
|
## Context
|
|
104
109
|
What requirement or constraint requires a decision?
|
|
@@ -126,6 +131,9 @@ export function seedFiles(ctx) {
|
|
|
126
131
|
{ relPath: "AGENTS.md", content: agentsMd(ctx), ownership: "seeded" },
|
|
127
132
|
{ relPath: "CLAUDE.md", content: claudeMd(), ownership: "seeded" },
|
|
128
133
|
{ relPath: "docs/adr/0000-template.md", content: adrTemplate(), ownership: "seeded" },
|
|
134
|
+
// The registry (ADR-0031) makes the corpus navigable: agents read its index,
|
|
135
|
+
// not the whole directory. Adopting a repo with existing records prefills it.
|
|
136
|
+
{ relPath: ADR_REGISTRY_PATH, content: adrRegistryContent(scanAdrs(ctx.cwd)), ownership: "seeded" },
|
|
129
137
|
claudeGeneratedFile(ctx),
|
|
130
138
|
];
|
|
131
139
|
}
|
package/dist/lib/seeds.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seeds.js","sourceRoot":"","sources":["../../src/lib/seeds.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"seeds.js","sourceRoot":"","sources":["../../src/lib/seeds.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAY3E,SAAS,QAAQ,CAAC,GAAgB;IAChC,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC;IACzB,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW;QAC3C,CAAC,CAAC,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,GAAG,OAAO;QACtD,CAAC,CAAC,qEAAqE,CAAC;IAE1E,4EAA4E;IAC5E,8DAA8D;IAC9D,MAAM,WAAW,GACf,QAAQ,CAAC,YAAY,KAAK,OAAO,IAAI,QAAQ,CAAC,YAAY,KAAK,MAAM;QACnE,CAAC,CAAC,sDAAsD;QACxD,CAAC,CAAC,4IAA4I,CAAC;IAEnJ,MAAM,aAAa,GAAG,QAAQ,CAAC,WAAW,CAAC,mBAAmB;QAC5D,CAAC,CAAC;;;;CAIL;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO,gCAAgC,GAAG,CAAC,WAAW;;;;;;;;;;;;KAYnD,WAAW;;;;EAId,QAAQ;EACR,aAAa;;;;;;;;;;;6BAWc,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,QAAQ,CAAC,OAAO,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC,EAAE;;;;CAIxG,CAAC;AACF,CAAC;AAED,SAAS,QAAQ;IACf,OAAO;;;;;;CAMR,CAAC;AACF,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAgB;IACzC,MAAM,cAAc,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC;QAC5D,CAAC,CAAC;;;;;;;;CAQL;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK;QACtC,CAAC,CAAC;;;;;;;;;;CAUL;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO,+BAA+B,GAAG,CAAC,iBAAiB;;;;;;;;;;;EAW3D,cAAc,GAAG,KAAK,EAAE,CAAC;AAC3B,CAAC;AAED,SAAS,WAAW;IAClB,OAAO;;;;;;;;;;;;;;;;;;;;;CAqBR,CAAC;AACF,CAAC;AAED,gGAAgG;AAChG,MAAM,UAAU,mBAAmB,CAAC,GAAgB;IAClD,OAAO,EAAE,OAAO,EAAE,iCAAiC,EAAE,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAC/G,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,SAAS,CAAC,GAAgB;IACxC,OAAO;QACL,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE;QACrE,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE;QAClE,EAAE,OAAO,EAAE,2BAA2B,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE;QACrF,6EAA6E;QAC7E,8EAA8E;QAC9E,EAAE,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,kBAAkB,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE;QACnG,mBAAmB,CAAC,GAAG,CAAC;KACzB,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED