@kynetic-ai/spec 0.1.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 (278) hide show
  1. package/README.md +263 -0
  2. package/dist/acp/client.d.ts +159 -0
  3. package/dist/acp/client.d.ts.map +1 -0
  4. package/dist/acp/client.js +255 -0
  5. package/dist/acp/client.js.map +1 -0
  6. package/dist/acp/framing.d.ts +119 -0
  7. package/dist/acp/framing.d.ts.map +1 -0
  8. package/dist/acp/framing.js +302 -0
  9. package/dist/acp/framing.js.map +1 -0
  10. package/dist/acp/index.d.ts +14 -0
  11. package/dist/acp/index.d.ts.map +1 -0
  12. package/dist/acp/index.js +13 -0
  13. package/dist/acp/index.js.map +1 -0
  14. package/dist/acp/types.d.ts +89 -0
  15. package/dist/acp/types.d.ts.map +1 -0
  16. package/dist/acp/types.js +99 -0
  17. package/dist/acp/types.js.map +1 -0
  18. package/dist/agents/adapters.d.ts +55 -0
  19. package/dist/agents/adapters.d.ts.map +1 -0
  20. package/dist/agents/adapters.js +84 -0
  21. package/dist/agents/adapters.js.map +1 -0
  22. package/dist/agents/index.d.ts +8 -0
  23. package/dist/agents/index.d.ts.map +1 -0
  24. package/dist/agents/index.js +10 -0
  25. package/dist/agents/index.js.map +1 -0
  26. package/dist/agents/spawner.d.ts +53 -0
  27. package/dist/agents/spawner.d.ts.map +1 -0
  28. package/dist/agents/spawner.js +83 -0
  29. package/dist/agents/spawner.js.map +1 -0
  30. package/dist/cli/batch.d.ts +82 -0
  31. package/dist/cli/batch.d.ts.map +1 -0
  32. package/dist/cli/batch.js +162 -0
  33. package/dist/cli/batch.js.map +1 -0
  34. package/dist/cli/commands/clone-for-testing.d.ts +6 -0
  35. package/dist/cli/commands/clone-for-testing.d.ts.map +1 -0
  36. package/dist/cli/commands/clone-for-testing.js +176 -0
  37. package/dist/cli/commands/clone-for-testing.js.map +1 -0
  38. package/dist/cli/commands/derive.d.ts +6 -0
  39. package/dist/cli/commands/derive.d.ts.map +1 -0
  40. package/dist/cli/commands/derive.js +450 -0
  41. package/dist/cli/commands/derive.js.map +1 -0
  42. package/dist/cli/commands/help.d.ts +6 -0
  43. package/dist/cli/commands/help.d.ts.map +1 -0
  44. package/dist/cli/commands/help.js +196 -0
  45. package/dist/cli/commands/help.js.map +1 -0
  46. package/dist/cli/commands/inbox.d.ts +6 -0
  47. package/dist/cli/commands/inbox.d.ts.map +1 -0
  48. package/dist/cli/commands/inbox.js +235 -0
  49. package/dist/cli/commands/inbox.js.map +1 -0
  50. package/dist/cli/commands/index.d.ts +20 -0
  51. package/dist/cli/commands/index.d.ts.map +1 -0
  52. package/dist/cli/commands/index.js +21 -0
  53. package/dist/cli/commands/index.js.map +1 -0
  54. package/dist/cli/commands/init.d.ts +6 -0
  55. package/dist/cli/commands/init.d.ts.map +1 -0
  56. package/dist/cli/commands/init.js +245 -0
  57. package/dist/cli/commands/init.js.map +1 -0
  58. package/dist/cli/commands/item.d.ts +6 -0
  59. package/dist/cli/commands/item.d.ts.map +1 -0
  60. package/dist/cli/commands/item.js +1311 -0
  61. package/dist/cli/commands/item.js.map +1 -0
  62. package/dist/cli/commands/link.d.ts +6 -0
  63. package/dist/cli/commands/link.d.ts.map +1 -0
  64. package/dist/cli/commands/link.js +288 -0
  65. package/dist/cli/commands/link.js.map +1 -0
  66. package/dist/cli/commands/log.d.ts +16 -0
  67. package/dist/cli/commands/log.d.ts.map +1 -0
  68. package/dist/cli/commands/log.js +291 -0
  69. package/dist/cli/commands/log.js.map +1 -0
  70. package/dist/cli/commands/meta.d.ts +15 -0
  71. package/dist/cli/commands/meta.d.ts.map +1 -0
  72. package/dist/cli/commands/meta.js +1378 -0
  73. package/dist/cli/commands/meta.js.map +1 -0
  74. package/dist/cli/commands/module.d.ts +6 -0
  75. package/dist/cli/commands/module.d.ts.map +1 -0
  76. package/dist/cli/commands/module.js +102 -0
  77. package/dist/cli/commands/module.js.map +1 -0
  78. package/dist/cli/commands/ralph.d.ts +9 -0
  79. package/dist/cli/commands/ralph.d.ts.map +1 -0
  80. package/dist/cli/commands/ralph.js +465 -0
  81. package/dist/cli/commands/ralph.js.map +1 -0
  82. package/dist/cli/commands/search.d.ts +6 -0
  83. package/dist/cli/commands/search.d.ts.map +1 -0
  84. package/dist/cli/commands/search.js +134 -0
  85. package/dist/cli/commands/search.js.map +1 -0
  86. package/dist/cli/commands/session.d.ts +164 -0
  87. package/dist/cli/commands/session.d.ts.map +1 -0
  88. package/dist/cli/commands/session.js +745 -0
  89. package/dist/cli/commands/session.js.map +1 -0
  90. package/dist/cli/commands/setup.d.ts +26 -0
  91. package/dist/cli/commands/setup.d.ts.map +1 -0
  92. package/dist/cli/commands/setup.js +586 -0
  93. package/dist/cli/commands/setup.js.map +1 -0
  94. package/dist/cli/commands/shadow.d.ts +6 -0
  95. package/dist/cli/commands/shadow.d.ts.map +1 -0
  96. package/dist/cli/commands/shadow.js +299 -0
  97. package/dist/cli/commands/shadow.js.map +1 -0
  98. package/dist/cli/commands/task.d.ts +6 -0
  99. package/dist/cli/commands/task.d.ts.map +1 -0
  100. package/dist/cli/commands/task.js +1514 -0
  101. package/dist/cli/commands/task.js.map +1 -0
  102. package/dist/cli/commands/tasks.d.ts +6 -0
  103. package/dist/cli/commands/tasks.d.ts.map +1 -0
  104. package/dist/cli/commands/tasks.js +347 -0
  105. package/dist/cli/commands/tasks.js.map +1 -0
  106. package/dist/cli/commands/trait.d.ts +10 -0
  107. package/dist/cli/commands/trait.d.ts.map +1 -0
  108. package/dist/cli/commands/trait.js +295 -0
  109. package/dist/cli/commands/trait.js.map +1 -0
  110. package/dist/cli/commands/validate.d.ts +6 -0
  111. package/dist/cli/commands/validate.d.ts.map +1 -0
  112. package/dist/cli/commands/validate.js +626 -0
  113. package/dist/cli/commands/validate.js.map +1 -0
  114. package/dist/cli/exit-codes.d.ts +62 -0
  115. package/dist/cli/exit-codes.d.ts.map +1 -0
  116. package/dist/cli/exit-codes.js +65 -0
  117. package/dist/cli/exit-codes.js.map +1 -0
  118. package/dist/cli/help/content.d.ts +35 -0
  119. package/dist/cli/help/content.d.ts.map +1 -0
  120. package/dist/cli/help/content.js +312 -0
  121. package/dist/cli/help/content.js.map +1 -0
  122. package/dist/cli/index.d.ts +5 -0
  123. package/dist/cli/index.d.ts.map +1 -0
  124. package/dist/cli/index.js +85 -0
  125. package/dist/cli/index.js.map +1 -0
  126. package/dist/cli/introspection.d.ts +87 -0
  127. package/dist/cli/introspection.d.ts.map +1 -0
  128. package/dist/cli/introspection.js +127 -0
  129. package/dist/cli/introspection.js.map +1 -0
  130. package/dist/cli/output.d.ts +56 -0
  131. package/dist/cli/output.d.ts.map +1 -0
  132. package/dist/cli/output.js +467 -0
  133. package/dist/cli/output.js.map +1 -0
  134. package/dist/cli/suggest.d.ts +16 -0
  135. package/dist/cli/suggest.d.ts.map +1 -0
  136. package/dist/cli/suggest.js +72 -0
  137. package/dist/cli/suggest.js.map +1 -0
  138. package/dist/index.d.ts +3 -0
  139. package/dist/index.d.ts.map +1 -0
  140. package/dist/index.js +5 -0
  141. package/dist/index.js.map +1 -0
  142. package/dist/parser/alignment.d.ts +113 -0
  143. package/dist/parser/alignment.d.ts.map +1 -0
  144. package/dist/parser/alignment.js +261 -0
  145. package/dist/parser/alignment.js.map +1 -0
  146. package/dist/parser/assess.d.ts +81 -0
  147. package/dist/parser/assess.d.ts.map +1 -0
  148. package/dist/parser/assess.js +197 -0
  149. package/dist/parser/assess.js.map +1 -0
  150. package/dist/parser/convention-validation.d.ts +48 -0
  151. package/dist/parser/convention-validation.d.ts.map +1 -0
  152. package/dist/parser/convention-validation.js +167 -0
  153. package/dist/parser/convention-validation.js.map +1 -0
  154. package/dist/parser/fix.d.ts +38 -0
  155. package/dist/parser/fix.d.ts.map +1 -0
  156. package/dist/parser/fix.js +185 -0
  157. package/dist/parser/fix.js.map +1 -0
  158. package/dist/parser/index.d.ts +12 -0
  159. package/dist/parser/index.d.ts.map +1 -0
  160. package/dist/parser/index.js +13 -0
  161. package/dist/parser/index.js.map +1 -0
  162. package/dist/parser/items.d.ts +138 -0
  163. package/dist/parser/items.d.ts.map +1 -0
  164. package/dist/parser/items.js +321 -0
  165. package/dist/parser/items.js.map +1 -0
  166. package/dist/parser/meta.d.ts +120 -0
  167. package/dist/parser/meta.d.ts.map +1 -0
  168. package/dist/parser/meta.js +441 -0
  169. package/dist/parser/meta.js.map +1 -0
  170. package/dist/parser/refs.d.ts +185 -0
  171. package/dist/parser/refs.d.ts.map +1 -0
  172. package/dist/parser/refs.js +404 -0
  173. package/dist/parser/refs.js.map +1 -0
  174. package/dist/parser/shadow.d.ts +253 -0
  175. package/dist/parser/shadow.d.ts.map +1 -0
  176. package/dist/parser/shadow.js +1053 -0
  177. package/dist/parser/shadow.js.map +1 -0
  178. package/dist/parser/traits.d.ts +72 -0
  179. package/dist/parser/traits.d.ts.map +1 -0
  180. package/dist/parser/traits.js +120 -0
  181. package/dist/parser/traits.js.map +1 -0
  182. package/dist/parser/validate.d.ts +89 -0
  183. package/dist/parser/validate.d.ts.map +1 -0
  184. package/dist/parser/validate.js +817 -0
  185. package/dist/parser/validate.js.map +1 -0
  186. package/dist/parser/yaml.d.ts +326 -0
  187. package/dist/parser/yaml.d.ts.map +1 -0
  188. package/dist/parser/yaml.js +1383 -0
  189. package/dist/parser/yaml.js.map +1 -0
  190. package/dist/ralph/cli-renderer.d.ts +20 -0
  191. package/dist/ralph/cli-renderer.d.ts.map +1 -0
  192. package/dist/ralph/cli-renderer.js +179 -0
  193. package/dist/ralph/cli-renderer.js.map +1 -0
  194. package/dist/ralph/events.d.ts +65 -0
  195. package/dist/ralph/events.d.ts.map +1 -0
  196. package/dist/ralph/events.js +397 -0
  197. package/dist/ralph/events.js.map +1 -0
  198. package/dist/ralph/index.d.ts +8 -0
  199. package/dist/ralph/index.d.ts.map +1 -0
  200. package/dist/ralph/index.js +10 -0
  201. package/dist/ralph/index.js.map +1 -0
  202. package/dist/schema/common.d.ts +46 -0
  203. package/dist/schema/common.d.ts.map +1 -0
  204. package/dist/schema/common.js +71 -0
  205. package/dist/schema/common.js.map +1 -0
  206. package/dist/schema/inbox.d.ts +90 -0
  207. package/dist/schema/inbox.d.ts.map +1 -0
  208. package/dist/schema/inbox.js +30 -0
  209. package/dist/schema/inbox.js.map +1 -0
  210. package/dist/schema/index.d.ts +6 -0
  211. package/dist/schema/index.d.ts.map +1 -0
  212. package/dist/schema/index.js +7 -0
  213. package/dist/schema/index.js.map +1 -0
  214. package/dist/schema/meta.d.ts +762 -0
  215. package/dist/schema/meta.d.ts.map +1 -0
  216. package/dist/schema/meta.js +144 -0
  217. package/dist/schema/meta.js.map +1 -0
  218. package/dist/schema/spec.d.ts +912 -0
  219. package/dist/schema/spec.d.ts.map +1 -0
  220. package/dist/schema/spec.js +104 -0
  221. package/dist/schema/spec.js.map +1 -0
  222. package/dist/schema/task.d.ts +664 -0
  223. package/dist/schema/task.d.ts.map +1 -0
  224. package/dist/schema/task.js +130 -0
  225. package/dist/schema/task.js.map +1 -0
  226. package/dist/sessions/index.d.ts +11 -0
  227. package/dist/sessions/index.d.ts.map +1 -0
  228. package/dist/sessions/index.js +13 -0
  229. package/dist/sessions/index.js.map +1 -0
  230. package/dist/sessions/store.d.ts +144 -0
  231. package/dist/sessions/store.d.ts.map +1 -0
  232. package/dist/sessions/store.js +325 -0
  233. package/dist/sessions/store.js.map +1 -0
  234. package/dist/sessions/types.d.ts +157 -0
  235. package/dist/sessions/types.d.ts.map +1 -0
  236. package/dist/sessions/types.js +90 -0
  237. package/dist/sessions/types.js.map +1 -0
  238. package/dist/strings/errors.d.ts +420 -0
  239. package/dist/strings/errors.d.ts.map +1 -0
  240. package/dist/strings/errors.js +282 -0
  241. package/dist/strings/errors.js.map +1 -0
  242. package/dist/strings/guidance.d.ts +65 -0
  243. package/dist/strings/guidance.d.ts.map +1 -0
  244. package/dist/strings/guidance.js +66 -0
  245. package/dist/strings/guidance.js.map +1 -0
  246. package/dist/strings/index.d.ts +12 -0
  247. package/dist/strings/index.d.ts.map +1 -0
  248. package/dist/strings/index.js +12 -0
  249. package/dist/strings/index.js.map +1 -0
  250. package/dist/strings/labels.d.ts +74 -0
  251. package/dist/strings/labels.d.ts.map +1 -0
  252. package/dist/strings/labels.js +75 -0
  253. package/dist/strings/labels.js.map +1 -0
  254. package/dist/strings/validation.d.ts +126 -0
  255. package/dist/strings/validation.d.ts.map +1 -0
  256. package/dist/strings/validation.js +135 -0
  257. package/dist/strings/validation.js.map +1 -0
  258. package/dist/utils/commit.d.ts +23 -0
  259. package/dist/utils/commit.d.ts.map +1 -0
  260. package/dist/utils/commit.js +67 -0
  261. package/dist/utils/commit.js.map +1 -0
  262. package/dist/utils/git.d.ts +57 -0
  263. package/dist/utils/git.d.ts.map +1 -0
  264. package/dist/utils/git.js +192 -0
  265. package/dist/utils/git.js.map +1 -0
  266. package/dist/utils/grep.d.ts +28 -0
  267. package/dist/utils/grep.d.ts.map +1 -0
  268. package/dist/utils/grep.js +86 -0
  269. package/dist/utils/grep.js.map +1 -0
  270. package/dist/utils/index.d.ts +8 -0
  271. package/dist/utils/index.d.ts.map +1 -0
  272. package/dist/utils/index.js +6 -0
  273. package/dist/utils/index.js.map +1 -0
  274. package/dist/utils/time.d.ts +18 -0
  275. package/dist/utils/time.d.ts.map +1 -0
  276. package/dist/utils/time.js +61 -0
  277. package/dist/utils/time.js.map +1 -0
  278. package/package.json +62 -0
