@slope-dev/slope 1.13.2 → 1.16.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 (212) hide show
  1. package/dist/cli/commands/context.d.ts +2 -0
  2. package/dist/cli/commands/context.d.ts.map +1 -0
  3. package/dist/cli/commands/context.js +190 -0
  4. package/dist/cli/commands/context.js.map +1 -0
  5. package/dist/cli/commands/distill.d.ts.map +1 -1
  6. package/dist/cli/commands/distill.js +13 -4
  7. package/dist/cli/commands/distill.js.map +1 -1
  8. package/dist/cli/commands/docs.d.ts +5 -0
  9. package/dist/cli/commands/docs.d.ts.map +1 -0
  10. package/dist/cli/commands/docs.js +303 -0
  11. package/dist/cli/commands/docs.js.map +1 -0
  12. package/dist/cli/commands/enrich.d.ts +2 -0
  13. package/dist/cli/commands/enrich.d.ts.map +1 -0
  14. package/dist/cli/commands/enrich.js +140 -0
  15. package/dist/cli/commands/enrich.js.map +1 -0
  16. package/dist/cli/commands/guard.d.ts.map +1 -1
  17. package/dist/cli/commands/guard.js +2 -0
  18. package/dist/cli/commands/guard.js.map +1 -1
  19. package/dist/cli/commands/index-cmd.d.ts +2 -0
  20. package/dist/cli/commands/index-cmd.d.ts.map +1 -0
  21. package/dist/cli/commands/index-cmd.js +296 -0
  22. package/dist/cli/commands/index-cmd.js.map +1 -0
  23. package/dist/cli/commands/init.d.ts.map +1 -1
  24. package/dist/cli/commands/init.js +73 -182
  25. package/dist/cli/commands/init.js.map +1 -1
  26. package/dist/cli/commands/initiative.d.ts +2 -0
  27. package/dist/cli/commands/initiative.d.ts.map +1 -0
  28. package/dist/cli/commands/initiative.js +207 -0
  29. package/dist/cli/commands/initiative.js.map +1 -0
  30. package/dist/cli/commands/loop.d.ts +2 -0
  31. package/dist/cli/commands/loop.d.ts.map +1 -0
  32. package/dist/cli/commands/loop.js +388 -0
  33. package/dist/cli/commands/loop.js.map +1 -0
  34. package/dist/cli/commands/prep.d.ts +2 -0
  35. package/dist/cli/commands/prep.d.ts.map +1 -0
  36. package/dist/cli/commands/prep.js +94 -0
  37. package/dist/cli/commands/prep.js.map +1 -0
  38. package/dist/cli/commands/roadmap.d.ts.map +1 -1
  39. package/dist/cli/commands/roadmap.js +134 -46
  40. package/dist/cli/commands/roadmap.js.map +1 -1
  41. package/dist/cli/commands/session.d.ts.map +1 -1
  42. package/dist/cli/commands/session.js +2 -0
  43. package/dist/cli/commands/session.js.map +1 -1
  44. package/dist/cli/commands/store.js +76 -10
  45. package/dist/cli/commands/store.js.map +1 -1
  46. package/dist/cli/commands/vision.d.ts.map +1 -1
  47. package/dist/cli/commands/vision.js +104 -7
  48. package/dist/cli/commands/vision.js.map +1 -1
  49. package/dist/cli/guards/stop-check.d.ts +6 -1
  50. package/dist/cli/guards/stop-check.d.ts.map +1 -1
  51. package/dist/cli/guards/stop-check.js +84 -5
  52. package/dist/cli/guards/stop-check.js.map +1 -1
  53. package/dist/cli/guards/worktree-check.d.ts +14 -0
  54. package/dist/cli/guards/worktree-check.d.ts.map +1 -0
  55. package/dist/cli/guards/worktree-check.js +137 -0
  56. package/dist/cli/guards/worktree-check.js.map +1 -0
  57. package/dist/cli/index.js +56 -0
  58. package/dist/cli/index.js.map +1 -1
  59. package/dist/cli/interactive-init.d.ts +19 -0
  60. package/dist/cli/interactive-init.d.ts.map +1 -0
  61. package/dist/cli/interactive-init.js +132 -0
  62. package/dist/cli/interactive-init.js.map +1 -0
  63. package/dist/cli/loop/analyze.d.ts +8 -0
  64. package/dist/cli/loop/analyze.d.ts.map +1 -0
  65. package/dist/cli/loop/analyze.js +62 -0
  66. package/dist/cli/loop/analyze.js.map +1 -0
  67. package/dist/cli/loop/backlog.d.ts +26 -0
  68. package/dist/cli/loop/backlog.d.ts.map +1 -0
  69. package/dist/cli/loop/backlog.js +95 -0
  70. package/dist/cli/loop/backlog.js.map +1 -0
  71. package/dist/cli/loop/config.d.ts +10 -0
  72. package/dist/cli/loop/config.d.ts.map +1 -0
  73. package/dist/cli/loop/config.js +75 -0
  74. package/dist/cli/loop/config.js.map +1 -0
  75. package/dist/cli/loop/continuous.d.ts +6 -0
  76. package/dist/cli/loop/continuous.d.ts.map +1 -0
  77. package/dist/cli/loop/continuous.js +108 -0
  78. package/dist/cli/loop/continuous.js.map +1 -0
  79. package/dist/cli/loop/executor.d.ts +8 -0
  80. package/dist/cli/loop/executor.d.ts.map +1 -0
  81. package/dist/cli/loop/executor.js +600 -0
  82. package/dist/cli/loop/executor.js.map +1 -0
  83. package/dist/cli/loop/guard-runner.d.ts +14 -0
  84. package/dist/cli/loop/guard-runner.d.ts.map +1 -0
  85. package/dist/cli/loop/guard-runner.js +53 -0
  86. package/dist/cli/loop/guard-runner.js.map +1 -0
  87. package/dist/cli/loop/logger.d.ts +9 -0
  88. package/dist/cli/loop/logger.d.ts.map +1 -0
  89. package/dist/cli/loop/logger.js +37 -0
  90. package/dist/cli/loop/logger.js.map +1 -0
  91. package/dist/cli/loop/model-selector.d.ts +14 -0
  92. package/dist/cli/loop/model-selector.d.ts.map +1 -0
  93. package/dist/cli/loop/model-selector.js +59 -0
  94. package/dist/cli/loop/model-selector.js.map +1 -0
  95. package/dist/cli/loop/parallel.d.ts +6 -0
  96. package/dist/cli/loop/parallel.d.ts.map +1 -0
  97. package/dist/cli/loop/parallel.js +109 -0
  98. package/dist/cli/loop/parallel.js.map +1 -0
  99. package/dist/cli/loop/pr-lifecycle.d.ts +26 -0
  100. package/dist/cli/loop/pr-lifecycle.d.ts.map +1 -0
  101. package/dist/cli/loop/pr-lifecycle.js +244 -0
  102. package/dist/cli/loop/pr-lifecycle.js.map +1 -0
  103. package/dist/cli/loop/types.d.ts +98 -0
  104. package/dist/cli/loop/types.d.ts.map +1 -0
  105. package/dist/cli/loop/types.js +37 -0
  106. package/dist/cli/loop/types.js.map +1 -0
  107. package/dist/cli/loop/worktree.d.ts +30 -0
  108. package/dist/cli/loop/worktree.d.ts.map +1 -0
  109. package/dist/cli/loop/worktree.js +134 -0
  110. package/dist/cli/loop/worktree.js.map +1 -0
  111. package/dist/cli/registry.d.ts.map +1 -1
  112. package/dist/cli/registry.js +9 -0
  113. package/dist/cli/registry.js.map +1 -1
  114. package/dist/core/analyzers/stack.d.ts +2 -0
  115. package/dist/core/analyzers/stack.d.ts.map +1 -1
  116. package/dist/core/analyzers/stack.js +9 -6
  117. package/dist/core/analyzers/stack.js.map +1 -1
  118. package/dist/core/config.d.ts +6 -0
  119. package/dist/core/config.d.ts.map +1 -1
  120. package/dist/core/config.js.map +1 -1
  121. package/dist/core/constants.d.ts +2 -0
  122. package/dist/core/constants.d.ts.map +1 -1
  123. package/dist/core/constants.js +2 -0
  124. package/dist/core/constants.js.map +1 -1
  125. package/dist/core/context.d.ts +20 -0
  126. package/dist/core/context.d.ts.map +1 -0
  127. package/dist/core/context.js +59 -0
  128. package/dist/core/context.js.map +1 -0
  129. package/dist/core/docs.d.ts +50 -0
  130. package/dist/core/docs.d.ts.map +1 -0
  131. package/dist/core/docs.js +67 -0
  132. package/dist/core/docs.js.map +1 -0
  133. package/dist/core/embedding-client.d.ts +11 -0
  134. package/dist/core/embedding-client.d.ts.map +1 -0
  135. package/dist/core/embedding-client.js +92 -0
  136. package/dist/core/embedding-client.js.map +1 -0
  137. package/dist/core/embedding-store.d.ts +44 -0
  138. package/dist/core/embedding-store.d.ts.map +1 -0
  139. package/dist/core/embedding-store.js +7 -0
  140. package/dist/core/embedding-store.js.map +1 -0
  141. package/dist/core/embedding.d.ts +32 -0
  142. package/dist/core/embedding.d.ts.map +1 -0
  143. package/dist/core/embedding.js +114 -0
  144. package/dist/core/embedding.js.map +1 -0
  145. package/dist/core/enrich.d.ts +76 -0
  146. package/dist/core/enrich.d.ts.map +1 -0
  147. package/dist/core/enrich.js +115 -0
  148. package/dist/core/enrich.js.map +1 -0
  149. package/dist/core/generators/roadmap.d.ts +6 -1
  150. package/dist/core/generators/roadmap.d.ts.map +1 -1
  151. package/dist/core/generators/roadmap.js +150 -0
  152. package/dist/core/generators/roadmap.js.map +1 -1
  153. package/dist/core/guard.d.ts +1 -1
  154. package/dist/core/guard.d.ts.map +1 -1
  155. package/dist/core/guard.js +8 -0
  156. package/dist/core/guard.js.map +1 -1
  157. package/dist/core/index.d.ts +27 -5
  158. package/dist/core/index.d.ts.map +1 -1
  159. package/dist/core/index.js +25 -4
  160. package/dist/core/index.js.map +1 -1
  161. package/dist/core/initiative.d.ts +72 -0
  162. package/dist/core/initiative.d.ts.map +1 -0
  163. package/dist/core/initiative.js +421 -0
  164. package/dist/core/initiative.js.map +1 -0
  165. package/dist/core/interview-engine.d.ts +34 -0
  166. package/dist/core/interview-engine.d.ts.map +1 -0
  167. package/dist/core/interview-engine.js +195 -0
  168. package/dist/core/interview-engine.js.map +1 -0
  169. package/dist/core/interview-steps.d.ts +27 -0
  170. package/dist/core/interview-steps.d.ts.map +1 -0
  171. package/dist/core/interview-steps.js +157 -0
  172. package/dist/core/interview-steps.js.map +1 -0
  173. package/dist/core/interview.d.ts +20 -0
  174. package/dist/core/interview.d.ts.map +1 -1
  175. package/dist/core/interview.js +61 -34
  176. package/dist/core/interview.js.map +1 -1
  177. package/dist/core/metaphor-preview.d.ts +34 -0
  178. package/dist/core/metaphor-preview.d.ts.map +1 -0
  179. package/dist/core/metaphor-preview.js +94 -0
  180. package/dist/core/metaphor-preview.js.map +1 -0
  181. package/dist/core/prep.d.ts +88 -0
  182. package/dist/core/prep.d.ts.map +1 -0
  183. package/dist/core/prep.js +302 -0
  184. package/dist/core/prep.js.map +1 -0
  185. package/dist/core/roles.d.ts +3 -0
  186. package/dist/core/roles.d.ts.map +1 -1
  187. package/dist/core/roles.js +36 -0
  188. package/dist/core/roles.js.map +1 -1
  189. package/dist/core/store.d.ts +1 -1
  190. package/dist/core/store.d.ts.map +1 -1
  191. package/dist/core/vision.d.ts +10 -0
  192. package/dist/core/vision.d.ts.map +1 -1
  193. package/dist/core/vision.js +37 -0
  194. package/dist/core/vision.js.map +1 -1
  195. package/dist/mcp/index.d.ts.map +1 -1
  196. package/dist/mcp/index.js +55 -7
  197. package/dist/mcp/index.js.map +1 -1
  198. package/dist/mcp/registry.d.ts +1 -1
  199. package/dist/mcp/registry.d.ts.map +1 -1
  200. package/dist/mcp/registry.js +44 -0
  201. package/dist/mcp/registry.js.map +1 -1
  202. package/dist/mcp/sandbox.d.ts.map +1 -1
  203. package/dist/mcp/sandbox.js +12 -1
  204. package/dist/mcp/sandbox.js.map +1 -1
  205. package/dist/store/index.d.ts +26 -1
  206. package/dist/store/index.d.ts.map +1 -1
  207. package/dist/store/index.js +193 -1
  208. package/dist/store/index.js.map +1 -1
  209. package/dist/store-pg/index.d.ts.map +1 -1
  210. package/dist/store-pg/index.js +25 -0
  211. package/dist/store-pg/index.js.map +1 -1
  212. package/package.json +3 -1
