mythik-cli 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 (128) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +4 -0
  3. package/README.md +71 -0
  4. package/dist/api.d.ts +22 -0
  5. package/dist/api.d.ts.map +1 -0
  6. package/dist/api.js +17 -0
  7. package/dist/api.js.map +1 -0
  8. package/dist/cli.d.ts +3 -0
  9. package/dist/cli.d.ts.map +1 -0
  10. package/dist/cli.js +519 -0
  11. package/dist/cli.js.map +1 -0
  12. package/dist/commands/contract.d.ts +12 -0
  13. package/dist/commands/contract.d.ts.map +1 -0
  14. package/dist/commands/contract.js +133 -0
  15. package/dist/commands/contract.js.map +1 -0
  16. package/dist/commands/delete.d.ts +9 -0
  17. package/dist/commands/delete.d.ts.map +1 -0
  18. package/dist/commands/delete.js +46 -0
  19. package/dist/commands/delete.js.map +1 -0
  20. package/dist/commands/diff.d.ts +11 -0
  21. package/dist/commands/diff.d.ts.map +1 -0
  22. package/dist/commands/diff.js +49 -0
  23. package/dist/commands/diff.js.map +1 -0
  24. package/dist/commands/docs.d.ts +15 -0
  25. package/dist/commands/docs.d.ts.map +1 -0
  26. package/dist/commands/docs.js +117 -0
  27. package/dist/commands/docs.js.map +1 -0
  28. package/dist/commands/elements.d.ts +9 -0
  29. package/dist/commands/elements.d.ts.map +1 -0
  30. package/dist/commands/elements.js +48 -0
  31. package/dist/commands/elements.js.map +1 -0
  32. package/dist/commands/envs.d.ts +11 -0
  33. package/dist/commands/envs.d.ts.map +1 -0
  34. package/dist/commands/envs.js +54 -0
  35. package/dist/commands/envs.js.map +1 -0
  36. package/dist/commands/history.d.ts +10 -0
  37. package/dist/commands/history.d.ts.map +1 -0
  38. package/dist/commands/history.js +67 -0
  39. package/dist/commands/history.js.map +1 -0
  40. package/dist/commands/init.d.ts +9 -0
  41. package/dist/commands/init.d.ts.map +1 -0
  42. package/dist/commands/init.js +120 -0
  43. package/dist/commands/init.js.map +1 -0
  44. package/dist/commands/lint.d.ts +9 -0
  45. package/dist/commands/lint.d.ts.map +1 -0
  46. package/dist/commands/lint.js +15 -0
  47. package/dist/commands/lint.js.map +1 -0
  48. package/dist/commands/manifest.d.ts +11 -0
  49. package/dist/commands/manifest.d.ts.map +1 -0
  50. package/dist/commands/manifest.js +48 -0
  51. package/dist/commands/manifest.js.map +1 -0
  52. package/dist/commands/patch.d.ts +12 -0
  53. package/dist/commands/patch.d.ts.map +1 -0
  54. package/dist/commands/patch.js +103 -0
  55. package/dist/commands/patch.js.map +1 -0
  56. package/dist/commands/promote.d.ts +15 -0
  57. package/dist/commands/promote.d.ts.map +1 -0
  58. package/dist/commands/promote.js +83 -0
  59. package/dist/commands/promote.js.map +1 -0
  60. package/dist/commands/pull.d.ts +9 -0
  61. package/dist/commands/pull.d.ts.map +1 -0
  62. package/dist/commands/pull.js +36 -0
  63. package/dist/commands/pull.js.map +1 -0
  64. package/dist/commands/push-bulk.d.ts +11 -0
  65. package/dist/commands/push-bulk.d.ts.map +1 -0
  66. package/dist/commands/push-bulk.js +112 -0
  67. package/dist/commands/push-bulk.js.map +1 -0
  68. package/dist/commands/push.d.ts +19 -0
  69. package/dist/commands/push.d.ts.map +1 -0
  70. package/dist/commands/push.js +102 -0
  71. package/dist/commands/push.js.map +1 -0
  72. package/dist/commands/rollback.d.ts +13 -0
  73. package/dist/commands/rollback.d.ts.map +1 -0
  74. package/dist/commands/rollback.js +78 -0
  75. package/dist/commands/rollback.js.map +1 -0
  76. package/dist/commands/tokens.d.ts +8 -0
  77. package/dist/commands/tokens.d.ts.map +1 -0
  78. package/dist/commands/tokens.js +63 -0
  79. package/dist/commands/tokens.js.map +1 -0
  80. package/dist/commands/validate.d.ts +8 -0
  81. package/dist/commands/validate.d.ts.map +1 -0
  82. package/dist/commands/validate.js +60 -0
  83. package/dist/commands/validate.js.map +1 -0
  84. package/dist/config.d.ts +27 -0
  85. package/dist/config.d.ts.map +1 -0
  86. package/dist/config.js +112 -0
  87. package/dist/config.js.map +1 -0
  88. package/dist/input-resolver.d.ts +22 -0
  89. package/dist/input-resolver.d.ts.map +1 -0
  90. package/dist/input-resolver.js +55 -0
  91. package/dist/input-resolver.js.map +1 -0
  92. package/dist/levenshtein.d.ts +2 -0
  93. package/dist/levenshtein.d.ts.map +1 -0
  94. package/dist/levenshtein.js +2 -0
  95. package/dist/levenshtein.js.map +1 -0
  96. package/dist/lint/code-rules.d.ts +30 -0
  97. package/dist/lint/code-rules.d.ts.map +1 -0
  98. package/dist/lint/code-rules.js +81 -0
  99. package/dist/lint/code-rules.js.map +1 -0
  100. package/dist/lint/format.d.ts +12 -0
  101. package/dist/lint/format.d.ts.map +1 -0
  102. package/dist/lint/format.js +68 -0
  103. package/dist/lint/format.js.map +1 -0
  104. package/dist/lint/orchestrator.d.ts +17 -0
  105. package/dist/lint/orchestrator.d.ts.map +1 -0
  106. package/dist/lint/orchestrator.js +124 -0
  107. package/dist/lint/orchestrator.js.map +1 -0
  108. package/dist/lint/spec-discovery.d.ts +14 -0
  109. package/dist/lint/spec-discovery.d.ts.map +1 -0
  110. package/dist/lint/spec-discovery.js +72 -0
  111. package/dist/lint/spec-discovery.js.map +1 -0
  112. package/dist/lint/types.d.ts +72 -0
  113. package/dist/lint/types.d.ts.map +1 -0
  114. package/dist/lint/types.js +28 -0
  115. package/dist/lint/types.js.map +1 -0
  116. package/dist/output.d.ts +16 -0
  117. package/dist/output.d.ts.map +1 -0
  118. package/dist/output.js +91 -0
  119. package/dist/output.js.map +1 -0
  120. package/dist/stores/resolver.d.ts +12 -0
  121. package/dist/stores/resolver.d.ts.map +1 -0
  122. package/dist/stores/resolver.js +54 -0
  123. package/dist/stores/resolver.js.map +1 -0
  124. package/dist/toon.d.ts +12 -0
  125. package/dist/toon.d.ts.map +1 -0
  126. package/dist/toon.js +27 -0
  127. package/dist/toon.js.map +1 -0
  128. package/package.json +65 -0
