@stoneforge/quarry 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 (330) hide show
  1. package/LICENSE +13 -0
  2. package/README.md +160 -0
  3. package/dist/api/index.d.ts +8 -0
  4. package/dist/api/index.d.ts.map +1 -0
  5. package/dist/api/index.js +8 -0
  6. package/dist/api/index.js.map +1 -0
  7. package/dist/api/quarry-api.d.ts +268 -0
  8. package/dist/api/quarry-api.d.ts.map +1 -0
  9. package/dist/api/quarry-api.js +3905 -0
  10. package/dist/api/quarry-api.js.map +1 -0
  11. package/dist/api/types.d.ts +1359 -0
  12. package/dist/api/types.d.ts.map +1 -0
  13. package/dist/api/types.js +204 -0
  14. package/dist/api/types.js.map +1 -0
  15. package/dist/bin/sf.d.ts +3 -0
  16. package/dist/bin/sf.d.ts.map +1 -0
  17. package/dist/bin/sf.js +9 -0
  18. package/dist/bin/sf.js.map +1 -0
  19. package/dist/cli/commands/admin.d.ts +11 -0
  20. package/dist/cli/commands/admin.d.ts.map +1 -0
  21. package/dist/cli/commands/admin.js +465 -0
  22. package/dist/cli/commands/admin.js.map +1 -0
  23. package/dist/cli/commands/alias.d.ts +8 -0
  24. package/dist/cli/commands/alias.d.ts.map +1 -0
  25. package/dist/cli/commands/alias.js +70 -0
  26. package/dist/cli/commands/alias.js.map +1 -0
  27. package/dist/cli/commands/channel.d.ts +13 -0
  28. package/dist/cli/commands/channel.d.ts.map +1 -0
  29. package/dist/cli/commands/channel.js +680 -0
  30. package/dist/cli/commands/channel.js.map +1 -0
  31. package/dist/cli/commands/completion.d.ts +8 -0
  32. package/dist/cli/commands/completion.d.ts.map +1 -0
  33. package/dist/cli/commands/completion.js +87 -0
  34. package/dist/cli/commands/completion.js.map +1 -0
  35. package/dist/cli/commands/config.d.ts +12 -0
  36. package/dist/cli/commands/config.d.ts.map +1 -0
  37. package/dist/cli/commands/config.js +242 -0
  38. package/dist/cli/commands/config.js.map +1 -0
  39. package/dist/cli/commands/crud.d.ts +64 -0
  40. package/dist/cli/commands/crud.d.ts.map +1 -0
  41. package/dist/cli/commands/crud.js +805 -0
  42. package/dist/cli/commands/crud.js.map +1 -0
  43. package/dist/cli/commands/dep.d.ts +16 -0
  44. package/dist/cli/commands/dep.d.ts.map +1 -0
  45. package/dist/cli/commands/dep.js +499 -0
  46. package/dist/cli/commands/dep.js.map +1 -0
  47. package/dist/cli/commands/document.d.ts +12 -0
  48. package/dist/cli/commands/document.d.ts.map +1 -0
  49. package/dist/cli/commands/document.js +1039 -0
  50. package/dist/cli/commands/document.js.map +1 -0
  51. package/dist/cli/commands/embeddings.d.ts +12 -0
  52. package/dist/cli/commands/embeddings.d.ts.map +1 -0
  53. package/dist/cli/commands/embeddings.js +273 -0
  54. package/dist/cli/commands/embeddings.js.map +1 -0
  55. package/dist/cli/commands/entity.d.ts +16 -0
  56. package/dist/cli/commands/entity.d.ts.map +1 -0
  57. package/dist/cli/commands/entity.js +522 -0
  58. package/dist/cli/commands/entity.js.map +1 -0
  59. package/dist/cli/commands/gc.d.ts +10 -0
  60. package/dist/cli/commands/gc.d.ts.map +1 -0
  61. package/dist/cli/commands/gc.js +257 -0
  62. package/dist/cli/commands/gc.js.map +1 -0
  63. package/dist/cli/commands/help.d.ts +11 -0
  64. package/dist/cli/commands/help.d.ts.map +1 -0
  65. package/dist/cli/commands/help.js +169 -0
  66. package/dist/cli/commands/help.js.map +1 -0
  67. package/dist/cli/commands/history.d.ts +9 -0
  68. package/dist/cli/commands/history.d.ts.map +1 -0
  69. package/dist/cli/commands/history.js +160 -0
  70. package/dist/cli/commands/history.js.map +1 -0
  71. package/dist/cli/commands/identity.d.ts +18 -0
  72. package/dist/cli/commands/identity.d.ts.map +1 -0
  73. package/dist/cli/commands/identity.js +698 -0
  74. package/dist/cli/commands/identity.js.map +1 -0
  75. package/dist/cli/commands/inbox.d.ts +20 -0
  76. package/dist/cli/commands/inbox.d.ts.map +1 -0
  77. package/dist/cli/commands/inbox.js +493 -0
  78. package/dist/cli/commands/inbox.js.map +1 -0
  79. package/dist/cli/commands/init.d.ts +20 -0
  80. package/dist/cli/commands/init.d.ts.map +1 -0
  81. package/dist/cli/commands/init.js +144 -0
  82. package/dist/cli/commands/init.js.map +1 -0
  83. package/dist/cli/commands/install.d.ts +9 -0
  84. package/dist/cli/commands/install.d.ts.map +1 -0
  85. package/dist/cli/commands/install.js +200 -0
  86. package/dist/cli/commands/install.js.map +1 -0
  87. package/dist/cli/commands/library.d.ts +12 -0
  88. package/dist/cli/commands/library.d.ts.map +1 -0
  89. package/dist/cli/commands/library.js +665 -0
  90. package/dist/cli/commands/library.js.map +1 -0
  91. package/dist/cli/commands/message.d.ts +11 -0
  92. package/dist/cli/commands/message.d.ts.map +1 -0
  93. package/dist/cli/commands/message.js +608 -0
  94. package/dist/cli/commands/message.js.map +1 -0
  95. package/dist/cli/commands/plan.d.ts +17 -0
  96. package/dist/cli/commands/plan.d.ts.map +1 -0
  97. package/dist/cli/commands/plan.js +698 -0
  98. package/dist/cli/commands/plan.js.map +1 -0
  99. package/dist/cli/commands/playbook.d.ts +12 -0
  100. package/dist/cli/commands/playbook.d.ts.map +1 -0
  101. package/dist/cli/commands/playbook.js +730 -0
  102. package/dist/cli/commands/playbook.js.map +1 -0
  103. package/dist/cli/commands/reset.d.ts +12 -0
  104. package/dist/cli/commands/reset.d.ts.map +1 -0
  105. package/dist/cli/commands/reset.js +306 -0
  106. package/dist/cli/commands/reset.js.map +1 -0
  107. package/dist/cli/commands/serve.d.ts +11 -0
  108. package/dist/cli/commands/serve.d.ts.map +1 -0
  109. package/dist/cli/commands/serve.js +106 -0
  110. package/dist/cli/commands/serve.js.map +1 -0
  111. package/dist/cli/commands/stats.d.ts +8 -0
  112. package/dist/cli/commands/stats.d.ts.map +1 -0
  113. package/dist/cli/commands/stats.js +82 -0
  114. package/dist/cli/commands/stats.js.map +1 -0
  115. package/dist/cli/commands/sync.d.ts +14 -0
  116. package/dist/cli/commands/sync.d.ts.map +1 -0
  117. package/dist/cli/commands/sync.js +370 -0
  118. package/dist/cli/commands/sync.js.map +1 -0
  119. package/dist/cli/commands/task.d.ts +25 -0
  120. package/dist/cli/commands/task.d.ts.map +1 -0
  121. package/dist/cli/commands/task.js +1153 -0
  122. package/dist/cli/commands/task.js.map +1 -0
  123. package/dist/cli/commands/team.d.ts +13 -0
  124. package/dist/cli/commands/team.d.ts.map +1 -0
  125. package/dist/cli/commands/team.js +471 -0
  126. package/dist/cli/commands/team.js.map +1 -0
  127. package/dist/cli/commands/workflow.d.ts +16 -0
  128. package/dist/cli/commands/workflow.d.ts.map +1 -0
  129. package/dist/cli/commands/workflow.js +753 -0
  130. package/dist/cli/commands/workflow.js.map +1 -0
  131. package/dist/cli/completion.d.ts +28 -0
  132. package/dist/cli/completion.d.ts.map +1 -0
  133. package/dist/cli/completion.js +295 -0
  134. package/dist/cli/completion.js.map +1 -0
  135. package/dist/cli/db.d.ts +38 -0
  136. package/dist/cli/db.d.ts.map +1 -0
  137. package/dist/cli/db.js +90 -0
  138. package/dist/cli/db.js.map +1 -0
  139. package/dist/cli/formatter.d.ts +87 -0
  140. package/dist/cli/formatter.d.ts.map +1 -0
  141. package/dist/cli/formatter.js +464 -0
  142. package/dist/cli/formatter.js.map +1 -0
  143. package/dist/cli/index.d.ts +33 -0
  144. package/dist/cli/index.d.ts.map +1 -0
  145. package/dist/cli/index.js +38 -0
  146. package/dist/cli/index.js.map +1 -0
  147. package/dist/cli/parser.d.ts +45 -0
  148. package/dist/cli/parser.d.ts.map +1 -0
  149. package/dist/cli/parser.js +256 -0
  150. package/dist/cli/parser.js.map +1 -0
  151. package/dist/cli/plugin-loader.d.ts +39 -0
  152. package/dist/cli/plugin-loader.d.ts.map +1 -0
  153. package/dist/cli/plugin-loader.js +165 -0
  154. package/dist/cli/plugin-loader.js.map +1 -0
  155. package/dist/cli/plugin-registry.d.ts +50 -0
  156. package/dist/cli/plugin-registry.d.ts.map +1 -0
  157. package/dist/cli/plugin-registry.js +206 -0
  158. package/dist/cli/plugin-registry.js.map +1 -0
  159. package/dist/cli/plugin-types.d.ts +106 -0
  160. package/dist/cli/plugin-types.d.ts.map +1 -0
  161. package/dist/cli/plugin-types.js +103 -0
  162. package/dist/cli/plugin-types.js.map +1 -0
  163. package/dist/cli/runner.d.ts +35 -0
  164. package/dist/cli/runner.d.ts.map +1 -0
  165. package/dist/cli/runner.js +340 -0
  166. package/dist/cli/runner.js.map +1 -0
  167. package/dist/cli/suggest.d.ts +15 -0
  168. package/dist/cli/suggest.d.ts.map +1 -0
  169. package/dist/cli/suggest.js +49 -0
  170. package/dist/cli/suggest.js.map +1 -0
  171. package/dist/cli/types.d.ts +138 -0
  172. package/dist/cli/types.d.ts.map +1 -0
  173. package/dist/cli/types.js +63 -0
  174. package/dist/cli/types.js.map +1 -0
  175. package/dist/config/config.d.ts +86 -0
  176. package/dist/config/config.d.ts.map +1 -0
  177. package/dist/config/config.js +348 -0
  178. package/dist/config/config.js.map +1 -0
  179. package/dist/config/defaults.d.ts +66 -0
  180. package/dist/config/defaults.d.ts.map +1 -0
  181. package/dist/config/defaults.js +114 -0
  182. package/dist/config/defaults.js.map +1 -0
  183. package/dist/config/duration.d.ts +75 -0
  184. package/dist/config/duration.d.ts.map +1 -0
  185. package/dist/config/duration.js +190 -0
  186. package/dist/config/duration.js.map +1 -0
  187. package/dist/config/env.d.ts +67 -0
  188. package/dist/config/env.d.ts.map +1 -0
  189. package/dist/config/env.js +207 -0
  190. package/dist/config/env.js.map +1 -0
  191. package/dist/config/file.d.ts +97 -0
  192. package/dist/config/file.d.ts.map +1 -0
  193. package/dist/config/file.js +365 -0
  194. package/dist/config/file.js.map +1 -0
  195. package/dist/config/index.d.ts +35 -0
  196. package/dist/config/index.d.ts.map +1 -0
  197. package/dist/config/index.js +41 -0
  198. package/dist/config/index.js.map +1 -0
  199. package/dist/config/merge.d.ts +53 -0
  200. package/dist/config/merge.d.ts.map +1 -0
  201. package/dist/config/merge.js +226 -0
  202. package/dist/config/merge.js.map +1 -0
  203. package/dist/config/types.d.ts +257 -0
  204. package/dist/config/types.d.ts.map +1 -0
  205. package/dist/config/types.js +72 -0
  206. package/dist/config/types.js.map +1 -0
  207. package/dist/config/validation.d.ts +55 -0
  208. package/dist/config/validation.d.ts.map +1 -0
  209. package/dist/config/validation.js +251 -0
  210. package/dist/config/validation.js.map +1 -0
  211. package/dist/http/index.d.ts +8 -0
  212. package/dist/http/index.d.ts.map +1 -0
  213. package/dist/http/index.js +12 -0
  214. package/dist/http/index.js.map +1 -0
  215. package/dist/http/sync-handlers.d.ts +162 -0
  216. package/dist/http/sync-handlers.d.ts.map +1 -0
  217. package/dist/http/sync-handlers.js +271 -0
  218. package/dist/http/sync-handlers.js.map +1 -0
  219. package/dist/index.d.ts +25 -0
  220. package/dist/index.d.ts.map +1 -0
  221. package/dist/index.js +69 -0
  222. package/dist/index.js.map +1 -0
  223. package/dist/server/index.d.ts +34 -0
  224. package/dist/server/index.d.ts.map +1 -0
  225. package/dist/server/index.js +3329 -0
  226. package/dist/server/index.js.map +1 -0
  227. package/dist/server/static.d.ts +18 -0
  228. package/dist/server/static.d.ts.map +1 -0
  229. package/dist/server/static.js +71 -0
  230. package/dist/server/static.js.map +1 -0
  231. package/dist/server/ws/broadcaster.d.ts +8 -0
  232. package/dist/server/ws/broadcaster.d.ts.map +1 -0
  233. package/dist/server/ws/broadcaster.js +7 -0
  234. package/dist/server/ws/broadcaster.js.map +1 -0
  235. package/dist/server/ws/handler.d.ts +55 -0
  236. package/dist/server/ws/handler.d.ts.map +1 -0
  237. package/dist/server/ws/handler.js +160 -0
  238. package/dist/server/ws/handler.js.map +1 -0
  239. package/dist/services/blocked-cache.d.ts +297 -0
  240. package/dist/services/blocked-cache.d.ts.map +1 -0
  241. package/dist/services/blocked-cache.js +755 -0
  242. package/dist/services/blocked-cache.js.map +1 -0
  243. package/dist/services/dependency.d.ts +205 -0
  244. package/dist/services/dependency.d.ts.map +1 -0
  245. package/dist/services/dependency.js +566 -0
  246. package/dist/services/dependency.js.map +1 -0
  247. package/dist/services/embeddings/fusion.d.ts +33 -0
  248. package/dist/services/embeddings/fusion.d.ts.map +1 -0
  249. package/dist/services/embeddings/fusion.js +34 -0
  250. package/dist/services/embeddings/fusion.js.map +1 -0
  251. package/dist/services/embeddings/index.d.ts +12 -0
  252. package/dist/services/embeddings/index.d.ts.map +1 -0
  253. package/dist/services/embeddings/index.js +10 -0
  254. package/dist/services/embeddings/index.js.map +1 -0
  255. package/dist/services/embeddings/local-provider.d.ts +31 -0
  256. package/dist/services/embeddings/local-provider.d.ts.map +1 -0
  257. package/dist/services/embeddings/local-provider.js +80 -0
  258. package/dist/services/embeddings/local-provider.js.map +1 -0
  259. package/dist/services/embeddings/service.d.ts +76 -0
  260. package/dist/services/embeddings/service.d.ts.map +1 -0
  261. package/dist/services/embeddings/service.js +153 -0
  262. package/dist/services/embeddings/service.js.map +1 -0
  263. package/dist/services/embeddings/types.d.ts +70 -0
  264. package/dist/services/embeddings/types.d.ts.map +1 -0
  265. package/dist/services/embeddings/types.js +8 -0
  266. package/dist/services/embeddings/types.js.map +1 -0
  267. package/dist/services/id-length-cache.d.ts +156 -0
  268. package/dist/services/id-length-cache.d.ts.map +1 -0
  269. package/dist/services/id-length-cache.js +197 -0
  270. package/dist/services/id-length-cache.js.map +1 -0
  271. package/dist/services/inbox.d.ts +147 -0
  272. package/dist/services/inbox.d.ts.map +1 -0
  273. package/dist/services/inbox.js +428 -0
  274. package/dist/services/inbox.js.map +1 -0
  275. package/dist/services/index.d.ts +10 -0
  276. package/dist/services/index.d.ts.map +1 -0
  277. package/dist/services/index.js +10 -0
  278. package/dist/services/index.js.map +1 -0
  279. package/dist/services/priority-service.d.ts +145 -0
  280. package/dist/services/priority-service.d.ts.map +1 -0
  281. package/dist/services/priority-service.js +272 -0
  282. package/dist/services/priority-service.js.map +1 -0
  283. package/dist/services/search-utils.d.ts +47 -0
  284. package/dist/services/search-utils.d.ts.map +1 -0
  285. package/dist/services/search-utils.js +83 -0
  286. package/dist/services/search-utils.js.map +1 -0
  287. package/dist/sync/hash.d.ts +48 -0
  288. package/dist/sync/hash.d.ts.map +1 -0
  289. package/dist/sync/hash.js +136 -0
  290. package/dist/sync/hash.js.map +1 -0
  291. package/dist/sync/index.d.ts +11 -0
  292. package/dist/sync/index.d.ts.map +1 -0
  293. package/dist/sync/index.js +16 -0
  294. package/dist/sync/index.js.map +1 -0
  295. package/dist/sync/merge.d.ts +80 -0
  296. package/dist/sync/merge.d.ts.map +1 -0
  297. package/dist/sync/merge.js +310 -0
  298. package/dist/sync/merge.js.map +1 -0
  299. package/dist/sync/serialization.d.ts +132 -0
  300. package/dist/sync/serialization.d.ts.map +1 -0
  301. package/dist/sync/serialization.js +306 -0
  302. package/dist/sync/serialization.js.map +1 -0
  303. package/dist/sync/service.d.ts +102 -0
  304. package/dist/sync/service.d.ts.map +1 -0
  305. package/dist/sync/service.js +493 -0
  306. package/dist/sync/service.js.map +1 -0
  307. package/dist/sync/types.d.ts +275 -0
  308. package/dist/sync/types.d.ts.map +1 -0
  309. package/dist/sync/types.js +76 -0
  310. package/dist/sync/types.js.map +1 -0
  311. package/dist/systems/identity.d.ts +479 -0
  312. package/dist/systems/identity.d.ts.map +1 -0
  313. package/dist/systems/identity.js +817 -0
  314. package/dist/systems/identity.js.map +1 -0
  315. package/dist/systems/index.d.ts +8 -0
  316. package/dist/systems/index.d.ts.map +1 -0
  317. package/dist/systems/index.js +29 -0
  318. package/dist/systems/index.js.map +1 -0
  319. package/package.json +121 -0
  320. package/web/assets/charts-vendor-D1YcbGux.js +55 -0
  321. package/web/assets/dnd-vendor-DmxE-_ZH.js +5 -0
  322. package/web/assets/editor-vendor-BxraAWts.js +279 -0
  323. package/web/assets/index-B77vv208.js +341 -0
  324. package/web/assets/index-CF_XnVLh.css +1 -0
  325. package/web/assets/router-vendor-BCKpRBrB.js +41 -0
  326. package/web/assets/ui-vendor-DUahGnbT.js +45 -0
  327. package/web/assets/utils-vendor-CfYKiENT.js +813 -0
  328. package/web/favicon.ico +0 -0
  329. package/web/index.html +23 -0
  330. package/web/logo.png +0 -0
