@opendatalabs/personal-server-ts-core 0.2.0 → 1.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 (340) hide show
  1. package/dist/api/index.d.ts +160 -0
  2. package/dist/api/index.d.ts.map +1 -0
  3. package/dist/api/index.js +774 -0
  4. package/dist/api/index.js.map +1 -0
  5. package/dist/auth/index.d.ts +2 -0
  6. package/dist/auth/index.d.ts.map +1 -0
  7. package/dist/auth/index.js +2 -0
  8. package/dist/auth/index.js.map +1 -0
  9. package/dist/auth/request.d.ts +28 -0
  10. package/dist/auth/request.d.ts.map +1 -0
  11. package/dist/auth/request.js +106 -0
  12. package/dist/auth/request.js.map +1 -0
  13. package/dist/client.d.ts +233 -0
  14. package/dist/client.d.ts.map +1 -0
  15. package/dist/client.js +243 -0
  16. package/dist/client.js.map +1 -0
  17. package/dist/config/defaults.d.ts +5 -5
  18. package/dist/config/defaults.d.ts.map +1 -1
  19. package/dist/config/defaults.js +3 -5
  20. package/dist/config/defaults.js.map +1 -1
  21. package/dist/config/index.d.ts +0 -1
  22. package/dist/config/index.d.ts.map +1 -1
  23. package/dist/config/index.js +0 -1
  24. package/dist/config/index.js.map +1 -1
  25. package/dist/config/paths.d.ts.map +1 -1
  26. package/dist/config/paths.js +1 -9
  27. package/dist/config/paths.js.map +1 -1
  28. package/dist/contracts/access-logs.d.ts +8 -0
  29. package/dist/contracts/access-logs.d.ts.map +1 -0
  30. package/dist/contracts/access-logs.js +7 -0
  31. package/dist/contracts/access-logs.js.map +1 -0
  32. package/dist/contracts/auth-device.d.ts +70 -0
  33. package/dist/contracts/auth-device.d.ts.map +1 -0
  34. package/dist/contracts/auth-device.js +163 -0
  35. package/dist/contracts/auth-device.js.map +1 -0
  36. package/dist/contracts/binary.d.ts +54 -0
  37. package/dist/contracts/binary.d.ts.map +1 -0
  38. package/dist/contracts/binary.js +92 -0
  39. package/dist/contracts/binary.js.map +1 -0
  40. package/dist/contracts/config.d.ts +5 -0
  41. package/dist/contracts/config.d.ts.map +1 -0
  42. package/dist/contracts/config.js +30 -0
  43. package/dist/contracts/config.js.map +1 -0
  44. package/dist/contracts/data.d.ts +115 -0
  45. package/dist/contracts/data.d.ts.map +1 -0
  46. package/dist/contracts/data.js +237 -0
  47. package/dist/contracts/data.js.map +1 -0
  48. package/dist/contracts/grants.d.ts +45 -0
  49. package/dist/contracts/grants.d.ts.map +1 -0
  50. package/dist/contracts/grants.js +177 -0
  51. package/dist/contracts/grants.js.map +1 -0
  52. package/dist/contracts/http.d.ts +21 -0
  53. package/dist/contracts/http.d.ts.map +1 -0
  54. package/dist/contracts/http.js +49 -0
  55. package/dist/contracts/http.js.map +1 -0
  56. package/dist/contracts/index.d.ts +16 -0
  57. package/dist/contracts/index.d.ts.map +1 -0
  58. package/dist/contracts/index.js +10 -0
  59. package/dist/contracts/index.js.map +1 -0
  60. package/dist/contracts/oauth.d.ts +38 -0
  61. package/dist/contracts/oauth.d.ts.map +1 -0
  62. package/dist/contracts/oauth.js +130 -0
  63. package/dist/contracts/oauth.js.map +1 -0
  64. package/dist/contracts/sync.d.ts +10 -0
  65. package/dist/contracts/sync.d.ts.map +1 -0
  66. package/dist/contracts/sync.js +34 -0
  67. package/dist/contracts/sync.js.map +1 -0
  68. package/dist/errors/catalog.d.ts +9 -0
  69. package/dist/errors/catalog.d.ts.map +1 -1
  70. package/dist/errors/catalog.js +15 -0
  71. package/dist/errors/catalog.js.map +1 -1
  72. package/dist/grants/index.d.ts +2 -4
  73. package/dist/grants/index.d.ts.map +1 -1
  74. package/dist/grants/index.js +1 -2
  75. package/dist/grants/index.js.map +1 -1
  76. package/dist/keys/index.d.ts +1 -2
  77. package/dist/keys/index.d.ts.map +1 -1
  78. package/dist/keys/index.js +1 -2
  79. package/dist/keys/index.js.map +1 -1
  80. package/dist/keys/server-account.d.ts +5 -9
  81. package/dist/keys/server-account.d.ts.map +1 -1
  82. package/dist/keys/server-account.js +1 -47
  83. package/dist/keys/server-account.js.map +1 -1
  84. package/dist/logger/index.d.ts +6 -2
  85. package/dist/logger/index.d.ts.map +1 -1
  86. package/dist/logger/index.js +2 -6
  87. package/dist/logger/index.js.map +1 -1
  88. package/dist/logging/access-log.d.ts +0 -1
  89. package/dist/logging/access-log.d.ts.map +1 -1
  90. package/dist/logging/access-log.js +1 -24
  91. package/dist/logging/access-log.js.map +1 -1
  92. package/dist/logging/access-reader.d.ts +0 -5
  93. package/dist/logging/access-reader.d.ts.map +1 -1
  94. package/dist/logging/access-reader.js +1 -49
  95. package/dist/logging/access-reader.js.map +1 -1
  96. package/dist/mcp/activity.d.ts +68 -0
  97. package/dist/mcp/activity.d.ts.map +1 -0
  98. package/dist/mcp/activity.js +111 -0
  99. package/dist/mcp/activity.js.map +1 -0
  100. package/dist/mcp/builder-registration.d.ts +24 -0
  101. package/dist/mcp/builder-registration.d.ts.map +1 -0
  102. package/dist/mcp/builder-registration.js +89 -0
  103. package/dist/mcp/builder-registration.js.map +1 -0
  104. package/dist/mcp/connection-api.d.ts +170 -0
  105. package/dist/mcp/connection-api.d.ts.map +1 -0
  106. package/dist/mcp/connection-api.js +379 -0
  107. package/dist/mcp/connection-api.js.map +1 -0
  108. package/dist/mcp/grantee.d.ts +52 -0
  109. package/dist/mcp/grantee.d.ts.map +1 -0
  110. package/dist/mcp/grantee.js +91 -0
  111. package/dist/mcp/grantee.js.map +1 -0
  112. package/dist/mcp/index.d.ts +10 -0
  113. package/dist/mcp/index.d.ts.map +1 -0
  114. package/dist/mcp/index.js +10 -0
  115. package/dist/mcp/index.js.map +1 -0
  116. package/dist/mcp/read-client.d.ts +136 -0
  117. package/dist/mcp/read-client.d.ts.map +1 -0
  118. package/dist/mcp/read-client.js +306 -0
  119. package/dist/mcp/read-client.js.map +1 -0
  120. package/dist/mcp/resources.d.ts +37 -0
  121. package/dist/mcp/resources.d.ts.map +1 -0
  122. package/dist/mcp/resources.js +114 -0
  123. package/dist/mcp/resources.js.map +1 -0
  124. package/dist/mcp/search/index.d.ts +34 -0
  125. package/dist/mcp/search/index.d.ts.map +1 -0
  126. package/dist/mcp/search/index.js +69 -0
  127. package/dist/mcp/search/index.js.map +1 -0
  128. package/dist/mcp/server.d.ts +53 -0
  129. package/dist/mcp/server.d.ts.map +1 -0
  130. package/dist/mcp/server.js +308 -0
  131. package/dist/mcp/server.js.map +1 -0
  132. package/dist/mcp/store.d.ts +13 -0
  133. package/dist/mcp/store.d.ts.map +1 -0
  134. package/dist/mcp/store.js +98 -0
  135. package/dist/mcp/store.js.map +1 -0
  136. package/dist/mcp/tools.d.ts +60 -0
  137. package/dist/mcp/tools.d.ts.map +1 -0
  138. package/dist/mcp/tools.js +1058 -0
  139. package/dist/mcp/tools.js.map +1 -0
  140. package/dist/mcp/types.d.ts +97 -0
  141. package/dist/mcp/types.d.ts.map +1 -0
  142. package/dist/mcp/types.js +24 -0
  143. package/dist/mcp/types.js.map +1 -0
  144. package/dist/payment/index.d.ts +2 -0
  145. package/dist/payment/index.d.ts.map +1 -0
  146. package/dist/payment/index.js +2 -0
  147. package/dist/payment/index.js.map +1 -0
  148. package/dist/payment/x402.d.ts +155 -0
  149. package/dist/payment/x402.d.ts.map +1 -0
  150. package/dist/payment/x402.js +402 -0
  151. package/dist/payment/x402.js.map +1 -0
  152. package/dist/policy/data-read.d.ts +15 -0
  153. package/dist/policy/data-read.d.ts.map +1 -0
  154. package/dist/policy/data-read.js +84 -0
  155. package/dist/policy/data-read.js.map +1 -0
  156. package/dist/policy/index.d.ts +2 -0
  157. package/dist/policy/index.d.ts.map +1 -0
  158. package/dist/policy/index.js +2 -0
  159. package/dist/policy/index.js.map +1 -0
  160. package/dist/ports/index.d.ts +95 -0
  161. package/dist/ports/index.d.ts.map +1 -0
  162. package/dist/ports/index.js +7 -0
  163. package/dist/ports/index.js.map +1 -0
  164. package/dist/schemas/server-config.d.ts +12 -0
  165. package/dist/schemas/server-config.d.ts.map +1 -1
  166. package/dist/schemas/server-config.js +34 -4
  167. package/dist/schemas/server-config.js.map +1 -1
  168. package/dist/signing/index.d.ts +0 -1
  169. package/dist/signing/index.d.ts.map +1 -1
  170. package/dist/signing/index.js +0 -1
  171. package/dist/signing/index.js.map +1 -1
  172. package/dist/signing/request-signer.d.ts +8 -2
  173. package/dist/signing/request-signer.d.ts.map +1 -1
  174. package/dist/signing/request-signer.js +5 -31
  175. package/dist/signing/request-signer.js.map +1 -1
  176. package/dist/signing/signer.d.ts +20 -2
  177. package/dist/signing/signer.d.ts.map +1 -1
  178. package/dist/signing/signer.js +23 -13
  179. package/dist/signing/signer.js.map +1 -1
  180. package/dist/storage/adapters/index.d.ts +2 -1
  181. package/dist/storage/adapters/index.d.ts.map +1 -1
  182. package/dist/storage/adapters/index.js +2 -1
  183. package/dist/storage/adapters/index.js.map +1 -1
  184. package/dist/storage/adapters/interface.d.ts +10 -0
  185. package/dist/storage/adapters/interface.d.ts.map +1 -1
  186. package/dist/storage/adapters/sdk.d.ts +23 -0
  187. package/dist/storage/adapters/sdk.d.ts.map +1 -0
  188. package/dist/storage/adapters/sdk.js +73 -0
  189. package/dist/storage/adapters/sdk.js.map +1 -0
  190. package/dist/storage/adapters/vana.d.ts +7 -30
  191. package/dist/storage/adapters/vana.d.ts.map +1 -1
  192. package/dist/storage/adapters/vana.js +37 -92
  193. package/dist/storage/adapters/vana.js.map +1 -1
  194. package/dist/storage/blocks/build.d.ts +20 -0
  195. package/dist/storage/blocks/build.d.ts.map +1 -0
  196. package/dist/storage/blocks/build.js +378 -0
  197. package/dist/storage/blocks/build.js.map +1 -0
  198. package/dist/storage/blocks/cursor.d.ts +33 -0
  199. package/dist/storage/blocks/cursor.d.ts.map +1 -0
  200. package/dist/storage/blocks/cursor.js +142 -0
  201. package/dist/storage/blocks/cursor.js.map +1 -0
  202. package/dist/storage/blocks/errors.d.ts +6 -0
  203. package/dist/storage/blocks/errors.d.ts.map +1 -0
  204. package/dist/storage/blocks/errors.js +9 -0
  205. package/dist/storage/blocks/errors.js.map +1 -0
  206. package/dist/storage/blocks/index.d.ts +5 -0
  207. package/dist/storage/blocks/index.d.ts.map +1 -0
  208. package/dist/storage/blocks/index.js +4 -0
  209. package/dist/storage/blocks/index.js.map +1 -0
  210. package/dist/storage/blocks/types.d.ts +49 -0
  211. package/dist/storage/blocks/types.d.ts.map +1 -0
  212. package/dist/storage/blocks/types.js +2 -0
  213. package/dist/{grants → storage/blocks}/types.js.map +1 -1
  214. package/dist/storage/hierarchy/index.d.ts +0 -1
  215. package/dist/storage/hierarchy/index.d.ts.map +1 -1
  216. package/dist/storage/hierarchy/index.js +0 -1
  217. package/dist/storage/hierarchy/index.js.map +1 -1
  218. package/dist/storage/hierarchy/manager.d.ts +0 -14
  219. package/dist/storage/hierarchy/manager.d.ts.map +1 -1
  220. package/dist/storage/hierarchy/manager.js +1 -59
  221. package/dist/storage/hierarchy/manager.js.map +1 -1
  222. package/dist/storage/hierarchy/paths.d.ts.map +1 -1
  223. package/dist/storage/hierarchy/paths.js +11 -4
  224. package/dist/storage/hierarchy/paths.js.map +1 -1
  225. package/dist/storage/index/index.d.ts +2 -3
  226. package/dist/storage/index/index.d.ts.map +1 -1
  227. package/dist/storage/index/index.js +1 -2
  228. package/dist/storage/index/index.js.map +1 -1
  229. package/dist/storage/index/manager.d.ts +26 -6
  230. package/dist/storage/index/manager.d.ts.map +1 -1
  231. package/dist/storage/index/manager.js +1 -131
  232. package/dist/storage/index/manager.js.map +1 -1
  233. package/dist/storage/index/schema.d.ts +1 -3
  234. package/dist/storage/index/schema.d.ts.map +1 -1
  235. package/dist/storage/index/schema.js +1 -26
  236. package/dist/storage/index/schema.js.map +1 -1
  237. package/dist/storage/index/types.d.ts +16 -0
  238. package/dist/storage/index/types.d.ts.map +1 -1
  239. package/dist/storage/preview.d.ts +12 -0
  240. package/dist/storage/preview.d.ts.map +1 -0
  241. package/dist/storage/preview.js +239 -0
  242. package/dist/storage/preview.js.map +1 -0
  243. package/dist/sync/cursor.d.ts +5 -7
  244. package/dist/sync/cursor.d.ts.map +1 -1
  245. package/dist/sync/cursor.js +1 -18
  246. package/dist/sync/cursor.js.map +1 -1
  247. package/dist/sync/engine/sync-manager.d.ts +17 -0
  248. package/dist/sync/engine/sync-manager.d.ts.map +1 -1
  249. package/dist/sync/engine/sync-manager.js +104 -43
  250. package/dist/sync/engine/sync-manager.js.map +1 -1
  251. package/dist/sync/index.d.ts +4 -2
  252. package/dist/sync/index.d.ts.map +1 -1
  253. package/dist/sync/index.js +1 -1
  254. package/dist/sync/index.js.map +1 -1
  255. package/dist/sync/issues.d.ts +55 -0
  256. package/dist/sync/issues.d.ts.map +1 -0
  257. package/dist/sync/issues.js +168 -0
  258. package/dist/sync/issues.js.map +1 -0
  259. package/dist/sync/retry-memory.d.ts +33 -0
  260. package/dist/sync/retry-memory.d.ts.map +1 -0
  261. package/dist/sync/retry-memory.js +68 -0
  262. package/dist/sync/retry-memory.js.map +1 -0
  263. package/dist/sync/types.d.ts +9 -24
  264. package/dist/sync/types.d.ts.map +1 -1
  265. package/dist/sync/workers/delete.d.ts +42 -0
  266. package/dist/sync/workers/delete.d.ts.map +1 -0
  267. package/dist/sync/workers/delete.js +40 -0
  268. package/dist/sync/workers/delete.js.map +1 -0
  269. package/dist/sync/workers/download.d.ts +64 -18
  270. package/dist/sync/workers/download.d.ts.map +1 -1
  271. package/dist/sync/workers/download.js +396 -54
  272. package/dist/sync/workers/download.js.map +1 -1
  273. package/dist/sync/workers/upload.d.ts +29 -18
  274. package/dist/sync/workers/upload.d.ts.map +1 -1
  275. package/dist/sync/workers/upload.js +163 -46
  276. package/dist/sync/workers/upload.js.map +1 -1
  277. package/dist/test-utils/wallet.d.ts +1 -0
  278. package/dist/test-utils/wallet.d.ts.map +1 -1
  279. package/dist/test-utils/wallet.js +9 -31
  280. package/dist/test-utils/wallet.js.map +1 -1
  281. package/package.json +51 -27
  282. package/dist/auth/web3-signed.d.ts +0 -48
  283. package/dist/auth/web3-signed.d.ts.map +0 -1
  284. package/dist/auth/web3-signed.js +0 -110
  285. package/dist/auth/web3-signed.js.map +0 -1
  286. package/dist/config/loader.d.ts +0 -8
  287. package/dist/config/loader.d.ts.map +0 -1
  288. package/dist/config/loader.js +0 -38
  289. package/dist/config/loader.js.map +0 -1
  290. package/dist/gateway/client.d.ts +0 -98
  291. package/dist/gateway/client.d.ts.map +0 -1
  292. package/dist/gateway/client.js +0 -171
  293. package/dist/gateway/client.js.map +0 -1
  294. package/dist/grants/eip712.d.ts +0 -28
  295. package/dist/grants/eip712.d.ts.map +0 -1
  296. package/dist/grants/eip712.js +0 -30
  297. package/dist/grants/eip712.js.map +0 -1
  298. package/dist/grants/types.d.ts +0 -29
  299. package/dist/grants/types.d.ts.map +0 -1
  300. package/dist/grants/types.js +0 -6
  301. package/dist/grants/verify.d.ts +0 -24
  302. package/dist/grants/verify.d.ts.map +0 -1
  303. package/dist/grants/verify.js +0 -71
  304. package/dist/grants/verify.js.map +0 -1
  305. package/dist/keys/derive.d.ts +0 -18
  306. package/dist/keys/derive.d.ts.map +0 -1
  307. package/dist/keys/derive.js +0 -43
  308. package/dist/keys/derive.js.map +0 -1
  309. package/dist/schemas/data-file.d.ts +0 -20
  310. package/dist/schemas/data-file.d.ts.map +0 -1
  311. package/dist/schemas/data-file.js +0 -23
  312. package/dist/schemas/data-file.js.map +0 -1
  313. package/dist/scopes/index.d.ts +0 -3
  314. package/dist/scopes/index.d.ts.map +0 -1
  315. package/dist/scopes/index.js +0 -3
  316. package/dist/scopes/index.js.map +0 -1
  317. package/dist/scopes/match.d.ts +0 -13
  318. package/dist/scopes/match.d.ts.map +0 -1
  319. package/dist/scopes/match.js +0 -23
  320. package/dist/scopes/match.js.map +0 -1
  321. package/dist/scopes/parse.d.ts +0 -12
  322. package/dist/scopes/parse.d.ts.map +0 -1
  323. package/dist/scopes/parse.js +0 -29
  324. package/dist/scopes/parse.js.map +0 -1
  325. package/dist/signing/eip712.d.ts +0 -69
  326. package/dist/signing/eip712.d.ts.map +0 -1
  327. package/dist/signing/eip712.js +0 -68
  328. package/dist/signing/eip712.js.map +0 -1
  329. package/dist/storage/encryption/decrypt.d.ts +0 -10
  330. package/dist/storage/encryption/decrypt.d.ts.map +0 -1
  331. package/dist/storage/encryption/decrypt.js +0 -19
  332. package/dist/storage/encryption/decrypt.js.map +0 -1
  333. package/dist/storage/encryption/encrypt.d.ts +0 -10
  334. package/dist/storage/encryption/encrypt.d.ts.map +0 -1
  335. package/dist/storage/encryption/encrypt.js +0 -19
  336. package/dist/storage/encryption/encrypt.js.map +0 -1
  337. package/dist/storage/encryption/index.d.ts +0 -3
  338. package/dist/storage/encryption/index.d.ts.map +0 -1
  339. package/dist/storage/encryption/index.js +0 -3
  340. package/dist/storage/encryption/index.js.map +0 -1