@@ -0,0 +1,2 @@
1
+ export declare function contextCommand(args: string[]): Promise<void>;
2
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/context.ts"],"names":[],"mappings":"AA0GA,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAoFlE"}
@@ -0,0 +1,190 @@
1
+ // slope context — Semantic context search for agents
2
+ // Usage: slope context "query" | --ticket=KEY | --file=PATH
3
+ import { readFileSync, existsSync } from 'node:fs';
4
+ import { loadConfig } from '../../core/config.js';
5
+ import { embed } from '../../core/embedding-client.js';
6
+ import { hasEmbeddingSupport } from '../../core/embedding-store.js';
7
+ import { deduplicateByFile, formatContextForAgent } from '../../core/context.js';
8
+ import { SqliteSlopeStore } from '../../store/index.js';
9
+ function parseArgs(args) {
10
+ let query = null;
11
+ let ticket = null;
12
+ let file = null;
13
+ let top = 5;
14
+ let format = 'snippets';
15
+ let minScore = 0.0;
16
+ for (const arg of args) {
17
+ if (arg.startsWith('--ticket=')) {
18
+ ticket = arg.slice('--ticket='.length);
19
+ }
20
+ else if (arg.startsWith('--file=')) {
21
+ file = arg.slice('--file='.length);
22
+ }
23
+ else if (arg.startsWith('--top=')) {
24
+ top = parseInt(arg.slice('--top='.length), 10) || 5;
25
+ }
26
+ else if (arg.startsWith('--min-score=')) {
27
+ minScore = parseFloat(arg.slice('--min-score='.length)) || 0;
28
+ }
29
+ else if (arg.startsWith('--format=')) {
30
+ const f = arg.slice('--format='.length);
31
+ if (f === 'paths' || f === 'snippets' || f === 'full') {
32
+ format = f;
33
+ }
34
+ }
35
+ else if (!arg.startsWith('-')) {
36
+ query = arg;
37
+ }
38
+ }
39
+ return { query, ticket, file, top, format, minScore };
40
+ }
41
+ function resolveTicketQuery(ticketKey, cwd, config) {
42
+ // Try roadmap first
43
+ const roadmapPath = `${cwd}/${config.roadmapPath ?? 'docs/backlog/roadmap.json'}`;
44
+ if (existsSync(roadmapPath)) {
45
+ try {
46
+ const roadmap = JSON.parse(readFileSync(roadmapPath, 'utf8'));
47
+ for (const sprint of roadmap.sprints ?? []) {
48
+ for (const ticket of sprint.tickets ?? []) {
49
+ if (ticket.key === ticketKey || ticket.id === ticketKey) {
50
+ const parts = [ticket.title ?? '', ticket.description ?? ''];
51
+ if (ticket.modules)
52
+ parts.push(ticket.modules.join(' '));
53
+ return parts.filter(Boolean).join(' ');
54
+ }
55
+ }
56
+ }
57
+ }
58
+ catch {
59
+ // Fall through
60
+ }
61
+ }
62
+ // Try slope-loop backlog
63
+ const backlogPath = `${cwd}/slope-loop/backlog.json`;
64
+ if (existsSync(backlogPath)) {
65
+ try {
66
+ const backlog = JSON.parse(readFileSync(backlogPath, 'utf8'));
67
+ for (const sprint of backlog.sprints ?? []) {
68
+ for (const ticket of sprint.tickets ?? []) {
69
+ if (ticket.key === ticketKey || ticket.id === ticketKey) {
70
+ const parts = [ticket.title ?? '', ticket.description ?? ''];
71
+ if (ticket.modules)
72
+ parts.push(ticket.modules.join(' '));
73
+ return parts.filter(Boolean).join(' ');
74
+ }
75
+ }
76
+ }
77
+ }
78
+ catch {
79
+ // Fall through
80
+ }
81
+ }
82
+ // Fall back to ticket key as query
83
+ return ticketKey;
84
+ }
85
+ function resolveFileQuery(filePath, cwd) {
86
+ const fullPath = `${cwd}/${filePath}`;
87
+ if (existsSync(fullPath)) {
88
+ try {
89
+ const content = readFileSync(fullPath, 'utf8');
90
+ // Use first 500 chars as query
91
+ return content.slice(0, 500);
92
+ }
93
+ catch {
94
+ return filePath;
95
+ }
96
+ }
97
+ return filePath;
98
+ }
99
+ export async function contextCommand(args) {
100
+ const cwd = process.cwd();
101
+ const config = loadConfig(cwd);
102
+ if (args.includes('--help') || args.includes('-h')) {
103
+ printUsage();
104
+ return;
105
+ }
106
+ const flags = parseArgs(args);
107
+ // Determine query text
108
+ let queryText;
109
+ if (flags.ticket) {
110
+ queryText = resolveTicketQuery(flags.ticket, cwd, config);
111
+ }
112
+ else if (flags.file) {
113
+ queryText = resolveFileQuery(flags.file, cwd);
114
+ }
115
+ else if (flags.query) {
116
+ queryText = flags.query;
117
+ }
118
+ else {
119
+ console.error('Error: Provide a search query, --ticket=KEY, or --file=PATH');
120
+ process.exit(1);
121
+ }
122
+ // Resolve embedding config
123
+ const emb = config.embedding;
124
+ if (!emb) {
125
+ console.error('Error: No embedding config in .slope/config.json. Run `slope index` first.');
126
+ process.exit(1);
127
+ }
128
+ const embConfig = {
129
+ endpoint: emb.endpoint,
130
+ model: emb.model,
131
+ dimensions: emb.dimensions,
132
+ apiKey: emb.apiKey,
133
+ };
134
+ // Open store
135
+ const storePath = config.store_path ?? '.slope/slope.db';
136
+ const store = new SqliteSlopeStore(`${cwd}/${storePath}`);
137
+ try {
138
+ if (!hasEmbeddingSupport(store)) {
139
+ throw new Error('Store does not support embeddings. Run `slope index` first.');
140
+ }
141
+ // Check if index exists
142
+ const stats = await store.getEmbeddingStats();
143
+ if (stats.chunkCount === 0) {
144
+ throw new Error('Semantic index is empty. Run `slope index` first.');
145
+ }
146
+ // Embed the query
147
+ const [queryVector] = await embed([queryText], embConfig);
148
+ // Search — fetch more than topK to allow dedup
149
+ const rawResults = await store.searchEmbeddings(queryVector, flags.top * 3);
150
+ // Map to ContextResult
151
+ const contextResults = rawResults.map(r => ({
152
+ filePath: r.filePath,
153
+ chunkIndex: r.chunkIndex,
154
+ snippet: r.chunkText,
155
+ score: r.score,
156
+ }));
157
+ // Deduplicate by file, filter by min score, and limit
158
+ const threshold = flags.minScore > 0 ? flags.minScore : 0.4;
159
+ const deduped = deduplicateByFile(contextResults)
160
+ .filter(r => r.score >= threshold)
161
+ .slice(0, flags.top);
162
+ if (deduped.length === 0) {
163
+ // Output nothing — caller checks for empty
164
+ return;
165
+ }
166
+ // Format and output
167
+ const output = formatContextForAgent(deduped, flags.format, cwd);
168
+ console.log(output);
169
+ }
170
+ finally {
171
+ store.close();
172
+ }
173
+ }
174
+ function printUsage() {
175
+ console.log(`
176
+ slope context — Semantic context search
177
+
178
+ Usage:
179
+ slope context "search query" Free-text semantic search
180
+ slope context --ticket=S46-1 Use ticket title as query
181
+ slope context --file=src/core/store.ts Find files related to a given file
182
+ slope context --top=10 Limit results (default: 5)
183
+ slope context --format=paths Output file paths only
184
+ slope context --format=snippets Output code snippets (default)
185
+ slope context --format=full Output full file contents of matches
186
+
187
+ Requires a built semantic index. Run \`slope index\` first.
188
+ `);
189
+ }
190
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/cli/commands/context.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"distill.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/distill.ts"],"names":[],"mappings":"AAYA,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuElE"}
1
+ {"version":3,"file":"distill.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/distill.ts"],"names":[],"mappings":"AAYA,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgFlE"}
@@ -27,11 +27,20 @@ export async function distillCommand(args) {
27
27
  events = await store.getEventsBySprint(sprintNumber);
28
28
  }