@@ -0,0 +1,340 @@
1
+ /**
2
+ * CLI Runner
3
+ *
4
+ * Main entry point for command execution.
5
+ */
6
+ import { failure, ExitCode } from './types.js';
7
+ import { parseArgs, validateRequiredOptions } from './parser.js';
8
+ import { getFormatter, getOutputMode } from './formatter.js';
9
+ import { getCommandHelp } from './commands/help.js';
10
+ import { discoverPlugins, logPluginWarnings } from './plugin-loader.js';
11
+ import { registerAllPlugins, logConflictWarnings } from './plugin-registry.js';
12
+ import { suggestCommands } from './suggest.js';
13
+ // ============================================================================
14
+ // Command Registry
15
+ // ============================================================================
16
+ const commands = new Map();
17
+ const aliases = new Map();
18
+ /**
19
+ * Registers a command
20
+ */
21
+ export function registerCommand(command) {
22
+ commands.set(command.name, command);
23
+ }
24
+ /**
25
+ * Registers a command alias
26
+ */
27
+ export function registerAlias(alias, commandName) {
28
+ aliases.set(alias, commandName);
29
+ }
30
+ /**
31
+ * Gets a registered command (checking aliases first)
32
+ */
33
+ export function getCommand(name) {
34
+ // Check if it's an alias
35
+ const resolvedName = aliases.get(name) ?? name;
36
+ return commands.get(resolvedName);
37
+ }
38
+ /**
39
+ * Gets all registered commands
40
+ */
41
+ export function getAllCommands() {
42
+ return Array.from(commands.values());
43
+ }
44
+ /**
45
+ * Gets all registered aliases
46
+ */
47
+ export function getAllAliases() {
48
+ return new Map(aliases);
49
+ }
50
+ // ============================================================================
51
+ // Command Resolution
52
+ // ============================================================================
53
+ /**
54
+ * Resolves a command path to a command definition
55
+ */
56
+ function resolveCommand(commandPath) {
57
+ if (commandPath.length === 0) {
58
+ return { command: undefined, args: [] };
59
+ }
60
+ const [first, ...rest] = commandPath;
61
+ // Check aliases first, then commands
62
+ const resolvedFirst = aliases.get(first) ?? first;
63
+ let command = commands.get(resolvedFirst);
64
+ if (!command) {
65
+ return { command: undefined, args: commandPath };
66
+ }
67
+ // Resolve subcommands
68
+ let args = rest;
69
+ let subcommandSuggestion;
70
+ while (args.length > 0 && command && command.subcommands) {
71
+ const subName = args[0];
72
+ const subCommand = command.subcommands[subName];
73
+ if (subCommand) {
74
+ command = subCommand;
75
+ args = args.slice(1);
76
+ }
77
+ else {
78
+ // Check if the unmatched arg looks like a subcommand attempt (not an option or ID)
79
+ if (!subName.startsWith('-') && !subName.startsWith('el-') && command.subcommands) {
80
+ const subNames = Object.keys(command.subcommands);
81
+ const suggestions = suggestCommands(subName, subNames);
82
+ if (suggestions.length > 0) {
83
+ subcommandSuggestion = `Unknown subcommand: ${subName}\n\nDid you mean?\n${suggestions.map(s => ` ${s}`).join('\n')}\n\nRun "sf ${command.name} --help" to see available subcommands.`;
84
+ }
85
+ }
86
+ break;
87
+ }
88
+ }
89
+ return { command, args, subcommandSuggestion };
90
+ }
91
+ // ============================================================================
92
+ // Runner
93
+ // ============================================================================
94
+ /**
95
+ * Runs the CLI with the given arguments
96
+ */
97
+ export async function run(argv) {
98
+ // First pass: parse for global options and command path
99
+ // Use non-strict mode to skip unknown options (command-specific options)
100
+ let parsed;
101
+ try {
102
+ parsed = parseArgs(argv, [], { strict: false });
103
+ }
104
+ catch (err) {
105
+ const message = err instanceof Error ? err.message : String(err);
106
+ console.error(`Error: ${message}`);
107
+ return ExitCode.INVALID_ARGUMENTS;
108
+ }
109
+ const { command: commandPath, options } = parsed;
110
+ // Handle version flag
111
+ if (options.version) {
112
+ const version = await import('./commands/help.js').then(m => m.versionCommand);
113
+ const result = await version.handler([], { ...options });
114
+ return outputResult(result, options);
115
+ }
116
+ // Handle help flag with no command
117
+ if (options.help && commandPath.length === 0) {
118
+ const help = await import('./commands/help.js').then(m => m.helpCommand);
119
+ const result = await help.handler([], { ...options });
120
+ return outputResult(result, options);
121
+ }
122
+ // No command specified - validate there are no unknown options with strict parsing
123
+ if (commandPath.length === 0) {
124
+ try {
125
+ // Re-parse with strict mode to catch unknown options
126
+ parseArgs(argv, [], { strict: true });
127
+ }
128
+ catch (err) {
129
+ const message = err instanceof Error ? err.message : String(err);
130
+ console.error(`Error: ${message}`);
131
+ return ExitCode.INVALID_ARGUMENTS;
132
+ }
133
+ const help = await import('./commands/help.js').then(m => m.helpCommand);
134
+ const result = await help.handler([], { ...options });
135
+ return outputResult(result, options);
136
+ }
137
+ // Resolve command
138
+ const { command, subcommandSuggestion } = resolveCommand(commandPath);
139
+ if (!command) {
140
+ const input = commandPath[0];
141
+ const allCommandNames = Array.from(commands.keys());
142
+ const suggestions = suggestCommands(input, allCommandNames);
143
+ let msg = `Unknown command: ${input}`;
144
+ if (suggestions.length > 0) {
145
+ msg += `\n\nDid you mean?\n${suggestions.map(s => ` ${s}`).join('\n')}`;
146
+ }
147
+ msg += '\n\nRun "sf --help" to see available commands.';
148
+ const result = failure(msg, ExitCode.INVALID_ARGUMENTS);
149
+ return outputResult(result, options);
150
+ }
151
+ // Show subcommand suggestion if available
152
+ if (subcommandSuggestion) {
153
+ const result = failure(subcommandSuggestion, ExitCode.INVALID_ARGUMENTS);
154
+ return outputResult(result, options);
155
+ }
156
+ // Handle help flag for specific command
157
+ if (options.help) {
158
+ const helpText = getCommandHelp(command);
159
+ console.log(helpText);
160
+ return ExitCode.SUCCESS;
161
+ }
162
+ // Re-parse with command-specific options
163
+ try {
164
+ const fullParsed = parseArgs(argv, command.options);
165
+ // Validate required options
166
+ if (command.options) {
167
+ validateRequiredOptions(fullParsed.commandOptions, command.options);
168
+ }
169
+ // Re-resolve args from full parse to handle command options correctly
170
+ // The first parse may have included option values as positional args
171
+ const { args: fullSubcommandArgs } = resolveCommand(fullParsed.command);
172
+ const fullResolvedArgs = [...fullSubcommandArgs, ...fullParsed.args];
173
+ // Execute command
174
+ const result = await command.handler(fullResolvedArgs, { ...fullParsed.options, ...fullParsed.commandOptions });
175
+ return outputResult(result, fullParsed.options);
176
+ }
177
+ catch (err) {
178
+ const message = err instanceof Error ? err.message : String(err);
179
+ const result = failure(message, ExitCode.GENERAL_ERROR);
180
+ return outputResult(result, options);
181
+ }
182
+ }
183
+ // ============================================================================
184
+ // Output
185
+ // ============================================================================
186
+ /**
187
+ * Outputs a command result and returns the exit code
188
+ */
189
+ function outputResult(result, options) {
190
+ const mode = getOutputMode(options);
191
+ const formatter = getFormatter(mode);
192
+ if (result.error) {
193
+ const output = formatter.error(result);
194
+ if (output) {
195
+ console.error(output);
196
+ }
197
+ }
198
+ else {
199
+ const output = formatter.success(result);
200
+ if (output) {
201
+ console.log(output);
202
+ }
203
+ }
204
+ return result.exitCode;
205
+ }
206
+ // ============================================================================
207
+ // CLI Entry Point
208
+ // ============================================================================
209
+ /**
210
+ * Main CLI entry point
211
+ */
212
+ export async function main(argv = process.argv.slice(2)) {
213
+ // Register all commands
214
+ const { initCommand } = await import('./commands/init.js');
215
+ const { resetCommand } = await import('./commands/reset.js');
216
+ const { configCommand } = await import('./commands/config.js');
217
+ const { helpCommand, versionCommand } = await import('./commands/help.js');
218
+ const { showCommand, updateCommand, deleteCommand } = await import('./commands/crud.js');
219
+ const { readyCommand, blockedCommand, backlogCommand, closeCommand, reopenCommand, assignCommand, deferCommand, undeferCommand, taskCommand, } = await import('./commands/task.js');
220
+ const { depCommand } = await import('./commands/dep.js');
221
+ const { syncCommand, exportCommand, importCommand, statusCommand } = await import('./commands/sync.js');
222
+ const { identityCommand, whoamiCommand } = await import('./commands/identity.js');
223
+ const { entityCommand } = await import('./commands/entity.js');
224
+ const { statsCommand } = await import('./commands/stats.js');
225
+ const { doctorCommand, migrateCommand } = await import('./commands/admin.js');
226
+ const { gcCommand } = await import('./commands/gc.js');
227
+ const { historyCommand } = await import('./commands/history.js');
228
+ const { planCommand } = await import('./commands/plan.js');
229
+ const { workflowCommand } = await import('./commands/workflow.js');
230
+ const { playbookCommand } = await import('./commands/playbook.js');
231
+ const { channelCommand } = await import('./commands/channel.js');
232
+ const { libraryCommand } = await import('./commands/library.js');
233
+ const { teamCommand } = await import('./commands/team.js');
234
+ const { documentCommand } = await import('./commands/document.js');
235
+ const { embeddingsCommand } = await import('./commands/embeddings.js');
236
+ const { messageCommand } = await import('./commands/message.js');
237
+ const { inboxCommand } = await import('./commands/inbox.js');
238
+ const { completionCommand } = await import('./commands/completion.js');
239
+ const { aliasCommand } = await import('./commands/alias.js');
240
+ const { installCommand } = await import('./commands/install.js');
241
+ const { serveCommand } = await import('./commands/serve.js');
242
+ registerCommand(initCommand);
243
+ registerCommand(resetCommand);
244
+ registerCommand(configCommand);
245
+ registerCommand(helpCommand);
246
+ registerCommand(versionCommand);
247
+ registerCommand(showCommand);
248
+ registerCommand(updateCommand);
249
+ registerCommand(deleteCommand);
250
+ // Task commands
251
+ registerCommand(readyCommand);
252
+ registerCommand(blockedCommand);
253
+ registerCommand(backlogCommand);
254
+ registerCommand(closeCommand);
255
+ registerCommand(reopenCommand);
256
+ registerCommand(assignCommand);
257
+ registerCommand(deferCommand);
258
+ registerCommand(undeferCommand);
259
+ registerCommand(taskCommand);
260
+ // Dependency commands
261
+ registerCommand(depCommand);
262
+ // Sync commands
263
+ registerCommand(syncCommand);
264
+ registerCommand(exportCommand);
265
+ registerCommand(importCommand);
266
+ registerCommand(statusCommand);
267
+ // Identity commands
268
+ registerCommand(identityCommand);
269
+ registerCommand(whoamiCommand);
270
+ // Entity commands
271
+ registerCommand(entityCommand);
272
+ // Admin commands
273
+ registerCommand(statsCommand);
274
+ registerCommand(doctorCommand);
275
+ registerCommand(migrateCommand);
276
+ registerCommand(gcCommand);
277
+ // History command
278
+ registerCommand(historyCommand);
279
+ // Collection commands
280
+ registerCommand(planCommand);
281
+ registerCommand(workflowCommand);
282
+ registerCommand(playbookCommand);
283
+ registerCommand(channelCommand);
284
+ registerCommand(libraryCommand);
285
+ registerCommand(teamCommand);
286
+ registerCommand(documentCommand);
287
+ registerCommand(embeddingsCommand);
288
+ registerCommand(messageCommand);
289
+ registerCommand(inboxCommand);
290
+ // Completion command
291
+ registerCommand(completionCommand);
292
+ // Alias command
293
+ registerCommand(aliasCommand);
294
+ // Install command
295
+ registerCommand(installCommand);
296
+ // Serve command
297
+ registerCommand(serveCommand);
298
+ // Command aliases
299
+ registerAlias('rm', 'delete'); // Common shell convention
300
+ registerAlias('remove', 'delete'); // Alternative delete alias
301
+ registerAlias('s', 'show'); // Short form
302
+ registerAlias('get', 'show'); // Alternative show alias
303
+ registerAlias('todo', 'ready'); // User-friendly alias
304
+ registerAlias('tasks', 'ready'); // User-friendly alias
305
+ registerAlias('done', 'close'); // User-friendly alias
306
+ registerAlias('st', 'status'); // Short form for sync status
307
+ registerAlias('dep', 'dependency'); // Short form
308
+ registerAlias('msg', 'message'); // Short form
309
+ registerAlias('doc', 'document'); // Short form
310
+ // ============================================================================
311
+ // Plugin Loading
312
+ // ============================================================================
313
+ const isVerbose = argv.includes('--verbose') || argv.includes('-v');
314
+ // Load config for plugin settings (Strategy 2)
315
+ let pluginsConfig;
316
+ try {
317
+ const { loadConfig } = await import('../config/index.js');
318
+ const config = loadConfig();
319
+ pluginsConfig = config.plugins;
320
+ }
321
+ catch {
322
+ // Continue without config-based plugins
323
+ }
324
+ // Discover plugins (Strategy 1 + 2)
325
+ const discoveryResult = await discoverPlugins(pluginsConfig, { verbose: isVerbose });
326
+ logPluginWarnings(discoveryResult, { verbose: isVerbose });
327
+ // Register plugin commands AFTER built-ins (built-ins take precedence)
328
+ const registrationResults = await registerAllPlugins(discoveryResult.plugins, { verbose: isVerbose });
329
+ // Log conflict warnings in non-verbose mode
330
+ if (!isVerbose) {
331
+ // Only log if there were actual conflicts (not just skipped for not being plugins)
332
+ const hasConflicts = registrationResults.some(r => r.skippedCommands.length > 0 || r.skippedAliases.length > 0);
333
+ if (hasConflicts) {
334
+ logConflictWarnings(registrationResults);
335
+ }
336
+ }
337
+ const exitCode = await run(argv);
338
+ process.exit(exitCode);
339
+ }
340
+ //# sourceMappingURL=runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/cli/runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Command suggestion - "Did you mean?" for unknown commands
3
+ */
4
+ /**
5
+ * Computes Damerau-Levenshtein distance between two strings.
6
+ * Handles insertions, deletions, substitutions, and transpositions.
7
+ */
8
+ export declare function damerauLevenshtein(a: string, b: string): number;
9
+ /**
10
+ * Suggests commands similar to the input.
11
+ * Returns up to 3 suggestions with distance <= 3, sorted by distance.
12
+ * Also matches prefix as a secondary signal.
13
+ */
14
+ export declare function suggestCommands(input: string, commandNames: string[]): string[];
15
+ //# sourceMappingURL=suggest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suggest.d.ts","sourceRoot":"","sources":["../../src/cli/suggest.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAsB/D;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAc/E"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Command suggestion - "Did you mean?" for unknown commands
3
+ */
4
+ /**
5
+ * Computes Damerau-Levenshtein distance between two strings.
6
+ * Handles insertions, deletions, substitutions, and transpositions.
7
+ */
8
+ export function damerauLevenshtein(a, b) {
9
+ const la = a.length;
10
+ const lb = b.length;
11
+ const d = Array.from({ length: la + 1 }, () => Array(lb + 1).fill(0));
12
+ for (let i = 0; i <= la; i++)
13
+ d[i][0] = i;
14
+ for (let j = 0; j <= lb; j++)
15
+ d[0][j] = j;
16
+ for (let i = 1; i <= la; i++) {
17
+ for (let j = 1; j <= lb; j++) {
18
+ const cost = a[i - 1] === b[j - 1] ? 0 : 1;
19
+ d[i][j] = Math.min(d[i - 1][j] + 1, // deletion
20
+ d[i][j - 1] + 1, // insertion
21
+ d[i - 1][j - 1] + cost // substitution
22
+ );
23
+ if (i > 1 && j > 1 && a[i - 1] === b[j - 2] && a[i - 2] === b[j - 1]) {
24
+ d[i][j] = Math.min(d[i][j], d[i - 2][j - 2] + cost); // transposition
25
+ }
26
+ }
27
+ }
28
+ return d[la][lb];
29
+ }
30
+ /**
31
+ * Suggests commands similar to the input.
32
+ * Returns up to 3 suggestions with distance <= 3, sorted by distance.
33
+ * Also matches prefix as a secondary signal.
34
+ */
35
+ export function suggestCommands(input, commandNames) {
36
+ const scored = [];
37
+ for (const name of commandNames) {
38
+ const distance = damerauLevenshtein(input.toLowerCase(), name.toLowerCase());
39
+ if (distance <= 3) {
40
+ scored.push({ name, distance });
41
+ }
42
+ else if (name.startsWith(input.toLowerCase()) || input.toLowerCase().startsWith(name)) {
43
+ scored.push({ name, distance: 4 }); // prefix match as fallback
44
+ }
45
+ }
46
+ scored.sort((a, b) => a.distance - b.distance);
47
+ return scored.slice(0, 3).map(s => s.name);
48
+ }
49
+ //# sourceMappingURL=suggest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suggest.js","sourceRoot":"","sources":["../../src/cli/suggest.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,CAAS,EAAE,CAAS;IACrD,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC;IACpB,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC;IACpB,MAAM,CAAC,GAAe,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAElF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE;QAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE;QAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAE1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAChB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAQ,WAAW;YAClC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAQ,YAAY;YACnC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe;aACvC,CAAC;YACF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACrE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,gBAAgB;YACvE,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,KAAa,EAAE,YAAsB;IACnE,MAAM,MAAM,GAAyC,EAAE,CAAC;IAExD,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAC7E,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAClC,CAAC;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACxF,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,2BAA2B;QACjE,CAAC;IACH,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC/C,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC"}
@@ -0,0 +1,138 @@
1
+ /**
2
+ * CLI Types - Type definitions for command-line interface
3
+ */
4
+ /**
5
+ * Output format modes supported by the CLI
6
+ */
7
+ export declare const OutputMode: {
8
+ /** Human-readable formatted output */
9
+ readonly HUMAN: "human";
10
+ /** Verbose output with extra details and stack traces for errors */
11
+ readonly VERBOSE: "verbose";
12
+ /** Machine-parseable JSON output */
13
+ readonly JSON: "json";
14
+ /** Minimal output, IDs only */
15
+ readonly QUIET: "quiet";
16
+ };
17
+ export type OutputMode = (typeof OutputMode)[keyof typeof OutputMode];
18
+ /**
19
+ * Global CLI options available to all commands
20
+ */
21
+ export interface GlobalOptions {
22
+ /** Database file path */
23
+ db?: string;
24
+ /** Actor name for operations */
25
+ actor?: string;
26
+ /** Private key for signing requests (base64-encoded PKCS8 format) */
27
+ signKey?: string;
28
+ /** Path to file containing private key for signing requests */
29
+ signKeyFile?: string;
30
+ /** Enable JSON output mode */
31
+ json: boolean;
32
+ /** Enable quiet mode (minimal output) */
33
+ quiet: boolean;
34
+ /** Enable verbose/debug output */
35
+ verbose: boolean;
36
+ /** Show help */
37
+ help: boolean;
38
+ /** Show version */
39
+ version: boolean;
40
+ /** Allow additional command-specific options */
41
+ [key: string]: unknown;
42
+ }
43
+ /**
44
+ * Default values for global options
45
+ */
46
+ export declare const DEFAULT_GLOBAL_OPTIONS: GlobalOptions;
47
+ /**
48
+ * Command handler function signature
49
+ */
50
+ export type CommandHandler = (args: string[], options: GlobalOptions & Record<string, unknown>) => Promise<CommandResult> | CommandResult;
51
+ /**
52
+ * Command definition
53
+ */
54
+ export interface Command {
55
+ /** Command name */
56
+ name: string;
57
+ /** Short description for help */
58
+ description: string;
59
+ /** Usage pattern */
60
+ usage: string;
61
+ /** Detailed help text */
62
+ help?: string;
63
+ /** Command handler */
64
+ handler: CommandHandler;
65
+ /** Subcommands */
66
+ subcommands?: Record<string, Command>;
67
+ /** Command-specific options */
68
+ options?: CommandOption[];
69
+ }
70
+ /**
71
+ * Command-specific option definition
72
+ */
73
+ export interface CommandOption {
74
+ /** Option name (long form) */
75
+ name: string;
76
+ /** Short form (single character) */
77
+ short?: string;
78
+ /** Description */
79
+ description: string;
80
+ /** Whether option requires a value */
81
+ hasValue?: boolean;
82
+ /** Whether option is required */
83
+ required?: boolean;
84
+ /** Default value */
85
+ defaultValue?: unknown;
86
+ /** Whether option can be repeated to accumulate multiple values into an array */
87
+ array?: boolean;
88
+ }
89
+ /**
90
+ * Result of command execution
91
+ */
92
+ export interface CommandResult {
93
+ /** Exit code */
94
+ exitCode: number;
95
+ /** Output data (for JSON mode) */
96
+ data?: unknown;
97
+ /** Human-readable output */
98
+ message?: string;
99
+ /** Error message */
100
+ error?: string;
101
+ }
102
+ /**
103
+ * Factory for successful command results
104
+ */
105
+ export declare function success(data?: unknown, message?: string): CommandResult;
106
+ /**
107
+ * Factory for error command results
108
+ */
109
+ export declare function failure(error: string, exitCode?: number): CommandResult;
110
+ export declare const ExitCode: {
111
+ /** Success */
112
+ readonly SUCCESS: 0;
113
+ /** General error */
114
+ readonly GENERAL_ERROR: 1;
115
+ /** Invalid arguments */
116
+ readonly INVALID_ARGUMENTS: 2;
117
+ /** Not found */
118
+ readonly NOT_FOUND: 3;
119
+ /** Validation error */
120
+ readonly VALIDATION: 4;
121
+ /** Permission error */
122
+ readonly PERMISSION: 5;
123
+ };
124
+ export type ExitCode = (typeof ExitCode)[keyof typeof ExitCode];
125
+ /**
126
+ * Result of parsing command line arguments
127
+ */
128
+ export interface ParsedCommandLine {
129
+ /** Command path (e.g., ['dep', 'add']) */
130
+ command: string[];
131
+ /** Positional arguments after command */
132
+ args: string[];
133
+ /** Global options */
134
+ options: GlobalOptions;
135
+ /** Command-specific options */
136
+ commandOptions: Record<string, unknown>;
137
+ }
138
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cli/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * CLI Types - Type definitions for command-line interface
3
+ */
4
+ // ============================================================================
5
+ // Output Modes
6
+ // ============================================================================
7
+ /**
8
+ * Output format modes supported by the CLI
9
+ */
10
+ export const OutputMode = {
11
+ /** Human-readable formatted output */
12
+ HUMAN: 'human',
13
+ /** Verbose output with extra details and stack traces for errors */
14
+ VERBOSE: 'verbose',
15
+ /** Machine-parseable JSON output */
16
+ JSON: 'json',
17
+ /** Minimal output, IDs only */
18
+ QUIET: 'quiet',
19
+ };
20
+ /**
21
+ * Default values for global options
22
+ */
23
+ export const DEFAULT_GLOBAL_OPTIONS = {
24
+ db: undefined,
25
+ actor: undefined,
26
+ signKey: undefined,
27
+ signKeyFile: undefined,
28
+ json: false,
29
+ quiet: false,
30
+ verbose: false,
31
+ help: false,
32
+ version: false,
33
+ };
34
+ /**
35
+ * Factory for successful command results
36
+ */
37
+ export function success(data, message) {
38
+ return { exitCode: 0, data, message };
39
+ }
40
+ /**
41
+ * Factory for error command results
42
+ */
43
+ export function failure(error, exitCode = 1) {
44
+ return { exitCode, error };
45
+ }
46
+ // ============================================================================
47
+ // Exit Codes (from spec)
48
+ // ============================================================================
49
+ export const ExitCode = {
50
+ /** Success */
51
+ SUCCESS: 0,
52
+ /** General error */
53
+ GENERAL_ERROR: 1,
54
+ /** Invalid arguments */
55
+ INVALID_ARGUMENTS: 2,
56
+ /** Not found */
57
+ NOT_FOUND: 3,
58
+ /** Validation error */
59
+ VALIDATION: 4,
60
+ /** Permission error */
61
+ PERMISSION: 5,
62
+ };
63
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/cli/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,+EAA+E;AAC/E,eAAe;AACf,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,sCAAsC;IACtC,KAAK,EAAE,OAAO;IACd,oEAAoE;IACpE,OAAO,EAAE,SAAS;IAClB,oCAAoC;IACpC,IAAI,EAAE,MAAM;IACZ,+BAA+B;IAC/B,KAAK,EAAE,OAAO;CACN,CAAC;AAkCX;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAkB;IACnD,EAAE,EAAE,SAAS;IACb,KAAK,EAAE,SAAS;IAChB,OAAO,EAAE,SAAS;IAClB,WAAW,EAAE,SAAS;IACtB,IAAI,EAAE,KAAK;IACX,KAAK,EAAE,KAAK;IACZ,OAAO,EAAE,KAAK;IACd,IAAI,EAAE,KAAK;IACX,OAAO,EAAE,KAAK;CACf,CAAC;AAwEF;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,IAAc,EAAE,OAAgB;IACtD,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,KAAa,EAAE,WAAmB,CAAC;IACzD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AAC7B,CAAC;AAED,+EAA+E;AAC/E,yBAAyB;AACzB,+EAA+E;AAE/E,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,cAAc;IACd,OAAO,EAAE,CAAC;IACV,oBAAoB;IACpB,aAAa,EAAE,CAAC;IAChB,wBAAwB;IACxB,iBAAiB,EAAE,CAAC;IACpB,gBAAgB;IAChB,SAAS,EAAE,CAAC;IACZ,uBAAuB;IACvB,UAAU,EAAE,CAAC;IACb,uBAAuB;IACvB,UAAU,EAAE,CAAC;CACL,CAAC"}