@@ -1,132 +1,2 @@
1
- function rowToEntry(row) {
2
- return {
3
- id: row.id,
4
- fileId: row.file_id,
5
- path: row.path,
6
- scope: row.scope,
7
- collectedAt: row.collected_at,
8
- createdAt: row.created_at,
9
- sizeBytes: row.size_bytes,
10
- };
11
- }
12
- export function createIndexManager(db) {
13
- const insertStmt = db.prepare(`INSERT INTO data_files (file_id, path, scope, collected_at, size_bytes)
14
- VALUES (@file_id, @path, @scope, @collected_at, @size_bytes)`);
15
- const findByPathStmt = db.prepare("SELECT * FROM data_files WHERE path = @path");
16
- const findLatestByScopeStmt = db.prepare("SELECT * FROM data_files WHERE scope = @scope ORDER BY collected_at DESC LIMIT 1");
17
- const countByScopeStmt = db.prepare("SELECT COUNT(*) AS cnt FROM data_files WHERE scope = @scope");
18
- const deleteByPathStmt = db.prepare("DELETE FROM data_files WHERE path = @path");
19
- const findClosestByScopeStmt = db.prepare("SELECT * FROM data_files WHERE scope = @scope AND collected_at <= @at ORDER BY collected_at DESC LIMIT 1");
20
- const findByFileIdStmt = db.prepare("SELECT * FROM data_files WHERE file_id = @file_id");
21
- const findUnsyncedStmt = db.prepare("SELECT * FROM data_files WHERE file_id IS NULL ORDER BY created_at ASC");
22
- const findUnsyncedLimitStmt = db.prepare("SELECT * FROM data_files WHERE file_id IS NULL ORDER BY created_at ASC LIMIT @limit");
23
- const updateFileIdStmt = db.prepare("UPDATE data_files SET file_id = @file_id WHERE path = @path");
24
- const deleteByScopeStmt = db.prepare("DELETE FROM data_files WHERE scope = @scope");
25
- return {
26
- insert(entry) {
27
- const result = insertStmt.run({
28
- file_id: entry.fileId,
29
- path: entry.path,
30
- scope: entry.scope,
31
- collected_at: entry.collectedAt,
32
- size_bytes: entry.sizeBytes,
33
- });
34
- const row = db
35
- .prepare("SELECT * FROM data_files WHERE id = ?")
36
- .get(result.lastInsertRowid);
37
- return rowToEntry(row);
38
- },
39
- findByPath(path) {
40
- const row = findByPathStmt.get({ path });
41
- return row ? rowToEntry(row) : undefined;
42
- },
43
- findByScope(options) {
44
- let sql = "SELECT * FROM data_files";
45
- const params = {};
46
- if (options.scope) {
47
- sql += " WHERE scope = @scope";
48
- params.scope = options.scope;
49
- }
50
- sql += " ORDER BY collected_at DESC";
51
- if (options.limit !== undefined) {
52
- sql += " LIMIT @limit";
53
- params.limit = options.limit;
54
- }
55
- if (options.offset !== undefined) {
56
- sql += " OFFSET @offset";
57
- params.offset = options.offset;
58
- }
59
- const rows = db.prepare(sql).all(params);
60
- return rows.map(rowToEntry);
61
- },
62
- findLatestByScope(scope) {
63
- const row = findLatestByScopeStmt.get({ scope });
64
- return row ? rowToEntry(row) : undefined;
65
- },
66
- countByScope(scope) {
67
- const row = countByScopeStmt.get({ scope });
68
- return row.cnt;
69
- },
70
- deleteByPath(path) {
71
- const result = deleteByPathStmt.run({ path });
72
- return result.changes > 0;
73
- },
74
- listDistinctScopes(options) {
75
- const hasPrefix = options?.scopePrefix !== undefined && options.scopePrefix !== "";
76
- const prefix = hasPrefix ? options.scopePrefix + "%" : "%";
77
- const countRow = db
78
- .prepare("SELECT COUNT(DISTINCT scope) AS cnt FROM data_files WHERE scope LIKE @prefix")
79
- .get({ prefix });
80
- const total = countRow.cnt;
81
- let sql = "SELECT scope, MAX(collected_at) AS latest_collected_at, COUNT(*) AS version_count FROM data_files WHERE scope LIKE @prefix GROUP BY scope ORDER BY scope ASC";
82
- const params = { prefix };
83
- if (options?.limit !== undefined) {
84
- sql += " LIMIT @limit";
85
- params.limit = options.limit;
86
- }
87
- if (options?.offset !== undefined) {
88
- sql += " OFFSET @offset";
89
- params.offset = options.offset;
90
- }
91
- const rows = db.prepare(sql).all(params);
92
- return {
93
- scopes: rows.map((r) => ({
94
- scope: r.scope,
95
- latestCollectedAt: r.latest_collected_at,
96
- versionCount: r.version_count,
97
- })),
98
- total,
99
- };
100
- },
101
- findClosestByScope(scope, at) {
102
- const row = findClosestByScopeStmt.get({ scope, at });
103
- return row ? rowToEntry(row) : undefined;
104
- },
105
- findByFileId(fileId) {
106
- const row = findByFileIdStmt.get({ file_id: fileId });
107
- return row ? rowToEntry(row) : undefined;
108
- },
109
- findUnsynced(options) {
110
- if (options?.limit !== undefined) {
111
- const rows = findUnsyncedLimitStmt.all({
112
- limit: options.limit,
113
- });
114
- return rows.map(rowToEntry);
115
- }
116
- const rows = findUnsyncedStmt.all();
117
- return rows.map(rowToEntry);
118
- },
119
- updateFileId(path, fileId) {
120
- const result = updateFileIdStmt.run({ file_id: fileId, path });
121
- return result.changes > 0;
122
- },
123
- deleteByScope(scope) {
124
- const result = deleteByScopeStmt.run({ scope });
125
- return result.changes;
126
- },
127
- close() {
128
- db.close();
129
- },
130
- };
131
- }
1
+ export {};
132
2
  //# sourceMappingURL=manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/storage/index/manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/storage/index/manager.ts"],"names":[],"mappings":""}
