@chiralkit/cli 0.1.0-alpha.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.
Files changed (198) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +97 -0
  3. package/dist/add.d.ts +4 -0
  4. package/dist/add.js +118 -0
  5. package/dist/add.js.map +1 -0
  6. package/dist/agents/subprocess.d.ts +10 -0
  7. package/dist/agents/subprocess.js +43 -0
  8. package/dist/agents/subprocess.js.map +1 -0
  9. package/dist/automation/index.d.ts +14 -0
  10. package/dist/automation/index.js +129 -0
  11. package/dist/automation/index.js.map +1 -0
  12. package/dist/automation/install.d.ts +19 -0
  13. package/dist/automation/install.js +116 -0
  14. package/dist/automation/install.js.map +1 -0
  15. package/dist/automation/parsers/audit-report.d.ts +2 -0
  16. package/dist/automation/parsers/audit-report.js +42 -0
  17. package/dist/automation/parsers/audit-report.js.map +1 -0
  18. package/dist/automation/parsers/exit-code.d.ts +2 -0
  19. package/dist/automation/parsers/exit-code.js +6 -0
  20. package/dist/automation/parsers/exit-code.js.map +1 -0
  21. package/dist/automation/parsers/index.d.ts +10 -0
  22. package/dist/automation/parsers/index.js +13 -0
  23. package/dist/automation/parsers/index.js.map +1 -0
  24. package/dist/automation/parsers/observer-snapshot.d.ts +2 -0
  25. package/dist/automation/parsers/observer-snapshot.js +30 -0
  26. package/dist/automation/parsers/observer-snapshot.js.map +1 -0
  27. package/dist/automation/parsers/plan-report.d.ts +2 -0
  28. package/dist/automation/parsers/plan-report.js +53 -0
  29. package/dist/automation/parsers/plan-report.js.map +1 -0
  30. package/dist/automation/parsers/refinement-report.d.ts +2 -0
  31. package/dist/automation/parsers/refinement-report.js +149 -0
  32. package/dist/automation/parsers/refinement-report.js.map +1 -0
  33. package/dist/automation/parsers/types.d.ts +7 -0
  34. package/dist/automation/parsers/types.js +2 -0
  35. package/dist/automation/parsers/types.js.map +1 -0
  36. package/dist/automation/run.d.ts +25 -0
  37. package/dist/automation/run.js +68 -0
  38. package/dist/automation/run.js.map +1 -0
  39. package/dist/automation/schema.d.ts +130 -0
  40. package/dist/automation/schema.js +46 -0
  41. package/dist/automation/schema.js.map +1 -0
  42. package/dist/automation/status.d.ts +16 -0
  43. package/dist/automation/status.js +56 -0
  44. package/dist/automation/status.js.map +1 -0
  45. package/dist/automation/verifiers/index.d.ts +7 -0
  46. package/dist/automation/verifiers/index.js +5 -0
  47. package/dist/automation/verifiers/index.js.map +1 -0
  48. package/dist/automation/verifiers/shell.d.ts +5 -0
  49. package/dist/automation/verifiers/shell.js +17 -0
  50. package/dist/automation/verifiers/shell.js.map +1 -0
  51. package/dist/automation/verifiers/types.d.ts +12 -0
  52. package/dist/automation/verifiers/types.js +2 -0
  53. package/dist/automation/verifiers/types.js.map +1 -0
  54. package/dist/backlog/add.d.ts +10 -0
  55. package/dist/backlog/add.js +30 -0
  56. package/dist/backlog/add.js.map +1 -0
  57. package/dist/backlog/index.d.ts +1 -0
  58. package/dist/backlog/index.js +53 -0
  59. package/dist/backlog/index.js.map +1 -0
  60. package/dist/config.d.ts +26 -0
  61. package/dist/config.js +110 -0
  62. package/dist/config.js.map +1 -0
  63. package/dist/detect.d.ts +2 -0
  64. package/dist/detect.js +26 -0
  65. package/dist/detect.js.map +1 -0
  66. package/dist/doctor-invariants.d.ts +6 -0
  67. package/dist/doctor-invariants.js +50 -0
  68. package/dist/doctor-invariants.js.map +1 -0
  69. package/dist/doctor.d.ts +13 -0
  70. package/dist/doctor.js +281 -0
  71. package/dist/doctor.js.map +1 -0
  72. package/dist/generate.d.ts +1 -0
  73. package/dist/generate.js +275 -0
  74. package/dist/generate.js.map +1 -0
  75. package/dist/generator/agent.d.ts +8 -0
  76. package/dist/generator/agent.js +66 -0
  77. package/dist/generator/agent.js.map +1 -0
  78. package/dist/generator/api.d.ts +7 -0
  79. package/dist/generator/api.js +42 -0
  80. package/dist/generator/api.js.map +1 -0
  81. package/dist/generator/config.d.ts +23 -0
  82. package/dist/generator/config.js +121 -0
  83. package/dist/generator/config.js.map +1 -0
  84. package/dist/generator/parse-response.d.ts +5 -0
  85. package/dist/generator/parse-response.js +58 -0
  86. package/dist/generator/parse-response.js.map +1 -0
  87. package/dist/generator/prompt.d.ts +9 -0
  88. package/dist/generator/prompt.js +166 -0
  89. package/dist/generator/prompt.js.map +1 -0
  90. package/dist/generator/request.d.ts +17 -0
  91. package/dist/generator/request.js +15 -0
  92. package/dist/generator/request.js.map +1 -0
  93. package/dist/generators/prompts/stencil.md +45 -0
  94. package/dist/generators/prompts/vue.md +54 -0
  95. package/dist/index.d.ts +2 -0
  96. package/dist/index.js +102 -0
  97. package/dist/index.js.map +1 -0
  98. package/dist/init.d.ts +1 -0
  99. package/dist/init.js +89 -0
  100. package/dist/init.js.map +1 -0
  101. package/dist/installers/context.d.ts +4 -0
  102. package/dist/installers/context.js +120 -0
  103. package/dist/installers/context.js.map +1 -0
  104. package/dist/installers/index.d.ts +7 -0
  105. package/dist/installers/index.js +22 -0
  106. package/dist/installers/index.js.map +1 -0
  107. package/dist/installers/installer.d.ts +12 -0
  108. package/dist/installers/installer.js +30 -0
  109. package/dist/installers/installer.js.map +1 -0
  110. package/dist/installers/stencil/django-template/installer.d.ts +10 -0
  111. package/dist/installers/stencil/django-template/installer.js +77 -0
  112. package/dist/installers/stencil/django-template/installer.js.map +1 -0
  113. package/dist/installers/stencil/react/installer.d.ts +9 -0
  114. package/dist/installers/stencil/react/installer.js +22 -0
  115. package/dist/installers/stencil/react/installer.js.map +1 -0
  116. package/dist/installers/stencil/react/manifest.json +17 -0
  117. package/dist/installers/types.d.ts +24 -0
  118. package/dist/installers/types.js +2 -0
  119. package/dist/installers/types.js.map +1 -0
  120. package/dist/lock.d.ts +25 -0
  121. package/dist/lock.js +86 -0
  122. package/dist/lock.js.map +1 -0
  123. package/dist/manifest.d.ts +1 -0
  124. package/dist/manifest.js +93 -0
  125. package/dist/manifest.js.map +1 -0
  126. package/dist/pm/audit.d.ts +36 -0
  127. package/dist/pm/audit.js +147 -0
  128. package/dist/pm/audit.js.map +1 -0
  129. package/dist/pm/backlog.d.ts +3 -0
  130. package/dist/pm/backlog.js +123 -0
  131. package/dist/pm/backlog.js.map +1 -0
  132. package/dist/pm/brief.d.ts +4 -0
  133. package/dist/pm/brief.js +18 -0
  134. package/dist/pm/brief.js.map +1 -0
  135. package/dist/pm/git.d.ts +3 -0
  136. package/dist/pm/git.js +43 -0
  137. package/dist/pm/git.js.map +1 -0
  138. package/dist/pm/grid.d.ts +8 -0
  139. package/dist/pm/grid.js +16 -0
  140. package/dist/pm/grid.js.map +1 -0
  141. package/dist/pm/index.d.ts +25 -0
  142. package/dist/pm/index.js +199 -0
  143. package/dist/pm/index.js.map +1 -0
  144. package/dist/pm/observe.d.ts +55 -0
  145. package/dist/pm/observe.js +177 -0
  146. package/dist/pm/observe.js.map +1 -0
  147. package/dist/pm/plan.d.ts +54 -0
  148. package/dist/pm/plan.js +151 -0
  149. package/dist/pm/plan.js.map +1 -0
  150. package/dist/pm/refinement-worktree.d.ts +31 -0
  151. package/dist/pm/refinement-worktree.js +160 -0
  152. package/dist/pm/refinement-worktree.js.map +1 -0
  153. package/dist/pm/refinement.d.ts +79 -0
  154. package/dist/pm/refinement.js +326 -0
  155. package/dist/pm/refinement.js.map +1 -0
  156. package/dist/pm/render.d.ts +2 -0
  157. package/dist/pm/render.js +39 -0
  158. package/dist/pm/render.js.map +1 -0
  159. package/dist/pm/roadmap-rings.d.ts +7 -0
  160. package/dist/pm/roadmap-rings.js +31 -0
  161. package/dist/pm/roadmap-rings.js.map +1 -0
  162. package/dist/pm/roadmap.d.ts +2 -0
  163. package/dist/pm/roadmap.js +118 -0
  164. package/dist/pm/roadmap.js.map +1 -0
  165. package/dist/pm/snapshot.d.ts +10 -0
  166. package/dist/pm/snapshot.js +129 -0
  167. package/dist/pm/snapshot.js.map +1 -0
  168. package/dist/pm/types.d.ts +99 -0
  169. package/dist/pm/types.js +29 -0
  170. package/dist/pm/types.js.map +1 -0
  171. package/dist/registry-layout.d.ts +18 -0
  172. package/dist/registry-layout.js +122 -0
  173. package/dist/registry-layout.js.map +1 -0
  174. package/dist/scaffold-registry.d.ts +10 -0
  175. package/dist/scaffold-registry.js +283 -0
  176. package/dist/scaffold-registry.js.map +1 -0
  177. package/dist/scaffold.d.ts +1 -0
  178. package/dist/scaffold.js +32 -0
  179. package/dist/scaffold.js.map +1 -0
  180. package/dist/spec-from-react.d.ts +11 -0
  181. package/dist/spec-from-react.js +522 -0
  182. package/dist/spec-from-react.js.map +1 -0
  183. package/dist/spec-from-stencil.d.ts +7 -0
  184. package/dist/spec-from-stencil.js +275 -0
  185. package/dist/spec-from-stencil.js.map +1 -0
  186. package/dist/spec.d.ts +1 -0
  187. package/dist/spec.js +60 -0
  188. package/dist/spec.js.map +1 -0
  189. package/dist/tokens-map.d.ts +11 -0
  190. package/dist/tokens-map.js +43 -0
  191. package/dist/tokens-map.js.map +1 -0
  192. package/dist/update.d.ts +39 -0
  193. package/dist/update.js +490 -0
  194. package/dist/update.js.map +1 -0
  195. package/dist/workspace-init.d.ts +9 -0
  196. package/dist/workspace-init.js +119 -0
  197. package/dist/workspace-init.js.map +1 -0
  198. package/package.json +53 -0
