@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
package/LICENSE ADDED
@@ -0,0 +1,13 @@
1
+ Copyright 2026 Adam King
2
+
3
+ Licensed under the Apache License, Version 2.0 (the "License");
4
+ you may not use this file except in compliance with the License.
5
+ You may obtain a copy of the License at
6
+
7
+ http://www.apache.org/licenses/LICENSE-2.0
8
+
9
+ Unless required by applicable law or agreed to in writing, software
10
+ distributed under the License is distributed on an "AS IS" BASIS,
11
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ See the License for the specific language governing permissions and
13
+ limitations under the License.
package/README.md ADDED
@@ -0,0 +1,160 @@
1
+ <p align="center">
2
+ <img src="https://raw.githubusercontent.com/stoneforge-ai/stoneforge/master/brand/logo.svg" alt="Stoneforge" width="120" height="120">
3
+ </p>
4
+
5
+ # @stoneforge/quarry
6
+
7
+ Core SDK for Stoneforge — event-sourced element management, dependency tracking, semantic search, JSONL sync, and a full CLI.
8
+
9
+ [![npm](https://img.shields.io/npm/v/@stoneforge/quarry)](https://www.npmjs.com/package/@stoneforge/quarry)
10
+ [![license](https://img.shields.io/npm/l/@stoneforge/quarry)](https://github.com/stoneforge-ai/stoneforge/blob/main/LICENSE)
11
+ [![node](https://img.shields.io/node/v/@stoneforge/quarry)](https://nodejs.org)
12
+ [![TypeScript](https://img.shields.io/badge/TypeScript-5.0+-blue.svg)](https://www.typescriptlang.org)
13
+
14
+ ## Overview
15
+
16
+ `@stoneforge/quarry` is the main programmatic interface to Stoneforge. It wraps `@stoneforge/storage` with an event-sourced domain model — every mutation produces an immutable event, giving you a full audit trail and time-travel reconstruction. It also includes dependency management with priority propagation, hybrid search (FTS5 + vector embeddings), JSONL-based Git-friendly sync, configuration management, and the `sf` CLI.
17
+
18
+ ## Installation
19
+
20
+ ```bash
21
+ npm install @stoneforge/quarry
22
+ ```
23
+
24
+ ## Quick Start
25
+
26
+ ```typescript
27
+ import { createQuarryAPI } from '@stoneforge/quarry/api';
28
+
29
+ const api = await createQuarryAPI({ rootDir: '.stoneforge' });
30
+
31
+ // Create a task
32
+ const task = await api.create({
33
+ type: 'task',
34
+ title: 'Implement user authentication',
35
+ priority: 2,
36
+ createdBy: entityId,
37
+ });
38
+
39
+ // Query ready work (unblocked, open tasks)
40
+ const ready = await api.getReadyWork();
41
+
42
+ // Add a blocking dependency
43
+ await api.addDependency({
44
+ blockerId: prerequisiteId,
45
+ blockedId: task.id,
46
+ type: 'blocks',
47
+ });
48
+
49
+ // Search with hybrid ranking (FTS5 + embeddings)
50
+ const results = await api.searchDocuments({
51
+ query: 'authentication flow',
52
+ mode: 'hybrid',
53
+ limit: 10,
54
+ });
55
+ ```
56
+
57
+ ## CLI
58
+
59
+ The package ships the `sf` (and `stoneforge`) CLI:
60
+
61
+ ```bash
62
+ sf init # Initialize a workspace
63
+ sf task create --title "Build API" # Create a task
64
+ sf task list # List tasks with filtering
65
+ sf task ready # Show unblocked tasks
66
+ sf task blocked # Show blocked tasks with reasons
67
+ sf dependency add el-a blocks el-b # Add a dependency
68
+ sf dependency tree el-a # Visualize dependency tree
69
+ sf export # Export to JSONL for Git sync
70
+ sf import # Import from JSONL
71
+ sf search "auth flow" # Hybrid search
72
+ sf stats # Workspace statistics
73
+ sf plan list # Manage plans
74
+ sf workflow list # Manage workflows
75
+ sf channel list # Manage channels
76
+ ```
77
+
78
+ Shell completions are available for bash, zsh, and fish via `sf completion`.
79
+
80
+ ## API
81
+
82
+ ### QuarryAPI Methods
83
+
84
+ **Element CRUD**
85
+ `create` · `get` · `update` · `delete` · `list` · `getByTitle`
86
+
87
+ **Tasks**
88
+ `getReadyWork` · `getBlockedTasks` · `assignTask` · `closeTask` · `reopenTask` · `deferTask`
89
+
90
+ **Dependencies**
91
+ `addDependency` · `removeDependency` · `getDependencies` · `getDependencyTree`
92
+
93
+ **Search**
94
+ `search` · `searchDocuments` · `indexEmbeddings` · `reindexEmbeddings`
95
+
96
+ **History & Events**
97
+ `getHistory` · `getEvents` · `reconstruct`
98
+
99
+ **Sync**
100
+ `exportToJsonl` · `importFromJsonl` · `getSyncStatus`
101
+
102
+ **Channels & Messages**
103
+ `createChannel` · `sendMessage` · `getMessages` · `getChannels`
104
+
105
+ **Plans & Workflows**
106
+ `createPlan` · `getPlans` · `createWorkflow` · `getWorkflows`
107
+
108
+ **Teams & Identity**
109
+ `createTeam` · `getTeams` · `registerEntity`
110
+
111
+ ### Services
112
+
113
+ | Service | Description |
114
+ |---------|-------------|
115
+ | `DependencyService` | Blocking relationships, gates, priority propagation |
116
+ | `PriorityService` | Priority calculation and inheritance |
117
+ | `InboxService` | Per-entity notification inbox |
118
+ | `SearchUtils` | FTS5 query building and ranking |
119
+ | `IdLengthCache` | Shortest-unique-prefix ID display |
120
+
121
+ ### Sync System
122
+
123
+ ```typescript
124
+ import {
125
+ createSyncService,
126
+ serializeElements,
127
+ parseElements,
128
+ mergeElements,
129
+ } from '@stoneforge/quarry/sync';
130
+
131
+ const sync = createSyncService(api);
132
+ await sync.export({ outputDir: '.stoneforge/sync' });
133
+ await sync.import({ inputDir: '.stoneforge/sync' });
134
+ ```
135
+
136
+ ### Configuration
137
+
138
+ ```typescript
139
+ import { loadConfig, getConfig, setValue } from '@stoneforge/quarry/config';
140
+
141
+ await loadConfig();
142
+ const dbPath = getConfig('database.path');
143
+ await setValue('sync.autoExport', true);
144
+ ```
145
+
146
+ ## Entry Points
147
+
148
+ | Import | Contents |
149
+ |--------|----------|
150
+ | `@stoneforge/quarry` | Everything (re-exports all subpaths) |
151
+ | `@stoneforge/quarry/api` | `createQuarryAPI`, `QuarryAPI` interface |
152
+ | `@stoneforge/quarry/services` | `DependencyService`, `PriorityService`, `InboxService`, etc. |
153
+ | `@stoneforge/quarry/sync` | Serialization, merge, `SyncService` |
154
+ | `@stoneforge/quarry/cli` | CLI commands, parser, plugin system |
155
+ | `@stoneforge/quarry/config` | Configuration loading, validation, env vars |
156
+ | `@stoneforge/quarry/http` | `SyncHttpHandlers` for browser sync |
157
+
158
+ ---
159
+
160
+ Part of [Stoneforge](https://github.com/stoneforge-ai/stoneforge) — Apache-2.0
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Stoneforge Query API
3
+ *
4
+ * This module provides the primary programmatic interface to Stoneforge.
5
+ */
6
+ export * from './types.js';
7
+ export { QuarryAPIImpl, createQuarryAPI } from './quarry-api.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Stoneforge Query API
3
+ *
4
+ * This module provides the primary programmatic interface to Stoneforge.
5
+ */
6
+ export * from './types.js';
7
+ export { QuarryAPIImpl, createQuarryAPI } from './quarry-api.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,268 @@
1
+ /**
2
+ * Stoneforge API Implementation
3
+ *
4
+ * This module provides the concrete implementation of the QuarryAPI interface,
5
+ * connecting the type system to the storage layer with full CRUD operations.
6
+ */
7
+ import type { StorageBackend } from '@stoneforge/storage';
8
+ import type { Element, ElementId, EntityId, ElementType, Timestamp, Task, Document, DocumentId, Dependency, DependencyType, Event, EventFilter, Channel, PlanProgress, Entity, CreateTaskInput, OrgChartNode } from '@stoneforge/core';
9
+ import type { QuarryAPI, ElementFilter, TaskFilter, ChannelFilter, GetOptions, BlockedTask, DependencyTree, DependencyInput, ListResult, ImportResult, ImportOptions, ExportOptions, SystemStats, UpdateOptions, DeleteOptions, AddTaskToPlanOptions, CreateTaskInPlanOptions, BulkCloseOptions, BulkDeferOptions, BulkReassignOptions, BulkTagOptions, BulkOperationResult, DeleteWorkflowOptions, DeleteWorkflowResult, GarbageCollectionOptions, GarbageCollectionResult, TaskGarbageCollectionOptions, TaskGarbageCollectionResult, TeamMembershipResult, TeamMetrics, OperationOptions, ReconstructedState, ElementTimeline, WorkflowProgress, FTSSearchOptions, FTSSearchResult } from './types.js';
10
+ import { type ApprovalResult, type AddMemberOptions, type RemoveMemberOptions, type MembershipResult, type FindOrCreateDirectChannelResult, type SendDirectMessageInput, type SendDirectMessageResult } from './types.js';
11
+ import type { EmbeddingService } from '../services/embeddings/service.js';
12
+ /**
13
+ * Implementation of the QuarryAPI interface
14
+ */
15
+ export declare class QuarryAPIImpl implements QuarryAPI {
16
+ private backend;
17
+ private blockedCache;
18
+ private priorityService;
19
+ private syncService;
20
+ private inboxService;
21
+ private embeddingService?;
22
+ constructor(backend: StorageBackend);
23
+ /**
24
+ * Internal method to update task status without triggering additional blocked cache updates.
25
+ * Used for automatic blocked/unblocked status transitions.
26
+ */
27
+ private updateTaskStatusInternal;
28
+ get<T extends Element>(id: ElementId, options?: GetOptions): Promise<T | null>;
29
+ list<T extends Element>(filter?: ElementFilter): Promise<T[]>;
30
+ listPaginated<T extends Element>(filter?: ElementFilter): Promise<ListResult<T>>;
31
+ create<T extends Element>(input: Record<string, unknown> & {
32
+ type: ElementType;
33
+ createdBy: EntityId;
34
+ }): Promise<T>;
35
+ update<T extends Element>(id: ElementId, updates: Partial<T>, options?: UpdateOptions): Promise<T>;
36
+ delete(id: ElementId, options?: DeleteOptions): Promise<void>;
37
+ lookupEntityByName(name: string): Promise<Element | null>;
38
+ /**
39
+ * Sets the manager (reportsTo) for an entity.
40
+ *
41
+ * Validates:
42
+ * - Entity exists and is an entity type
43
+ * - Manager entity exists and is active
44
+ * - No self-reference (entity cannot report to itself)
45
+ * - No circular chains
46
+ *
47
+ * @param entityId - The entity to set the manager for
48
+ * @param managerId - The manager entity ID
49
+ * @param actor - Entity performing this action (for audit trail)
50
+ * @returns The updated entity
51
+ */
52
+ setEntityManager(entityId: EntityId, managerId: EntityId, actor: EntityId): Promise<Entity>;
53
+ /**
54
+ * Clears the manager (reportsTo) for an entity.
55
+ *
56
+ * @param entityId - The entity to clear the manager for
57
+ * @param actor - Entity performing this action (for audit trail)
58
+ * @returns The updated entity
59
+ */
60
+ clearEntityManager(entityId: EntityId, actor: EntityId): Promise<Entity>;
61
+ /**
62
+ * Gets all entities that report directly to a manager.
63
+ *
64
+ * @param managerId - The manager entity ID
65
+ * @returns Array of entities that report to the manager
66
+ */
67
+ getDirectReports(managerId: EntityId): Promise<Entity[]>;
68
+ /**
69
+ * Gets the management chain for an entity (from entity up to root).
70
+ *
71
+ * Returns an ordered array starting with the entity's direct manager
72
+ * and ending with the root entity (an entity with no reportsTo).
73
+ *
74
+ * @param entityId - The entity to get the management chain for
75
+ * @returns Array of entities in the management chain (empty if no manager)
76
+ */
77
+ getManagementChain(entityId: EntityId): Promise<Entity[]>;
78
+ /**
79
+ * Gets the organizational chart structure.
80
+ *
81
+ * @param rootId - Optional root entity ID (if not provided, returns all root entities)
82
+ * @returns Array of org chart nodes (hierarchical structure)
83
+ */
84
+ getOrgChart(rootId?: EntityId): Promise<OrgChartNode[]>;
85
+ addTaskToPlan(taskId: ElementId, planId: ElementId, options?: AddTaskToPlanOptions): Promise<Dependency>;
86
+ removeTaskFromPlan(taskId: ElementId, planId: ElementId, actor?: EntityId): Promise<void>;
87
+ getTasksInPlan(planId: ElementId, filter?: TaskFilter): Promise<Task[]>;
88
+ getPlanProgress(planId: ElementId): Promise<PlanProgress>;
89
+ createTaskInPlan<T extends Task = Task>(planId: ElementId, taskInput: Omit<CreateTaskInput, 'id'>, options?: CreateTaskInPlanOptions): Promise<T>;
90
+ bulkClosePlanTasks(planId: ElementId, options?: BulkCloseOptions): Promise<BulkOperationResult>;
91
+ bulkDeferPlanTasks(planId: ElementId, options?: BulkDeferOptions): Promise<BulkOperationResult>;
92
+ bulkReassignPlanTasks(planId: ElementId, newAssignee: EntityId | undefined, options?: BulkReassignOptions): Promise<BulkOperationResult>;
93
+ bulkTagPlanTasks(planId: ElementId, options: BulkTagOptions): Promise<BulkOperationResult>;
94
+ ready(filter?: TaskFilter): Promise<Task[]>;
95
+ /**
96
+ * Get tasks in backlog (not ready for work, needs triage)
97
+ */
98
+ backlog(filter?: TaskFilter): Promise<Task[]>;
99
+ blocked(filter?: TaskFilter): Promise<BlockedTask[]>;
100
+ addDependency(dep: DependencyInput): Promise<Dependency>;
101
+ removeDependency(blockedId: ElementId, blockerId: ElementId, type: DependencyType, actor?: EntityId): Promise<void>;
102
+ getDependencies(id: ElementId, types?: DependencyType[]): Promise<Dependency[]>;
103
+ getDependents(id: ElementId, types?: DependencyType[]): Promise<Dependency[]>;
104
+ getDependencyTree(id: ElementId): Promise<DependencyTree>;
105
+ satisfyGate(blockedId: ElementId, blockerId: ElementId, actor: EntityId): Promise<boolean>;
106
+ recordApproval(blockedId: ElementId, blockerId: ElementId, approver: EntityId): Promise<ApprovalResult>;
107
+ removeApproval(blockedId: ElementId, blockerId: ElementId, approver: EntityId): Promise<ApprovalResult>;
108
+ search(query: string, filter?: ElementFilter): Promise<Element[]>;
109
+ searchChannels(query: string, filter?: ChannelFilter): Promise<Channel[]>;
110
+ getEvents(id: ElementId, filter?: EventFilter): Promise<Event[]>;
111
+ listEvents(filter?: EventFilter): Promise<Event[]>;
112
+ countEvents(filter?: EventFilter): Promise<number>;
113
+ getDocumentVersion(id: DocumentId, version: number): Promise<Document | null>;
114
+ getDocumentHistory(id: DocumentId): Promise<Document[]>;
115
+ reconstructAtTime<T extends Element = Element>(id: ElementId, asOf: Timestamp): Promise<ReconstructedState<T> | null>;
116
+ getElementTimeline(id: ElementId, filter?: EventFilter): Promise<ElementTimeline>;
117
+ findOrCreateDirectChannel(entityA: EntityId, entityB: EntityId, actor: EntityId): Promise<FindOrCreateDirectChannelResult>;
118
+ addChannelMember(channelId: ElementId, entityId: EntityId, options?: AddMemberOptions): Promise<MembershipResult>;
119
+ removeChannelMember(channelId: ElementId, entityId: EntityId, options?: RemoveMemberOptions): Promise<MembershipResult>;
120
+ leaveChannel(channelId: ElementId, actor: EntityId): Promise<MembershipResult>;
121
+ /**
122
+ * Merge two group channels: move all messages from source to target,
123
+ * merge member lists, and archive the source channel.
124
+ *
125
+ * Only group channels can be merged. Direct channels are rejected.
126
+ */
127
+ mergeChannels(sourceId: ElementId, targetId: ElementId, options?: {
128
+ newName?: string;
129
+ actor?: EntityId;
130
+ }): Promise<{
131
+ target: Channel;
132
+ sourceArchived: boolean;
133
+ messagesMoved: number;
134
+ }>;
135
+ /**
136
+ * Send a direct message to another entity
137
+ *
138
+ * This is a convenience method that:
139
+ * 1. Finds or creates the direct channel between sender and recipient
140
+ * 2. Creates and sends the message in that channel
141
+ *
142
+ * @param sender - The entity sending the message
143
+ * @param input - The message input including recipient, contentRef, etc.
144
+ * @returns The created message and channel information
145
+ */
146
+ sendDirectMessage(sender: EntityId, input: SendDirectMessageInput): Promise<SendDirectMessageResult>;
147
+ deleteWorkflow(workflowId: ElementId, options?: DeleteWorkflowOptions): Promise<DeleteWorkflowResult>;
148
+ garbageCollectWorkflows(options: GarbageCollectionOptions): Promise<GarbageCollectionResult>;
149
+ garbageCollectTasks(_options: TaskGarbageCollectionOptions): Promise<TaskGarbageCollectionResult>;
150
+ getTasksInWorkflow(workflowId: ElementId, filter?: TaskFilter): Promise<Task[]>;
151
+ getReadyTasksInWorkflow(workflowId: ElementId, filter?: TaskFilter): Promise<Task[]>;
152
+ getWorkflowProgress(workflowId: ElementId): Promise<WorkflowProgress>;
153
+ /**
154
+ * Get tasks in a workflow ordered by execution order (topological sort).
155
+ *
156
+ * Tasks are ordered such that blockers come before the tasks they block.
157
+ * This represents the order in which tasks should be executed.
158
+ *
159
+ * @param workflowId - The workflow ID
160
+ * @param filter - Optional filter to apply to tasks
161
+ * @returns Tasks in execution order (topological sort based on blocks dependencies)
162
+ */
163
+ getOrderedTasksInWorkflow(workflowId: ElementId, filter?: TaskFilter): Promise<Task[]>;
164
+ /**
165
+ * Get all dependencies from storage
166
+ */
167
+ private getAllDependencies;
168
+ archiveDocument(id: ElementId): Promise<Document>;
169
+ unarchiveDocument(id: ElementId): Promise<Document>;
170
+ registerEmbeddingService(service: EmbeddingService): void;
171
+ private checkFTSAvailable;
172
+ /**
173
+ * Index a document in the FTS5 virtual table for full-text search.
174
+ * Called after document creation and update.
175
+ */
176
+ private indexDocumentForFTS;
177
+ /**
178
+ * Reindex all documents in the FTS5 virtual table.
179
+ * Does NOT create version history entries — safe for bulk reindex.
180
+ */
181
+ reindexAllDocumentsFTS(): {
182
+ indexed: number;
183
+ errors: number;
184
+ };
185
+ /**
186
+ * Reindex imported documents after sync completes.
187
+ * Called internally after import operations.
188
+ */
189
+ private reindexDocumentsAfterImport;
190
+ searchDocumentsFTS(query: string, options?: FTSSearchOptions): Promise<FTSSearchResult[]>;
191
+ export(options?: ExportOptions): Promise<string | void>;
192
+ import(options: ImportOptions): Promise<ImportResult>;
193
+ /**
194
+ * Convert SyncService ImportResult to API ImportResult format
195
+ */
196
+ private convertSyncImportResult;
197
+ addTeamMember(teamId: ElementId, entityId: EntityId, options?: {
198
+ actor?: EntityId;
199
+ }): Promise<TeamMembershipResult>;
200
+ removeTeamMember(teamId: ElementId, entityId: EntityId, options?: {
201
+ actor?: EntityId;
202
+ reason?: string;
203
+ }): Promise<TeamMembershipResult>;
204
+ getTasksForTeam(teamId: ElementId, options?: TaskFilter): Promise<Task[]>;
205
+ claimTaskFromTeam(taskId: ElementId, entityId: EntityId, options?: OperationOptions): Promise<Task>;
206
+ getTeamMetrics(teamId: ElementId): Promise<TeamMetrics>;
207
+ stats(): Promise<SystemStats>;
208
+ /**
209
+ * Batch fetch tags for multiple elements by their IDs.
210
+ * Returns a map of element ID to array of tags for efficient lookup.
211
+ * This eliminates N+1 query issues when fetching tags for multiple elements.
212
+ */
213
+ private batchFetchTags;
214
+ private hydrateTask;
215
+ /**
216
+ * Batch fetch documents by their IDs.
217
+ * Returns a map of document ID to document for efficient lookup.
218
+ */
219
+ private batchFetchDocuments;
220
+ /**
221
+ * Batch hydrate tasks with their document references.
222
+ * Collects all document IDs, fetches them in a single query, then populates.
223
+ */
224
+ private hydrateTasks;
225
+ /**
226
+ * Hydrate a single message with its document references.
227
+ * Resolves contentRef -> content and attachments -> attachmentContents.
228
+ */
229
+ private hydrateMessage;
230
+ /**
231
+ * Batch hydrate messages with their document references.
232
+ * Collects all document IDs, fetches them in a single query, then populates.
233
+ */
234
+ private hydrateMessages;
235
+ /**
236
+ * Hydrate a single library with its document references.
237
+ * Resolves descriptionRef -> description.
238
+ */
239
+ private hydrateLibrary;
240
+ /**
241
+ * Batch hydrate libraries with their document references.
242
+ * Collects all document IDs, fetches them in a single query, then populates.
243
+ */
244
+ private hydrateLibraries;
245
+ /**
246
+ * Rebuild the blocked cache from scratch.
247
+ *
248
+ * Use this for:
249
+ * - Initial population after migration
250
+ * - Recovery from cache corruption
251
+ * - Periodic consistency checks
252
+ *
253
+ * @returns Statistics about the rebuild
254
+ */
255
+ rebuildBlockedCache(): {
256
+ elementsChecked: number;
257
+ elementsBlocked: number;
258
+ durationMs: number;
259
+ };
260
+ }
261
+ /**
262
+ * Create a new QuarryAPI instance
263
+ *
264
+ * @param backend - The storage backend to use
265
+ * @returns A new QuarryAPI instance
266
+ */
267
+ export declare function createQuarryAPI(backend: StorageBackend): QuarryAPI;
268
+ //# sourceMappingURL=quarry-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quarry-api.d.ts","sourceRoot":"","sources":["../../src/api/quarry-api.ts"],"names":[],"mappings":"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"}