@@ -1,4 +1,2 @@
1
- import Database from "better-sqlite3";
2
- /** Open/create SQLite database, run CREATE TABLE IF NOT EXISTS, set WAL mode */
3
- export declare function initializeDatabase(dbPath: string): Database.Database;
1
+ export declare const INDEX_SCHEMA_VERSION = 3;
4
2
  //# sourceMappingURL=schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/storage/index/schema.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAmBtC,gFAAgF;AAChF,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAWpE"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/storage/index/schema.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,IAAI,CAAC"}
@@ -1,27 +1,2 @@
1
- import Database from "better-sqlite3";
2
- const CREATE_TABLE_SQL = `
3
- CREATE TABLE IF NOT EXISTS data_files (
4
- id INTEGER PRIMARY KEY AUTOINCREMENT,
5
- file_id TEXT,
6
- path TEXT NOT NULL UNIQUE,
7
- scope TEXT NOT NULL,
8
- collected_at TEXT NOT NULL,
9
- created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')),
10
- size_bytes INTEGER NOT NULL DEFAULT 0
11
- )`;
12
- const CREATE_INDEXES_SQL = [
13
- "CREATE INDEX IF NOT EXISTS idx_data_files_scope ON data_files (scope)",
14
- "CREATE INDEX IF NOT EXISTS idx_data_files_collected_at ON data_files (collected_at)",
15
- "CREATE INDEX IF NOT EXISTS idx_data_files_file_id ON data_files (file_id)",
16
- ];
17
- /** Open/create SQLite database, run CREATE TABLE IF NOT EXISTS, set WAL mode */
18
- export function initializeDatabase(dbPath) {
19
- const db = new Database(dbPath);
20
- db.pragma("journal_mode = WAL");
21
- db.exec(CREATE_TABLE_SQL);
22
- for (const sql of CREATE_INDEXES_SQL) {
23
- db.exec(sql);
24
- }
25
- return db;
26
- }
1
+ export const INDEX_SCHEMA_VERSION = 3;
27
2
  //# sourceMappingURL=schema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/storage/index/schema.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAEtC,MAAM,gBAAgB,GAAG;;;;;;;;;EASvB,CAAC;AAEH,MAAM,kBAAkB,GAAG;IACzB,uEAAuE;IACvE,qFAAqF;IACrF,2EAA2E;CAC5E,CAAC;AAEF,gFAAgF;AAChF,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAC/C,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEhC,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAEhC,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC1B,KAAK,MAAM,GAAG,IAAI,kBAAkB,EAAE,CAAC;QACrC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/storage/index/schema.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC"}