@@ -0,0 +1,129 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import { join } from "node:path";
3
+ import { discoverKitSources as defaultDiscoverKitSources } from "@chiralkit/kits";
4
+ import { parseBacklog } from "./backlog.js";
5
+ import { observeGit as defaultObserveGit } from "./git.js";
6
+ import { parseRoadmap } from "./roadmap.js";
7
+ import { sidebarRing } from "./grid.js";
8
+ import { PRIORITY_VALUES, STATUS_VALUES } from "./types.js";
9
+ export async function buildProjectSnapshot(options) {
10
+ const readText = options.readText ?? ((path) => readFile(path, "utf8"));
11
+ const diagnostics = [];
12
+ let roadmap = { horizons: [], invalid: [] };
13
+ let backlog = {
14
+ tasks: [], orderedTasks: [], invalid: [],
15
+ byStatus: Object.fromEntries(STATUS_VALUES.map((status) => [status, { count: 0, maxTotal: 0 }])),
16
+ };
17
+ try {
18
+ const parsedRoadmap = parseRoadmap(await readText(join(options.cwd, "ROADMAP.md")));
19
+ roadmap.horizons = parsedRoadmap.horizons;
20
+ roadmap.invalid = parsedRoadmap.invalid;
21
+ for (const invalid of parsedRoadmap.invalid) {
22
+ diagnostics.push({ severity: "error", code: "invalid-roadmap-item", message: invalid.reason, line: invalid.line });
23
+ }
24
+ }
25
+ catch (error) {
26
+ roadmap.error = error instanceof Error ? error.message : String(error);
27
+ diagnostics.push({ severity: "error", code: "source-missing", message: `ROADMAP.md: ${roadmap.error}` });
28
+ }
29
+ try {
30
+ const parsed = parseBacklog(await readText(join(options.cwd, "BACKLOG.md")));
31
+ backlog.tasks = parsed.tasks;
32
+ backlog.invalid = parsed.invalid;
33
+ backlog.orderedTasks = [...parsed.tasks].sort((a, b) => PRIORITY_VALUES.indexOf(a.priority) - PRIORITY_VALUES.indexOf(b.priority) || a.order - b.order);
34
+ for (const task of parsed.tasks) {
35
+ const aggregate = backlog.byStatus[task.status];
36
+ aggregate.count += 1;
37
+ aggregate.maxTotal += sidebarRing(task);
38
+ if (task.time >= 8)
39
+ diagnostics.push({ severity: "warning", code: "review-decomposition", message: `${task.text} (time:${task.time})`, line: task.line });
40
+ if (task.difficulty >= 8)
41
+ diagnostics.push({ severity: "warning", code: "review-decomposition", message: `${task.text} (difficulty:${task.difficulty})`, line: task.line });
42
+ }
43
+ for (const invalid of parsed.invalid) {
44
+ const code = invalid.reason.startsWith("legacy fib tag") ? "legacy-fib-tag" : "invalid-task";
45
+ diagnostics.push({ severity: "error", code, message: invalid.reason, line: invalid.line });
46
+ }
47
+ }
48
+ catch (error) {
49
+ backlog.error = error instanceof Error ? error.message : String(error);
50
+ diagnostics.push({ severity: "error", code: "source-missing", message: `BACKLOG.md: ${backlog.error}` });
51
+ }
52
+ const discoverKits = options.discoverKitSources ?? defaultDiscoverKitSources;
53
+ const kitSources = await discoverKits(join(options.cwd, "kits"));
54
+ for (const source of kitSources) {
55
+ if (source.roadmapPath) {
56
+ try {
57
+ const parsed = parseRoadmap(await readText(source.roadmapPath));
58
+ for (const horizon of parsed.horizons) {
59
+ for (const item of horizon.items) {
60
+ if (!item.kit)
61
+ item.kit = source.name;
62
+ }
63
+ }
64
+ for (const horizon of parsed.horizons) {
65
+ const existing = roadmap.horizons.find((h) => h.key === horizon.key);
66
+ if (existing)
67
+ existing.items.push(...horizon.items);
68
+ else
69
+ roadmap.horizons.push(horizon);
70
+ }
71
+ roadmap.invalid.push(...parsed.invalid);
72
+ for (const invalid of parsed.invalid) {
73
+ diagnostics.push({ severity: "error", code: "invalid-roadmap-item", message: invalid.reason, line: invalid.line });
74
+ }
75
+ }
76
+ catch (error) {
77
+ diagnostics.push({
78
+ severity: "error",
79
+ code: "source-missing",
80
+ message: `${source.roadmapPath}: ${error instanceof Error ? error.message : String(error)}`,
81
+ });
82
+ }
83
+ }
84
+ if (source.backlogPath) {
85
+ try {
86
+ const parsed = parseBacklog(await readText(source.backlogPath));
87
+ for (const task of parsed.tasks) {
88
+ if (!task.kit)
89
+ task.kit = source.name;
90
+ }
91
+ backlog.tasks.push(...parsed.tasks);
92
+ backlog.invalid.push(...parsed.invalid);
93
+ for (const task of parsed.tasks) {
94
+ if (task.time >= 8)
95
+ diagnostics.push({ severity: "warning", code: "review-decomposition", message: `${task.text} (time:${task.time})`, line: task.line });
96
+ if (task.difficulty >= 8)
97
+ diagnostics.push({ severity: "warning", code: "review-decomposition", message: `${task.text} (difficulty:${task.difficulty})`, line: task.line });
98
+ }
99
+ for (const invalid of parsed.invalid) {
100
+ const code = invalid.reason.startsWith("legacy fib tag") ? "legacy-fib-tag" : "invalid-task";
101
+ diagnostics.push({ severity: "error", code, message: invalid.reason, line: invalid.line });
102
+ }
103
+ }
104
+ catch (error) {
105
+ diagnostics.push({
106
+ severity: "error",
107
+ code: "source-missing",
108
+ message: `${source.backlogPath}: ${error instanceof Error ? error.message : String(error)}`,
109
+ });
110
+ }
111
+ }
112
+ }
113
+ // Recompute derived aggregates so they reflect the merged (top-level + per-kit) set.
114
+ backlog.orderedTasks = [...backlog.tasks].sort((a, b) => PRIORITY_VALUES.indexOf(a.priority) - PRIORITY_VALUES.indexOf(b.priority) || a.order - b.order);
115
+ backlog.byStatus = Object.fromEntries(STATUS_VALUES.map((status) => [status, { count: 0, maxTotal: 0 }]));
116
+ for (const task of backlog.tasks) {
117
+ const aggregate = backlog.byStatus[task.status];
118
+ aggregate.count += 1;
119
+ aggregate.maxTotal += sidebarRing(task);
120
+ }
121
+ const git = await (options.observeGit ?? defaultObserveGit)(options.cwd);
122
+ if (!git.available)
123
+ diagnostics.push({ severity: "warning", code: "git-unavailable", message: git.reason ?? "unknown error" });
124
+ return { roadmap, backlog, git, diagnostics };
125
+ }
126
+ export function hasSnapshotErrors(snapshot) {
127
+ return snapshot.diagnostics.some((diagnostic) => diagnostic.severity === "error");
128
+ }
129
+ //# sourceMappingURL=snapshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../src/pm/snapshot.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ export declare const FIB_VALUES: readonly [0, 1, 2, 3, 5, 8, 13];
2
+ export type Fib = (typeof FIB_VALUES)[number];
3
+ export declare const PRIORITY_VALUES: readonly ["P0", "P1", "P2", "P3"];
4
+ export type Priority = (typeof PRIORITY_VALUES)[number];
5
+ export declare const STATUS_VALUES: readonly ["ready", "active", "blocked", "done"];
6
+ export type TaskStatus = (typeof STATUS_VALUES)[number];
7
+ export declare const AREAS: readonly ["web", "workspace", "cli", "ds", "docs", "agents", "generator", "training", "pm", "automations", "ceremonies"];
8
+ export type Area = (typeof AREAS)[number];
9
+ declare const DIAGNOSTIC_CODES: readonly ["invalid-task", "invalid-roadmap-item", "source-missing", "review-decomposition", "git-unavailable", "legacy-fib-tag"];
10
+ export type DiagnosticCode = (typeof DIAGNOSTIC_CODES)[number];
11
+ export interface BacklogTask {
12
+ area: string;
13
+ text: string;
14
+ checked: boolean;
15
+ time: Fib;
16
+ difficulty: Fib;
17
+ priority: Priority;
18
+ status: TaskStatus;
19
+ line: number;
20
+ order: number;
21
+ kit?: string;
22
+ }
23
+ export interface InvalidBacklogTask {
24
+ area: string;
25
+ raw: string;
26
+ line: number;
27
+ reason: string;
28
+ }
29
+ export interface BacklogParseResult {
30
+ tasks: BacklogTask[];
31
+ invalid: InvalidBacklogTask[];
32
+ }
33
+ export declare const ROADMAP_STATUS_VALUES: readonly ["now", "later", "cleanup", "done"];
34
+ export type RoadmapStatus = (typeof ROADMAP_STATUS_VALUES)[number];
35
+ export interface RoadmapItem {
36
+ title: string;
37
+ description: string;
38
+ checked: boolean;
39
+ start: string;
40
+ end: string;
41
+ priority: Priority;
42
+ status: RoadmapStatus;
43
+ area: string;
44
+ line: number;
45
+ kit?: string;
46
+ }
47
+ export interface InvalidRoadmapItem {
48
+ horizonKey: string;
49
+ raw: string;
50
+ line: number;
51
+ reason: string;
52
+ }
53
+ export interface RoadmapHorizon {
54
+ key: string;
55
+ title: string;
56
+ items: RoadmapItem[];
57
+ }
58
+ export interface RoadmapParseResult {
59
+ horizons: RoadmapHorizon[];
60
+ invalid: InvalidRoadmapItem[];
61
+ }
62
+ export interface GitWorktree {
63
+ path: string;
64
+ branch: string;
65
+ current: boolean;
66
+ dirty: boolean;
67
+ }
68
+ export interface GitObservation {
69
+ available: boolean;
70
+ reason?: string;
71
+ worktrees: GitWorktree[];
72
+ }
73
+ export interface Diagnostic {
74
+ severity: "warning" | "error";
75
+ code: DiagnosticCode;
76
+ message: string;
77
+ line?: number;
78
+ }
79
+ export interface StatusAggregate {
80
+ count: number;
81
+ maxTotal: number;
82
+ }
83
+ export interface ProjectSnapshot {
84
+ roadmap: {
85
+ horizons: RoadmapHorizon[];
86
+ invalid: InvalidRoadmapItem[];
87
+ error?: string;
88
+ };
89
+ backlog: {
90
+ tasks: BacklogTask[];
91
+ orderedTasks: BacklogTask[];
92
+ invalid: InvalidBacklogTask[];
93
+ byStatus: Record<TaskStatus, StatusAggregate>;
94
+ error?: string;
95
+ };
96
+ git: GitObservation;
97
+ diagnostics: Diagnostic[];
98
+ }
99
+ export {};
@@ -0,0 +1,29 @@
1
+ export const FIB_VALUES = [0, 1, 2, 3, 5, 8, 13];
2
+ export const PRIORITY_VALUES = ["P0", "P1", "P2", "P3"];
3
+ export const STATUS_VALUES = ["ready", "active", "blocked", "done"];
4
+ // Canonical areas — declared per-task via `[area:<name>]` inline tag.
5
+ // H2 sections in BACKLOG.md are visual only; they normalize into these when
6
+ // no inline tag is present. Adding a new area is intentional (not just a new H2).
7
+ export const AREAS = [
8
+ "web",
9
+ "workspace",
10
+ "cli",
11
+ "ds",
12
+ "docs",
13
+ "agents",
14
+ "generator",
15
+ "training",
16
+ "pm",
17
+ "automations",
18
+ "ceremonies",
19
+ ];
20
+ const DIAGNOSTIC_CODES = [
21
+ "invalid-task",
22
+ "invalid-roadmap-item",
23
+ "source-missing",
24
+ "review-decomposition",
25
+ "git-unavailable",
26
+ "legacy-fib-tag",
27
+ ];
28
+ export const ROADMAP_STATUS_VALUES = ["now", "later", "cleanup", "done"];
29
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/pm/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAU,CAAC;AAG1D,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU,CAAC;AAGjE,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAU,CAAC;AAG7E,sEAAsE;AACtE,4EAA4E;AAC5E,kFAAkF;AAClF,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,KAAK;IACL,WAAW;IACX,KAAK;IACL,IAAI;IACJ,MAAM;IACN,QAAQ;IACR,WAAW;IACX,UAAU;IACV,IAAI;IACJ,aAAa;IACb,YAAY;CACJ,CAAC;AAGX,MAAM,gBAAgB,GAAG;IACvB,cAAc;IACd,sBAAsB;IACtB,gBAAgB;IAChB,sBAAsB;IACtB,iBAAiB;IACjB,gBAAgB;CACR,CAAC;AA4BX,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAU,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { type KitName } from "@chiralkit/kits";
2
+ import { type Level, type ModuleType } from "@chiralkit/registry-schema";
3
+ export declare const MODULE_ENVELOPE_FILENAME: "module.json";
4
+ export declare const TYPE_TO_FAMILY: Record<ModuleType, string>;
5
+ export declare const TYPE_TO_KIT: Record<ModuleType, KitName>;
6
+ export declare function parseTypeFlag(args: string[], onInvalid: (message: string) => never): ModuleType | undefined;
7
+ export declare function parseLevelFlag(args: string[], onInvalid: (message: string) => never): Level | undefined;
8
+ export interface RegistryModuleRefBase {
9
+ family: string;
10
+ name: string;
11
+ moduleDir: string;
12
+ envelopePath: string;
13
+ }
14
+ export interface RegistryModuleRef extends RegistryModuleRefBase {
15
+ kit: KitName;
16
+ }
17
+ export declare function walkRegistryModules(registryRoot: string): Promise<RegistryModuleRefBase[]>;
18
+ export declare function walkAllKitRegistries(kitsRoot: string): Promise<RegistryModuleRef[]>;
@@ -0,0 +1,122 @@
1
+ import { readdir } from "node:fs/promises";
2
+ import { join } from "node:path";
3
+ import { KIT_NAMES } from "@chiralkit/kits";
4
+ import { LEVEL_VALUES, MODULE_TYPES, } from "@chiralkit/registry-schema";
5
+ // The registry envelope filename. Renamed from `component.json` to
6
+ // `module.json` when the registry widened past ui-component-only (see
7
+ // docs/superpowers/plans — Agent Modules Sub-plan A, Task 2). Every CLI
8
+ // walker imports this constant instead of hardcoding the literal.
9
+ export const MODULE_ENVELOPE_FILENAME = "module.json";
10
+ // `chiralkit generate <name> --type <t>` / `scaffold registry --type <t>`
11
+ // map a module's `type` to the top-level registry family folder it lives
12
+ // under: registry/<family>/<name>/module.json.
13
+ export const TYPE_TO_FAMILY = {
14
+ "ui-component": "design-system",
15
+ "ui-layout": "design-system",
16
+ agent: "agents",
17
+ recipe: "recipes",
18
+ config: "configs",
19
+ };
20
+ // Maps a module's `type` to the kit that owns it (products-spiral spec
21
+ // §4.1). recipes/configs still live under the `ui` kit until they
22
+ // graduate to their own kits (would need to pass the chiral-element test
23
+ // in docs/superpowers/specs/2026-08-11-chiral-element-definition.md §2).
24
+ export const TYPE_TO_KIT = {
25
+ "ui-component": "ui",
26
+ "ui-layout": "ui",
27
+ agent: "agents",
28
+ recipe: "ui",
29
+ config: "ui",
30
+ };
31
+ // Parses a `--type <t>` flag out of an argv-shaped array, validated against
32
+ // MODULE_TYPES. Returns undefined when the flag is absent (callers default
33
+ // to 'ui-component' themselves — this helper only owns parsing/validation).
34
+ // Shared by index.ts (add), scaffold.ts (scaffold registry), and
35
+ // generate.ts so the three CLI entry points that accept --type validate it
36
+ // identically instead of drifting.
37
+ export function parseTypeFlag(args, onInvalid) {
38
+ const i = args.indexOf("--type");
39
+ if (i === -1)
40
+ return undefined;
41
+ const value = args[i + 1];
42
+ if (!value || !MODULE_TYPES.includes(value)) {
43
+ onInvalid(`--type must be one of ${MODULE_TYPES.join(", ")}. Got: ${value ?? "(missing)"}`);
44
+ }
45
+ return value;
46
+ }
47
+ // Parses a `--level <n>` flag out of an argv-shaped array, validated against
48
+ // LEVEL_VALUES. Mirrors parseTypeFlag's shape: returns undefined when the
49
+ // flag is absent (level has no cross-type default, so callers that require
50
+ // it must check for undefined themselves and call onInvalid/exit).
51
+ export function parseLevelFlag(args, onInvalid) {
52
+ const idx = args.indexOf("--level");
53
+ if (idx === -1 || idx === args.length - 1)
54
+ return undefined;
55
+ const raw = args[idx + 1];
56
+ const n = Number(raw);
57
+ if (!Number.isInteger(n) || !LEVEL_VALUES.includes(n)) {
58
+ onInvalid(`--level must be one of ${LEVEL_VALUES.join(",")} (got: ${raw})`);
59
+ }
60
+ return n;
61
+ }
62
+ // Walks the two-level registry layout: registry/<family>/<name>/. Tolerates
63
+ // the registry root not existing, and tolerates family folders that don't
64
+ // exist yet (agents/, recipes/, configs/ are placeholders until Task 5
65
+ // populates them) — both simply contribute zero entries rather than
66
+ // throwing. Only directories are considered at either level, and
67
+ // dot-directories (e.g. a stray .gitkeep-only dir) are skipped, matching
68
+ // doctor's original one-level skip logic.
69
+ export async function walkRegistryModules(registryRoot) {
70
+ const out = [];
71
+ let familyEntries;
72
+ try {
73
+ familyEntries = await readdir(registryRoot, { withFileTypes: true });
74
+ }
75
+ catch {
76
+ return out;
77
+ }
78
+ const families = familyEntries
79
+ .filter((e) => e.isDirectory() && !e.name.startsWith("."))
80
+ .map((e) => e.name)
81
+ .sort();
82
+ for (const family of families) {
83
+ const familyPath = join(registryRoot, family);
84
+ let nameEntries;
85
+ try {
86
+ nameEntries = await readdir(familyPath, { withFileTypes: true });
87
+ }
88
+ catch {
89
+ continue; // family dir vanished between readdir calls — skip defensively
90
+ }
91
+ const names = nameEntries
92
+ .filter((e) => e.isDirectory() && !e.name.startsWith("."))
93
+ .map((e) => e.name)
94
+ .sort();
95
+ for (const name of names) {
96
+ const moduleDir = join(familyPath, name);
97
+ out.push({
98
+ family,
99
+ name,
100
+ moduleDir,
101
+ envelopePath: join(moduleDir, MODULE_ENVELOPE_FILENAME),
102
+ });
103
+ }
104
+ }
105
+ return out;
106
+ }
107
+ // Walks all kit registries (kitsRoot/<kit>/registry for each kit in KIT_NAMES),
108
+ // delegating to walkRegistryModules per kit and stamping each returned ref with
109
+ // its kit name. Tolerates missing kit registries (returns zero entries for
110
+ // absent kits, as walkRegistryModules already handles missing roots gracefully).
111
+ export async function walkAllKitRegistries(kitsRoot) {
112
+ const out = [];
113
+ for (const kit of KIT_NAMES) {
114
+ const registryRoot = join(kitsRoot, kit, "registry");
115
+ const refs = await walkRegistryModules(registryRoot);
116
+ for (const ref of refs) {
117
+ out.push({ ...ref, kit });
118
+ }
119
+ }
120
+ return out;
121
+ }
122
+ //# sourceMappingURL=registry-layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry-layout.js","sourceRoot":"","sources":["../src/registry-layout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { Level, ModuleType } from "@chiralkit/registry-schema";
2
+ export interface RunScaffoldRegistryOptions {
3
+ force?: boolean;
4
+ cwd?: string;
5
+ type?: ModuleType;
6
+ level: Level;
7
+ kitsRoot?: string;
8
+ }
9
+ export declare function runScaffoldRegistry(name: string, opts: RunScaffoldRegistryOptions): Promise<void>;
10
+ export declare function flattenTokensUsed(bucketed: Record<string, string[]>): string[];