@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,370 @@
1
+ /**
2
+ * Sync Commands - Export, Import, and Status operations
3
+ *
4
+ * Provides CLI commands for JSONL sync operations:
5
+ * - export: Export elements to JSONL files
6
+ * - import: Import elements from JSONL files
7
+ * - status: Show sync status (dirty elements, etc.)
8
+ */
9
+ import { existsSync } from 'node:fs';
10
+ import { join, resolve } from 'node:path';
11
+ import { success, failure, ExitCode } from '../types.js';
12
+ import { getOutputMode } from '../formatter.js';
13
+ import { createStorage, initializeSchema } from '@stoneforge/storage';
14
+ import { createSyncService } from '../../sync/service.js';
15
+ import { resolveDatabasePath, STONEFORGE_DIR } from '../db.js';
16
+ // ============================================================================
17
+ // Constants
18
+ // ============================================================================
19
+ const DEFAULT_SYNC_DIR = 'sync';
20
+ // ============================================================================
21
+ // Database Helper
22
+ // ============================================================================
23
+ /**
24
+ * Creates a SyncService instance from options
25
+ */
26
+ function createSyncServiceFromOptions(options) {
27
+ const dbPath = resolveDatabasePath(options);
28
+ if (!dbPath) {
29
+ return {
30
+ syncService: null,
31
+ error: 'No database found. Run "sf init" to initialize a workspace, or specify --db path',
32
+ };
33
+ }
34
+ try {
35
+ const backend = createStorage({ path: dbPath, create: true });
36
+ initializeSchema(backend);
37
+ return { syncService: createSyncService(backend) };
38
+ }
39
+ catch (err) {
40
+ const message = err instanceof Error ? err.message : String(err);
41
+ return {
42
+ syncService: null,
43
+ error: `Failed to open database: ${message}`,
44
+ };
45
+ }
46
+ }
47
+ /**
48
+ * Resolves sync directory from options or default
49
+ */
50
+ function resolveSyncDir(options, isExport) {
51
+ const pathOption = isExport ? options.output : options.input;
52
+ if (pathOption) {
53
+ return resolve(pathOption);
54
+ }
55
+ // Default to .stoneforge/sync
56
+ const stoneforgeDir = join(process.cwd(), STONEFORGE_DIR);
57
+ return join(stoneforgeDir, DEFAULT_SYNC_DIR);
58
+ }
59
+ const exportOptions = [
60
+ {
61
+ name: 'output',
62
+ short: 'o',
63
+ description: 'Output directory path (default: .stoneforge/sync)',
64
+ hasValue: true,
65
+ },
66
+ {
67
+ name: 'full',
68
+ short: 'f',
69
+ description: 'Full export (ignore dirty tracking)',
70
+ },
71
+ {
72
+ name: 'include-ephemeral',
73
+ description: 'Include ephemeral elements (default: exclude)',
74
+ },
75
+ ];
76
+ async function exportHandler(_args, options) {
77
+ const { syncService, error } = createSyncServiceFromOptions(options);
78
+ if (error) {
79
+ return failure(error, ExitCode.GENERAL_ERROR);
80
+ }
81
+ try {
82
+ const outputDir = resolveSyncDir(options, true);
83
+ const result = syncService.exportSync({
84
+ outputDir,
85
+ full: options.full ?? false,
86
+ includeEphemeral: options['include-ephemeral'] ?? false,
87
+ });
88
+ // Format output based on mode
89
+ const mode = getOutputMode(options);
90
+ if (mode === 'json') {
91
+ return success(result);
92
+ }
93
+ if (mode === 'quiet') {
94
+ return success(`${result.elementsExported}:${result.dependenciesExported}`);
95
+ }
96
+ // Human-readable output
97
+ const exportType = result.incremental ? 'Incremental' : 'Full';
98
+ const lines = [
99
+ `${exportType} export completed`,
100
+ '',
101
+ `Elements exported: ${result.elementsExported}`,
102
+ `Dependencies exported: ${result.dependenciesExported}`,
103
+ '',
104
+ `Files:`,
105
+ ` ${result.elementsFile}`,
106
+ ` ${result.dependenciesFile}`,
107
+ ];
108
+ return success(result, lines.join('\n'));
109
+ }
110
+ catch (err) {
111
+ const message = err instanceof Error ? err.message : String(err);
112
+ return failure(`Export failed: ${message}`, ExitCode.GENERAL_ERROR);
113
+ }
114
+ }
115
+ export const exportCommand = {
116
+ name: 'export',
117
+ description: 'Export elements to JSONL files',
118
+ usage: 'sf export [options]',
119
+ help: `Export elements and dependencies to JSONL files for version control.
120
+
121
+ By default, only exports elements that have been modified since the last export
122
+ (incremental export). Use --full for a complete export.
123
+
124
+ Options:
125
+ -o, --output <dir> Output directory (default: .stoneforge/sync)
126
+ -f, --full Full export (ignore dirty tracking)
127
+ --include-ephemeral Include ephemeral elements (excluded by default)
128
+
129
+ Output files:
130
+ elements.jsonl All exported elements
131
+ dependencies.jsonl All exported dependencies
132
+
133
+ Examples:
134
+ sf export
135
+ sf export --full
136
+ sf export -o ./backup
137
+ sf export --include-ephemeral`,
138
+ options: exportOptions,
139
+ handler: exportHandler,
140
+ };
141
+ const importOptions = [
142
+ {
143
+ name: 'input',
144
+ short: 'i',
145
+ description: 'Input directory path (default: .stoneforge/sync)',
146
+ hasValue: true,
147
+ },
148
+ {
149
+ name: 'dry-run',
150
+ short: 'n',
151
+ description: 'Show what would be imported without making changes',
152
+ },
153
+ {
154
+ name: 'force',
155
+ short: 'f',
156
+ description: 'Force import (remote always wins conflicts)',
157
+ },
158
+ ];
159
+ async function importHandler(_args, options) {
160
+ const { syncService, error } = createSyncServiceFromOptions(options);
161
+ if (error) {
162
+ return failure(error, ExitCode.GENERAL_ERROR);
163
+ }
164
+ try {
165
+ const inputDir = resolveSyncDir(options, false);
166
+ // Check if input directory exists
167
+ if (!existsSync(inputDir)) {
168
+ return failure(`Input directory not found: ${inputDir}`, ExitCode.NOT_FOUND);
169
+ }
170
+ const result = syncService.importSync({
171
+ inputDir,
172
+ dryRun: options['dry-run'] ?? false,
173
+ force: options.force ?? false,
174
+ });
175
+ // Format output based on mode
176
+ const mode = getOutputMode(options);
177
+ if (mode === 'json') {
178
+ return success(result);
179
+ }
180
+ if (mode === 'quiet') {
181
+ return success(`${result.elementsImported}:${result.dependenciesImported}`);
182
+ }
183
+ // Human-readable output
184
+ const isDryRun = options['dry-run'] ?? false;
185
+ const actionWord = isDryRun ? 'Would import' : 'Imported';
186
+ const lines = [
187
+ isDryRun ? 'Dry run - no changes made' : 'Import completed',
188
+ '',
189
+ `Elements:`,
190
+ ` ${actionWord}: ${result.elementsImported}`,
191
+ ` Skipped: ${result.elementsSkipped}`,
192
+ '',
193
+ `Dependencies:`,
194
+ ` ${actionWord}: ${result.dependenciesImported}`,
195
+ ` Skipped: ${result.dependenciesSkipped}`,
196
+ ];
197
+ // Show conflicts if any
198
+ if (result.conflicts.length > 0) {
199
+ lines.push('');
200
+ lines.push(`Conflicts resolved: ${result.conflicts.length}`);
201
+ for (const conflict of result.conflicts.slice(0, 5)) {
202
+ lines.push(` ${conflict.elementId}: ${conflict.resolution}`);
203
+ }
204
+ if (result.conflicts.length > 5) {
205
+ lines.push(` ... and ${result.conflicts.length - 5} more`);
206
+ }
207
+ }
208
+ // Show errors if any
209
+ if (result.errors.length > 0) {
210
+ lines.push('');
211
+ lines.push(`Errors: ${result.errors.length}`);
212
+ for (const err of result.errors.slice(0, 5)) {
213
+ lines.push(` ${err.file}:${err.line}: ${err.message}`);
214
+ }
215
+ if (result.errors.length > 5) {
216
+ lines.push(` ... and ${result.errors.length - 5} more`);
217
+ }
218
+ }
219
+ return success(result, lines.join('\n'));
220
+ }
221
+ catch (err) {
222
+ const message = err instanceof Error ? err.message : String(err);
223
+ return failure(`Import failed: ${message}`, ExitCode.GENERAL_ERROR);
224
+ }
225
+ }
226
+ export const importCommand = {
227
+ name: 'import',
228
+ description: 'Import elements from JSONL files',
229
+ usage: 'sf import [options]',
230
+ help: `Import elements and dependencies from JSONL files.
231
+
232
+ Uses Last-Write-Wins (LWW) merge strategy by default:
233
+ - Compares updatedAt timestamps
234
+ - Later timestamp wins
235
+ - Tags are merged (union)
236
+ - Closed status wins over open states
237
+
238
+ Options:
239
+ -i, --input <dir> Input directory (default: .stoneforge/sync)
240
+ -n, --dry-run Show what would change without importing
241
+ -f, --force Force import (remote always wins)
242
+
243
+ Expected files:
244
+ elements.jsonl Elements to import
245
+ dependencies.jsonl Dependencies to import
246
+
247
+ Examples:
248
+ sf import
249
+ sf import --dry-run
250
+ sf import -i ./backup
251
+ sf import --force`,
252
+ options: importOptions,
253
+ handler: importHandler,
254
+ };
255
+ // ============================================================================
256
+ // Status Command
257
+ // ============================================================================
258
+ async function statusHandler(_args, options) {
259
+ const dbPath = resolveDatabasePath(options);
260
+ if (!dbPath) {
261
+ return failure('No database found. Run "sf init" to initialize a workspace, or specify --db path', ExitCode.GENERAL_ERROR);
262
+ }
263
+ try {
264
+ const backend = createStorage({ path: dbPath, create: true });
265
+ initializeSchema(backend);
266
+ // Get dirty element count
267
+ const dirtyElements = backend.getDirtyElements();
268
+ const dirtyCount = dirtyElements.length;
269
+ // Get total element count
270
+ const totalResult = backend.queryOne('SELECT COUNT(*) as count FROM elements WHERE deleted_at IS NULL');
271
+ const totalCount = totalResult?.count ?? 0;
272
+ // Check sync directory
273
+ const syncDir = join(process.cwd(), STONEFORGE_DIR, DEFAULT_SYNC_DIR);
274
+ const syncDirExists = existsSync(syncDir);
275
+ const elementsFileExists = syncDirExists && existsSync(join(syncDir, 'elements.jsonl'));
276
+ const dependenciesFileExists = syncDirExists && existsSync(join(syncDir, 'dependencies.jsonl'));
277
+ // Build status object
278
+ const status = {
279
+ dirtyElementCount: dirtyCount,
280
+ totalElementCount: totalCount,
281
+ hasPendingChanges: dirtyCount > 0,
282
+ syncDirectory: syncDir,
283
+ syncDirectoryExists: syncDirExists,
284
+ elementsFileExists,
285
+ dependenciesFileExists,
286
+ };
287
+ // Format output based on mode
288
+ const mode = getOutputMode(options);
289
+ if (mode === 'json') {
290
+ return success(status);
291
+ }
292
+ if (mode === 'quiet') {
293
+ return success(String(dirtyCount));
294
+ }
295
+ // Human-readable output
296
+ const lines = [
297
+ 'Sync Status',
298
+ '',
299
+ `Total elements: ${totalCount}`,
300
+ `Pending changes: ${dirtyCount}`,
301
+ '',
302
+ `Sync directory: ${syncDir}`,
303
+ ` Directory: ${syncDirExists ? 'exists' : 'not found'}`,
304
+ ` elements.jsonl: ${elementsFileExists ? 'exists' : 'not found'}`,
305
+ ` dependencies.jsonl: ${dependenciesFileExists ? 'exists' : 'not found'}`,
306
+ ];
307
+ if (dirtyCount > 0) {
308
+ lines.push('');
309
+ lines.push('Run "sf export" to export pending changes.');
310
+ }
311
+ return success(status, lines.join('\n'));
312
+ }
313
+ catch (err) {
314
+ const message = err instanceof Error ? err.message : String(err);
315
+ return failure(`Failed to get status: ${message}`, ExitCode.GENERAL_ERROR);
316
+ }
317
+ }
318
+ export const statusCommand = {
319
+ name: 'status',
320
+ description: 'Show sync status',
321
+ usage: 'sf status',
322
+ help: `Show the current sync status.
323
+
324
+ Displays:
325
+ - Number of elements with pending changes (dirty)
326
+ - Total element count
327
+ - Sync directory status
328
+ - Whether sync files exist
329
+
330
+ Examples:
331
+ sf status
332
+ sf status --json`,
333
+ options: [],
334
+ handler: statusHandler,
335
+ };
336
+ // ============================================================================
337
+ // Sync Parent Command (for subcommand structure)
338
+ // ============================================================================
339
+ export const syncCommand = {
340
+ name: 'sync',
341
+ description: 'Sync commands (export, import, status)',
342
+ usage: 'sf sync <command> [options]',
343
+ help: `JSONL sync commands for version control integration.
344
+
345
+ Commands:
346
+ export Export elements to JSONL files
347
+ import Import elements from JSONL files
348
+ status Show sync status
349
+
350
+ Examples:
351
+ sf sync export
352
+ sf sync import --dry-run
353
+ sf sync status`,
354
+ subcommands: {
355
+ export: exportCommand,
356
+ import: importCommand,
357
+ status: statusCommand,
358
+ },
359
+ handler: async (_args, options) => {
360
+ // Show help if no subcommand specified
361
+ const mode = getOutputMode(options);
362
+ if (mode === 'json') {
363
+ return success({
364
+ commands: ['export', 'import', 'status'],
365
+ });
366
+ }
367
+ return failure('Usage: sf sync <command>\n\nCommands: export, import, status\n\nRun "sf sync --help" for more information.', ExitCode.INVALID_ARGUMENTS);
368
+ },
369
+ };
370
+ //# sourceMappingURL=sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/cli/commands/sync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Task Commands - Task-specific CLI operations
3
+ *
4
+ * Provides CLI commands for task management:
5
+ * - ready: List tasks ready for work
6
+ * - blocked: List blocked tasks with reasons
7
+ * - close: Close a task
8
+ * - reopen: Reopen a closed task
9
+ * - assign: Assign a task to an entity
10
+ * - defer: Defer a task
11
+ * - undefer: Remove deferral from a task
12
+ */
13
+ import type { Command } from '../types.js';
14
+ export declare const readyCommand: Command;
15
+ export declare const backlogCommand: Command;
16
+ export declare const blockedCommand: Command;
17
+ export declare const closeCommand: Command;
18
+ export declare const reopenCommand: Command;
19
+ export declare const assignCommand: Command;
20
+ export declare const deferCommand: Command;
21
+ export declare const undeferCommand: Command;
22
+ export declare const describeCommand: Command;
23
+ export declare const activateCommand: Command;
24
+ export declare const taskCommand: Command;
25
+ //# sourceMappingURL=task.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/task.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,OAAO,EAA+C,MAAM,aAAa,CAAC;AA4JxF,eAAO,MAAM,YAAY,EAAE,OAwB1B,CAAC;AA0FF,eAAO,MAAM,cAAc,EAAE,OAkB5B,CAAC;AAyGF,eAAO,MAAM,cAAc,EAAE,OAiB5B,CAAC;AAuFF,eAAO,MAAM,YAAY,EAAE,OAiB1B,CAAC;AA6IF,eAAO,MAAM,aAAa,EAAE,OAiB3B,CAAC;AA+EF,eAAO,MAAM,aAAa,EAAE,OAkB3B,CAAC;AAkGF,eAAO,MAAM,YAAY,EAAE,OAiB1B,CAAC;AAoEF,eAAO,MAAM,cAAc,EAAE,OAa5B,CAAC;AAiLF,eAAO,MAAM,eAAe,EAAE,OA0B7B,CAAC;AA4DF,eAAO,MAAM,eAAe,EAAE,OAa7B,CAAC;AA2JF,eAAO,MAAM,WAAW,EAAE,OAuDzB,CAAC"}