@@ -1,12 +1,20 @@
1
1
  export interface IndexEntry {
2
2
  id: number;
3
3
  fileId: string | null;
4
+ schemaId: string | null;
4
5
  path: string;
5
6
  scope: string;
6
7
  collectedAt: string;
7
8
  createdAt: string;
8
9
  sizeBytes: number;
10
+ version: number;
11
+ dataPointId: string | null;
9
12
  }
13
+ export type NewIndexEntry = Omit<IndexEntry, "id" | "createdAt" | "schemaId" | "version" | "dataPointId"> & {
14
+ schemaId?: string | null;
15
+ version?: number;
16
+ dataPointId?: string | null;
17
+ };
10
18
  export interface IndexListOptions {
11
19
  scope?: string;
12
20
  limit?: number;
@@ -16,5 +24,13 @@ export interface ScopeSummary {
16
24
  scope: string;
17
25
  latestCollectedAt: string;
18
26
  versionCount: number;
27
+ /**
28
+ * Whether bounded block reads for the latest local version are ready.
29
+ * Existing data can appear in the index before the block sidecar finishes
30
+ * indexing; MCP reads require the sidecar.
31
+ */
32
+ dataStatus?: "ready" | "indexing";
33
+ /** Size in bytes of the latest local version. */
34
+ sizeBytes?: number;
19
35
  }
20
36
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/storage/index/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;CACtB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/storage/index/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAIlB,OAAO,EAAE,MAAM,CAAC;IAGhB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,MAAM,aAAa,GAAG,IAAI,CAC9B,UAAU,EACV,IAAI,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,aAAa,CAC5D,GAAG;IACF,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAIzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IAClC,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
@@ -0,0 +1,12 @@
1
+ export interface EnvelopePreview {
2
+ text: string;
3
+ truncated: boolean;
4
+ }
5
+ export declare function previewEnvelopeValue(envelope: unknown, maxBytes: number, options?: {
6
+ nodeBudget?: number;
7
+ }): EnvelopePreview;
8
+ export declare function previewJsonEnvelopePrefix(jsonText: string, maxBytes: number, options?: {
9
+ sourceTruncated?: boolean;
10
+ nodeBudget?: number;
11
+ }): EnvelopePreview;
12
+ //# sourceMappingURL=preview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../../src/storage/preview.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;CACpB;AAoED,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,OAAO,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GACpC,eAAe,CAwDjB;AAED,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IAAE,eAAe,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/D,eAAe,CAiDjB"}
@@ -0,0 +1,239 @@
1
+ const DEFAULT_PREVIEW_NODE_BUDGET = 15_000;
2
+ const textEncoder = new TextEncoder();
3
+ function utf8Length(text) {
4
+ return textEncoder.encode(text).byteLength;
5
+ }
6
+ function clipToUtf8Bytes(text, maxBytes) {
7
+ if (maxBytes <= 0)
8
+ return "";
9
+ if (utf8Length(text) <= maxBytes)
10
+ return text;
11
+ let low = 0;
12
+ let high = text.length;
13
+ while (low < high) {
14
+ const mid = Math.ceil((low + high) / 2);
15
+ if (utf8Length(text.slice(0, mid)) <= maxBytes) {
16
+ low = mid;
17
+ }
18
+ else {
19
+ high = mid - 1;
20
+ }
21
+ }
22
+ let clipped = text.slice(0, low);
23
+ const last = clipped.charCodeAt(clipped.length - 1);
24
+ if (last >= 0xd800 && last <= 0xdbff) {
25
+ clipped = clipped.slice(0, -1);
26
+ }
27
+ return clipped;
28
+ }
29
+ function appendPreviewToken(chunks, token, maxBytes, state) {
30
+ if (!token)
31
+ return true;
32
+ const text = chunks.length > 0 ? `\n${token}` : token;
33
+ const remaining = maxBytes - state.bytes;
34
+ if (remaining <= 0) {
35
+ state.truncated = true;
36
+ return false;
37
+ }
38
+ const encodedBytes = utf8Length(text);
39
+ if (encodedBytes <= remaining) {
40
+ chunks.push(text);
41
+ state.bytes += encodedBytes;
42
+ return true;
43
+ }
44
+ const clipped = clipToUtf8Bytes(text, remaining);
45
+ if (clipped) {
46
+ chunks.push(clipped);
47
+ state.bytes += utf8Length(clipped);
48
+ }
49
+ state.truncated = true;
50
+ return false;
51
+ }
52
+ export function previewEnvelopeValue(envelope, maxBytes, options = {}) {
53
+ const chunks = [];
54
+ const stack = [envelope];
55
+ const state = { bytes: 0, truncated: false };
56
+ const seen = new WeakSet();
57
+ const nodeBudget = options.nodeBudget ?? DEFAULT_PREVIEW_NODE_BUDGET;
58
+ let nodes = 0;
59
+ while (stack.length > 0) {
60
+ if (nodes >= nodeBudget) {
61
+ state.truncated = true;
62
+ break;
63
+ }
64
+ const current = stack.pop();
65
+ nodes += 1;
66
+ if (typeof current === "string") {
67
+ if (!appendPreviewToken(chunks, current, maxBytes, state))
68
+ break;
69
+ continue;
70
+ }
71
+ if (typeof current === "number" ||
72
+ typeof current === "boolean" ||
73
+ typeof current === "bigint") {
74
+ if (!appendPreviewToken(chunks, String(current), maxBytes, state))
75
+ break;
76
+ continue;
77
+ }
78
+ if (Array.isArray(current)) {
79
+ if (seen.has(current))
80
+ continue;
81
+ seen.add(current);
82
+ for (let index = current.length - 1; index >= 0; index -= 1) {
83
+ stack.push(current[index]);
84
+ }
85
+ continue;
86
+ }
87
+ if (typeof current === "object" && current !== null) {
88
+ if (seen.has(current))
89
+ continue;
90
+ seen.add(current);
91
+ const entries = Object.entries(current);
92
+ for (let index = entries.length - 1; index >= 0; index -= 1) {
93
+ const [key, value] = entries[index];
94
+ stack.push(value);
95
+ stack.push(key);
96
+ }
97
+ }
98
+ }
99
+ return {
100
+ text: chunks.join(""),
101
+ truncated: state.truncated,
102
+ };
103
+ }
104
+ export function previewJsonEnvelopePrefix(jsonText, maxBytes, options = {}) {
105
+ const chunks = [];
106
+ const state = {
107
+ bytes: 0,
108
+ truncated: options.sourceTruncated ?? false,
109
+ };
110
+ const nodeBudget = options.nodeBudget ?? DEFAULT_PREVIEW_NODE_BUDGET;
111
+ let nodes = 0;
112
+ let index = 0;
113
+ while (index < jsonText.length) {
114
+ if (nodes >= nodeBudget) {
115
+ state.truncated = true;
116
+ break;
117
+ }
118
+ const char = jsonText[index];
119
+ if (char === '"') {
120
+ const token = readJsonStringToken(jsonText, index + 1);
121
+ nodes += 1;
122
+ if (!appendPreviewToken(chunks, token.value, maxBytes, state))
123
+ break;
124
+ state.truncated = state.truncated || token.truncated;
125
+ index = token.nextIndex;
126
+ continue;
127
+ }
128
+ if (char && /[-0-9]/u.test(char)) {
129
+ const token = readJsonNumberToken(jsonText, index);
130
+ nodes += 1;
131
+ if (!appendPreviewToken(chunks, token.value, maxBytes, state))
132
+ break;
133
+ index = token.nextIndex;
134
+ continue;
135
+ }
136
+ const literal = readJsonLiteralToken(jsonText, index);
137
+ if (literal) {
138
+ nodes += 1;
139
+ if (!appendPreviewToken(chunks, literal.value, maxBytes, state))
140
+ break;
141
+ index = literal.nextIndex;
142
+ continue;
143
+ }
144
+ index += 1;
145
+ }
146
+ return {
147
+ text: chunks.join(""),
148
+ truncated: state.truncated,
149
+ };
150
+ }
151
+ function readJsonStringToken(text, startIndex) {
152
+ let value = "";
153
+ let index = startIndex;
154
+ let truncated = true;
155
+ while (index < text.length) {
156
+ const char = text[index];
157
+ if (char === '"') {
158
+ truncated = false;
159
+ index += 1;
160
+ break;
161
+ }
162
+ if (char !== "\\") {
163
+ value += char;
164
+ index += 1;
165
+ continue;
166
+ }
167
+ const escaped = text[index + 1];
168
+ if (!escaped) {
169
+ index = text.length;
170
+ break;
171
+ }
172
+ switch (escaped) {
173
+ case '"':
174
+ case "\\":
175
+ case "/":
176
+ value += escaped;
177
+ index += 2;
178
+ break;
179
+ case "b":
180
+ value += "\b";
181
+ index += 2;
182
+ break;
183
+ case "f":
184
+ value += "\f";
185
+ index += 2;
186
+ break;
187
+ case "n":
188
+ value += "\n";
189
+ index += 2;
190
+ break;
191
+ case "r":
192
+ value += "\r";
193
+ index += 2;
194
+ break;
195
+ case "t":
196
+ value += "\t";
197
+ index += 2;
198
+ break;
199
+ case "u": {
200
+ const hex = text.slice(index + 2, index + 6);
201
+ if (!/^[0-9a-fA-F]{4}$/u.test(hex)) {
202
+ index = text.length;
203
+ break;
204
+ }
205
+ value += String.fromCharCode(Number.parseInt(hex, 16));
206
+ index += 6;
207
+ break;
208
+ }
209
+ default:
210
+ value += escaped;
211
+ index += 2;
212
+ break;
213
+ }
214
+ }
215
+ return { value, nextIndex: index, truncated };
216
+ }
217
+ function readJsonNumberToken(text, startIndex) {
218
+ let index = startIndex;
219
+ while (index < text.length && /[-+0-9.eE]/u.test(text[index])) {
220
+ index += 1;
221
+ }
222
+ return {
223
+ value: text.slice(startIndex, index),
224
+ nextIndex: index,
225
+ };
226
+ }
227
+ function readJsonLiteralToken(text, startIndex) {
228
+ if (text.startsWith("true", startIndex)) {
229
+ return { value: "true", nextIndex: startIndex + 4 };
230
+ }
231
+ if (text.startsWith("false", startIndex)) {
232
+ return { value: "false", nextIndex: startIndex + 5 };
233
+ }
234
+ if (text.startsWith("null", startIndex)) {
235
+ return { value: "null", nextIndex: startIndex + 4 };
236
+ }
237
+ return null;
238
+ }
239
+ //# sourceMappingURL=preview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview.js","sourceRoot":"","sources":["../../src/storage/preview.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,10 @@
1
1
  export interface SyncCursor {
2
- /** Read the lastProcessedTimestamp from config.json */
2
+ /** Read the lastProcessedTimestamp from cursor state. */
3
3
  read(): Promise<string | null>;
4
- /** Write the lastProcessedTimestamp to config.json */
4
+ /** Write the lastProcessedTimestamp to cursor state. */
5
5
  write(timestamp: string): Promise<void>;
6
6
  }
7
- /**
8
- * Creates a cursor that reads/writes sync.lastProcessedTimestamp in config.json.
9
- * Uses loadConfig/saveConfig to preserve other config fields.
10
- */
11
- export declare function createSyncCursor(configPath: string): SyncCursor;
7
+ export interface SyncCursorOptions {
8
+ legacyConfigPath?: string;
9
+ }
12
10
  //# sourceMappingURL=cursor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../src/sync/cursor.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACzB,uDAAuD;IACvD,IAAI,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAE/B,sDAAsD;IACtD,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,CAa/D"}
1
+ {"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../src/sync/cursor.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,yDAAyD;IACzD,IAAI,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAE/B,wDAAwD;IACxD,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B"}
@@ -1,19 +1,2 @@
1
- import { loadConfig, saveConfig } from "../config/index.js";
2
- /**
3
- * Creates a cursor that reads/writes sync.lastProcessedTimestamp in config.json.
4
- * Uses loadConfig/saveConfig to preserve other config fields.
5
- */
6
- export function createSyncCursor(configPath) {
7
- return {
8
- async read() {
9
- const config = await loadConfig({ configPath });
10
- return config.sync.lastProcessedTimestamp;
11
- },
12
- async write(timestamp) {
13
- const config = await loadConfig({ configPath });
14
- config.sync.lastProcessedTimestamp = timestamp;
15
- await saveConfig(config, { configPath });
16
- },
17
- };
18
- }
1
+ export {};
19
2
  //# sourceMappingURL=cursor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/sync/cursor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAU5D;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,UAAkB;IACjD,OAAO;QACL,KAAK,CAAC,IAAI;YACR,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;YAChD,OAAO,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC;QAC5C,CAAC;QAED,KAAK,CAAC,KAAK,CAAC,SAAS;YACnB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;YAChD,MAAM,CAAC,IAAI,CAAC,sBAAsB,GAAG,SAAS,CAAC;YAC/C,MAAM,UAAU,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;QAC3C,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/sync/cursor.ts"],"names":[],"mappings":""}
@@ -6,7 +6,18 @@ export interface SyncManagerOptions {
6
6
  pollInterval?: number;
7
7
  /** Max upload batch size per cycle (default: 50) */
8
8
  uploadBatchSize?: number;
9
+ /** Debounce for immediate sync after local ingest (default: 500ms) */
10
+ notifyDebounceMs?: number;
11
+ /** Optional runtime gate. Returning blocked skips upload/download without an error. */
12
+ canSync?: () => Promise<SyncCanRunResult> | SyncCanRunResult;
9
13
  }
14
+ export type SyncCanRunResult = {
15
+ ok: true;
16
+ } | {
17
+ ok: false;
18
+ reason: string;
19
+ message: string;
20
+ };
10
21
  export interface SyncManager {
11
22
  /** Start the background sync loop */
12
23
  start(): void;
@@ -18,6 +29,12 @@ export interface SyncManager {
18
29
  getStatus(): SyncStatus;
19
30
  /** Signal that new data has been ingested (next cycle picks it up) */
20
31
  notifyNewData(): void;
32
+ /**
33
+ * Propagate a scope deletion to the authoritative stores (R2 blobs + gateway file records).
34
+ * Call BEFORE deleting the scope locally — it reads the local index to find what to remove.
35
+ * Best-effort: resolves with a summary; per-file failures are logged, not thrown.
36
+ */
37
+ deleteScopeRemote(scope: string): Promise<void>;
21
38
  /** Whether the sync manager is currently running */
22
39
  readonly running: boolean;
23
40
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sync-manager.d.ts","sourceRoot":"","sources":["../../../src/sync/engine/sync-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,aAAa,CAAC;AAIzD,MAAM,WAAW,kBAAkB;IACjC,oEAAoE;IACpE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,qCAAqC;IACrC,KAAK,IAAI,IAAI,CAAC;IAEd,+CAA+C;IAC/C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtB,mDAAmD;IACnD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzB,8BAA8B;IAC9B,SAAS,IAAI,UAAU,CAAC;IAExB,sEAAsE;IACtE,aAAa,IAAI,IAAI,CAAC;IAEtB,oDAAoD;IACpD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAID,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,gBAAgB,EAC5B,YAAY,EAAE,kBAAkB,EAChC,OAAO,CAAC,EAAE,kBAAkB,GAC3B,WAAW,CA8Jb"}
1
+ {"version":3,"file":"sync-manager.d.ts","sourceRoot":"","sources":["../../../src/sync/engine/sync-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAgC,MAAM,aAAa,CAAC;AAM5E,MAAM,WAAW,kBAAkB;IACjC,oEAAoE;IACpE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sEAAsE;IACtE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,uFAAuF;IACvF,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,CAAC;CAC9D;AAED,MAAM,MAAM,gBAAgB,GAC1B;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhE,MAAM,WAAW,WAAW;IAC1B,qCAAqC;IACrC,KAAK,IAAI,IAAI,CAAC;IAEd,+CAA+C;IAC/C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtB,mDAAmD;IACnD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzB,8BAA8B;IAC9B,SAAS,IAAI,UAAU,CAAC;IAExB,sEAAsE;IACtE,aAAa,IAAI,IAAI,CAAC;IAEtB;;;;OAIG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhD,oDAAoD;IACpD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAID,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,gBAAgB,EAC5B,YAAY,EAAE,kBAAkB,EAChC,OAAO,CAAC,EAAE,kBAAkB,GAC3B,WAAW,CA2Nb"}