package/dist/cli.js ADDED
@@ -0,0 +1,519 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from 'commander';
3
+ import { loadConfig } from './config.js';
4
+ import { resolveStore } from './stores/resolver.js';
5
+ import { runManifest } from './commands/manifest.js';
6
+ import { runElements } from './commands/elements.js';
7
+ import { runPatch, parsePatchInput } from './commands/patch.js';
8
+ import { runValidate } from './commands/validate.js';
9
+ import { runInit } from './commands/init.js';
10
+ import { runPull } from './commands/pull.js';
11
+ import { runPush } from './commands/push.js';
12
+ import { runDelete } from './commands/delete.js';
13
+ import { runContractCommand } from './commands/contract.js';
14
+ import { resolveVersionedStore } from './stores/resolver.js';
15
+ import { runHistory } from './commands/history.js';
16
+ import { runDiff } from './commands/diff.js';
17
+ import { runEnvs } from './commands/envs.js';
18
+ import { runRollbackCommand } from './commands/rollback.js';
19
+ import { runPromoteCommand } from './commands/promote.js';
20
+ import { runTokensResolve } from './commands/tokens.js';
21
+ import { runLintCommand } from './commands/lint.js';
22
+ import { runDocsCommand } from './commands/docs.js';
23
+ import { resolveInput } from './input-resolver.js';
24
+ import { runPushBulk } from './commands/push-bulk.js';
25
+ const program = new Command();
26
+ program
27
+ .name('mythik')
28
+ .description('Mythik CLI — manage specs via SpecEngine')
29
+ .version('0.1.0');
30
+ program
31
+ .command('manifest <screen>')
32
+ .description('Show structural tree of a screen spec')
33
+ .option('--json', 'Output as JSON', false)
34
+ .option('--store <type>', 'Store type (supabase, file, memory)')
35
+ .option('--table <name>', 'Table name override (e.g., api_specs)')
36
+ .option('--url <url>', 'Supabase URL')
37
+ .option('--key <key>', 'Supabase API key')
38
+ .option('--dir <dir>', 'File store directory')
39
+ .action(async (screen, opts) => {
40
+ try {
41
+ const config = loadConfig({ flags: opts });
42
+ const store = resolveStore(config);
43
+ const result = await runManifest(screen, { store, json: opts.json });
44
+ process.stdout.write(result.output + '\n');
45
+ process.exit(result.exitCode);
46
+ }
47
+ catch (err) {
48
+ console.error(err.message);
49
+ process.exit(1);
50
+ }
51
+ });
52
+ program
53
+ .command('elements <screen> <ids>')
54
+ .description('Show details of specific elements by ID (comma-separated)')
55
+ .option('--json', 'Output as JSON', false)
56
+ .option('--toon', 'Output in TOON format (token-efficient)', false)
57
+ .option('--store <type>', 'Store type (supabase, file, memory)')
58
+ .option('--table <name>', 'Table name override (e.g., api_specs)')
59
+ .option('--url <url>', 'Supabase URL')
60
+ .option('--key <key>', 'Supabase API key')
61
+ .option('--dir <dir>', 'File store directory')
62
+ .action(async (screen, ids, opts) => {
63
+ try {
64
+ const config = loadConfig({ flags: opts });
65
+ const store = resolveStore(config);
66
+ const elementIds = ids.split(',').map(s => s.trim());
67
+ const result = await runElements(screen, elementIds, { store, json: opts.json, toon: opts.toon });
68
+ process.stdout.write(result.output + '\n');
69
+ process.exit(result.exitCode);
70
+ }
71
+ catch (err) {
72
+ console.error(err.message);
73
+ process.exit(1);
74
+ }
75
+ });
76
+ program
77
+ .command('patch <screen> [patches]')
78
+ .description('Apply RFC 6902 JSON patches to a screen spec (from argument, stdin, or --from-file)')
79
+ .option('--json', 'Output as JSON', false)
80
+ .option('--toon', 'Output in TOON format (token-efficient)', false)
81
+ .option('--author <name>', 'Author name for version history')
82
+ .option('--description <text>', 'Description for version history')
83
+ .option('--from-file <path>', 'Read patches from file (use "-" for stdin)')
84
+ .option('--store <type>', 'Store type (supabase, file, memory)')
85
+ .option('--table <name>', 'Table name override (e.g., api_specs)')
86
+ .option('--url <url>', 'Supabase URL')
87
+ .option('--key <key>', 'Supabase API key')
88
+ .option('--dir <dir>', 'File store directory')
89
+ .action(async (screen, patchesArg, opts) => {
90
+ try {
91
+ const config = loadConfig({ flags: opts });
92
+ let store;
93
+ if (opts.author) {
94
+ try {
95
+ const { store: vStore } = resolveVersionedStore(config);
96
+ store = vStore;
97
+ }
98
+ catch {
99
+ store = resolveStore(config);
100
+ }
101
+ }
102
+ else {
103
+ store = resolveStore(config);
104
+ }
105
+ const input = await resolveInput({
106
+ fromFile: opts.fromFile,
107
+ positional: patchesArg,
108
+ stdin: process.stdin,
109
+ stdinIsTTY: process.stdin.isTTY === true,
110
+ });
111
+ const patches = parsePatchInput(input);
112
+ const result = await runPatch(screen, patches, { store, json: opts.json, toon: opts.toon, author: opts.author, description: opts.description });
113
+ process.stdout.write(result.output + '\n');
114
+ process.exit(result.exitCode);
115
+ }
116
+ catch (err) {
117
+ console.error(err.message);
118
+ process.exit(1);
119
+ }
120
+ });
121
+ program
122
+ .command('validate <screen>')
123
+ .description('Validate a screen spec for errors')
124
+ .option('--json', 'Output as JSON', false)
125
+ .option('--store <type>', 'Store type (supabase, file, memory)')
126
+ .option('--table <name>', 'Table name override (e.g., api_specs)')
127
+ .option('--url <url>', 'Supabase URL')
128
+ .option('--key <key>', 'Supabase API key')
129
+ .option('--dir <dir>', 'File store directory')
130
+ .action(async (screen, opts) => {
131
+ try {
132
+ const config = loadConfig({ flags: opts });
133
+ const store = resolveStore(config);
134
+ const result = await runValidate(screen, { store, json: opts.json });
135
+ process.stdout.write(result.output + '\n');
136
+ process.exit(result.exitCode);
137
+ }
138
+ catch (err) {
139
+ console.error(err.message);
140
+ process.exit(1);
141
+ }
142
+ });
143
+ program
144
+ .command('init')
145
+ .description('Initialize Mythik CLI configuration')
146
+ .option('--store <type>', 'Store type (supabase, file, memory)')
147
+ .option('--table <name>', 'Table name override (e.g., api_specs)')
148
+ .option('--url <url>', 'Supabase URL')
149
+ .option('--key <key>', 'Supabase API key')
150
+ .option('--dir <dir>', 'File store directory')
151
+ .action(async (opts) => {
152
+ try {
153
+ const result = await runInit(opts, process.cwd());
154
+ if (result.output) {
155
+ process.stdout.write(result.output + '\n');
156
+ }
157
+ process.exit(result.exitCode);
158
+ }
159
+ catch (err) {
160
+ console.error(err.message);
161
+ process.exit(1);
162
+ }
163
+ });
164
+ program
165
+ .command('push [screen]')
166
+ .description('Create or replace screen spec(s) from stdin, --from-file, or --from-dir')
167
+ .option('--json', 'Output as JSON', false)
168
+ .option('--force', 'Overwrite existing screen even with validation errors', false)
169
+ .option('--author <name>', 'Author name for version history')
170
+ .option('--description <text>', 'Description for version history')
171
+ .option('--from-file <path>', 'Read spec from file (use "-" for stdin)')
172
+ .option('--from-dir <folder>', 'Push every *.json file in <folder> (filename stem = spec id)')
173
+ .option('--store <type>', 'Store type (supabase, file, memory, sqlserver)')
174
+ .option('--table <name>', 'Table name override (e.g., api_specs)')
175
+ .option('--url <url>', 'Supabase URL')
176
+ .option('--key <key>', 'Supabase API key')
177
+ .option('--dir <dir>', 'File store directory')
178
+ .action(async (screen, opts) => {
179
+ try {
180
+ const config = loadConfig({ flags: opts });
181
+ // Use versioned store when --author is provided, fall back to regular store
182
+ let store;
183
+ if (opts.author) {
184
+ try {
185
+ const { store: vStore } = resolveVersionedStore(config);
186
+ store = vStore;
187
+ }
188
+ catch {
189
+ store = resolveStore(config);
190
+ }
191
+ }
192
+ else {
193
+ store = resolveStore(config);
194
+ }
195
+ // Dispatch: bulk path
196
+ if (opts.fromDir) {
197
+ if (screen !== undefined) {
198
+ console.error('Cannot pass <screen> argument with --from-dir. Use one or the other.');
199
+ process.exit(1);
200
+ }
201
+ if (opts.fromFile !== undefined) {
202
+ console.error('Cannot pass --from-file with --from-dir. Use one or the other.');
203
+ process.exit(1);
204
+ }
205
+ const bulkResult = await runPushBulk(opts.fromDir, {
206
+ store, json: opts.json, force: opts.force, author: opts.author, description: opts.description,
207
+ });
208
+ process.stdout.write(bulkResult.output + '\n');
209
+ process.exit(bulkResult.exitCode);
210
+ }
211
+ // Dispatch: single-spec path
212
+ if (screen === undefined) {
213
+ console.error('Missing required argument: <screen>. (Use --from-dir for bulk push.)');
214
+ process.exit(1);
215
+ }
216
+ const input = await resolveInput({
217
+ fromFile: opts.fromFile,
218
+ stdin: process.stdin,
219
+ stdinIsTTY: process.stdin.isTTY === true,
220
+ });
221
+ const result = await runPush(screen, input, { store, json: opts.json, force: opts.force, author: opts.author, description: opts.description });
222
+ process.stdout.write(result.output + '\n');
223
+ process.exit(result.exitCode);
224
+ }
225
+ catch (err) {
226
+ console.error(err.message);
227
+ process.exit(1);
228
+ }
229
+ });
230
+ program
231
+ .command('pull <screen>')
232
+ .description('Export a full screen spec to stdout')
233
+ .option('--json', 'Wrap output in JSON object', false)
234
+ .option('--toon', 'Output in TOON format', false)
235
+ .option('--store <type>', 'Store type (supabase, file, memory, sqlserver)')
236
+ .option('--table <name>', 'Table name override (e.g., api_specs)')
237
+ .option('--url <url>', 'Supabase URL')
238
+ .option('--key <key>', 'Supabase API key')
239
+ .option('--dir <dir>', 'File store directory')
240
+ .action(async (screen, opts) => {
241
+ try {
242
+ const config = loadConfig({ flags: opts });
243
+ const store = resolveStore(config);
244
+ const result = await runPull(screen, { store, json: opts.json, toon: opts.toon });
245
+ process.stdout.write(result.output + '\n');
246
+ process.exit(result.exitCode);
247
+ }
248
+ catch (err) {
249
+ console.error(err.message);
250
+ process.exit(1);
251
+ }
252
+ });
253
+ program
254
+ .command('delete <screen>')
255
+ .description('Delete a screen spec from the store')
256
+ .option('--confirm', 'Actually delete (without this flag, preview only)', false)
257
+ .option('--json', 'Output as JSON', false)
258
+ .option('--store <type>', 'Store type (supabase, file, memory, sqlserver)')
259
+ .option('--table <name>', 'Table name override (e.g., api_specs)')
260
+ .option('--url <url>', 'Supabase URL')
261
+ .option('--key <key>', 'Supabase API key')
262
+ .option('--dir <dir>', 'File store directory')
263
+ .action(async (screen, opts) => {
264
+ try {
265
+ const config = loadConfig({ flags: opts });
266
+ const store = resolveStore(config);
267
+ const result = await runDelete(screen, { store, json: opts.json, confirm: opts.confirm });
268
+ process.stdout.write(result.output + '\n');
269
+ if (opts.confirm && result.exitCode === 0 && !opts.json) {
270
+ process.stderr.write(`Deleted "${screen}"\n`);
271
+ }
272
+ process.exit(result.exitCode);
273
+ }
274
+ catch (err) {
275
+ console.error(err.message);
276
+ process.exit(1);
277
+ }
278
+ });
279
+ program
280
+ .command('contract')
281
+ .description('Cross-validate frontend specs against backend api-specs')
282
+ .requiredOption('--app <id>', 'App spec ID')
283
+ .requiredOption('--api <ids>', 'Api spec ID(s), comma-separated')
284
+ .option('--base-url <url>', 'Base URL to strip from fetch URLs')
285
+ .option('--api-table <table>', 'Table name for api-specs (when stored separately)')
286
+ .option('--json', 'Output as JSON', false)
287
+ .option('--store <type>', 'Store type (supabase, file, memory, sqlserver)')
288
+ .option('--table <name>', 'Table name override (e.g., api_specs)')
289
+ .option('--url <url>', 'Supabase URL')
290
+ .option('--key <key>', 'Supabase API key')
291
+ .option('--dir <dir>', 'File store directory')
292
+ .action(async (opts) => {
293
+ try {
294
+ const config = loadConfig({ flags: opts });
295
+ const store = resolveStore(config);
296
+ const apiIds = opts.api.split(',').map((s) => s.trim());
297
+ // If --api-table is provided, create a separate store for api-specs
298
+ let apiStore;
299
+ if (opts.apiTable) {
300
+ const apiConfig = { ...config };
301
+ if (apiConfig.sqlserver)
302
+ apiConfig.sqlserver = { ...apiConfig.sqlserver, table: opts.apiTable };
303
+ if (apiConfig.supabase)
304
+ apiConfig.supabase = { ...apiConfig.supabase, table: opts.apiTable };
305
+ apiStore = resolveStore(apiConfig);
306
+ }
307
+ const result = await runContractCommand({
308
+ store,
309
+ apiStore,
310
+ appId: opts.app,
311
+ apiIds,
312
+ baseUrl: opts.baseUrl,
313
+ json: opts.json,
314
+ });
315
+ process.stdout.write(result.output + '\n');
316
+ process.exit(result.exitCode);
317
+ }
318
+ catch (err) {
319
+ console.error(err.message);
320
+ process.exit(1);
321
+ }
322
+ });
323
+ // --- Versioning commands ---
324
+ program
325
+ .command('history <specId>')
326
+ .description('Show version history for a spec')
327
+ .option('--limit <n>', 'Limit number of versions shown', parseInt)
328
+ .option('--json', 'Output as JSON', false)
329
+ .option('--store <type>', 'Store type')
330
+ .option('--table <name>', 'Table name override (e.g., api_specs)')
331
+ .action(async (specId, opts) => {
332
+ try {
333
+ const config = loadConfig({ flags: opts });
334
+ const { store, envStore } = resolveVersionedStore(config);
335
+ const result = await runHistory(specId, { store, envStore, json: opts.json, limit: opts.limit });
336
+ process.stdout.write(result.output + '\n');
337
+ process.exit(result.exitCode);
338
+ }
339
+ catch (err) {
340
+ console.error(err.message);
341
+ process.exit(1);
342
+ }
343
+ });
344
+ program
345
+ .command('diff <specId> <from> [to]')
346
+ .description('Show structural diff between two versions or environments')
347
+ .option('--json', 'Output as JSON', false)
348
+ .option('--store <type>', 'Store type')
349
+ .option('--table <name>', 'Table name override (e.g., api_specs)')
350
+ .action(async (specId, from, to, opts) => {
351
+ try {
352
+ const config = loadConfig({ flags: opts });
353
+ const { store, envStore } = resolveVersionedStore(config);
354
+ const result = await runDiff(specId, { store, envStore, from, to, json: opts.json });
355
+ process.stdout.write(result.output + '\n');
356
+ process.exit(result.exitCode);
357
+ }
358
+ catch (err) {
359
+ console.error(err.message);
360
+ process.exit(1);
361
+ }
362
+ });
363
+ program
364
+ .command('envs <specId>')
365
+ .description('List or set environment pointers for a spec')
366
+ .option('--set <env=version>', 'Set environment pointer (e.g., --set dev=12)')
367
+ .option('--author <name>', 'Author for set operation')
368
+ .option('--json', 'Output as JSON', false)
369
+ .option('--store <type>', 'Store type')
370
+ .option('--table <name>', 'Table name override (e.g., api_specs)')
371
+ .action(async (specId, opts) => {
372
+ try {
373
+ const config = loadConfig({ flags: opts });
374
+ const { store, envStore } = resolveVersionedStore(config);
375
+ const result = await runEnvs(specId, { store, envStore, json: opts.json, set: opts.set, author: opts.author });
376
+ process.stdout.write(result.output + '\n');
377
+ process.exit(result.exitCode);
378
+ }
379
+ catch (err) {
380
+ console.error(err.message);
381
+ process.exit(1);
382
+ }
383
+ });
384
+ program
385
+ .command('rollback <specId>')
386
+ .description('Rollback a spec to a previous version')
387
+ .requiredOption('--to <version>', 'Target version number', parseInt)
388
+ .option('--confirm', 'Execute rollback (without this, preview only)', false)
389
+ .option('--author <name>', 'Author name', 'system')
390
+ .option('--description <text>', 'Description for the rollback version')
391
+ .option('--json', 'Output as JSON', false)
392
+ .option('--store <type>', 'Store type')
393
+ .option('--table <name>', 'Table name override (e.g., api_specs)')
394
+ .action(async (specId, opts) => {
395
+ try {
396
+ const config = loadConfig({ flags: opts });
397
+ const { store, envStore } = resolveVersionedStore(config);
398
+ const result = await runRollbackCommand(specId, {
399
+ store, envStore, toVersion: opts.to, confirm: opts.confirm, json: opts.json, author: opts.author, description: opts.description,
400
+ });
401
+ process.stdout.write(result.output + '\n');
402
+ process.exit(result.exitCode);
403
+ }
404
+ catch (err) {
405
+ console.error(err.message);
406
+ process.exit(1);
407
+ }
408
+ });
409
+ program
410
+ .command('promote [specIds...]')
411
+ .description('Promote specs between environments with validation gate')
412
+ .requiredOption('--from <env>', 'Source environment')
413
+ .requiredOption('--to <env>', 'Destination environment')
414
+ .option('--app <id>', 'Promote entire app (all screens)')
415
+ .option('--api <ids>', 'Api spec ID(s) for contract validation, comma-separated')
416
+ .option('--confirm', 'Execute promotion (without this, preview only)', false)
417
+ .option('--author <name>', 'Author name', 'system')
418
+ .option('--json', 'Output as JSON', false)
419
+ .option('--store <type>', 'Store type')
420
+ .option('--table <name>', 'Table name override (e.g., api_specs)')
421
+ .action(async (specIds, opts) => {
422
+ try {
423
+ const config = loadConfig({ flags: opts });
424
+ const { store, envStore } = resolveVersionedStore(config);
425
+ let ids = specIds ?? [];
426
+ if (opts.app) {
427
+ const appDoc = await store.load(opts.app);
428
+ if (appDoc && typeof appDoc === 'object') {
429
+ const app = appDoc;
430
+ const screens = app.screens;
431
+ if (screens)
432
+ ids = [opts.app, ...Object.keys(screens)];
433
+ }
434
+ }
435
+ if (ids.length === 0) {
436
+ console.error('No specs to promote. Provide spec IDs or use --app <id>');
437
+ process.exit(1);
438
+ }
439
+ const apiIds = opts.api ? opts.api.split(',').map((s) => s.trim()) : undefined;
440
+ const result = await runPromoteCommand({
441
+ store, envStore, specIds: ids, fromEnv: opts.from, toEnv: opts.to,
442
+ apiIds, confirm: opts.confirm, json: opts.json, author: opts.author,
443
+ });
444
+ process.stdout.write(result.output + '\n');
445
+ process.exit(result.exitCode);
446
+ }
447
+ catch (err) {
448
+ console.error(err.message);
449
+ process.exit(1);
450
+ }
451
+ });
452
+ program
453
+ .command('tokens')
454
+ .description('Resolve deep design tokens from DNA seed or explicit values')
455
+ .option('--dna <json>', 'DNA seed as JSON (e.g., \'{"primary":"#0D9488","roundness":0.7}\')')
456
+ .option('--tokens <json>', 'Full tokens object as JSON')
457
+ .option('--json', 'Output as JSON', false)
458
+ .action(async (opts) => {
459
+ try {
460
+ const result = await runTokensResolve({ dna: opts.dna, tokens: opts.tokens, json: opts.json });
461
+ process.stdout.write(result.output + '\n');
462
+ process.exit(result.exitCode);
463
+ }
464
+ catch (err) {
465
+ console.error(err.message);
466
+ process.exit(1);
467
+ }
468
+ });
469
+ program
470
+ .command('docs <action> [target]')
471
+ .description('Locate or copy bundled Mythik AI documentation (actions: path, copy)')
472
+ .option('--json', 'Output as JSON', false)
473
+ .option('--force', 'Replace target directory when using docs copy', false)
474
+ .action(async (action, target, opts) => {
475
+ const result = await runDocsCommand({
476
+ action,
477
+ target,
478
+ json: opts.json === true,
479
+ force: opts.force === true,
480
+ });
481
+ process.stdout.write(result.output + '\n');
482
+ process.exit(result.exitCode);
483
+ });
484
+ program
485
+ .command('lint [target]')
486
+ .description('Lint specs and consumer code for known anti-patterns')
487
+ .option('--from-file <path>', 'Lint single file (auto-detect by extension: .json → spec, .ts/.tsx/.js/.jsx → code)')
488
+ .option('--from-dir <folder>', 'Lint all files in folder (recursive)')
489
+ .option('--specs-only', 'Skip code rules')
490
+ .option('--code-only', 'Skip spec rules')
491
+ .option('--code-dir <path>', 'Code scan root (default: ./src)')
492
+ .option('--json', 'JSON output')
493
+ .action(async (target, opts) => {
494
+ // Mutual exclusivity: --from-dir is bulk; positional target and --from-file are single-target.
495
+ // Mirrors `mythik push` conflict handling (cli.ts §push).
496
+ if (opts.fromDir) {
497
+ if (target !== undefined) {
498
+ console.error('Cannot pass <target> argument with --from-dir. Use one or the other.');
499
+ process.exit(1);
500
+ }
501
+ if (opts.fromFile !== undefined) {
502
+ console.error('Cannot pass --from-file with --from-dir. Use one or the other.');
503
+ process.exit(1);
504
+ }
505
+ }
506
+ // target is positional — treat as fromFile if provided, otherwise honor flags
507
+ const cmd = await runLintCommand({
508
+ fromFile: opts.fromFile ?? target,
509
+ fromDir: opts.fromDir,
510
+ specsOnly: opts.specsOnly === true,
511
+ codeOnly: opts.codeOnly === true,
512
+ codeDir: opts.codeDir,
513
+ json: opts.json === true,
514
+ });
515
+ process.stdout.write(cmd.output);
516
+ process.exit(cmd.exitCode);
517
+ });
518
+ program.parse();
519
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { SpecStore } from 'mythik';
2
+ import type { CommandResult } from './manifest.js';
3
+ export interface ContractOptions {
4
+ store: SpecStore;
5
+ apiStore?: SpecStore;
6
+ appId: string;
7
+ apiIds: string[];
8
+ baseUrl?: string;
9
+ json: boolean;
10
+ }
11
+ export declare function runContractCommand(options: ContractOptions): Promise<CommandResult>;
12
+ //# sourceMappingURL=contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../src/commands/contract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAIxC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC,CA+HzF"}