29
29
  else {
30
- // Scan recent sprints for events (1-100 range covers any reasonable project)
30
+ // Get all events across all sprints
31
31
  const allEvents = [];
32
- for (let s = 1; s <= 100; s++) {
33
- const sprintEvents = await store.getEventsBySprint(s);
34
- allEvents.push(...sprintEvents);
32
+ const stats = await store.getStats();
33
+ if (stats.events > 0) {
34
+ // Use a more efficient approach - get events without sprint filtering
35
+ // This avoids the arbitrary 1-100 loop
36
+ for (let s = 1; s <= 200; s++) {
37
+ const sprintEvents = await store.getEventsBySprint(s);
38
+ if (sprintEvents.length === 0) {
39
+ // No more events in higher sprint numbers
40
+ break;
41
+ }
42
+ allEvents.push(...sprintEvents);
43
+ }
35
44
  }
36
45
  events = allEvents;
37
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"distill.js","sourceRoot":"","sources":["../../../src/cli/commands/distill.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"distill.js","sourceRoot":"","sources":["../../../src/cli/commands/distill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,SAAS,SAAS,CAAC,IAAc;IAC/B,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QACpD,IAAI,KAAK;YAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;IACnD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAc;IACjD,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAE7B,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,UAAU,EAAE,CAAC;QACb,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACxE,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClF,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAE/E,MAAM,KAAK,GAAG,MAAM,YAAY,EAAE,CAAC;IAEnC,IAAI,CAAC;QACH,cAAc;QACd,IAAI,MAA2D,CAAC;QAChE,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,GAAG,MAAM,KAAK,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACN,oCAAoC;YACpC,MAAM,SAAS,GAAkB,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC;YACrC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,sEAAsE;gBACtE,uCAAuC;gBACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC9B,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;oBACtD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBAC9B,0CAA0C;wBAC1C,MAAM;oBACR,CAAC;oBACD,SAAS,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;gBAClC,CAAC;YACH,CAAC;YACD,MAAM,GAAG,SAAS,CAAC;QACrB,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;YAC/E,OAAO;QACT,CAAC;QAED,8BAA8B;QAC9B,MAAM,cAAc,GAAG,MAAM,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAEtD,eAAe;QACf,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QAElE,SAAS;QACT,OAAO,CAAC,GAAG,CAAC,wBAAwB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,qBAAqB,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,2BAA2B,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QAEnE,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YAC/B,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;gBAClC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC;gBACjD,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;QAED,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;YACnD,OAAO;QACT,CAAC;QAED,IAAI,IAAI,IAAI,MAAM,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,KAAK,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,QAAQ,eAAe,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;YAC7E,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC5C,CAAC;aAAM,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;QAC1E,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;YAAS,CAAC;QACT,KAAK,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC;AACH,CAAC;AAED,SAAS,UAAU;IACjB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;CAWb,CAAC,CAAC;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { ChangelogSection } from '../../core/index.js';
2
+ import '../../core/metaphors/index.js';
3
+ export declare function parseChangelog(cwd: string, since?: string): ChangelogSection;
4
+ export declare function docsCommand(args: string[]): Promise<void>;
5
+ //# sourceMappingURL=docs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/docs.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAiD,MAAM,qBAAqB,CAAC;AAI3G,OAAO,+BAA+B,CAAC;AA0FvC,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,gBAAgB,CA0D5E;AAiJD,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAoC/D"}
@@ -0,0 +1,303 @@
1
+ // SLOPE CLI — Documentation manifest generation
2
+ // All I/O (git, filesystem) lives here. Core is pure.
3
+ import { execSync } from 'node:child_process';
4
+ import { readFileSync, writeFileSync, existsSync } from 'node:fs';
5
+ import { resolve } from 'node:path';
6
+ import { buildDocsManifest } from '../../core/index.js';
7
+ import { CLI_COMMAND_REGISTRY } from '../registry.js';
8
+ // Ensure metaphors are registered before manifest build
9
+ import '../../core/metaphors/index.js';
10
+ // ── Git helpers ────────────────────────────────────────────────
11
+ function exec(cmd, cwd) {
12
+ try {
13
+ return execSync(cmd, {
14
+ cwd,
15
+ encoding: 'utf8',
16
+ stdio: ['pipe', 'pipe', 'pipe'],
17
+ timeout: 10000,
18
+ }).trim();
19
+ }
20
+ catch {
21
+ return '';
22
+ }
23
+ }
24
+ function getGitSha(cwd) {
25
+ return exec('git rev-parse HEAD', cwd) || 'unknown';
26
+ }
27
+ function getPackageVersion(cwd) {
28
+ try {
29
+ const pkgPath = resolve(cwd, 'package.json');
30
+ const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'));
31
+ return pkg.version || '0.0.0-unknown';
32
+ }
33
+ catch {
34
+ return '0.0.0-unknown';
35
+ }
36
+ }
37
+ // ── Changelog parser ───────────────────────────────────────────
38
+ const CONVENTIONAL_RE = /^(?<type>feat|fix|chore|docs|refactor|test)(?:\((?<scope>[^)]+)\))?(?<breaking>!)?:\s*(?<desc>.+)$/;
39
+ const SLOPE_TICKET_RE = /^S[\w-]+:\s*/;
40
+ function parseCommitType(subject) {
41
+ const match = subject.match(CONVENTIONAL_RE);
42
+ if (match?.groups) {
43
+ return {
44
+ type: match.groups.type,
45
+ scope: match.groups.scope || undefined,
46
+ description: match.groups.desc,
47
+ breaking: match.groups.breaking === '!',
48
+ };
49
+ }
50
+ // SLOPE ticket format: S48-1: description
51
+ const slopeMatch = subject.match(SLOPE_TICKET_RE);
52
+ if (slopeMatch) {
53
+ return {
54
+ type: 'other',
55
+ description: subject,
56
+ breaking: false,
57
+ };
58
+ }
59
+ return { type: 'other', description: subject, breaking: false };
60
+ }
61
+ function getVersionTags(cwd) {
62
+ const raw = exec('git tag --sort=-creatordate', cwd);
63
+ if (!raw)
64
+ return [];
65
+ return raw
66
+ .split('\n')
67
+ .map(t => t.trim())
68
+ .filter(t => /^v?\d+\.\d+/.test(t));
69
+ }
70
+ function getTagDate(cwd, tag) {
71
+ const date = exec(`git log -1 --format=%aI ${tag}`, cwd);
72
+ return date ? date.slice(0, 10) : '';
73
+ }
74
+ /** Parse git log output lines into ChangelogChange[] */
75
+ function parseLogLines(raw) {
76
+ return raw.split('\n').filter(Boolean).map(line => {
77
+ const [hash, ...rest] = line.split('|||');
78
+ const subject = rest.join('|||');
79
+ const change = parseCommitType(subject);
80
+ change.hash = hash;
81
+ return change;
82
+ });
83
+ }
84
+ /** Validate a git ref name to prevent shell injection */
85
+ function isValidGitRef(ref) {
86
+ return /^[\w./@-]+$/.test(ref);
87
+ }
88
+ export function parseChangelog(cwd, since) {
89
+ try {
90
+ // Validate user-supplied ref
91
+ if (since && !isValidGitRef(since)) {
92
+ return { status: 'unavailable', entries: [], reason: `Invalid git ref: ${since}` };
93
+ }
94
+ // Check if we're in a git repo
95
+ const gitCheck = exec('git rev-parse --is-inside-work-tree', cwd);
96
+ if (gitCheck !== 'true') {
97
+ return { status: 'unavailable', entries: [], reason: 'Not a git repository' };
98
+ }
99
+ const tags = getVersionTags(cwd);
100
+ const sinceTag = since || (tags.length > 0 ? tags[0] : undefined);
101
+ // Build git log range
102
+ const range = sinceTag ? `${sinceTag}..HEAD` : '';
103
+ const logCmd = `git log ${range} --format=%H%x7C%x7C%x7C%s --no-merges`.trim();
104
+ const raw = exec(logCmd, cwd);
105
+ const entries = [];
106
+ // Unreleased commits (HEAD..latest tag or all if no tags)
107
+ if (raw) {
108
+ const changes = parseLogLines(raw);
109
+ if (changes.length > 0) {
110
+ entries.push({
111
+ version: 'Unreleased',
112
+ date: new Date().toISOString().slice(0, 10),
113
+ changes,
114
+ });
115
+ }
116
+ }
117
+ // Past version entries from tags
118
+ for (let i = 0; i < tags.length && i < 10; i++) {
119
+ const tag = tags[i];
120
+ const prevTag = tags[i + 1];
121
+ const tagRange = prevTag ? `${prevTag}..${tag}` : tag;
122
+ const tagLog = exec(`git log ${tagRange} --format=%H%x7C%x7C%x7C%s --no-merges`, cwd);
123
+ if (!tagLog)
124
+ continue;
125
+ const changes = parseLogLines(tagLog);
126
+ if (changes.length > 0) {
127
+ entries.push({
128
+ version: tag,
129
+ date: getTagDate(cwd, tag),
130
+ changes,
131
+ });
132
+ }
133
+ }
134
+ return { status: entries.length > 0 ? 'success' : 'partial', entries };
135
+ }
136
+ catch (err) {
137
+ const msg = err instanceof Error ? err.message : String(err);
138
+ return { status: 'unavailable', entries: [], reason: msg };
139
+ }
140
+ }
141
+ // ── Markdown formatter ─────────────────────────────────────────
142
+ function formatChangelogMarkdown(changelog) {
143
+ if (changelog.status === 'unavailable') {
144
+ return `# Changelog\n\nChangelog unavailable: ${changelog.reason || 'unknown error'}\n`;
145
+ }
146
+ const lines = ['# Changelog', ''];
147
+ for (const entry of changelog.entries) {
148
+ lines.push(`## ${entry.version}${entry.date ? ` (${entry.date})` : ''}`, '');
149
+ // Group by type
150
+ const groups = new Map();
151
+ for (const change of entry.changes) {
152
+ const key = change.type;
153
+ if (!groups.has(key))
154
+ groups.set(key, []);
155
+ groups.get(key).push(change);
156
+ }
157
+ const typeLabels = {
158
+ feat: 'Features',
159
+ fix: 'Bug Fixes',
160
+ chore: 'Chores',
161
+ docs: 'Documentation',
162
+ refactor: 'Refactoring',
163
+ test: 'Tests',
164
+ other: 'Other',
165
+ };
166
+ for (const [type, changes] of groups) {
167
+ lines.push(`### ${typeLabels[type] || type}`, '');
168
+ for (const c of changes) {
169
+ const scope = c.scope ? `**${c.scope}:** ` : '';
170
+ const breaking = c.breaking ? ' **BREAKING**' : '';
171
+ lines.push(`- ${scope}${c.description}${breaking}`);
172
+ }
173
+ lines.push('');
174
+ }
175
+ }
176
+ return lines.join('\n');
177
+ }
178
+ // ── Subcommands ────────────────────────────────────────────────
179
+ async function generateSubcommand(args) {
180
+ const cwd = process.cwd();
181
+ const outputArg = args.find(a => a.startsWith('--output='));
182
+ const outputPath = outputArg ? outputArg.slice('--output='.length) : resolve(cwd, '.slope', 'docs.json');
183
+ const pretty = args.includes('--pretty');
184
+ const incremental = args.includes('--incremental');
185
+ const toStdout = args.includes('--stdout');
186
+ const version = getPackageVersion(cwd);
187
+ const gitSha = getGitSha(cwd);
188
+ const changelog = incremental
189
+ ? { status: 'unavailable', entries: [], reason: 'Skipped (--incremental)' }
190
+ : parseChangelog(cwd);
191
+ const manifest = buildDocsManifest({ version, gitSha, changelog, commands: CLI_COMMAND_REGISTRY });
192
+ const json = JSON.stringify(manifest, null, pretty ? 2 : undefined);
193
+ if (toStdout) {
194
+ console.log(json);
195
+ }
196
+ else {
197
+ writeFileSync(outputPath, json + '\n', 'utf8');
198
+ console.log(`Manifest written to ${outputPath}`);
199
+ console.log(` Version: ${manifest.version}`);
200
+ console.log(` Commands: ${manifest.commands.length}`);
201
+ console.log(` Guards: ${manifest.guards.length}`);
202
+ console.log(` Metaphors: ${manifest.metaphors.length}`);
203
+ console.log(` Roles: ${manifest.roles.length}`);
204
+ console.log(` Changelog: ${manifest.changelog.status} (${manifest.changelog.entries.length} entries)`);
205
+ }
206
+ }
207
+ async function changelogSubcommand(args) {
208
+ const cwd = process.cwd();
209
+ const sinceArg = args.find(a => a.startsWith('--since='));
210
+ const since = sinceArg ? sinceArg.slice('--since='.length) : undefined;
211
+ const formatArg = args.find(a => a.startsWith('--format='));
212
+ const format = formatArg ? formatArg.slice('--format='.length) : 'markdown';
213
+ const changelog = parseChangelog(cwd, since);
214
+ if (format === 'json') {
215
+ console.log(JSON.stringify(changelog, null, 2));
216
+ }
217
+ else {
218
+ console.log(formatChangelogMarkdown(changelog));
219
+ }
220
+ }
221
+ async function checkSubcommand(args) {
222
+ const cwd = process.cwd();
223
+ const manifestArg = args.find(a => a.startsWith('--manifest='));
224
+ const manifestPath = manifestArg
225
+ ? manifestArg.slice('--manifest='.length)
226
+ : resolve(cwd, '.slope', 'docs.json');
227
+ if (!existsSync(manifestPath)) {
228
+ console.error(`No manifest found at ${manifestPath}`);
229
+ console.error('Run "slope docs generate" first.');
230
+ process.exit(1);
231
+ }
232
+ let saved;
233
+ try {
234
+ saved = JSON.parse(readFileSync(manifestPath, 'utf8'));
235
+ }
236
+ catch (err) {
237
+ console.error(`Failed to parse manifest: ${err instanceof Error ? err.message : err}`);
238
+ process.exit(1);
239
+ }
240
+ // Generate fresh manifest for comparison
241
+ const version = getPackageVersion(cwd);
242
+ const gitSha = getGitSha(cwd);
243
+ // Skip changelog for check — only compare structural sections
244
+ const changelog = { status: 'unavailable', entries: [], reason: 'Skipped for check' };
245
+ const fresh = buildDocsManifest({ version, gitSha, changelog, commands: CLI_COMMAND_REGISTRY });
246
+ // Compare per-section checksums (skip changelog — it's git-dependent)
247
+ const sectionsToCheck = ['commands', 'guards', 'metaphors', 'roles', 'constants'];
248
+ const drifted = [];
249
+ for (const section of sectionsToCheck) {
250
+ const savedChecksum = saved.checksums?.[section];
251
+ const freshChecksum = fresh.checksums?.[section];
252
+ if (savedChecksum !== freshChecksum) {
253
+ drifted.push(section);
254
+ }
255
+ }
256
+ if (drifted.length === 0) {
257
+ console.log('Manifest is current. No drift detected.');
258
+ }
259
+ else {
260
+ console.error(`Drift detected in ${drifted.length} section(s): ${drifted.join(', ')}`);
261
+ console.error('Run "slope docs generate" to update.');
262
+ process.exit(1);
263
+ }
264
+ }
265
+ // ── Dispatcher ─────────────────────────────────────────────────
266
+ export async function docsCommand(args) {
267
+ const sub = args[0];
268
+ const subArgs = args.slice(1);
269
+ switch (sub) {
270
+ case 'generate':
271
+ return generateSubcommand(subArgs);
272
+ case 'changelog':
273
+ return changelogSubcommand(subArgs);
274
+ case 'check':
275
+ return checkSubcommand(subArgs);
276
+ default:
277
+ console.log(`
278
+ slope docs — Generate documentation manifest and changelog
279
+
280
+ Usage:
281
+ slope docs generate [--output=path] [--pretty] [--incremental] [--stdout]
282
+ slope docs changelog [--since=version] [--format=markdown|json]
283
+ slope docs check [--manifest=path]
284
+
285
+ Subcommands:
286
+ generate Build manifest JSON from registries + git history
287
+ changelog Generate changelog from conventional commits
288
+ check Compare saved manifest against current state (exit 1 on drift)
289
+
290
+ Options:
291
+ --output=path Write manifest to path (default: .slope/docs.json)
292
+ --pretty Pretty-print JSON output
293
+ --incremental Skip changelog generation
294
+ --stdout Write to stdout instead of file
295
+ --since=version Changelog since this version/tag
296
+ --format=FORMAT Changelog output format: markdown (default) or json
297
+ --manifest=path Path to saved manifest for check (default: .slope/docs.json)
298
+ `);
299
+ if (sub)
300
+ process.exit(1);
301
+ }
302
+ }
303
+ //# sourceMappingURL=docs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs.js","sourceRoot":"","sources":["../../../src/cli/commands/docs.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,sDAAsD;AAEtD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEtD,wDAAwD;AACxD,OAAO,+BAA+B,CAAC;AAEvC,kEAAkE;AAElE,SAAS,IAAI,CAAC,GAAW,EAAE,GAAW;IACpC,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,GAAG,EAAE;YACnB,GAAG;YACH,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;YAC/B,OAAO,EAAE,KAAK;SACf,CAAC,CAAC,IAAI,EAAE,CAAC;IACZ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,GAAW;IAC5B,OAAO,IAAI,CAAC,oBAAoB,EAAE,GAAG,CAAC,IAAI,SAAS,CAAC;AACtD,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAW;IACpC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;QACtD,OAAO,GAAG,CAAC,OAAO,IAAI,eAAe,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,eAAe,CAAC;IACzB,CAAC;AACH,CAAC;AAED,kEAAkE;AAElE,MAAM,eAAe,GAAG,oGAAoG,CAAC;AAC7H,MAAM,eAAe,GAAG,cAAc,CAAC;AAEvC,SAAS,eAAe,CAAC,OAAe;IACtC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAC7C,IAAI,KAAK,EAAE,MAAM,EAAE,CAAC;QAClB,OAAO;YACL,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,IAA+B;YAClD,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,SAAS;YACtC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI;YAC9B,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,KAAK,GAAG;SACxC,CAAC;IACJ,CAAC;IAED,0CAA0C;IAC1C,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAClD,IAAI,UAAU,EAAE,CAAC;QACf,OAAO;YACL,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,OAAO;YACpB,QAAQ,EAAE,KAAK;SAChB,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AAClE,CAAC;AAED,SAAS,cAAc,CAAC,GAAW;IACjC,MAAM,GAAG,GAAG,IAAI,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;IACrD,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,OAAO,GAAG;SACP,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SAClB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,UAAU,CAAC,GAAW,EAAE,GAAW;IAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,2BAA2B,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;IACzD,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACvC,CAAC;AAED,wDAAwD;AACxD,SAAS,aAAa,CAAC,GAAW;IAChC,OAAO,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QAChD,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;QACxC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,yDAAyD;AACzD,SAAS,aAAa,CAAC,GAAW;IAChC,OAAO,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAW,EAAE,KAAc;IACxD,IAAI,CAAC;QACH,6BAA6B;QAC7B,IAAI,KAAK,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,oBAAoB,KAAK,EAAE,EAAE,CAAC;QACrF,CAAC;QAED,+BAA+B;QAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,qCAAqC,EAAE,GAAG,CAAC,CAAC;QAClE,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;YACxB,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC;QAChF,CAAC;QAED,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,QAAQ,GAAG,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAElE,sBAAsB;QACtB,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,MAAM,MAAM,GAAG,WAAW,KAAK,wCAAwC,CAAC,IAAI,EAAE,CAAC;QAC/E,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAE9B,MAAM,OAAO,GAAqB,EAAE,CAAC;QAErC,0DAA0D;QAC1D,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;YACnC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,OAAO,CAAC,IAAI,CAAC;oBACX,OAAO,EAAE,YAAY;oBACrB,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;oBAC3C,OAAO;iBACR,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,iCAAiC;QACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5B,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;YACtD,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,QAAQ,wCAAwC,EAAE,GAAG,CAAC,CAAC;YACtF,IAAI,CAAC,MAAM;gBAAE,SAAS;YAEtB,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;YACtC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,OAAO,CAAC,IAAI,CAAC;oBACX,OAAO,EAAE,GAAG;oBACZ,IAAI,EAAE,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;oBAC1B,OAAO;iBACR,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC;IACzE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IAC7D,CAAC;AACH,CAAC;AAED,kEAAkE;AAElE,SAAS,uBAAuB,CAAC,SAA2B;IAC1D,IAAI,SAAS,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;QACvC,OAAO,yCAAyC,SAAS,CAAC,MAAM,IAAI,eAAe,IAAI,CAAC;IAC1F,CAAC;IAED,MAAM,KAAK,GAAG,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;IAClC,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAE7E,gBAAgB;QAChB,MAAM,MAAM,GAAG,IAAI,GAAG,EAA6B,CAAC;QACpD,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YACnC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC;YACxB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC1C,MAAM,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC;QAED,MAAM,UAAU,GAA2B;YACzC,IAAI,EAAE,UAAU;YAChB,GAAG,EAAE,WAAW;YAChB,KAAK,EAAE,QAAQ;YACf,IAAI,EAAE,eAAe;YACrB,QAAQ,EAAE,aAAa;YACvB,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,OAAO;SACf,CAAC;QAEF,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,EAAE,CAAC;YACrC,KAAK,CAAC,IAAI,CAAC,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YAClD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACxB,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChD,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnD,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,WAAW,GAAG,QAAQ,EAAE,CAAC,CAAC;YACtD,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,kEAAkE;AAElE,KAAK,UAAU,kBAAkB,CAAC,IAAc;IAC9C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IACzG,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IACzC,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAE3C,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAC9B,MAAM,SAAS,GAAqB,WAAW;QAC7C,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,yBAAyB,EAAE;QAC3E,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IAExB,MAAM,QAAQ,GAAG,iBAAiB,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,oBAAoB,EAAE,CAAC,CAAC;IACnG,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAEpE,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;SAAM,CAAC;QACN,aAAa,CAAC,UAAU,EAAE,IAAI,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,uBAAuB,UAAU,EAAE,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,cAAc,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,eAAe,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,aAAa,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,gBAAgB,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,YAAY,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,gBAAgB,QAAQ,CAAC,SAAS,CAAC,MAAM,KAAK,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,WAAW,CAAC,CAAC;IAC1G,CAAC;AACH,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,IAAc;IAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACvE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;IAE5E,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAE7C,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC,CAAC;IAClD,CAAC;AACH,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,IAAc;IAC3C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;IAChE,MAAM,YAAY,GAAG,WAAW;QAC9B,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC;QACzC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IAExC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,KAAK,CAAC,wBAAwB,YAAY,EAAE,CAAC,CAAC;QACtD,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,KAAmB,CAAC;IACxB,IAAI,CAAC;QACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;IACzD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,6BAA6B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QACvF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,yCAAyC;IACzC,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAC9B,8DAA8D;IAC9D,MAAM,SAAS,GAAqB,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;IACxG,MAAM,KAAK,GAAG,iBAAiB,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,oBAAoB,EAAE,CAAC,CAAC;IAEhG,sEAAsE;IACtE,MAAM,eAAe,GAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,CAAU,CAAC;IAC3F,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;QACtC,MAAM,aAAa,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC;QACjD,MAAM,aAAa,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,aAAa,KAAK,aAAa,EAAE,CAAC;YACpC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;IACzD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,qBAAqB,OAAO,CAAC,MAAM,gBAAgB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvF,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;QACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,kEAAkE;AAElE,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAc;IAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE9B,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,UAAU;YACb,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACrC,KAAK,WAAW;YACd,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC;QACtC,KAAK,OAAO;YACV,OAAO,eAAe,CAAC,OAAO,CAAC,CAAC;QAClC;YACE,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;CAqBjB,CAAC,CAAC;YACG,IAAI,GAAG;gBAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function enrichCommand(args: string[]): Promise<void>;
2
+ //# sourceMappingURL=enrich.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enrich.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/enrich.ts"],"names":[],"mappings":"AAuCA,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA6GjE"}