@@ -0,0 +1,291 @@
1
+ /**
2
+ * Log command - search git history by spec/task reference
3
+ */
4
+ import { execSync } from 'node:child_process';
5
+ import chalk from 'chalk';
6
+ import { initContext, loadAllTasks, loadAllItems, ReferenceIndex, } from '../../parser/index.js';
7
+ import { output, error, info } from '../output.js';
8
+ import { isGitRepo } from '../../utils/git.js';
9
+ import { errors } from '../../strings/index.js';
10
+ import { EXIT_CODES } from '../exit-codes.js';
11
+ /**
12
+ * Check if a git repo has any commits (checks both current branch and shadow)
13
+ */
14
+ function hasCommits(cwd, checkShadow = true) {
15
+ try {
16
+ // Check current branch
17
+ execSync('git rev-parse HEAD', {
18
+ cwd,
19
+ encoding: 'utf-8',
20
+ stdio: ['pipe', 'pipe', 'pipe'],
21
+ });
22
+ return true;
23
+ }
24
+ catch {
25
+ // AC: @spec-log-empty-repo ac-6
26
+ // If main has no commits, check shadow branch
27
+ if (checkShadow) {
28
+ try {
29
+ execSync('git rev-parse kspec-meta', {
30
+ cwd,
31
+ encoding: 'utf-8',
32
+ stdio: ['pipe', 'pipe', 'pipe'],
33
+ });
34
+ return true;
35
+ }
36
+ catch {
37
+ return false;
38
+ }
39
+ }
40
+ return false;
41
+ }
42
+ }
43
+ /**
44
+ * Search git log for commits with trailer pattern
45
+ */
46
+ function searchCommits(pattern, options) {
47
+ const { limit, since, cwd, passthroughArgs = [], branch } = options;
48
+ // Escape special regex characters in pattern except @
49
+ const escapedPattern = pattern.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
50
+ let cmd = `git log ${branch || ''}--grep="${escapedPattern}" --format="%H|%aI|%s|%an" -n ${limit}`;
51
+ if (since) {
52
+ cmd += ` --since="${since}"`;
53
+ }
54
+ // Add passthrough args if provided
55
+ if (passthroughArgs.length > 0) {
56
+ cmd += ` ${passthroughArgs.join(' ')}`;
57
+ }
58
+ try {
59
+ const result = execSync(cmd, {
60
+ cwd,
61
+ encoding: 'utf-8',
62
+ stdio: ['pipe', 'pipe', 'pipe'],
63
+ }).trim();
64
+ if (!result)
65
+ return [];
66
+ return result.split('\n').map((line) => {
67
+ const [fullHash, dateStr, subject, author] = line.split('|');
68
+ return {
69
+ hash: fullHash.slice(0, 7),
70
+ fullHash,
71
+ date: new Date(dateStr),
72
+ subject,
73
+ author,
74
+ };
75
+ });
76
+ }
77
+ catch (err) {
78
+ // Check for empty repo errors
79
+ if (err.stderr) {
80
+ const stderr = err.stderr.toString();
81
+ // Detect "does not have any commits yet" or "bad revision" (empty repo)
82
+ if (stderr.includes('does not have any commits yet') || stderr.includes('bad revision')) {
83
+ // Return empty array - caller will handle empty repo message
84
+ return [];
85
+ }
86
+ // Other git errors should still be shown
87
+ error(stderr);
88
+ process.exit(err.status || 1);
89
+ }
90
+ return [];
91
+ }
92
+ }
93
+ /**
94
+ * Search git log with passthrough args (raw output)
95
+ */
96
+ function searchCommitsRaw(patterns, options) {
97
+ const { limit, since, cwd, passthroughArgs } = options;
98
+ // Build grep args for all patterns
99
+ const grepArgs = patterns.map((p) => {
100
+ const escaped = p.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
101
+ return `--grep="${escaped}"`;
102
+ });
103
+ let cmd = `git log ${grepArgs.join(' ')} -n ${limit}`;
104
+ if (since) {
105
+ cmd += ` --since="${since}"`;
106
+ }
107
+ // Add passthrough args
108
+ cmd += ` ${passthroughArgs.join(' ')}`;
109
+ try {
110
+ return execSync(cmd, {
111
+ cwd,
112
+ encoding: 'utf-8',
113
+ stdio: ['pipe', 'pipe', 'pipe'],
114
+ });
115
+ }
116
+ catch (err) {
117
+ // Check for empty repo errors
118
+ if (err.stderr) {
119
+ const stderr = err.stderr.toString();
120
+ // Detect "does not have any commits yet" or "bad revision" (empty repo)
121
+ if (stderr.includes('does not have any commits yet') || stderr.includes('bad revision')) {
122
+ // Return empty string - caller will handle empty repo message
123
+ return '';
124
+ }
125
+ // Other git errors should still be shown
126
+ error(stderr);
127
+ process.exit(err.status || 1);
128
+ }
129
+ return '';
130
+ }
131
+ }
132
+ /**
133
+ * Register the 'log' command
134
+ */
135
+ export function registerLogCommand(program) {
136
+ program
137
+ .command('log [ref]')
138
+ .description('Search git history for commits related to a spec or task')
139
+ .option('--spec <ref>', 'Search for commits with Spec: trailer')
140
+ .option('--task <ref>', 'Search for commits with Task: trailer')
141
+ .option('-n, --limit <n>', 'Limit results', '10')
142
+ .option('--oneline', 'Compact output format')
143
+ .option('--since <time>', 'Only commits after date')
144
+ .allowUnknownOption()
145
+ .action(async (ref, options) => {
146
+ try {
147
+ const ctx = await initContext();
148
+ if (!isGitRepo(ctx.rootDir)) {
149
+ error(errors.git.notGitRepo);
150
+ process.exit(EXIT_CODES.ERROR);
151
+ }
152
+ // Parse passthrough args (everything after --)
153
+ const dashDashIndex = process.argv.indexOf('--');
154
+ const passthroughArgs = dashDashIndex !== -1 ? process.argv.slice(dashDashIndex + 1) : [];
155
+ // Determine what to search for
156
+ const tasks = await loadAllTasks(ctx);
157
+ const items = await loadAllItems(ctx);
158
+ const index = new ReferenceIndex(tasks, items);
159
+ // Build search patterns
160
+ const patterns = [];
161
+ if (ref) {
162
+ // Resolve the reference to get canonical form
163
+ const result = index.resolve(ref);
164
+ if (!result.ok) {
165
+ error(errors.reference.refNotFound(ref));
166
+ process.exit(EXIT_CODES.NOT_FOUND);
167
+ }
168
+ // Determine if it's a task or spec
169
+ const isTask = tasks.some((t) => t._ulid === result.ulid);
170
+ const refString = ref.startsWith('@') ? ref : `@${ref}`;
171
+ if (isTask) {
172
+ patterns.push(`Task: ${refString}`);
173
+ }
174
+ else {
175
+ // For spec items, search for Spec trailer AND Task trailers of linked tasks
176
+ patterns.push(`Spec: ${refString}`);
177
+ // Also find tasks that reference this spec
178
+ const linkedTasks = tasks.filter((t) => t.spec_ref === refString);
179
+ for (const t of linkedTasks) {
180
+ const taskRef = t.slugs[0] ? `@${t.slugs[0]}` : `@${t._ulid.slice(0, 8)}`;
181
+ patterns.push(`Task: ${taskRef}`);
182
+ }
183
+ }
184
+ }
185
+ if (options.spec) {
186
+ patterns.push(`Spec: ${options.spec.startsWith('@') ? options.spec : '@' + options.spec}`);
187
+ }
188
+ if (options.task) {
189
+ patterns.push(`Task: ${options.task.startsWith('@') ? options.task : '@' + options.task}`);
190
+ }
191
+ // AC: @cmd-log list-all-tracked
192
+ // If no patterns specified, list all commits with Task: or Spec: trailers
193
+ if (patterns.length === 0) {
194
+ patterns.push('Task: @');
195
+ patterns.push('Spec: @');
196
+ }
197
+ const limit = parseInt(options.limit, 10);
198
+ // AC: @cmd-log passthrough-args, passthrough-invalid
199
+ // If passthrough args are present, use raw git output
200
+ if (passthroughArgs.length > 0) {
201
+ const rawOutput = searchCommitsRaw(patterns, {
202
+ limit,
203
+ since: options.since,
204
+ cwd: ctx.rootDir,
205
+ passthroughArgs,
206
+ });
207
+ if (!rawOutput.trim()) {
208
+ // AC: @spec-log-empty-repo ac-5
209
+ // Check if repo has no commits vs no matching commits
210
+ if (!hasCommits(ctx.rootDir)) {
211
+ info('No commits in repository yet');
212
+ }
213
+ else {
214
+ info('No commits found');
215
+ }
216
+ }
217
+ else {
218
+ console.log(rawOutput);
219
+ }
220
+ return;
221
+ }
222
+ // AC: @spec-log-empty-repo ac-6
223
+ // Check if we should search shadow branch (main has no commits but shadow does)
224
+ const mainHasCommits = hasCommits(ctx.rootDir, false);
225
+ const shadowHasCommits = !mainHasCommits && hasCommits(ctx.rootDir, true);
226
+ const searchBranch = shadowHasCommits ? 'kspec-meta ' : undefined;
227
+ // Search for all patterns and dedupe
228
+ const allCommits = [];
229
+ const seenHashes = new Set();
230
+ for (const pattern of patterns) {
231
+ const commits = searchCommits(pattern, {
232
+ limit,
233
+ since: options.since,
234
+ cwd: ctx.rootDir,
235
+ branch: searchBranch,
236
+ });
237
+ for (const commit of commits) {
238
+ if (!seenHashes.has(commit.fullHash)) {
239
+ seenHashes.add(commit.fullHash);
240
+ allCommits.push(commit);
241
+ }
242
+ }
243
+ }
244
+ // Sort by date descending
245
+ allCommits.sort((a, b) => b.date.getTime() - a.date.getTime());
246
+ // Limit results
247
+ const limited = allCommits.slice(0, limit);
248
+ // AC: @spec-log-empty-repo ac-1, ac-2, ac-3, ac-4
249
+ // Handle empty results - differentiate between no commits and no matches
250
+ if (limited.length === 0) {
251
+ if (!hasCommits(ctx.rootDir)) {
252
+ // AC: @spec-log-empty-repo ac-4
253
+ output({ commits: [], message: 'No commits in repository yet' }, () => {
254
+ info('No commits in repository yet');
255
+ });
256
+ }
257
+ else {
258
+ // AC: @spec-log-empty-repo ac-3 - existing behavior for no matches
259
+ const refStr = ref ? ` for ${ref.startsWith('@') ? ref : '@' + ref}` : '';
260
+ output({ commits: [] }, () => {
261
+ info(`No commits found${refStr}`);
262
+ });
263
+ }
264
+ return;
265
+ }
266
+ output(limited, () => {
267
+ if (options.oneline) {
268
+ for (const commit of limited) {
269
+ console.log(`${chalk.yellow(commit.hash)} ${commit.subject}`);
270
+ }
271
+ }
272
+ else {
273
+ for (const commit of limited) {
274
+ console.log(chalk.yellow(`commit ${commit.fullHash}`));
275
+ console.log(`Author: ${commit.author}`);
276
+ console.log(`Date: ${commit.date.toISOString()}`);
277
+ console.log('');
278
+ console.log(` ${commit.subject}`);
279
+ console.log('');
280
+ }
281
+ }
282
+ console.log(chalk.gray(`${limited.length} commit(s) found`));
283
+ });
284
+ }
285
+ catch (err) {
286
+ error(errors.failures.searchCommits, err);
287
+ process.exit(EXIT_CODES.ERROR);
288
+ }
289
+ });
290
+ }
291
+ //# sourceMappingURL=log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log.js","sourceRoot":"","sources":["../../../src/cli/commands/log.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Meta CLI commands for interacting with meta-spec.
3
+ *
4
+ * AC-meta-manifest-1: kspec meta show outputs summary
5
+ * AC-meta-manifest-2: kspec validate includes meta line
6
+ * AC-meta-manifest-3: kspec validate shows meta errors with prefix
7
+ * AC-agent-1: kspec meta agents outputs table
8
+ * AC-agent-2: kspec meta agents --json outputs JSON
9
+ */
10
+ import { Command } from 'commander';
11
+ /**
12
+ * Register meta commands
13
+ */
14
+ export declare function registerMetaCommands(program: Command): void;
15
+ //# sourceMappingURL=meta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/meta.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuSpC;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAq0C3D"}