@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,271 @@
1
+ /**
2
+ * HTTP Sync Handlers - Browser sync support via HTTP endpoints
3
+ *
4
+ * Provides framework-agnostic handlers for browser sync operations.
5
+ * These can be integrated with any HTTP framework (Bun.serve, Express, Hono, etc.)
6
+ *
7
+ * Implements the browser sync protocol from api/sync.md:
8
+ * 1. Browser exports local changes
9
+ * 2. HTTP POST to server with JSONL
10
+ * 3. Server merges with its state
11
+ * 4. Server exports current state
12
+ * 5. HTTP response with JSONL
13
+ * 6. Browser imports and merges
14
+ */
15
+ import { createSyncService } from '../sync/service.js';
16
+ import { createTimestamp, ValidationError, ErrorCode } from '@stoneforge/core';
17
+ // ============================================================================
18
+ // Handler Class
19
+ // ============================================================================
20
+ /**
21
+ * HTTP handlers for browser sync operations
22
+ */
23
+ export class SyncHttpHandlers {
24
+ backend;
25
+ syncService;
26
+ constructor(backend) {
27
+ this.backend = backend;
28
+ this.syncService = createSyncService(backend);
29
+ }
30
+ /**
31
+ * Handle GET /api/sync/status
32
+ *
33
+ * Returns current sync status including dirty element count
34
+ */
35
+ getStatus() {
36
+ try {
37
+ const dirtyElements = this.backend.getDirtyElements();
38
+ const status = {
39
+ dirtyElementCount: dirtyElements.length,
40
+ dirtyDependencyCount: 0, // Not tracked separately currently
41
+ hasPendingChanges: dirtyElements.length > 0,
42
+ };
43
+ return {
44
+ success: true,
45
+ data: status,
46
+ };
47
+ }
48
+ catch (error) {
49
+ return this.handleError(error);
50
+ }
51
+ }
52
+ /**
53
+ * Handle GET /api/sync/pull or POST /api/sync/pull
54
+ *
55
+ * Exports server state as JSONL for client to import
56
+ */
57
+ pull(request) {
58
+ try {
59
+ const includeEphemeral = request?.includeEphemeral ?? false;
60
+ const includeDependencies = request?.includeDependencies !== false;
61
+ const result = this.syncService.exportToString({
62
+ includeEphemeral,
63
+ includeDependencies,
64
+ });
65
+ const elementCount = result.elements
66
+ ? result.elements.trim().split('\n').filter(Boolean).length
67
+ : 0;
68
+ const dependencyCount = includeDependencies && result.dependencies
69
+ ? result.dependencies.trim().split('\n').filter(Boolean).length
70
+ : undefined;
71
+ return {
72
+ success: true,
73
+ data: {
74
+ elements: result.elements,
75
+ dependencies: includeDependencies ? result.dependencies : undefined,
76
+ elementCount,
77
+ dependencyCount,
78
+ exportedAt: createTimestamp(),
79
+ },
80
+ };
81
+ }
82
+ catch (error) {
83
+ return this.handleError(error);
84
+ }
85
+ }
86
+ /**
87
+ * Handle POST /api/sync/push
88
+ *
89
+ * Imports client JSONL data to server
90
+ */
91
+ push(request) {
92
+ try {
93
+ // Validate request
94
+ if (typeof request.elements !== 'string') {
95
+ throw new ValidationError('elements field is required and must be a string', ErrorCode.MISSING_REQUIRED_FIELD, {
96
+ field: 'elements',
97
+ });
98
+ }
99
+ const result = this.syncService.importFromStrings(request.elements, request.dependencies ?? '', {
100
+ dryRun: request.dryRun ?? false,
101
+ force: request.force ?? false,
102
+ });
103
+ // Optionally include server state after merge
104
+ let serverState;
105
+ if (!request.dryRun) {
106
+ // After push, client may want to pull updated state
107
+ const exported = this.syncService.exportToString({ includeDependencies: true });
108
+ const elementCount = exported.elements
109
+ ? exported.elements.trim().split('\n').filter(Boolean).length
110
+ : 0;
111
+ const dependencyCount = exported.dependencies
112
+ ? exported.dependencies.trim().split('\n').filter(Boolean).length
113
+ : 0;
114
+ serverState = {
115
+ elements: exported.elements,
116
+ dependencies: exported.dependencies,
117
+ elementCount,
118
+ dependencyCount,
119
+ exportedAt: createTimestamp(),
120
+ };
121
+ }
122
+ return {
123
+ success: true,
124
+ data: {
125
+ result,
126
+ serverState,
127
+ },
128
+ };
129
+ }
130
+ catch (error) {
131
+ return this.handleError(error);
132
+ }
133
+ }
134
+ /**
135
+ * Handle POST /api/sync/exchange
136
+ *
137
+ * Bidirectional sync in a single request:
138
+ * 1. Import client data
139
+ * 2. Export server state
140
+ * 3. Return both results
141
+ */
142
+ exchange(request) {
143
+ try {
144
+ // Validate request
145
+ if (typeof request.elements !== 'string') {
146
+ throw new ValidationError('elements field is required and must be a string', ErrorCode.MISSING_REQUIRED_FIELD, {
147
+ field: 'elements',
148
+ });
149
+ }
150
+ // Step 1: Import client data
151
+ const importResult = this.syncService.importFromStrings(request.elements, request.dependencies ?? '', {
152
+ dryRun: false,
153
+ force: request.force ?? false,
154
+ });
155
+ // Step 2: Export server state (after merge)
156
+ const exported = this.syncService.exportToString({ includeDependencies: true });
157
+ const serverElementCount = exported.elements
158
+ ? exported.elements.trim().split('\n').filter(Boolean).length
159
+ : 0;
160
+ const serverDependencyCount = exported.dependencies
161
+ ? exported.dependencies.trim().split('\n').filter(Boolean).length
162
+ : 0;
163
+ return {
164
+ success: true,
165
+ data: {
166
+ importResult,
167
+ serverElements: exported.elements,
168
+ serverDependencies: exported.dependencies ?? '',
169
+ serverElementCount,
170
+ serverDependencyCount,
171
+ syncedAt: createTimestamp(),
172
+ },
173
+ };
174
+ }
175
+ catch (error) {
176
+ return this.handleError(error);
177
+ }
178
+ }
179
+ /**
180
+ * Handle errors and return appropriate HTTP response
181
+ */
182
+ handleError(error) {
183
+ if (error instanceof ValidationError) {
184
+ return {
185
+ success: false,
186
+ error: {
187
+ code: error.code,
188
+ message: error.message,
189
+ details: error.details,
190
+ },
191
+ };
192
+ }
193
+ if (error instanceof Error) {
194
+ return {
195
+ success: false,
196
+ error: {
197
+ code: 'INTERNAL_ERROR',
198
+ message: error.message,
199
+ },
200
+ };
201
+ }
202
+ return {
203
+ success: false,
204
+ error: {
205
+ code: 'UNKNOWN_ERROR',
206
+ message: 'An unknown error occurred',
207
+ },
208
+ };
209
+ }
210
+ }
211
+ // ============================================================================
212
+ // Factory Function
213
+ // ============================================================================
214
+ /**
215
+ * Create sync HTTP handlers for a storage backend
216
+ */
217
+ export function createSyncHttpHandlers(backend) {
218
+ return new SyncHttpHandlers(backend);
219
+ }
220
+ // ============================================================================
221
+ // HTTP Status Helpers
222
+ // ============================================================================
223
+ /**
224
+ * Map response to HTTP status code
225
+ */
226
+ export function getHttpStatus(response) {
227
+ if (response.success) {
228
+ return 200;
229
+ }
230
+ switch (response.error?.code) {
231
+ case ErrorCode.MISSING_REQUIRED_FIELD:
232
+ case ErrorCode.INVALID_INPUT:
233
+ case ErrorCode.INVALID_ID:
234
+ return 400;
235
+ case ErrorCode.NOT_FOUND:
236
+ return 404;
237
+ case ErrorCode.ALREADY_EXISTS:
238
+ case ErrorCode.CYCLE_DETECTED:
239
+ case ErrorCode.SYNC_CONFLICT:
240
+ return 409;
241
+ case ErrorCode.DATABASE_ERROR:
242
+ return 500;
243
+ default:
244
+ return 500;
245
+ }
246
+ }
247
+ // ============================================================================
248
+ // Content-Type Helpers
249
+ // ============================================================================
250
+ /**
251
+ * Supported content types for sync endpoints
252
+ */
253
+ export const SYNC_CONTENT_TYPES = {
254
+ JSON: 'application/json',
255
+ JSONL: 'application/jsonl',
256
+ NDJSON: 'application/x-ndjson',
257
+ };
258
+ /**
259
+ * Parse request body based on content type
260
+ */
261
+ export function parseRequestBody(body, _contentType) {
262
+ // Default to JSON parsing (contentType reserved for future JSONL streaming support)
263
+ return JSON.parse(body);
264
+ }
265
+ /**
266
+ * Serialize response based on accept header
267
+ */
268
+ export function serializeResponse(response) {
269
+ return JSON.stringify(response);
270
+ }
271
+ //# sourceMappingURL=sync-handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-handlers.js","sourceRoot":"","sources":["../../src/http/sync-handlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * @stoneforge/quarry
3
+ *
4
+ * Core SDK for Stoneforge - API, services, sync, and CLI.
5
+ * This package provides the main programmatic interface to Stoneforge,
6
+ * building on @stoneforge/core for types and @stoneforge/storage for persistence.
7
+ *
8
+ * Note: Types from @stoneforge/core and @stoneforge/storage are NOT re-exported here
9
+ * to avoid naming conflicts. Import them directly:
10
+ * import { Task, Entity, ... } from '@stoneforge/core';
11
+ * import { createStorage, ... } from '@stoneforge/storage';
12
+ */
13
+ export { type Row, type QueryResult, type MutationResult, type StatementResult, type PreparedStatement, type IsolationLevel, type TransactionOptions, type Transaction, type SqlitePragmas, type StorageConfig, type DirtyElement, type DirtyTrackingOptions, type Migration, type MigrationResult, type StorageBackend, type StorageStats, type StorageFactory, type AsyncStorageFactory, DEFAULT_PRAGMAS, SqliteResultCode, isBusyError, isConstraintError, isUniqueViolation, isForeignKeyViolation, isCorruptionError, mapStorageError, queryError, mutationError, connectionError, migrationError, createStorage, createStorageAsync, isBunRuntime, isNodeRuntime, isBrowserRuntime, getRuntimeName, CURRENT_SCHEMA_VERSION, MIGRATIONS, EXPECTED_TABLES, initializeSchema, getSchemaVersion, isSchemaUpToDate, getPendingMigrations, resetSchema, validateSchema, getTableColumns, getTableIndexes, } from '@stoneforge/storage';
14
+ export * from './api/index.js';
15
+ export { InboxService, createInboxService } from './services/inbox.js';
16
+ export * from './services/dependency.js';
17
+ export * from './services/priority-service.js';
18
+ export * from './services/id-length-cache.js';
19
+ export * from './services/blocked-cache.js';
20
+ export * from './http/index.js';
21
+ export { type ExportOptions as SyncExportOptions, type ImportOptions as SyncImportOptions, type ImportResult as SyncImportResult, type SerializedElement, type SerializedDependency, type ContentHashResult, MergeResolution, type ConflictRecord, type DependencyConflictRecord, type ExportResult, type ImportError, type DirtyElement as SyncDirtyElement, type DirtyDependency, type SyncStatus, type TombstoneStatus, type ElementWithTombstoneStatus, ELEMENT_TYPE_PRIORITY, getTypePriority, HASH_EXCLUDED_FIELDS, serializeElement, serializeDependency, parseElement, parseDependency, tryParseElement, tryParseDependency, serializeElements, serializeDependencies, parseElements, parseDependencies, sortElementsForExport, sortDependenciesForExport, isSerializedElement, isSerializedDependency, type ParseError, computeContentHash, computeContentHashSync, hasSameContentHash, matchesContentHash, mergeElements, mergeTags, mergeDependencies, getTombstoneStatus, type ElementMergeResult, type DependencyMergeResult, SyncService, createSyncService, } from './sync/index.js';
22
+ export * from './config/index.js';
23
+ export { IdentityMode, type Signature, type PublicKey, type SignedRequestFields, type SigningInput, type SignedData, VerificationStatus, type VerificationResult, type IdentityConfig, type EntityLookup, type VerifySignatureOptions, DEFAULT_TIME_TOLERANCE, DEFAULT_IDENTITY_CONFIG as DEFAULT_IDENTITY_SYSTEM_CONFIG, isValidIdentityMode, validateIdentityMode, isValidPublicKey, validatePublicKey, isValidSignature, validateSignature, isValidRequestHash, validateRequestHash, isValidTimeTolerance, validateTimeTolerance, isSignedRequestFields, validateSignedRequestFields, isVerificationResult, isIdentityConfig, validateIdentityConfig, constructSignedData, parseSignedData, checkTimeTolerance, validateTimeTolerance2, verificationSuccess, verificationFailure, verificationNotSigned, verifyEd25519Signature, signEd25519, generateEd25519Keypair, verifySignature, shouldAllowRequest, hashRequestBody, createSignedRequest, createIdentityConfig, } from './systems/index.js';
24
+ export { OPERATOR_ENTITY_ID, OPERATOR_ENTITY_NAME } from './cli/commands/init.js';
25
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,69 @@
1
+ /**
2
+ * @stoneforge/quarry
3
+ *
4
+ * Core SDK for Stoneforge - API, services, sync, and CLI.
5
+ * This package provides the main programmatic interface to Stoneforge,
6
+ * building on @stoneforge/core for types and @stoneforge/storage for persistence.
7
+ *
8
+ * Note: Types from @stoneforge/core and @stoneforge/storage are NOT re-exported here
9
+ * to avoid naming conflicts. Import them directly:
10
+ * import { Task, Entity, ... } from '@stoneforge/core';
11
+ * import { createStorage, ... } from '@stoneforge/storage';
12
+ */
13
+ // Re-export storage utilities for convenience
14
+ export { DEFAULT_PRAGMAS,
15
+ // Error utilities
16
+ SqliteResultCode, isBusyError, isConstraintError, isUniqueViolation, isForeignKeyViolation, isCorruptionError, mapStorageError, queryError, mutationError, connectionError, migrationError,
17
+ // Storage factory (handles runtime detection automatically)
18
+ createStorage, createStorageAsync, isBunRuntime, isNodeRuntime, isBrowserRuntime, getRuntimeName,
19
+ // Schema management
20
+ CURRENT_SCHEMA_VERSION, MIGRATIONS, EXPECTED_TABLES, initializeSchema, getSchemaVersion, isSchemaUpToDate, getPendingMigrations, resetSchema, validateSchema, getTableColumns, getTableIndexes, } from '@stoneforge/storage';
21
+ // API - Main programmatic interface
22
+ export * from './api/index.js';
23
+ // Services - Business logic services
24
+ export { InboxService, createInboxService } from './services/inbox.js';
25
+ export * from './services/dependency.js';
26
+ export * from './services/priority-service.js';
27
+ export * from './services/id-length-cache.js';
28
+ export * from './services/blocked-cache.js';
29
+ // HTTP handlers for browser sync
30
+ export * from './http/index.js';
31
+ // Sync module (excluding types that conflict with api/types.ts)
32
+ // Use SyncExportOptions, SyncImportOptions, SyncImportResult for sync-specific types
33
+ export { MergeResolution, ELEMENT_TYPE_PRIORITY, getTypePriority, HASH_EXCLUDED_FIELDS,
34
+ // Serialization
35
+ serializeElement, serializeDependency, parseElement, parseDependency, tryParseElement, tryParseDependency, serializeElements, serializeDependencies, parseElements, parseDependencies, sortElementsForExport, sortDependenciesForExport, isSerializedElement, isSerializedDependency,
36
+ // Hashing
37
+ computeContentHash, computeContentHashSync, hasSameContentHash, matchesContentHash,
38
+ // Merge
39
+ mergeElements, mergeTags, mergeDependencies, getTombstoneStatus,
40
+ // Service
41
+ SyncService, createSyncService, } from './sync/index.js';
42
+ // Config - Configuration management
43
+ export * from './config/index.js';
44
+ // Systems - Identity and other cross-cutting concerns
45
+ // Note: DEFAULT_IDENTITY_CONFIG from systems is aliased to avoid conflict with config
46
+ export {
47
+ // Types
48
+ IdentityMode, VerificationStatus,
49
+ // Constants
50
+ DEFAULT_TIME_TOLERANCE, DEFAULT_IDENTITY_CONFIG as DEFAULT_IDENTITY_SYSTEM_CONFIG,
51
+ // Validation
52
+ isValidIdentityMode, validateIdentityMode, isValidPublicKey, validatePublicKey, isValidSignature, validateSignature, isValidRequestHash, validateRequestHash, isValidTimeTolerance, validateTimeTolerance,
53
+ // Type guards
54
+ isSignedRequestFields, validateSignedRequestFields, isVerificationResult, isIdentityConfig, validateIdentityConfig,
55
+ // Signed data
56
+ constructSignedData, parseSignedData,
57
+ // Time tolerance
58
+ checkTimeTolerance, validateTimeTolerance2,
59
+ // Verification factories
60
+ verificationSuccess, verificationFailure, verificationNotSigned,
61
+ // Ed25519 operations
62
+ verifyEd25519Signature, signEd25519, generateEd25519Keypair,
63
+ // Verification pipeline
64
+ verifySignature, shouldAllowRequest,
65
+ // Utilities
66
+ hashRequestBody, createSignedRequest, createIdentityConfig, } from './systems/index.js';
67
+ // CLI Constants - Default operator entity for CLI and web apps
68
+ export { OPERATOR_ENTITY_ID, OPERATOR_ENTITY_NAME } from './cli/commands/init.js';
69
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,8CAA8C;AAC9C,OAAO,EAoBL,eAAe;AACf,kBAAkB;AAClB,gBAAgB,EAChB,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EACf,UAAU,EACV,aAAa,EACb,eAAe,EACf,cAAc;AACd,4DAA4D;AAC5D,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,cAAc;AACd,oBAAoB;AACpB,sBAAsB,EACtB,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,WAAW,EACX,cAAc,EACd,eAAe,EACf,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAE7B,oCAAoC;AACpC,cAAc,gBAAgB,CAAC;AAE/B,qCAAqC;AACrC,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACvE,cAAc,0BAA0B,CAAC;AACzC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAE5C,iCAAiC;AACjC,cAAc,iBAAiB,CAAC;AAEhC,gEAAgE;AAChE,qFAAqF;AACrF,OAAO,EASL,eAAe,EAUf,qBAAqB,EACrB,eAAe,EACf,oBAAoB;AACpB,gBAAgB;AAChB,gBAAgB,EAChB,mBAAmB,EACnB,YAAY,EACZ,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,aAAa,EACb,iBAAiB,EACjB,qBAAqB,EACrB,yBAAyB,EACzB,mBAAmB,EACnB,sBAAsB;AAEtB,UAAU;AACV,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB;AAClB,QAAQ;AACR,aAAa,EACb,SAAS,EACT,iBAAiB,EACjB,kBAAkB;AAGlB,UAAU;AACV,WAAW,EACX,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AAEzB,oCAAoC;AACpC,cAAc,mBAAmB,CAAC;AAElC,sDAAsD;AACtD,sFAAsF;AACtF,OAAO;AACL,QAAQ;AACR,YAAY,EAMZ,kBAAkB;AAKlB,YAAY;AACZ,sBAAsB,EACtB,uBAAuB,IAAI,8BAA8B;AACzD,aAAa;AACb,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB;AACrB,cAAc;AACd,qBAAqB,EACrB,2BAA2B,EAC3B,oBAAoB,EACpB,gBAAgB,EAChB,sBAAsB;AACtB,cAAc;AACd,mBAAmB,EACnB,eAAe;AACf,iBAAiB;AACjB,kBAAkB,EAClB,sBAAsB;AACtB,yBAAyB;AACzB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB;AACrB,qBAAqB;AACrB,sBAAsB,EACtB,WAAW,EACX,sBAAsB;AACtB,wBAAwB;AACxB,eAAe,EACf,kBAAkB;AAClB,YAAY;AACZ,eAAe,EACf,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAE5B,+DAA+D;AAC/D,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Stoneforge Platform Server
3
+ *
4
+ * HTTP + WebSocket server for the Stoneforge web platform.
5
+ * Built with Hono for fast, minimal overhead.
6
+ *
7
+ * Exports `createQuarryApp` (builds the Hono app + services) and
8
+ * `startQuarryServer` (creates the app and starts listening with
9
+ * dual-runtime Bun/Node support).
10
+ */
11
+ import { Hono } from 'hono';
12
+ import { createStorage } from '@stoneforge/storage';
13
+ import type { QuarryAPI } from '../api/types.js';
14
+ import type { SyncService } from '../sync/service.js';
15
+ import type { InboxService } from '../services/inbox.js';
16
+ import { initializeBroadcaster } from './ws/broadcaster.js';
17
+ export interface QuarryServerOptions {
18
+ port?: number;
19
+ host?: string;
20
+ dbPath?: string;
21
+ webRoot?: string;
22
+ corsOrigins?: string[];
23
+ }
24
+ export interface QuarryApp {
25
+ app: InstanceType<typeof Hono>;
26
+ api: QuarryAPI;
27
+ syncService: SyncService;
28
+ inboxService: InboxService;
29
+ broadcaster: ReturnType<typeof initializeBroadcaster>;
30
+ storageBackend: ReturnType<typeof createStorage>;
31
+ }
32
+ export declare function createQuarryApp(options?: QuarryServerOptions): QuarryApp;
33
+ export declare function startQuarryServer(options?: QuarryServerOptions): QuarryApp;
34
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAmD5B,OAAO,EAAE,aAAa,EAAoB,MAAM,qBAAqB,CAAC;AAKtE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAUzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAkB5D,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,YAAY,CAAC,OAAO,IAAI,CAAC,CAAC;IAC/B,GAAG,EAAE,SAAS,CAAC;IACf,WAAW,EAAE,WAAW,CAAC;IACzB,YAAY,EAAE,YAAY,CAAC;IAC3B,WAAW,EAAE,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC;IACtD,cAAc,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;CAClD;AAMD,wBAAgB,eAAe,CAAC,OAAO,GAAE,mBAAwB,GAAG,SAAS,CAojH5E;AAgJD,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,mBAAwB,GAAG,SAAS,CA2B9E"}