studiograph 1.3.46 → 1.3.48-beta.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 (1057) hide show
  1. package/README.md +26 -16
  2. package/dist/agent/agent-pool.d.ts +117 -0
  3. package/dist/agent/agent-pool.js +287 -0
  4. package/dist/agent/agent-pool.js.map +1 -0
  5. package/dist/agent/followups.d.ts +34 -0
  6. package/dist/agent/followups.js +52 -0
  7. package/dist/agent/followups.js.map +1 -0
  8. package/dist/agent/orchestrator.d.ts +113 -22
  9. package/dist/agent/orchestrator.js +573 -181
  10. package/dist/agent/orchestrator.js.map +1 -1
  11. package/dist/agent/prompts/entity-types-section.d.ts +36 -0
  12. package/dist/agent/prompts/entity-types-section.js +90 -0
  13. package/dist/agent/prompts/entity-types-section.js.map +1 -0
  14. package/dist/agent/prompts/system.md +148 -69
  15. package/dist/agent/skill-loader.d.ts +30 -17
  16. package/dist/agent/skill-loader.js +63 -30
  17. package/dist/agent/skill-loader.js.map +1 -1
  18. package/dist/agent/skills/entity-schema.md +77 -433
  19. package/dist/agent/skills/interview/entity-templates.md +193 -0
  20. package/dist/agent/skills/interview/question-domains.md +391 -0
  21. package/dist/agent/skills/interview/skill.md +204 -0
  22. package/dist/agent/skills/schema-rules.md +54 -0
  23. package/dist/agent/tools/capture-tools.d.ts +31 -0
  24. package/dist/agent/tools/capture-tools.js +40 -0
  25. package/dist/agent/tools/capture-tools.js.map +1 -0
  26. package/dist/agent/tools/folder-tools.d.ts +47 -0
  27. package/dist/agent/tools/folder-tools.js +249 -0
  28. package/dist/agent/tools/folder-tools.js.map +1 -0
  29. package/dist/agent/tools/fs-tools.d.ts +7 -6
  30. package/dist/agent/tools/fs-tools.js +5 -4
  31. package/dist/agent/tools/fs-tools.js.map +1 -1
  32. package/dist/agent/tools/graph-tools.d.ts +21 -58
  33. package/dist/agent/tools/graph-tools.js +635 -332
  34. package/dist/agent/tools/graph-tools.js.map +1 -1
  35. package/dist/agent/tools/history-tools.d.ts +95 -0
  36. package/dist/agent/tools/history-tools.js +461 -0
  37. package/dist/agent/tools/history-tools.js.map +1 -0
  38. package/dist/agent/tools/load-skill.d.ts +6 -5
  39. package/dist/agent/tools/load-skill.js +3 -3
  40. package/dist/agent/tools/load-skill.js.map +1 -1
  41. package/dist/agent/tools/ops-tools.d.ts +5 -4
  42. package/dist/agent/tools/ops-tools.js +130 -236
  43. package/dist/agent/tools/ops-tools.js.map +1 -1
  44. package/dist/agent/tools/permission-tools.d.ts +87 -17
  45. package/dist/agent/tools/permission-tools.js +233 -38
  46. package/dist/agent/tools/permission-tools.js.map +1 -1
  47. package/dist/agent/tools/tool-loader.js +5 -4
  48. package/dist/agent/tools/tool-loader.js.map +1 -1
  49. package/dist/agent/tools/web-tools.d.ts +18 -0
  50. package/dist/agent/tools/web-tools.js +283 -0
  51. package/dist/agent/tools/web-tools.js.map +1 -0
  52. package/dist/cli/commands/about.d.ts +1 -0
  53. package/dist/cli/commands/about.js +55 -3
  54. package/dist/cli/commands/about.js.map +1 -1
  55. package/dist/cli/commands/admin/audit-workspace.d.ts +23 -0
  56. package/dist/cli/commands/admin/audit-workspace.js +133 -0
  57. package/dist/cli/commands/admin/audit-workspace.js.map +1 -0
  58. package/dist/cli/commands/admin/audit.d.ts +21 -0
  59. package/dist/cli/commands/admin/audit.js +174 -0
  60. package/dist/cli/commands/admin/audit.js.map +1 -0
  61. package/dist/cli/commands/admin/backup.d.ts +54 -0
  62. package/dist/cli/commands/admin/backup.js +207 -0
  63. package/dist/cli/commands/admin/backup.js.map +1 -0
  64. package/dist/cli/commands/admin/folder.d.ts +11 -0
  65. package/dist/cli/commands/admin/folder.js +186 -0
  66. package/dist/cli/commands/admin/folder.js.map +1 -0
  67. package/dist/cli/commands/admin/index.d.ts +16 -0
  68. package/dist/cli/commands/admin/index.js +46 -0
  69. package/dist/cli/commands/admin/index.js.map +1 -0
  70. package/dist/cli/commands/admin/migrate-assets.d.ts +53 -0
  71. package/dist/cli/commands/admin/migrate-assets.js +184 -0
  72. package/dist/cli/commands/admin/migrate-assets.js.map +1 -0
  73. package/dist/cli/commands/admin/migrate.d.ts +56 -0
  74. package/dist/cli/commands/admin/migrate.js +263 -0
  75. package/dist/cli/commands/admin/migrate.js.map +1 -0
  76. package/dist/cli/commands/admin/restore.d.ts +24 -0
  77. package/dist/cli/commands/admin/restore.js +228 -0
  78. package/dist/cli/commands/admin/restore.js.map +1 -0
  79. package/dist/cli/commands/admin/secrets.d.ts +23 -0
  80. package/dist/cli/commands/admin/secrets.js +256 -0
  81. package/dist/cli/commands/admin/secrets.js.map +1 -0
  82. package/dist/cli/commands/admin/settings.d.ts +28 -0
  83. package/dist/cli/commands/admin/settings.js +284 -0
  84. package/dist/cli/commands/admin/settings.js.map +1 -0
  85. package/dist/cli/commands/admin/token.d.ts +42 -0
  86. package/dist/cli/commands/admin/token.js +126 -0
  87. package/dist/cli/commands/admin/token.js.map +1 -0
  88. package/dist/cli/commands/admin/transfer-ownership.d.ts +15 -0
  89. package/dist/cli/commands/admin/transfer-ownership.js +106 -0
  90. package/dist/cli/commands/admin/transfer-ownership.js.map +1 -0
  91. package/dist/cli/commands/admin/user.d.ts +11 -0
  92. package/dist/cli/commands/admin/user.js +187 -0
  93. package/dist/cli/commands/admin/user.js.map +1 -0
  94. package/dist/cli/commands/clone.d.ts +25 -3
  95. package/dist/cli/commands/clone.js +142 -36
  96. package/dist/cli/commands/clone.js.map +1 -1
  97. package/dist/cli/commands/commit.d.ts +1 -1
  98. package/dist/cli/commands/commit.js +24 -11
  99. package/dist/cli/commands/commit.js.map +1 -1
  100. package/dist/cli/commands/config.d.ts +23 -107
  101. package/dist/cli/commands/config.js +52 -260
  102. package/dist/cli/commands/config.js.map +1 -1
  103. package/dist/cli/commands/connector.d.ts +10 -13
  104. package/dist/cli/commands/connector.js +16 -58
  105. package/dist/cli/commands/connector.js.map +1 -1
  106. package/dist/cli/commands/deploy.js +215 -68
  107. package/dist/cli/commands/deploy.js.map +1 -1
  108. package/dist/cli/commands/index.js +2 -2
  109. package/dist/cli/commands/index.js.map +1 -1
  110. package/dist/cli/commands/init.js +10 -30
  111. package/dist/cli/commands/init.js.map +1 -1
  112. package/dist/cli/commands/mcp.js +12 -4
  113. package/dist/cli/commands/mcp.js.map +1 -1
  114. package/dist/cli/commands/orphans.js +14 -30
  115. package/dist/cli/commands/orphans.js.map +1 -1
  116. package/dist/cli/commands/r2.d.ts +3 -0
  117. package/dist/cli/commands/r2.js +223 -204
  118. package/dist/cli/commands/r2.js.map +1 -1
  119. package/dist/cli/commands/redeploy.js +65 -12
  120. package/dist/cli/commands/redeploy.js.map +1 -1
  121. package/dist/cli/commands/reset.d.ts +22 -6
  122. package/dist/cli/commands/reset.js +142 -63
  123. package/dist/cli/commands/reset.js.map +1 -1
  124. package/dist/cli/commands/serve.js +209 -24
  125. package/dist/cli/commands/serve.js.map +1 -1
  126. package/dist/cli/commands/sync.d.ts +1 -1
  127. package/dist/cli/commands/sync.js +372 -202
  128. package/dist/cli/commands/sync.js.map +1 -1
  129. package/dist/cli/crypto-bundle.d.ts +39 -0
  130. package/dist/cli/crypto-bundle.js +94 -0
  131. package/dist/cli/crypto-bundle.js.map +1 -0
  132. package/dist/cli/index.js +24 -35
  133. package/dist/cli/index.js.map +1 -1
  134. package/dist/cli/railway-pin.d.ts +68 -0
  135. package/dist/cli/railway-pin.js +96 -0
  136. package/dist/cli/railway-pin.js.map +1 -0
  137. package/dist/cli/railway-provisioning.d.ts +53 -0
  138. package/dist/cli/railway-provisioning.js +85 -0
  139. package/dist/cli/railway-provisioning.js.map +1 -0
  140. package/dist/cli/setup-wizard.d.ts +33 -52
  141. package/dist/cli/setup-wizard.js +43 -68
  142. package/dist/cli/setup-wizard.js.map +1 -1
  143. package/dist/core/accent-palette.d.ts +22 -0
  144. package/dist/core/accent-palette.js +47 -0
  145. package/dist/core/accent-palette.js.map +1 -0
  146. package/dist/core/cell-anchor.d.ts +29 -0
  147. package/dist/core/cell-anchor.js +53 -0
  148. package/dist/core/cell-anchor.js.map +1 -0
  149. package/dist/core/comment-anchor.d.ts +41 -0
  150. package/dist/core/comment-anchor.js +147 -0
  151. package/dist/core/comment-anchor.js.map +1 -0
  152. package/dist/core/commit-messages.d.ts +57 -0
  153. package/dist/core/commit-messages.js +85 -0
  154. package/dist/core/commit-messages.js.map +1 -0
  155. package/dist/core/embeds.d.ts +56 -0
  156. package/dist/core/embeds.js +103 -0
  157. package/dist/core/embeds.js.map +1 -0
  158. package/dist/core/entity-body-templates.d.ts +21 -0
  159. package/dist/core/entity-body-templates.js +53 -0
  160. package/dist/core/entity-body-templates.js.map +1 -0
  161. package/dist/core/entity-types-catalog.d.ts +65 -0
  162. package/dist/core/entity-types-catalog.js +140 -0
  163. package/dist/core/entity-types-catalog.js.map +1 -0
  164. package/dist/core/folder-paths.d.ts +41 -0
  165. package/dist/core/folder-paths.js +95 -0
  166. package/dist/core/folder-paths.js.map +1 -0
  167. package/dist/core/folder-sidecar.d.ts +36 -0
  168. package/dist/core/folder-sidecar.js +91 -0
  169. package/dist/core/folder-sidecar.js.map +1 -0
  170. package/dist/core/graph.d.ts +675 -14
  171. package/dist/core/graph.js +2118 -314
  172. package/dist/core/graph.js.map +1 -1
  173. package/dist/core/history-diff.d.ts +35 -0
  174. package/dist/core/history-diff.js +114 -0
  175. package/dist/core/history-diff.js.map +1 -0
  176. package/dist/core/schema-registry.d.ts +59 -0
  177. package/dist/core/schema-registry.js +198 -0
  178. package/dist/core/schema-registry.js.map +1 -1
  179. package/dist/core/schemas/connector.d.ts +67 -0
  180. package/dist/core/schemas/connector.js +100 -0
  181. package/dist/core/schemas/connector.js.map +1 -0
  182. package/dist/core/schemas/workspace.d.ts +122 -0
  183. package/dist/core/schemas/workspace.js +211 -0
  184. package/dist/core/schemas/workspace.js.map +1 -0
  185. package/dist/core/secrets/SecretStore.d.ts +77 -0
  186. package/dist/core/secrets/SecretStore.js +13 -0
  187. package/dist/core/secrets/SecretStore.js.map +1 -0
  188. package/dist/core/secrets/SettingsResolver.d.ts +54 -0
  189. package/dist/core/secrets/SettingsResolver.js +80 -0
  190. package/dist/core/secrets/SettingsResolver.js.map +1 -0
  191. package/dist/core/secrets/SettingsStore.d.ts +30 -0
  192. package/dist/core/secrets/SettingsStore.js +9 -0
  193. package/dist/core/secrets/SettingsStore.js.map +1 -0
  194. package/dist/core/secrets/SqliteEncryptedStore.d.ts +90 -0
  195. package/dist/core/secrets/SqliteEncryptedStore.js +598 -0
  196. package/dist/core/secrets/SqliteEncryptedStore.js.map +1 -0
  197. package/dist/core/secrets/audit.d.ts +36 -0
  198. package/dist/core/secrets/audit.js +60 -0
  199. package/dist/core/secrets/audit.js.map +1 -0
  200. package/dist/core/secrets/auth-db-migration.d.ts +129 -0
  201. package/dist/core/secrets/auth-db-migration.js +653 -0
  202. package/dist/core/secrets/auth-db-migration.js.map +1 -0
  203. package/dist/core/secrets/bundle.d.ts +141 -0
  204. package/dist/core/secrets/bundle.js +435 -0
  205. package/dist/core/secrets/bundle.js.map +1 -0
  206. package/dist/core/secrets/dual-write.d.ts +81 -0
  207. package/dist/core/secrets/dual-write.js +247 -0
  208. package/dist/core/secrets/dual-write.js.map +1 -0
  209. package/dist/core/secrets/encryption.d.ts +44 -0
  210. package/dist/core/secrets/encryption.js +97 -0
  211. package/dist/core/secrets/encryption.js.map +1 -0
  212. package/dist/core/secrets/index.d.ts +49 -0
  213. package/dist/core/secrets/index.js +74 -0
  214. package/dist/core/secrets/index.js.map +1 -0
  215. package/dist/core/secrets/master-key.d.ts +38 -0
  216. package/dist/core/secrets/master-key.js +122 -0
  217. package/dist/core/secrets/master-key.js.map +1 -0
  218. package/dist/core/secrets/probes/anthropic.d.ts +98 -0
  219. package/dist/core/secrets/probes/anthropic.js +300 -0
  220. package/dist/core/secrets/probes/anthropic.js.map +1 -0
  221. package/dist/core/secrets/probes/brave.d.ts +9 -0
  222. package/dist/core/secrets/probes/brave.js +15 -0
  223. package/dist/core/secrets/probes/brave.js.map +1 -0
  224. package/dist/core/secrets/probes/r2.d.ts +15 -0
  225. package/dist/core/secrets/probes/r2.js +14 -0
  226. package/dist/core/secrets/probes/r2.js.map +1 -0
  227. package/dist/core/secrets/probes/voyage.d.ts +13 -0
  228. package/dist/core/secrets/probes/voyage.js +52 -0
  229. package/dist/core/secrets/probes/voyage.js.map +1 -0
  230. package/dist/core/secrets/r2-structural-migration.d.ts +39 -0
  231. package/dist/core/secrets/r2-structural-migration.js +109 -0
  232. package/dist/core/secrets/r2-structural-migration.js.map +1 -0
  233. package/dist/core/secrets/read-flip.d.ts +59 -0
  234. package/dist/core/secrets/read-flip.js +87 -0
  235. package/dist/core/secrets/read-flip.js.map +1 -0
  236. package/dist/core/secrets/registry.d.ts +188 -0
  237. package/dist/core/secrets/registry.js +598 -0
  238. package/dist/core/secrets/registry.js.map +1 -0
  239. package/dist/core/types.d.ts +77 -455
  240. package/dist/core/types.js +17 -3
  241. package/dist/core/types.js.map +1 -1
  242. package/dist/core/user-config.d.ts +75 -7
  243. package/dist/core/user-config.js +155 -7
  244. package/dist/core/user-config.js.map +1 -1
  245. package/dist/core/validation.d.ts +717 -1791
  246. package/dist/core/validation.js +357 -228
  247. package/dist/core/validation.js.map +1 -1
  248. package/dist/core/workspace-manager.d.ts +79 -12
  249. package/dist/core/workspace-manager.js +213 -73
  250. package/dist/core/workspace-manager.js.map +1 -1
  251. package/dist/core/workspace.d.ts +19 -5
  252. package/dist/core/workspace.js +69 -35
  253. package/dist/core/workspace.js.map +1 -1
  254. package/dist/mcp/comment-virtual-entity.d.ts +36 -0
  255. package/dist/mcp/comment-virtual-entity.js +71 -0
  256. package/dist/mcp/comment-virtual-entity.js.map +1 -0
  257. package/dist/mcp/connector-manager.d.ts +94 -13
  258. package/dist/mcp/connector-manager.js +283 -62
  259. package/dist/mcp/connector-manager.js.map +1 -1
  260. package/dist/mcp/oauth-provider.d.ts +27 -33
  261. package/dist/mcp/oauth-provider.js +65 -134
  262. package/dist/mcp/oauth-provider.js.map +1 -1
  263. package/dist/mcp/oauth-registry.d.ts +62 -0
  264. package/dist/mcp/oauth-registry.js +85 -0
  265. package/dist/mcp/oauth-registry.js.map +1 -0
  266. package/dist/mcp/server.d.ts +11 -3
  267. package/dist/mcp/server.js +30 -5
  268. package/dist/mcp/server.js.map +1 -1
  269. package/dist/mcp/state-signer.d.ts +41 -0
  270. package/dist/mcp/state-signer.js +120 -0
  271. package/dist/mcp/state-signer.js.map +1 -0
  272. package/dist/mcp/tools.d.ts +35 -2
  273. package/dist/mcp/tools.js +1051 -117
  274. package/dist/mcp/tools.js.map +1 -1
  275. package/dist/server/__tests__/helpers/graph-api.d.ts +18 -0
  276. package/dist/server/__tests__/helpers/graph-api.js +16 -0
  277. package/dist/server/__tests__/helpers/graph-api.js.map +1 -0
  278. package/dist/server/body-write-coordinator.d.ts +151 -0
  279. package/dist/server/body-write-coordinator.js +161 -0
  280. package/dist/server/body-write-coordinator.js.map +1 -0
  281. package/dist/server/cloud-billing-flow.d.ts +32 -0
  282. package/dist/server/cloud-billing-flow.js +75 -0
  283. package/dist/server/cloud-billing-flow.js.map +1 -0
  284. package/dist/server/commit-audit.d.ts +26 -0
  285. package/dist/server/commit-audit.js +30 -0
  286. package/dist/server/commit-audit.js.map +1 -0
  287. package/dist/server/index.d.ts +14 -3
  288. package/dist/server/index.js +451 -193
  289. package/dist/server/index.js.map +1 -1
  290. package/dist/server/middleware/sanitize.d.ts +46 -0
  291. package/dist/server/middleware/sanitize.js +171 -0
  292. package/dist/server/middleware/sanitize.js.map +1 -0
  293. package/dist/server/routes/asset-api.d.ts +10 -0
  294. package/dist/server/routes/asset-api.js +294 -0
  295. package/dist/server/routes/asset-api.js.map +1 -0
  296. package/dist/server/routes/audit-api.d.ts +24 -0
  297. package/dist/server/routes/audit-api.js +117 -0
  298. package/dist/server/routes/audit-api.js.map +1 -0
  299. package/dist/server/routes/auth-api.d.ts +3 -2
  300. package/dist/server/routes/auth-api.js +519 -38
  301. package/dist/server/routes/auth-api.js.map +1 -1
  302. package/dist/server/routes/capture-api.d.ts +18 -0
  303. package/dist/server/routes/capture-api.js +257 -0
  304. package/dist/server/routes/capture-api.js.map +1 -0
  305. package/dist/server/routes/chat.d.ts +4 -1
  306. package/dist/server/routes/chat.js +298 -88
  307. package/dist/server/routes/chat.js.map +1 -1
  308. package/dist/server/routes/comments-api.d.ts +15 -0
  309. package/dist/server/routes/comments-api.js +444 -0
  310. package/dist/server/routes/comments-api.js.map +1 -0
  311. package/dist/server/routes/config-api.d.ts +21 -0
  312. package/dist/server/routes/config-api.js +256 -0
  313. package/dist/server/routes/config-api.js.map +1 -0
  314. package/dist/server/routes/connectors-api.d.ts +17 -0
  315. package/dist/server/routes/connectors-api.js +410 -0
  316. package/dist/server/routes/connectors-api.js.map +1 -0
  317. package/dist/server/routes/event-ingest-api.d.ts +15 -0
  318. package/dist/server/routes/event-ingest-api.js +125 -0
  319. package/dist/server/routes/event-ingest-api.js.map +1 -0
  320. package/dist/server/routes/git-http.d.ts +3 -3
  321. package/dist/server/routes/git-http.js +86 -38
  322. package/dist/server/routes/git-http.js.map +1 -1
  323. package/dist/server/routes/graph-api-access.d.ts +35 -0
  324. package/dist/server/routes/graph-api-access.js +105 -0
  325. package/dist/server/routes/graph-api-access.js.map +1 -0
  326. package/dist/server/routes/graph-api.d.ts +3 -2
  327. package/dist/server/routes/graph-api.js +1321 -263
  328. package/dist/server/routes/graph-api.js.map +1 -1
  329. package/dist/server/routes/health.d.ts +18 -0
  330. package/dist/server/routes/health.js +74 -0
  331. package/dist/server/routes/health.js.map +1 -0
  332. package/dist/server/routes/insights-api.d.ts +1 -2
  333. package/dist/server/routes/insights-api.js +149 -41
  334. package/dist/server/routes/insights-api.js.map +1 -1
  335. package/dist/server/routes/mcp.d.ts +7 -3
  336. package/dist/server/routes/mcp.js +22 -6
  337. package/dist/server/routes/mcp.js.map +1 -1
  338. package/dist/server/routes/permissions-api.d.ts +9 -2
  339. package/dist/server/routes/permissions-api.js +87 -30
  340. package/dist/server/routes/permissions-api.js.map +1 -1
  341. package/dist/server/routes/r2-api.d.ts +25 -0
  342. package/dist/server/routes/r2-api.js +276 -0
  343. package/dist/server/routes/r2-api.js.map +1 -0
  344. package/dist/server/routes/secrets-api.d.ts +36 -0
  345. package/dist/server/routes/secrets-api.js +308 -0
  346. package/dist/server/routes/secrets-api.js.map +1 -0
  347. package/dist/server/routes/settings-api.d.ts +29 -0
  348. package/dist/server/routes/settings-api.js +180 -0
  349. package/dist/server/routes/settings-api.js.map +1 -0
  350. package/dist/server/routes/url-api.d.ts +7 -0
  351. package/dist/server/routes/url-api.js +74 -0
  352. package/dist/server/routes/url-api.js.map +1 -0
  353. package/dist/server/routes/views-api.js +81 -7
  354. package/dist/server/routes/views-api.js.map +1 -1
  355. package/dist/server/routes/workspace-api.d.ts +2 -1
  356. package/dist/server/routes/workspace-api.js +124 -35
  357. package/dist/server/routes/workspace-api.js.map +1 -1
  358. package/dist/server/routes/ws.d.ts +2 -1
  359. package/dist/server/routes/ws.js +64 -16
  360. package/dist/server/routes/ws.js.map +1 -1
  361. package/dist/server/session-manager.d.ts +48 -5
  362. package/dist/server/session-manager.js +182 -15
  363. package/dist/server/session-manager.js.map +1 -1
  364. package/dist/server/ws-hub.d.ts +138 -14
  365. package/dist/server/ws-hub.js +0 -0
  366. package/dist/server/ws-hub.js.map +1 -1
  367. package/dist/server/yjs-manager.d.ts +285 -7
  368. package/dist/server/yjs-manager.js +907 -36
  369. package/dist/server/yjs-manager.js.map +1 -1
  370. package/dist/server/yjs-persistence.d.ts +165 -0
  371. package/dist/server/yjs-persistence.js +557 -0
  372. package/dist/server/yjs-persistence.js.map +1 -0
  373. package/dist/server/yjs-text-diff.d.ts +32 -0
  374. package/dist/server/yjs-text-diff.js +61 -0
  375. package/dist/server/yjs-text-diff.js.map +1 -0
  376. package/dist/services/access-control.d.ts +73 -0
  377. package/dist/services/access-control.js +146 -0
  378. package/dist/services/access-control.js.map +1 -0
  379. package/dist/services/asset-listing.d.ts +39 -0
  380. package/dist/services/asset-listing.js +125 -0
  381. package/dist/services/asset-listing.js.map +1 -0
  382. package/dist/services/asset-upload-service.d.ts +53 -0
  383. package/dist/services/asset-upload-service.js +201 -0
  384. package/dist/services/asset-upload-service.js.map +1 -0
  385. package/dist/services/assets/asset-index-service.d.ts +82 -0
  386. package/dist/services/assets/asset-index-service.js +167 -0
  387. package/dist/services/assets/asset-index-service.js.map +1 -0
  388. package/dist/services/assets/base.d.ts +44 -0
  389. package/dist/services/assets/base.js +55 -0
  390. package/dist/services/assets/base.js.map +1 -1
  391. package/dist/services/assets/index.d.ts +69 -1
  392. package/dist/services/assets/index.js +125 -0
  393. package/dist/services/assets/index.js.map +1 -1
  394. package/dist/services/assets/local.d.ts +12 -1
  395. package/dist/services/assets/local.js +100 -1
  396. package/dist/services/assets/local.js.map +1 -1
  397. package/dist/services/assets/r2-sync.d.ts +88 -0
  398. package/dist/services/assets/r2-sync.js +412 -0
  399. package/dist/services/assets/r2-sync.js.map +1 -0
  400. package/dist/services/assets/r2.d.ts +34 -1
  401. package/dist/services/assets/r2.js +93 -1
  402. package/dist/services/assets/r2.js.map +1 -1
  403. package/dist/services/auth-service.d.ts +314 -36
  404. package/dist/services/auth-service.js +1126 -139
  405. package/dist/services/auth-service.js.map +1 -1
  406. package/dist/services/bookmark-import-service.d.ts +49 -0
  407. package/dist/services/bookmark-import-service.js +250 -0
  408. package/dist/services/bookmark-import-service.js.map +1 -0
  409. package/dist/services/cloud-inference-billing.d.ts +64 -0
  410. package/dist/services/cloud-inference-billing.js +313 -0
  411. package/dist/services/cloud-inference-billing.js.map +1 -0
  412. package/dist/services/comment-service.d.ts +97 -0
  413. package/dist/services/comment-service.js +341 -0
  414. package/dist/services/comment-service.js.map +1 -0
  415. package/dist/services/csv-service.d.ts +22 -17
  416. package/dist/services/csv-service.js +55 -92
  417. package/dist/services/csv-service.js.map +1 -1
  418. package/dist/services/entity-mutations.d.ts +161 -0
  419. package/dist/services/entity-mutations.js +296 -0
  420. package/dist/services/entity-mutations.js.map +1 -0
  421. package/dist/services/event-processor.d.ts +104 -0
  422. package/dist/services/event-processor.js +441 -0
  423. package/dist/services/event-processor.js.map +1 -0
  424. package/dist/services/folder-creation.d.ts +33 -0
  425. package/dist/services/folder-creation.js +103 -0
  426. package/dist/services/folder-creation.js.map +1 -0
  427. package/dist/services/git.d.ts +54 -0
  428. package/dist/services/git.js +188 -54
  429. package/dist/services/git.js.map +1 -1
  430. package/dist/services/graph-maintenance.d.ts +42 -0
  431. package/dist/services/graph-maintenance.js +143 -0
  432. package/dist/services/graph-maintenance.js.map +1 -0
  433. package/dist/services/import-service.d.ts +45 -2
  434. package/dist/services/import-service.js +304 -100
  435. package/dist/services/import-service.js.map +1 -1
  436. package/dist/services/lint-service.js +9 -16
  437. package/dist/services/lint-service.js.map +1 -1
  438. package/dist/services/markdown.d.ts +12 -1
  439. package/dist/services/markdown.js +71 -6
  440. package/dist/services/markdown.js.map +1 -1
  441. package/dist/services/memory-service.d.ts +22 -14
  442. package/dist/services/memory-service.js +53 -35
  443. package/dist/services/memory-service.js.map +1 -1
  444. package/dist/services/mention-detector.d.ts +23 -0
  445. package/dist/services/mention-detector.js +47 -0
  446. package/dist/services/mention-detector.js.map +1 -0
  447. package/dist/services/notification-broadcast.d.ts +32 -0
  448. package/dist/services/notification-broadcast.js +38 -0
  449. package/dist/services/notification-broadcast.js.map +1 -0
  450. package/dist/services/notification-service.d.ts +41 -0
  451. package/dist/services/notification-service.js +100 -0
  452. package/dist/services/notification-service.js.map +1 -0
  453. package/dist/services/personal-folder.d.ts +40 -0
  454. package/dist/services/personal-folder.js +101 -0
  455. package/dist/services/personal-folder.js.map +1 -0
  456. package/dist/services/user-person-bridge.d.ts +118 -0
  457. package/dist/services/user-person-bridge.js +306 -0
  458. package/dist/services/user-person-bridge.js.map +1 -0
  459. package/dist/services/vector-service.d.ts +146 -6
  460. package/dist/services/vector-service.js +276 -13
  461. package/dist/services/vector-service.js.map +1 -1
  462. package/dist/services/workspace-access.d.ts +106 -0
  463. package/dist/services/workspace-access.js +149 -0
  464. package/dist/services/workspace-access.js.map +1 -0
  465. package/dist/utils/git.d.ts +17 -2
  466. package/dist/utils/git.js +23 -7
  467. package/dist/utils/git.js.map +1 -1
  468. package/dist/utils/log.d.ts +42 -0
  469. package/dist/utils/log.js +137 -0
  470. package/dist/utils/log.js.map +1 -0
  471. package/dist/utils/preflight.js +2 -2
  472. package/dist/utils/preflight.js.map +1 -1
  473. package/dist/utils/version-checker.d.ts +12 -19
  474. package/dist/utils/version-checker.js +14 -104
  475. package/dist/utils/version-checker.js.map +1 -1
  476. package/dist/web/_app/immutable/assets/0.DDqq11xY.css +2 -0
  477. package/dist/web/_app/immutable/assets/12.DlIf1mKh.css +1 -0
  478. package/dist/web/_app/immutable/assets/13.7d-Q37wc.css +1 -0
  479. package/dist/web/_app/immutable/assets/14.CmLrbzZp.css +1 -0
  480. package/dist/web/_app/immutable/assets/2.CGK2ky-K.css +1 -0
  481. package/dist/web/_app/immutable/assets/3.CV0abekd.css +1 -0
  482. package/dist/web/_app/immutable/assets/4.fGsEpo95.css +1 -0
  483. package/dist/web/_app/immutable/assets/AgentOverlay.DqzjAOm4.css +1 -0
  484. package/dist/web/_app/immutable/assets/AssetManagerModal.BKJfPAPk.css +1 -0
  485. package/dist/web/_app/immutable/assets/CalendarView.bNewSxkH.css +1 -0
  486. package/dist/web/_app/immutable/assets/FolderMembersPanel.DX1oBeF_.css +1 -0
  487. package/dist/web/_app/immutable/assets/FolderMutationDialogs.BMRF6Z3z.css +1 -0
  488. package/dist/web/_app/immutable/assets/FolderPicker.B5KdvRYl.css +1 -0
  489. package/dist/web/_app/immutable/assets/GalleryView.DgvSjS0I.css +1 -0
  490. package/dist/web/_app/immutable/assets/GraphView.BJtGL9py.css +1 -0
  491. package/dist/web/_app/immutable/assets/KanbanView.D0QbZFd6.css +1 -0
  492. package/dist/web/_app/immutable/assets/Markdown.B4lW7Llh.css +1 -0
  493. package/dist/web/_app/immutable/assets/SettingsDialog.DYWYMFSO.css +1 -0
  494. package/dist/web/_app/immutable/assets/Spinner.UBfl0pab.css +1 -0
  495. package/dist/web/_app/immutable/assets/StopFilledAlt.clodJdp5.css +1 -0
  496. package/dist/web/_app/immutable/assets/TimelineView.DA-H6dvv.css +1 -0
  497. package/dist/web/_app/immutable/assets/WorkspaceView.BS1ildu7.css +1 -0
  498. package/dist/web/_app/immutable/assets/button.BlLm4Dg1.css +1 -0
  499. package/dist/web/_app/immutable/assets/formatting.B912lpdG.css +1 -0
  500. package/dist/web/_app/immutable/assets/ibm-plex-mono-latin-400-normal.CvHOgSBP.woff +0 -0
  501. package/dist/web/_app/immutable/assets/ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2 +0 -0
  502. package/dist/web/_app/immutable/assets/ibm-plex-mono-latin-500-normal.CB9ihrfo.woff +0 -0
  503. package/dist/web/_app/immutable/assets/ibm-plex-mono-latin-500-normal.DSY6xOcd.woff2 +0 -0
  504. package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-400-italic.CZTNEAuW.woff2 +0 -0
  505. package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-400-italic.CsGl1sm0.woff +0 -0
  506. package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-400-normal.CDDApCn2.woff2 +0 -0
  507. package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-400-normal.CYLoc0-x.woff +0 -0
  508. package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-500-italic.BNK2_mGO.woff2 +0 -0
  509. package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-500-italic.DpEwFAQM.woff +0 -0
  510. package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-500-normal.6ng42L7E.woff2 +0 -0
  511. package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-500-normal.BgVn5rGT.woff +0 -0
  512. package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-600-normal.Cu4Hd6ag.woff +0 -0
  513. package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-600-normal.CuJfVYMP.woff2 +0 -0
  514. package/dist/web/_app/immutable/assets/inline-list.cqga56xT.css +1 -0
  515. package/dist/web/_app/immutable/assets/list-columns.DCMVmy_Q.css +1 -0
  516. package/dist/web/_app/immutable/assets/realtime.DDCWxn3B.css +1 -0
  517. package/dist/web/_app/immutable/assets/sheet.DJPuqnTg.css +1 -0
  518. package/dist/web/_app/immutable/assets/speech-dictation.C5CYFhS1.css +1 -0
  519. package/dist/web/_app/immutable/chunks/0iDDDyaZ.js +1 -0
  520. package/dist/web/_app/immutable/chunks/2LgrBrpS2.js +2 -0
  521. package/dist/web/_app/immutable/chunks/3EfPAYzi2.js +1 -0
  522. package/dist/web/_app/immutable/chunks/7Bu427my2.js +184 -0
  523. package/dist/web/_app/immutable/chunks/96h3ktuk.js +1 -0
  524. package/dist/web/_app/immutable/chunks/A6FJA1AF.js +1 -0
  525. package/dist/web/_app/immutable/chunks/B-FAwCqe2.js +1 -0
  526. package/dist/web/_app/immutable/chunks/B-V5eMSw2.js +1 -0
  527. package/dist/web/_app/immutable/chunks/B-i9_YVM.js +1 -0
  528. package/dist/web/_app/immutable/chunks/B15-kvCe2.js +1 -0
  529. package/dist/web/_app/immutable/chunks/B1KZ7zY32.js +2 -0
  530. package/dist/web/_app/immutable/chunks/B4gpzeQ2.js +1 -0
  531. package/dist/web/_app/immutable/chunks/B6Lt-qaJ2.js +1 -0
  532. package/dist/web/_app/immutable/chunks/B7tbGyiU2.js +1 -0
  533. package/dist/web/_app/immutable/chunks/BBxt8lpa.js +1 -0
  534. package/dist/web/_app/immutable/chunks/BCaRi2AF.js +1 -0
  535. package/dist/web/_app/immutable/chunks/BJ6Z7eAM.js +2 -0
  536. package/dist/web/_app/immutable/chunks/BM_vIwVC.js +83 -0
  537. package/dist/web/_app/immutable/chunks/BQULA6er.js +4 -0
  538. package/dist/web/_app/immutable/chunks/BQW-EDgP2.js +224 -0
  539. package/dist/web/_app/immutable/chunks/BR6jMpLB.js +1 -0
  540. package/dist/web/_app/immutable/chunks/BVnuLlVg.js +1 -0
  541. package/dist/web/_app/immutable/chunks/BddNmQ8j.js +1 -0
  542. package/dist/web/_app/immutable/chunks/BeuunHPO.js +1 -0
  543. package/dist/web/_app/immutable/chunks/BhTmSo4n2.js +1 -0
  544. package/dist/web/_app/immutable/chunks/BikW7mty2.js +1 -0
  545. package/dist/web/_app/immutable/chunks/BkyFvJvz.js +1 -0
  546. package/dist/web/_app/immutable/chunks/BlyFGPFV.js +22 -0
  547. package/dist/web/_app/immutable/chunks/Bo5dghSu.js +3 -0
  548. package/dist/web/_app/immutable/chunks/BpPyho8Y.js +3 -0
  549. package/dist/web/_app/immutable/chunks/BsuvyNDN2.js +2 -0
  550. package/dist/web/_app/immutable/chunks/BuKi0vpu2.js +7 -0
  551. package/dist/web/_app/immutable/chunks/BuuYnIjE.js +1 -0
  552. package/dist/web/_app/immutable/chunks/By4lVKNC.js +2 -0
  553. package/dist/web/_app/immutable/chunks/ByQGCIwO.js +5 -0
  554. package/dist/web/_app/immutable/chunks/ByidpUhu.js +1 -0
  555. package/dist/web/_app/immutable/chunks/C35TIzaB.js +1 -0
  556. package/dist/web/_app/immutable/chunks/C5dM5op-.js +1 -0
  557. package/dist/web/_app/immutable/chunks/C6Nx0jpM.js +1 -0
  558. package/dist/web/_app/immutable/chunks/C6pVyOEl2.js +1 -0
  559. package/dist/web/_app/immutable/chunks/C80GKPZ9.js +1 -0
  560. package/dist/web/_app/immutable/chunks/C94TJqPI.js +1 -0
  561. package/dist/web/_app/immutable/chunks/C9PETsiT.js +1 -0
  562. package/dist/web/_app/immutable/chunks/CAuAQ81a2.js +1 -0
  563. package/dist/web/_app/immutable/chunks/CBnzSITi2.js +1 -0
  564. package/dist/web/_app/immutable/chunks/CC9p2p6w.js +1 -0
  565. package/dist/web/_app/immutable/chunks/CCLR-AJL2.js +185 -0
  566. package/dist/web/_app/immutable/chunks/CD0X7XPW.js +6 -0
  567. package/dist/web/_app/immutable/chunks/CDTjuBSm.js +1 -0
  568. package/dist/web/_app/immutable/chunks/CH-KYFIm.js +64 -0
  569. package/dist/web/_app/immutable/chunks/CHj8fObQ2.js +9 -0
  570. package/dist/web/_app/immutable/chunks/CK-UnH-n2.js +1 -0
  571. package/dist/web/_app/immutable/chunks/CKH5BEAh.js +1 -0
  572. package/dist/web/_app/immutable/chunks/CPSupDJp2.js +2 -0
  573. package/dist/web/_app/immutable/chunks/CSUrYOis.js +1 -0
  574. package/dist/web/_app/immutable/chunks/CYTTTma0.js +3 -0
  575. package/dist/web/_app/immutable/chunks/Cbaut_us2.js +1 -0
  576. package/dist/web/_app/immutable/chunks/CiIpSx5n2.js +1 -0
  577. package/dist/web/_app/immutable/chunks/CkLfUXwy.js +1 -0
  578. package/dist/web/_app/immutable/chunks/CokE4L8B2.js +1 -0
  579. package/dist/web/_app/immutable/chunks/CpLdnbh3.js +1 -0
  580. package/dist/web/_app/immutable/chunks/CvDrXJk9.js +1 -0
  581. package/dist/web/_app/immutable/chunks/D00MFB9_2.js +1 -0
  582. package/dist/web/_app/immutable/chunks/D41CbXmM.js +1 -0
  583. package/dist/web/_app/immutable/chunks/D5Hj-MPO2.js +1 -0
  584. package/dist/web/_app/immutable/chunks/D6nLEmZy2.js +1 -0
  585. package/dist/web/_app/immutable/chunks/D71ZlQBM2.js +2 -0
  586. package/dist/web/_app/immutable/chunks/D9ql9vXU.js +1 -0
  587. package/dist/web/_app/immutable/chunks/DAXW5iLp.js +1 -0
  588. package/dist/web/_app/immutable/chunks/DBzQ8LyQ2.js +2 -0
  589. package/dist/web/_app/immutable/chunks/DIb5rAPU2.js +1 -0
  590. package/dist/web/_app/immutable/chunks/DOmH4G9o.js +14 -0
  591. package/dist/web/_app/immutable/chunks/DQMWa2t72.js +1 -0
  592. package/dist/web/_app/immutable/chunks/DRsswX8S.js +1 -0
  593. package/dist/web/_app/immutable/chunks/DTCHhxD5.js +1 -0
  594. package/dist/web/_app/immutable/chunks/DUwgGBxa.js +1 -0
  595. package/dist/web/_app/immutable/chunks/DVcy5Pp82.js +1 -0
  596. package/dist/web/_app/immutable/chunks/DWygwzcO.js +1 -0
  597. package/dist/web/_app/immutable/chunks/DYXDRmoo.js +1 -0
  598. package/dist/web/_app/immutable/chunks/DZ-YyRVM.js +1 -0
  599. package/dist/web/_app/immutable/chunks/D_HVOuHV.js +1 -0
  600. package/dist/web/_app/immutable/chunks/DaoOQFPb.js +1 -0
  601. package/dist/web/_app/immutable/chunks/DdLkNvPf.js +23 -0
  602. package/dist/web/_app/immutable/chunks/DiMQob8p.js +1 -0
  603. package/dist/web/_app/immutable/chunks/DiQJ9DLy.js +1 -0
  604. package/dist/web/_app/immutable/chunks/DlORZqfE.js +1 -0
  605. package/dist/web/_app/immutable/chunks/DmeYl7eL.js +2 -0
  606. package/dist/web/_app/immutable/chunks/Dng3OcRd2.js +1 -0
  607. package/dist/web/_app/immutable/chunks/DoKMFfJd.js +1 -0
  608. package/dist/web/_app/immutable/chunks/DpzG2mVI2.js +1 -0
  609. package/dist/web/_app/immutable/chunks/DvJSCDuZ2.js +1 -0
  610. package/dist/web/_app/immutable/chunks/DvPuaTCl2.js +5 -0
  611. package/dist/web/_app/immutable/chunks/ItgU4ei5.js +1 -0
  612. package/dist/web/_app/immutable/chunks/JJDMrjj62.js +1 -0
  613. package/dist/web/_app/immutable/chunks/OTTMDMTW.js +1 -0
  614. package/dist/web/_app/immutable/chunks/RmiWpCin2.js +1 -0
  615. package/dist/web/_app/immutable/chunks/ZTiqmKJy2.js +1 -0
  616. package/dist/web/_app/immutable/chunks/ahC5WoXX2.js +1 -0
  617. package/dist/web/_app/immutable/chunks/e3SY5t2O2.js +2692 -0
  618. package/dist/web/_app/immutable/chunks/g09ZrevW.js +1 -0
  619. package/dist/web/_app/immutable/chunks/go8N1nWD2.js +3 -0
  620. package/dist/web/_app/immutable/chunks/nTAmRNKw2.js +1 -0
  621. package/dist/web/_app/immutable/chunks/oBQOivfH2.js +1 -0
  622. package/dist/web/_app/immutable/chunks/oUTRxd0f.js +1 -0
  623. package/dist/web/_app/immutable/chunks/s_7BJJYy.js +2 -0
  624. package/dist/web/_app/immutable/chunks/uuFM-ygL.js +1 -0
  625. package/dist/web/_app/immutable/chunks/v7me-ydg.js +2 -0
  626. package/dist/web/_app/immutable/chunks/xihTtKlq.js +1 -0
  627. package/dist/web/_app/immutable/chunks/zl16E4yc2.js +1 -0
  628. package/dist/web/_app/immutable/entry/app.CbuUtkoM.js +2 -0
  629. package/dist/web/_app/immutable/entry/start.DeZyKwOT.js +1 -0
  630. package/dist/web/_app/immutable/nodes/0.C4PMtdx9.js +2 -0
  631. package/dist/web/_app/immutable/nodes/1.BwVfPLMn.js +1 -0
  632. package/dist/web/_app/immutable/nodes/10.DPr_SYan.js +1 -0
  633. package/dist/web/_app/immutable/nodes/11.CJAmEchE.js +1 -0
  634. package/dist/web/_app/immutable/nodes/12.ChMWXPMk.js +1 -0
  635. package/dist/web/_app/immutable/nodes/13.8vOKq8ue.js +1 -0
  636. package/dist/web/_app/immutable/nodes/14.BOSNmj9h.js +1 -0
  637. package/dist/web/_app/immutable/nodes/2.7N4BLwhX.js +109 -0
  638. package/dist/web/_app/immutable/nodes/3.Cd-tx8Ej.js +2 -0
  639. package/dist/web/_app/immutable/nodes/4.DtuT-syy.js +14 -0
  640. package/dist/web/_app/immutable/nodes/5.YwNHOrkt.js +1 -0
  641. package/dist/web/_app/immutable/nodes/6.BSPlYQuq.js +1 -0
  642. package/dist/web/_app/immutable/nodes/7.DPXzwW0H.js +1 -0
  643. package/dist/web/_app/immutable/nodes/8.Dhpk7w3X.js +1 -0
  644. package/dist/web/_app/immutable/nodes/9.Dd4iAQN5.js +1 -0
  645. package/dist/web/_app/version.json +1 -1
  646. package/dist/web/favicon-16.png +0 -0
  647. package/dist/web/favicon-180.png +0 -0
  648. package/dist/web/favicon-32.png +0 -0
  649. package/dist/web/favicon-48.png +0 -0
  650. package/dist/web/favicon-512.png +0 -0
  651. package/dist/web/favicon.ico +0 -0
  652. package/dist/web/favicon.svg +8 -0
  653. package/dist/web/index.html +54 -19
  654. package/dist/web/studiograph-logomark.svg +29 -0
  655. package/package.json +34 -14
  656. package/dist/agent/skills/enrich-entities.md +0 -136
  657. package/dist/agent/skills/obsidian-source-setup.md +0 -246
  658. package/dist/agent/skills/skill-loader.d.ts +0 -48
  659. package/dist/agent/skills/skill-loader.js +0 -166
  660. package/dist/agent/skills/skill-loader.js.map +0 -1
  661. package/dist/agent/skills/sync-configuration.md +0 -119
  662. package/dist/agent/skills/sync-setup.md +0 -82
  663. package/dist/agent/tools/sync-tools.d.ts +0 -35
  664. package/dist/agent/tools/sync-tools.js +0 -992
  665. package/dist/agent/tools/sync-tools.js.map +0 -1
  666. package/dist/auth/github.d.ts +0 -56
  667. package/dist/auth/github.js +0 -169
  668. package/dist/auth/github.js.map +0 -1
  669. package/dist/cli/commands/access.d.ts +0 -11
  670. package/dist/cli/commands/access.js +0 -156
  671. package/dist/cli/commands/access.js.map +0 -1
  672. package/dist/cli/commands/app.d.ts +0 -7
  673. package/dist/cli/commands/app.js +0 -268
  674. package/dist/cli/commands/app.js.map +0 -1
  675. package/dist/cli/commands/auth.d.ts +0 -10
  676. package/dist/cli/commands/auth.js +0 -79
  677. package/dist/cli/commands/auth.js.map +0 -1
  678. package/dist/cli/commands/clear.d.ts +0 -5
  679. package/dist/cli/commands/clear.js +0 -36
  680. package/dist/cli/commands/clear.js.map +0 -1
  681. package/dist/cli/commands/collection.d.ts +0 -10
  682. package/dist/cli/commands/collection.js +0 -187
  683. package/dist/cli/commands/collection.js.map +0 -1
  684. package/dist/cli/commands/enrich.d.ts +0 -11
  685. package/dist/cli/commands/enrich.js +0 -135
  686. package/dist/cli/commands/enrich.js.map +0 -1
  687. package/dist/cli/commands/graphrag.d.ts +0 -12
  688. package/dist/cli/commands/graphrag.js +0 -122
  689. package/dist/cli/commands/graphrag.js.map +0 -1
  690. package/dist/cli/commands/join.d.ts +0 -9
  691. package/dist/cli/commands/join.js +0 -255
  692. package/dist/cli/commands/join.js.map +0 -1
  693. package/dist/cli/commands/members.d.ts +0 -11
  694. package/dist/cli/commands/members.js +0 -230
  695. package/dist/cli/commands/members.js.map +0 -1
  696. package/dist/cli/commands/org.d.ts +0 -10
  697. package/dist/cli/commands/org.js +0 -132
  698. package/dist/cli/commands/org.js.map +0 -1
  699. package/dist/cli/commands/provision.d.ts +0 -8
  700. package/dist/cli/commands/provision.js +0 -116
  701. package/dist/cli/commands/provision.js.map +0 -1
  702. package/dist/cli/commands/resolve.d.ts +0 -8
  703. package/dist/cli/commands/resolve.js +0 -85
  704. package/dist/cli/commands/resolve.js.map +0 -1
  705. package/dist/cli/commands/review.d.ts +0 -19
  706. package/dist/cli/commands/review.js +0 -128
  707. package/dist/cli/commands/review.js.map +0 -1
  708. package/dist/cli/commands/source.d.ts +0 -16
  709. package/dist/cli/commands/source.js +0 -159
  710. package/dist/cli/commands/source.js.map +0 -1
  711. package/dist/cli/commands/start.d.ts +0 -7
  712. package/dist/cli/commands/start.js +0 -589
  713. package/dist/cli/commands/start.js.map +0 -1
  714. package/dist/cli/commands/sync-collection.d.ts +0 -14
  715. package/dist/cli/commands/sync-collection.js +0 -355
  716. package/dist/cli/commands/sync-collection.js.map +0 -1
  717. package/dist/cli/commands/sync-entities.d.ts +0 -13
  718. package/dist/cli/commands/sync-entities.js +0 -242
  719. package/dist/cli/commands/sync-entities.js.map +0 -1
  720. package/dist/cli/commands/team.d.ts +0 -12
  721. package/dist/cli/commands/team.js +0 -185
  722. package/dist/cli/commands/team.js.map +0 -1
  723. package/dist/cli/commands/update.d.ts +0 -8
  724. package/dist/cli/commands/update.js +0 -155
  725. package/dist/cli/commands/update.js.map +0 -1
  726. package/dist/cli/commands/user.d.ts +0 -7
  727. package/dist/cli/commands/user.js +0 -153
  728. package/dist/cli/commands/user.js.map +0 -1
  729. package/dist/cli/scaffolding.d.ts +0 -12
  730. package/dist/cli/scaffolding.js +0 -397
  731. package/dist/cli/scaffolding.js.map +0 -1
  732. package/dist/cli/sync-review-interactive.d.ts +0 -31
  733. package/dist/cli/sync-review-interactive.js +0 -393
  734. package/dist/cli/sync-review-interactive.js.map +0 -1
  735. package/dist/core/migration-runner.d.ts +0 -42
  736. package/dist/core/migration-runner.js +0 -232
  737. package/dist/core/migration-runner.js.map +0 -1
  738. package/dist/core/migration-types.d.ts +0 -101
  739. package/dist/core/migration-types.js +0 -21
  740. package/dist/core/migration-types.js.map +0 -1
  741. package/dist/core/migrations/20260219-formalize-memory-location.d.ts +0 -2
  742. package/dist/core/migrations/20260219-formalize-memory-location.js +0 -35
  743. package/dist/core/migrations/20260219-formalize-memory-location.js.map +0 -1
  744. package/dist/core/migrations/20260220-add-workspace-metadata.d.ts +0 -12
  745. package/dist/core/migrations/20260220-add-workspace-metadata.js +0 -65
  746. package/dist/core/migrations/20260220-add-workspace-metadata.js.map +0 -1
  747. package/dist/core/migrations/20260220-add-workspace-readme.d.ts +0 -11
  748. package/dist/core/migrations/20260220-add-workspace-readme.js +0 -82
  749. package/dist/core/migrations/20260220-add-workspace-readme.js.map +0 -1
  750. package/dist/core/migrations/20260220-migrate-yaml-to-json.d.ts +0 -9
  751. package/dist/core/migrations/20260220-migrate-yaml-to-json.js +0 -64
  752. package/dist/core/migrations/20260220-migrate-yaml-to-json.js.map +0 -1
  753. package/dist/core/migrations/index.d.ts +0 -11
  754. package/dist/core/migrations/index.js +0 -23
  755. package/dist/core/migrations/index.js.map +0 -1
  756. package/dist/integrations/asana.d.ts +0 -26
  757. package/dist/integrations/asana.js +0 -78
  758. package/dist/integrations/asana.js.map +0 -1
  759. package/dist/integrations/figma-local.d.ts +0 -16
  760. package/dist/integrations/figma-local.js +0 -10
  761. package/dist/integrations/figma-local.js.map +0 -1
  762. package/dist/integrations/figma.d.ts +0 -17
  763. package/dist/integrations/figma.js +0 -17
  764. package/dist/integrations/figma.js.map +0 -1
  765. package/dist/integrations/granola.d.ts +0 -24
  766. package/dist/integrations/granola.js +0 -60
  767. package/dist/integrations/granola.js.map +0 -1
  768. package/dist/integrations/linear.d.ts +0 -14
  769. package/dist/integrations/linear.js +0 -80
  770. package/dist/integrations/linear.js.map +0 -1
  771. package/dist/integrations/paper-local.d.ts +0 -14
  772. package/dist/integrations/paper-local.js +0 -10
  773. package/dist/integrations/paper-local.js.map +0 -1
  774. package/dist/integrations/paper.d.ts +0 -2
  775. package/dist/integrations/paper.js +0 -10
  776. package/dist/integrations/paper.js.map +0 -1
  777. package/dist/integrations/pipedrive.d.ts +0 -26
  778. package/dist/integrations/pipedrive.js +0 -97
  779. package/dist/integrations/pipedrive.js.map +0 -1
  780. package/dist/integrations/registry.d.ts +0 -15
  781. package/dist/integrations/registry.js +0 -27
  782. package/dist/integrations/registry.js.map +0 -1
  783. package/dist/integrations/types.d.ts +0 -38
  784. package/dist/integrations/types.js +0 -9
  785. package/dist/integrations/types.js.map +0 -1
  786. package/dist/lib/lib/utils.d.ts +0 -2
  787. package/dist/lib/lib/utils.js +0 -6
  788. package/dist/lib/lib/utils.js.map +0 -1
  789. package/dist/mcp/connectors/asana.d.ts +0 -2
  790. package/dist/mcp/connectors/asana.js +0 -20
  791. package/dist/mcp/connectors/asana.js.map +0 -1
  792. package/dist/mcp/connectors/definitions.d.ts +0 -45
  793. package/dist/mcp/connectors/definitions.js +0 -32
  794. package/dist/mcp/connectors/definitions.js.map +0 -1
  795. package/dist/mcp/connectors/figma.d.ts +0 -5
  796. package/dist/mcp/connectors/figma.js +0 -21
  797. package/dist/mcp/connectors/figma.js.map +0 -1
  798. package/dist/mcp/connectors/gdrive.d.ts +0 -2
  799. package/dist/mcp/connectors/gdrive.js +0 -20
  800. package/dist/mcp/connectors/gdrive.js.map +0 -1
  801. package/dist/mcp/connectors/granola.d.ts +0 -2
  802. package/dist/mcp/connectors/granola.js +0 -12
  803. package/dist/mcp/connectors/granola.js.map +0 -1
  804. package/dist/mcp/connectors/linear.d.ts +0 -2
  805. package/dist/mcp/connectors/linear.js +0 -19
  806. package/dist/mcp/connectors/linear.js.map +0 -1
  807. package/dist/mcp/connectors/obsidian.d.ts +0 -2
  808. package/dist/mcp/connectors/obsidian.js +0 -19
  809. package/dist/mcp/connectors/obsidian.js.map +0 -1
  810. package/dist/mcp/connectors/pipedrive.d.ts +0 -2
  811. package/dist/mcp/connectors/pipedrive.js +0 -20
  812. package/dist/mcp/connectors/pipedrive.js.map +0 -1
  813. package/dist/mcp/connectors/slack.d.ts +0 -2
  814. package/dist/mcp/connectors/slack.js +0 -21
  815. package/dist/mcp/connectors/slack.js.map +0 -1
  816. package/dist/mcp/server-oauth-provider.d.ts +0 -56
  817. package/dist/mcp/server-oauth-provider.js +0 -142
  818. package/dist/mcp/server-oauth-provider.js.map +0 -1
  819. package/dist/server/chrome/chrome.css +0 -691
  820. package/dist/server/chrome/chrome.js +0 -374
  821. package/dist/server/collab-authority.d.ts +0 -70
  822. package/dist/server/collab-authority.js +0 -218
  823. package/dist/server/collab-authority.js.map +0 -1
  824. package/dist/server/collab.d.ts +0 -29
  825. package/dist/server/collab.js +0 -195
  826. package/dist/server/collab.js.map +0 -1
  827. package/dist/server/commit-scheduler.d.ts +0 -39
  828. package/dist/server/commit-scheduler.js +0 -113
  829. package/dist/server/commit-scheduler.js.map +0 -1
  830. package/dist/server/plugin-loader.d.ts +0 -53
  831. package/dist/server/plugin-loader.js +0 -155
  832. package/dist/server/plugin-loader.js.map +0 -1
  833. package/dist/server/routes/collab.d.ts +0 -6
  834. package/dist/server/routes/collab.js +0 -10
  835. package/dist/server/routes/collab.js.map +0 -1
  836. package/dist/server/routes/git-api.d.ts +0 -9
  837. package/dist/server/routes/git-api.js +0 -82
  838. package/dist/server/routes/git-api.js.map +0 -1
  839. package/dist/server/routes/meeting-ingest-api.d.ts +0 -15
  840. package/dist/server/routes/meeting-ingest-api.js +0 -321
  841. package/dist/server/routes/meeting-ingest-api.js.map +0 -1
  842. package/dist/server/routes/sync-api.d.ts +0 -26
  843. package/dist/server/routes/sync-api.js +0 -814
  844. package/dist/server/routes/sync-api.js.map +0 -1
  845. package/dist/server/routes/webhook.d.ts +0 -14
  846. package/dist/server/routes/webhook.js +0 -102
  847. package/dist/server/routes/webhook.js.map +0 -1
  848. package/dist/services/github-provisioner.d.ts +0 -36
  849. package/dist/services/github-provisioner.js +0 -126
  850. package/dist/services/github-provisioner.js.map +0 -1
  851. package/dist/services/github-service.d.ts +0 -99
  852. package/dist/services/github-service.js +0 -310
  853. package/dist/services/github-service.js.map +0 -1
  854. package/dist/services/insights.d.ts +0 -38
  855. package/dist/services/insights.js +0 -246
  856. package/dist/services/insights.js.map +0 -1
  857. package/dist/services/sync/collection-sync.d.ts +0 -60
  858. package/dist/services/sync/collection-sync.js +0 -509
  859. package/dist/services/sync/collection-sync.js.map +0 -1
  860. package/dist/services/sync/commit.d.ts +0 -60
  861. package/dist/services/sync/commit.js +0 -354
  862. package/dist/services/sync/commit.js.map +0 -1
  863. package/dist/services/sync/context-index.d.ts +0 -69
  864. package/dist/services/sync/context-index.js +0 -280
  865. package/dist/services/sync/context-index.js.map +0 -1
  866. package/dist/services/sync/data-fetcher.d.ts +0 -31
  867. package/dist/services/sync/data-fetcher.js +0 -12
  868. package/dist/services/sync/data-fetcher.js.map +0 -1
  869. package/dist/services/sync/derive.d.ts +0 -34
  870. package/dist/services/sync/derive.js +0 -164
  871. package/dist/services/sync/derive.js.map +0 -1
  872. package/dist/services/sync/enrichment-state.d.ts +0 -31
  873. package/dist/services/sync/enrichment-state.js +0 -63
  874. package/dist/services/sync/enrichment-state.js.map +0 -1
  875. package/dist/services/sync/enrichment.d.ts +0 -25
  876. package/dist/services/sync/enrichment.js +0 -121
  877. package/dist/services/sync/enrichment.js.map +0 -1
  878. package/dist/services/sync/entity-refresh.d.ts +0 -30
  879. package/dist/services/sync/entity-refresh.js +0 -275
  880. package/dist/services/sync/entity-refresh.js.map +0 -1
  881. package/dist/services/sync/frontmatter-extractor.d.ts +0 -40
  882. package/dist/services/sync/frontmatter-extractor.js +0 -279
  883. package/dist/services/sync/frontmatter-extractor.js.map +0 -1
  884. package/dist/services/sync/graph-match-state.d.ts +0 -33
  885. package/dist/services/sync/graph-match-state.js +0 -61
  886. package/dist/services/sync/graph-match-state.js.map +0 -1
  887. package/dist/services/sync/graph-match.d.ts +0 -53
  888. package/dist/services/sync/graph-match.js +0 -316
  889. package/dist/services/sync/graph-match.js.map +0 -1
  890. package/dist/services/sync/graphrag-client.d.ts +0 -43
  891. package/dist/services/sync/graphrag-client.js +0 -94
  892. package/dist/services/sync/graphrag-client.js.map +0 -1
  893. package/dist/services/sync/graphrag-config.d.ts +0 -16
  894. package/dist/services/sync/graphrag-config.js +0 -39
  895. package/dist/services/sync/graphrag-config.js.map +0 -1
  896. package/dist/services/sync/graphrag-context.d.ts +0 -14
  897. package/dist/services/sync/graphrag-context.js +0 -109
  898. package/dist/services/sync/graphrag-context.js.map +0 -1
  899. package/dist/services/sync/graphrag-indexer.d.ts +0 -30
  900. package/dist/services/sync/graphrag-indexer.js +0 -358
  901. package/dist/services/sync/graphrag-indexer.js.map +0 -1
  902. package/dist/services/sync/llm.d.ts +0 -32
  903. package/dist/services/sync/llm.js +0 -115
  904. package/dist/services/sync/llm.js.map +0 -1
  905. package/dist/services/sync/mcp-client.d.ts +0 -71
  906. package/dist/services/sync/mcp-client.js +0 -299
  907. package/dist/services/sync/mcp-client.js.map +0 -1
  908. package/dist/services/sync/model-factory.d.ts +0 -13
  909. package/dist/services/sync/model-factory.js +0 -38
  910. package/dist/services/sync/model-factory.js.map +0 -1
  911. package/dist/services/sync/name-quality.d.ts +0 -31
  912. package/dist/services/sync/name-quality.js +0 -60
  913. package/dist/services/sync/name-quality.js.map +0 -1
  914. package/dist/services/sync/output-schemas.d.ts +0 -92
  915. package/dist/services/sync/output-schemas.js +0 -43
  916. package/dist/services/sync/output-schemas.js.map +0 -1
  917. package/dist/services/sync/prompts.d.ts +0 -19
  918. package/dist/services/sync/prompts.js +0 -128
  919. package/dist/services/sync/prompts.js.map +0 -1
  920. package/dist/services/sync/reconciler.d.ts +0 -48
  921. package/dist/services/sync/reconciler.js +0 -294
  922. package/dist/services/sync/reconciler.js.map +0 -1
  923. package/dist/services/sync/rest-client.d.ts +0 -40
  924. package/dist/services/sync/rest-client.js +0 -100
  925. package/dist/services/sync/rest-client.js.map +0 -1
  926. package/dist/services/sync/source-config.d.ts +0 -67
  927. package/dist/services/sync/source-config.js +0 -304
  928. package/dist/services/sync/source-config.js.map +0 -1
  929. package/dist/services/sync/source-definitions/asana.d.ts +0 -14
  930. package/dist/services/sync/source-definitions/asana.js +0 -42
  931. package/dist/services/sync/source-definitions/asana.js.map +0 -1
  932. package/dist/services/sync/source-definitions/definitions.d.ts +0 -8
  933. package/dist/services/sync/source-definitions/definitions.js +0 -8
  934. package/dist/services/sync/source-definitions/definitions.js.map +0 -1
  935. package/dist/services/sync/source-definitions/gdrive.d.ts +0 -16
  936. package/dist/services/sync/source-definitions/gdrive.js +0 -68
  937. package/dist/services/sync/source-definitions/gdrive.js.map +0 -1
  938. package/dist/services/sync/source-definitions/granola.d.ts +0 -2
  939. package/dist/services/sync/source-definitions/granola.js +0 -21
  940. package/dist/services/sync/source-definitions/granola.js.map +0 -1
  941. package/dist/services/sync/source-definitions/linear.d.ts +0 -2
  942. package/dist/services/sync/source-definitions/linear.js +0 -62
  943. package/dist/services/sync/source-definitions/linear.js.map +0 -1
  944. package/dist/services/sync/source-definitions/obsidian.d.ts +0 -2
  945. package/dist/services/sync/source-definitions/obsidian.js +0 -55
  946. package/dist/services/sync/source-definitions/obsidian.js.map +0 -1
  947. package/dist/services/sync/source-definitions/pipedrive.d.ts +0 -2
  948. package/dist/services/sync/source-definitions/pipedrive.js +0 -43
  949. package/dist/services/sync/source-definitions/pipedrive.js.map +0 -1
  950. package/dist/services/sync/staging.d.ts +0 -53
  951. package/dist/services/sync/staging.js +0 -130
  952. package/dist/services/sync/staging.js.map +0 -1
  953. package/dist/services/sync/structured-extractor.d.ts +0 -57
  954. package/dist/services/sync/structured-extractor.js +0 -584
  955. package/dist/services/sync/structured-extractor.js.map +0 -1
  956. package/dist/services/sync/sync-runner.d.ts +0 -32
  957. package/dist/services/sync/sync-runner.js +0 -195
  958. package/dist/services/sync/sync-runner.js.map +0 -1
  959. package/dist/services/sync/sync-state.d.ts +0 -43
  960. package/dist/services/sync/sync-state.js +0 -154
  961. package/dist/services/sync/sync-state.js.map +0 -1
  962. package/dist/services/sync/types.d.ts +0 -381
  963. package/dist/services/sync/types.js +0 -8
  964. package/dist/services/sync/types.js.map +0 -1
  965. package/dist/services/sync/unstructured-extractor.d.ts +0 -27
  966. package/dist/services/sync/unstructured-extractor.js +0 -185
  967. package/dist/services/sync/unstructured-extractor.js.map +0 -1
  968. package/dist/utils/merge-resolver.d.ts +0 -59
  969. package/dist/utils/merge-resolver.js +0 -303
  970. package/dist/utils/merge-resolver.js.map +0 -1
  971. package/dist/utils/workspace-config.d.ts +0 -8
  972. package/dist/utils/workspace-config.js +0 -22
  973. package/dist/utils/workspace-config.js.map +0 -1
  974. package/dist/web/_app/immutable/assets/0.DdizXOKi.css +0 -1
  975. package/dist/web/_app/immutable/assets/10.BUrHkYry.css +0 -1
  976. package/dist/web/_app/immutable/assets/2.n7-yW_Fs.css +0 -1
  977. package/dist/web/_app/immutable/assets/3.BtaZagnv.css +0 -1
  978. package/dist/web/_app/immutable/assets/4.DSiqtN6T.css +0 -1
  979. package/dist/web/_app/immutable/assets/5.DFeGxLYf.css +0 -1
  980. package/dist/web/_app/immutable/assets/6.CquhUpOu.css +0 -1
  981. package/dist/web/_app/immutable/assets/7.CjbDRbuG.css +0 -1
  982. package/dist/web/_app/immutable/assets/8.S1QdUGNM.css +0 -1
  983. package/dist/web/_app/immutable/assets/9.CT4xL4K3.css +0 -1
  984. package/dist/web/_app/immutable/assets/Copy.FS8bdfxr.css +0 -1
  985. package/dist/web/_app/immutable/assets/Toaster.rN8r_Hzv.css +0 -1
  986. package/dist/web/_app/immutable/assets/ViewToolbar.D-QW2oKe.css +0 -1
  987. package/dist/web/_app/immutable/assets/index.D6tMDJWk.css +0 -1
  988. package/dist/web/_app/immutable/chunks/37NdyH6G.js +0 -32
  989. package/dist/web/_app/immutable/chunks/4Hhzb6pv.js +0 -1
  990. package/dist/web/_app/immutable/chunks/72bZS3G9.js +0 -1
  991. package/dist/web/_app/immutable/chunks/7S2LGqoP.js +0 -2
  992. package/dist/web/_app/immutable/chunks/B340SUKR.js +0 -1
  993. package/dist/web/_app/immutable/chunks/BB_5th5W.js +0 -3383
  994. package/dist/web/_app/immutable/chunks/BI8HVuKu.js +0 -1
  995. package/dist/web/_app/immutable/chunks/BO9dsUba.js +0 -1
  996. package/dist/web/_app/immutable/chunks/BS2rFAVq.js +0 -1
  997. package/dist/web/_app/immutable/chunks/BSsDC_p4.js +0 -1
  998. package/dist/web/_app/immutable/chunks/BTX2Jr8_.js +0 -1
  999. package/dist/web/_app/immutable/chunks/Bsacq2UX.js +0 -1
  1000. package/dist/web/_app/immutable/chunks/ByunV8un.js +0 -1
  1001. package/dist/web/_app/immutable/chunks/C7VoTosa.js +0 -2
  1002. package/dist/web/_app/immutable/chunks/CDV5Q7RN.js +0 -1
  1003. package/dist/web/_app/immutable/chunks/CJ8__CWt.js +0 -1
  1004. package/dist/web/_app/immutable/chunks/CJUKmosC.js +0 -5
  1005. package/dist/web/_app/immutable/chunks/CSVbGg_b.js +0 -5
  1006. package/dist/web/_app/immutable/chunks/CT6oIU-C.js +0 -1
  1007. package/dist/web/_app/immutable/chunks/CTRxNfZk.js +0 -1
  1008. package/dist/web/_app/immutable/chunks/CWQRQXxy.js +0 -1
  1009. package/dist/web/_app/immutable/chunks/CXAIHzUX.js +0 -1
  1010. package/dist/web/_app/immutable/chunks/CXH6iFbA.js +0 -1
  1011. package/dist/web/_app/immutable/chunks/CX_61fY8.js +0 -5
  1012. package/dist/web/_app/immutable/chunks/CYrVHOHA.js +0 -1
  1013. package/dist/web/_app/immutable/chunks/CaQ0MRCC.js +0 -1
  1014. package/dist/web/_app/immutable/chunks/CdeYcEuU.js +0 -1
  1015. package/dist/web/_app/immutable/chunks/CmCtpZ1Y.js +0 -1
  1016. package/dist/web/_app/immutable/chunks/CqkleIqs.js +0 -1
  1017. package/dist/web/_app/immutable/chunks/CrdV0ttd.js +0 -1
  1018. package/dist/web/_app/immutable/chunks/CscoF-YL.js +0 -18
  1019. package/dist/web/_app/immutable/chunks/Cx4YdFMk.js +0 -1
  1020. package/dist/web/_app/immutable/chunks/D7ZqAKi9.js +0 -3
  1021. package/dist/web/_app/immutable/chunks/DF6CqIgb.js +0 -1
  1022. package/dist/web/_app/immutable/chunks/DGbA7IXh.js +0 -2
  1023. package/dist/web/_app/immutable/chunks/DUScXtWD.js +0 -2
  1024. package/dist/web/_app/immutable/chunks/DYsIuENi.js +0 -1
  1025. package/dist/web/_app/immutable/chunks/DbbB6Up5.js +0 -1
  1026. package/dist/web/_app/immutable/chunks/DnL9f0lc.js +0 -7
  1027. package/dist/web/_app/immutable/chunks/Dnnz2_is.js +0 -1
  1028. package/dist/web/_app/immutable/chunks/DtM5cEDu.js +0 -1
  1029. package/dist/web/_app/immutable/chunks/DviMV1EY.js +0 -4
  1030. package/dist/web/_app/immutable/chunks/Eqahi7_S.js +0 -2
  1031. package/dist/web/_app/immutable/chunks/FdYTYKiQ.js +0 -1
  1032. package/dist/web/_app/immutable/chunks/O9Eb9k00.js +0 -1
  1033. package/dist/web/_app/immutable/chunks/PPVm8Dsz.js +0 -1
  1034. package/dist/web/_app/immutable/chunks/QF8MAmnc.js +0 -1
  1035. package/dist/web/_app/immutable/chunks/UjzxCpxn.js +0 -1
  1036. package/dist/web/_app/immutable/chunks/WSUKABI_.js +0 -1
  1037. package/dist/web/_app/immutable/chunks/Y90OgS-9.js +0 -1
  1038. package/dist/web/_app/immutable/chunks/cLyZlkXv.js +0 -1
  1039. package/dist/web/_app/immutable/chunks/iDtAARVW.js +0 -2
  1040. package/dist/web/_app/immutable/chunks/oC_W7W7p.js +0 -1
  1041. package/dist/web/_app/immutable/chunks/rJdWIgh-.js +0 -1
  1042. package/dist/web/_app/immutable/chunks/tvOsokaa.js +0 -1
  1043. package/dist/web/_app/immutable/chunks/uLEXaPwE.js +0 -1
  1044. package/dist/web/_app/immutable/chunks/vSaooFHB.js +0 -1
  1045. package/dist/web/_app/immutable/entry/app.CaogB_bT.js +0 -2
  1046. package/dist/web/_app/immutable/entry/start.wZ7yhkXM.js +0 -1
  1047. package/dist/web/_app/immutable/nodes/0.Cq712UJU.js +0 -2
  1048. package/dist/web/_app/immutable/nodes/1.Cf_Sxi8f.js +0 -1
  1049. package/dist/web/_app/immutable/nodes/10.EhMTpB-W.js +0 -1
  1050. package/dist/web/_app/immutable/nodes/2.pdWVc6Tw.js +0 -168
  1051. package/dist/web/_app/immutable/nodes/3.DP7cSzLO.js +0 -1
  1052. package/dist/web/_app/immutable/nodes/4.BASs7ojR.js +0 -12
  1053. package/dist/web/_app/immutable/nodes/5.ZimC-3ag.js +0 -4
  1054. package/dist/web/_app/immutable/nodes/6.CnZ2TeIl.js +0 -2
  1055. package/dist/web/_app/immutable/nodes/7.hxwrWQeK.js +0 -2
  1056. package/dist/web/_app/immutable/nodes/8.DEJ5W3rM.js +0 -1
  1057. package/dist/web/_app/immutable/nodes/9.CIrEHtYu.js +0 -1
@@ -6,10 +6,13 @@
6
6
  */
7
7
  import { GitService, GitUser } from '../services/git.js';
8
8
  import { MarkdownDocument } from '../services/markdown.js';
9
- import { AssetInfo, AssetConfig } from '../services/assets/index.js';
9
+ import type { BodyWriteCoordinator, BodyWriteResult } from '../server/body-write-coordinator.js';
10
+ import { AssetService, AssetInfo, AssetRecord, AssetConfig, type AssetUploadResult } from '../services/assets/index.js';
11
+ import type { AssetIndexService } from '../services/assets/asset-index-service.js';
10
12
  import { EntityType, type EntityData, type DatasetRow } from './validation.js';
11
13
  import { SchemaRegistry } from './schema-registry.js';
12
14
  import { type DatasetFilter } from '../services/csv-service.js';
15
+ import { type HistoryCommitChange } from './history-diff.js';
13
16
  import { type VectorService } from '../services/vector-service.js';
14
17
  export interface GraphConfig {
15
18
  repoPath: string;
@@ -20,14 +23,38 @@ export interface GraphConfig {
20
23
  schemaRegistry?: SchemaRegistry;
21
24
  /** When true, all git operations are skipped. Used for the private/ graph. */
22
25
  noGit?: boolean;
26
+ /** Workspace root path. Used to anchor cross-repo artefacts like the
27
+ * PDF text sidecar at `<workspaceRoot>/.studiograph/assets-text/...`.
28
+ * Optional — when undefined, sidecar cleanup is a no-op. */
29
+ workspaceRoot?: string;
23
30
  }
24
31
  export interface EntityFile {
25
32
  id: string;
26
33
  path: string;
34
+ /** Repo-relative POSIX path of the containing folder. "" for repo root. */
35
+ folder_path: string;
27
36
  entityType: string;
28
37
  data: EntityData;
29
38
  document: MarkdownDocument;
30
39
  }
40
+ export interface FolderEntry {
41
+ /** Repo-relative POSIX path. */
42
+ path: string;
43
+ /** Last segment of the path. */
44
+ name: string;
45
+ /** Optional human-readable label. Set only when an explicit override exists
46
+ * in the folder's `.studiograph-folder.json` sidecar; clients fall back to
47
+ * toDisplayName(name) when undefined. */
48
+ display_name?: string;
49
+ /** Stable folder id from the sidecar, when assigned. Eagerly written on
50
+ * folder creation; absent for folders never mutated through the app (those
51
+ * fall back to a path-based scope key). Reads never generate one. */
52
+ id?: string;
53
+ }
54
+ export interface FolderDeleteResult {
55
+ entriesDeleted: number;
56
+ subfoldersDeleted: number;
57
+ }
31
58
  export interface SearchOptions {
32
59
  entityType?: EntityType;
33
60
  query?: string;
@@ -40,6 +67,12 @@ export interface SearchOptions {
40
67
  };
41
68
  sortBy?: 'created_at' | 'updated_at' | 'relevance';
42
69
  limit?: number;
70
+ /**
71
+ * When true, score only on name match — skip frontmatter field scan and
72
+ * full-body content scan. Used by autosuggest, where scanning every
73
+ * entity's markdown body dominates wall time.
74
+ */
75
+ nameOnly?: boolean;
43
76
  }
44
77
  export interface CreateEntityOptions {
45
78
  entityType: EntityType;
@@ -48,9 +81,27 @@ export interface CreateEntityOptions {
48
81
  content?: string;
49
82
  commitMessage?: string;
50
83
  skipCommit?: boolean;
84
+ /**
85
+ * Repo-relative folder to create the entry in. Empty/undefined = repo root.
86
+ * Parent folders are auto-created (mkdir -p semantics).
87
+ */
88
+ folderPath?: string;
51
89
  /** Override commit author (for per-user attribution in web UI). */
52
90
  user?: GitUser;
53
91
  }
92
+ /**
93
+ * Body-write provenance. Every `graph.update` call that passes `content`
94
+ * must declare its `source`.
95
+ *
96
+ * - `'autosave'`: web editor autosave PUT. Content came from a live Y.Text;
97
+ * the live Y.Doc is already authoritative, so we write disk + commit
98
+ * under the per-doc lock but do NOT re-apply to the Y.Doc (that would
99
+ * race in-flight keystrokes typed during the round trip).
100
+ * - `'server-write'`: any server-side caller (MCP `update_entity`, agent
101
+ * tools, event processor). Routes through `applyAgentContent` under the
102
+ * per-doc lock so live editors receive the broadcast post-commit.
103
+ */
104
+ export type BodyWriteSource = 'autosave' | 'server-write';
54
105
  export interface UpdateEntityOptions {
55
106
  entityType: EntityType;
56
107
  entityId: string;
@@ -60,6 +111,98 @@ export interface UpdateEntityOptions {
60
111
  skipCommit?: boolean;
61
112
  /** Override commit author (for per-user attribution in web UI). */
62
113
  user?: GitUser;
114
+ /**
115
+ * Required when `content !== undefined`. See {@link BodyWriteSource}.
116
+ */
117
+ source?: BodyWriteSource;
118
+ /**
119
+ * Optional precondition for body writes. When set, the server compares
120
+ * this hash to `sha256(existing.document.content)` BEFORE mutating
121
+ * anything. Mismatch throws {@link StaleBaseRevisionError} so the caller
122
+ * can refetch + recompute. When omitted, last-writer-wins.
123
+ *
124
+ * Content hash, not `updated_at`, because two `new Date().toISOString()`
125
+ * stamps can alias to the same millisecond on fast hardware.
126
+ */
127
+ baseRevision?: string;
128
+ /**
129
+ * Optional sink for the body-write broadcast disposition. Only fires on
130
+ * the coordinator (body-write) path. Lets a caller (e.g. MCP
131
+ * update_entity) surface `broadcast-failed` in its diagnostics instead
132
+ * of the disposition being discarded after `writeBody` returns.
133
+ */
134
+ onBroadcast?: (disposition: BodyWriteResult['broadcast']) => void;
135
+ }
136
+ /**
137
+ * Thrown by `graph.update` when the git commit fails after the disk write
138
+ * has already landed. The .md is updated and observable to subsequent
139
+ * readers via `graph.get`, but no commit exists — the repo is dirty.
140
+ *
141
+ * The caller MUST surface this typed error so an operator can recover
142
+ * (manual `git add && git commit`, or `git checkout -- <path>` to revert
143
+ * disk). v3-of-the-plan claim of "auto-convergence via sessionManager"
144
+ * was false outside the autosave PUT path; Phase 2 explicitly registers
145
+ * server-side dirty files with sessionManager when available, but the
146
+ * caller still gets the typed error so it knows the write was partial.
147
+ */
148
+ export declare class CommitFailedDirtyError extends Error {
149
+ readonly entityType: string;
150
+ readonly entityId: string;
151
+ readonly path: string;
152
+ readonly code: "COMMIT_FAILED_DIRTY";
153
+ constructor(entityType: string, entityId: string, path: string, cause: unknown);
154
+ }
155
+ /**
156
+ * Thrown by `graph.update` when a body write supplies a `baseRevision`
157
+ * that doesn't match the current body's content hash. Caller (autosave,
158
+ * MCP, agent, event processor) refetches and retries against the new
159
+ * revision.
160
+ */
161
+ export declare class StaleBaseRevisionError extends Error {
162
+ readonly entityType: string;
163
+ readonly entityId: string;
164
+ readonly expected: string;
165
+ readonly actual: string;
166
+ readonly code: "STALE_BASE_REVISION";
167
+ constructor(entityType: string, entityId: string, expected: string, actual: string);
168
+ }
169
+ /**
170
+ * Callbacks that fire AFTER successful structural mutations. Used by the Yjs
171
+ * persistence layer so snapshot files follow the .md file (rename → rename
172
+ * snapshot, delete → delete snapshot, type change → rename across type dirs).
173
+ *
174
+ * Hooked at this layer because the four mutation methods (delete, rename,
175
+ * changeType, plus cross-repo create+delete via /transfer) are the canonical
176
+ * mutation surface — every code path that moves an entity goes through them.
177
+ *
178
+ * Body-write hooks (onBodyWritten, applyAgentContent, withDocLock,
179
+ * assertWritable, onCommitFailedDirty) used to live here too. Phase 4
180
+ * extracted them into {@link BodyWriteCoordinator} — different concurrency
181
+ * profile, single critical section. This interface now covers ONLY the
182
+ * structural-mutation notifications that drive snapshot bookkeeping.
183
+ */
184
+ export interface GraphPersistenceCallbacks {
185
+ onDelete?(repo: string, entityType: string, entityId: string): void | Promise<void>;
186
+ onRename?(repo: string, entityType: string, oldId: string, newId: string): void | Promise<void>;
187
+ onChangeType?(repo: string, entityId: string, fromType: string, toType: string): void | Promise<void>;
188
+ }
189
+ /**
190
+ * Thrown by `restoreFile` when the path the recreate would land at is
191
+ * currently occupied by a different entity. Carries the occupant's
192
+ * coordinates so callers (agent tool, REST endpoint) can surface a
193
+ * useful error to the user.
194
+ */
195
+ export declare class PathConflictError extends Error {
196
+ readonly path: string;
197
+ readonly occupiedBy: {
198
+ entityType: string;
199
+ entityId: string;
200
+ };
201
+ readonly code: "PATH_CONFLICT";
202
+ constructor(path: string, occupiedBy: {
203
+ entityType: string;
204
+ entityId: string;
205
+ });
63
206
  }
64
207
  export declare class BaseGraphManager {
65
208
  private repoPath;
@@ -67,22 +210,151 @@ export declare class BaseGraphManager {
67
210
  private gitService?;
68
211
  private noGit;
69
212
  private markdownService;
213
+ private csvService;
70
214
  private assetService?;
215
+ /** Workspace-global ownership index for immutable-keyed assets. Injected by
216
+ * WorkspaceManager (one per workspace). Undefined in coordinator-less test
217
+ * / CLI graphs — those fall back to the legacy `{type}/{id}` key scheme. */
218
+ private assetIndex?;
71
219
  private gitUser;
72
- private csvService;
73
220
  private vectorService?;
74
221
  private schemaRegistry?;
222
+ private workspaceRoot?;
223
+ /** Cache for history-panel change summaries, keyed by `${relPath}@${hash}`.
224
+ * A commit's diff against its parent is immutable, so this never needs
225
+ * invalidation — entries only accumulate as history is viewed. */
226
+ private historyChangeCache;
227
+ private persistenceCallbacks?;
228
+ private bodyWriteCoordinator?;
75
229
  constructor(config: GraphConfig);
76
- /** Expose git service for deferred commit operations (e.g. CommitScheduler). */
230
+ /**
231
+ * Friendly display label for an entity type — custom-type label when the
232
+ * workspace defines one, otherwise the title-cased key ("deal" → "Deal").
233
+ * Used to build human-readable commit messages.
234
+ */
235
+ private typeLabel;
236
+ /** Build an EntityRef for a commit message from a type, id, and optional title. */
237
+ private commitRef;
238
+ /**
239
+ * Build the friendly "Edited …" message for a deferred (batched) commit,
240
+ * given the "type/id" pairs accumulated by the SessionManager. Each title is
241
+ * resolved from the in-memory index at flush time (cheap lookup); an entity
242
+ * deleted before the flush falls back to its slug id.
243
+ */
244
+ buildEditedBatchMessage(entities: Array<{
245
+ type: string;
246
+ id: string;
247
+ }>): string;
248
+ /**
249
+ * Change summary for one commit in a file's history — which frontmatter
250
+ * fields moved and whether the body changed — by diffing the file at `hash`
251
+ * against its true git parent (`hash^`). Used by the entity History panel.
252
+ *
253
+ * `relPath` is repo-relative. Null parent (root commit, or file absent at the
254
+ * parent) → `created`. Result is immutable per (path, hash), so it's cached.
255
+ * Returns null only when the file isn't present at `hash`.
256
+ */
257
+ getCommitChange(relPath: string, hash: string): HistoryCommitChange | null;
258
+ /** Expose git service for deferred commit operations (SessionManager). */
77
259
  getGitService(): GitService | undefined;
260
+ /** Absolute repo path on disk. Used by callers that need to convert
261
+ * an entity's absolute path to a repo-relative one (e.g. for `git log`). */
262
+ getRepoPath(): string;
263
+ /**
264
+ * Find an entity at a specific commit (existing or deleted) and
265
+ * return its repo-relative path + content. Public surface for the
266
+ * history tools — wraps the private `findEntityInCommit` walker.
267
+ * Returns null when no .md file at that commit matches the
268
+ * (entityType, entityId) pair.
269
+ */
270
+ getEntityAtCommit(entityType: EntityType, entityId: string, commitHash: string): {
271
+ path: string;
272
+ content: string;
273
+ } | null;
274
+ /** Workspace root passed in via GraphConfig. Used by the asset upload
275
+ * service to anchor PDF text sidecars at workspace level (so all repos
276
+ * share the same `assets-text/` tree, mirroring the shared
277
+ * `.studiograph/assets/` directory the local backend uses). */
278
+ getWorkspaceRoot(): string | undefined;
279
+ /**
280
+ * Install structural-mutation callbacks. Called once after construction by
281
+ * the server bootstrap (or test setup) so the Yjs persistence layer can
282
+ * react to rename/delete/changeType without route-layer code calling
283
+ * persistence APIs directly.
284
+ */
285
+ setPersistenceCallbacks(callbacks: GraphPersistenceCallbacks | undefined): void;
286
+ /**
287
+ * Install the body-write coordinator. graph.update delegates the body-write
288
+ * critical section (lock, base-hash, atomic disk write, commit, broadcast,
289
+ * mdRevisionHash bookkeeping, assertWritable) to the coordinator. When
290
+ * unset (test fixtures without a Y.Doc layer), body writes fall back to a
291
+ * direct disk-write + commit path with no lock/broadcast — preserves the
292
+ * legacy "no callbacks" behavior some test setups rely on.
293
+ */
294
+ setBodyWriteCoordinator(coordinator: BodyWriteCoordinator | undefined): void;
78
295
  /**
79
296
  * Ensure repository exists
80
297
  */
81
298
  private ensureRepo;
82
299
  /**
83
- * Get entity file path: {repo}/{plural-type}/{entityId}.md
300
+ * Compute the on-disk path for a new entity.
301
+ *
302
+ * - When `folderPath` is provided, the entry lives at {repo}/{folderPath}/{id}.md
303
+ * regardless of type. This is the nested-folders layout.
304
+ * - Without `folderPath` (or empty string), the entry lands at the repo
305
+ * root: {repo}/{id}.md. The historical {repo}/{plural-type}/{id}.md
306
+ * fallback was confusing — entries hidden under a typed directory the
307
+ * list view never showed at repo root, contradicting the agent tool
308
+ * description that says "Omit to land at repo root."
309
+ *
310
+ * Note: this is for *new* paths only. Existing entries living under the
311
+ * legacy {plural-type}/ directories continue to be readable via
312
+ * findEntityFile() — only the create path moved.
84
313
  */
85
314
  private getEntityPath;
315
+ private fileIndex?;
316
+ /**
317
+ * Cache of the parsed `list()` view, keyed by `entityType ?? '*'`. Built
318
+ * lazily on first read; invalidated alongside `fileIndex` on every
319
+ * mutation. Without this, autosuggest walks the entire markdown tree
320
+ * and parses YAML frontmatter for every entry on every keystroke (5–7s
321
+ * on workspaces with a few thousand entries).
322
+ *
323
+ * Staleness contract: identical to `fileIndex` — single-process trust
324
+ * model. Git pulls and out-of-process file edits would equally miss
325
+ * the existing `fileIndex` cache; no regression there.
326
+ */
327
+ private listCache?;
328
+ /** Drop the cached file index so the next read rebuilds it. */
329
+ private invalidateIndex;
330
+ /**
331
+ * Walk every .md file under this repo, calling `visit` with the absolute
332
+ * path. Skips hidden directories (.git, .studiograph, etc.) and files that
333
+ * start with ".".
334
+ */
335
+ private walkMarkdownFiles;
336
+ /**
337
+ * Build (or fetch the cached) "type/id" → absolute path index.
338
+ * Type comes from frontmatter `entity_type`; if missing, falls back to the
339
+ * top-level plural-type directory name (legacy layout). Files without either
340
+ * (e.g. README.md) are skipped — they aren't entities.
341
+ */
342
+ private getFileIndex;
343
+ /**
344
+ * Infer entity type from a file's location for legacy layouts where the
345
+ * file sits directly inside a top-level plural-type directory
346
+ * ({repo}/meetings/foo.md). Returns undefined for any other layout.
347
+ */
348
+ private inferLegacyType;
349
+ /**
350
+ * Resolve an entity's absolute path by (type, id). Returns undefined if not
351
+ * found. Uses the file index — the index keys by `${entityType}/${entityId}`
352
+ * which is type-aware, unlike the on-disk filename. (We previously had a
353
+ * legacy {plural-type}/{id}.md fast path here; once the create path moved
354
+ * to flat repo-root layout, that fast path could return a different
355
+ * type's file at the same id.)
356
+ */
357
+ private findEntityFile;
86
358
  /**
87
359
  * Validate entity data against schema
88
360
  */
@@ -92,13 +364,48 @@ export declare class BaseGraphManager {
92
364
  */
93
365
  create(options: CreateEntityOptions): Promise<EntityFile>;
94
366
  /**
95
- * Get an entity by type and ID
367
+ * Get an entity by type and ID. Searches nested folders if the entry isn't
368
+ * at the legacy {plural-type}/{id}.md path.
96
369
  */
97
370
  get(entityType: EntityType, entityId: string): EntityFile;
98
371
  /**
99
- * Get an entity by ID only (type resolved from frontmatter)
372
+ * The live editor body for an entity when a seeded Y.Doc is open, else
373
+ * null. `get` reads disk, which lags the live Y.Doc by the autosave
374
+ * debounce + commit — so a user's freshly-placed image/asset embed exists
375
+ * in the editor before it reaches disk. Callers that must reflect what the
376
+ * user is actually looking at (the get_entity surfaces, the whole-body
377
+ * asset-drop guard) prefer this and fall back to disk on null.
378
+ *
379
+ * Returns null when no coordinator is wired (CLI / test fixtures) — those
380
+ * setups have no live editor layer, so disk IS the authoritative body.
381
+ */
382
+ getLiveBody(entityType: EntityType, entityId: string): string | null;
383
+ /**
384
+ * Get an entity by ID only (type resolved from the filesystem).
385
+ *
386
+ * Walks the file index to find any entry with this id, regardless of folder
387
+ * depth or type. Used by the agent's `get_entity` tool when the caller
388
+ * doesn't know the entity's type.
100
389
  */
101
390
  getById(entityId: string): EntityFile;
391
+ /**
392
+ * Merge a caller's `data` onto a base frontmatter, always stamping
393
+ * `updated_at` / `updated_by`, then validate. Even content-only edits
394
+ * (editor autosave, where `data` is undefined) re-stamp the audit fields —
395
+ * otherwise the trail freezes at whatever the last data-change user was,
396
+ * which for scaffolded files is "studiograph".
397
+ *
398
+ * `baseFrontmatter` is the frontmatter to merge onto. The body-write path
399
+ * passes the CURRENT on-disk frontmatter (read inside the per-doc lock) so
400
+ * a concurrent metadata-only edit isn't clobbered; the frontmatter-only
401
+ * path passes `existing.data` (synchronous, no lock window).
402
+ *
403
+ * Validation uses lenient mode + a Date-coercion fallback when no new data
404
+ * is supplied, since the existing entity may have been stored without all
405
+ * required fields, and gray-matter would otherwise serialize Date objects
406
+ * as full ISO timestamps.
407
+ */
408
+ private composeUpdatedFrontmatter;
102
409
  /**
103
410
  * Update an existing entity
104
411
  */
@@ -106,25 +413,193 @@ export declare class BaseGraphManager {
106
413
  /**
107
414
  * Delete an entity
108
415
  */
109
- delete(entityType: EntityType, entityId: string, commitMessage?: string, user?: GitUser): Promise<void>;
416
+ /**
417
+ * Delete multiple entities in a single git transaction. Each entity's
418
+ * file is removed from disk; folder markers (.gitkeep) are added where
419
+ * the deletion left a folder empty. Then everything commits as one
420
+ * atomic operation.
421
+ *
422
+ * Compared to looping `delete()` per entity, this is a real performance
423
+ * primitive: one fork of git, one index update, one commit, one ref
424
+ * advance — instead of N. Bulk delete of a few hundred entities goes
425
+ * from minutes to seconds.
426
+ *
427
+ * Errors per entity (e.g. "not found") don't abort the batch — they're
428
+ * collected in `errors` and the rest still commit. Returns both the
429
+ * successfully-deleted set (for vector cleanup + WS broadcast) and the
430
+ * errors so the caller can surface partial failures.
431
+ */
432
+ bulkDelete(specs: Array<{
433
+ entityType: EntityType;
434
+ entityId: string;
435
+ }>, options?: {
436
+ commitMessage?: string;
437
+ user?: GitUser;
438
+ }): Promise<{
439
+ deleted: Array<{
440
+ entityType: EntityType;
441
+ entityId: string;
442
+ path: string;
443
+ title?: string;
444
+ }>;
445
+ errors: Array<{
446
+ entityType: EntityType;
447
+ entityId: string;
448
+ error: string;
449
+ }>;
450
+ }>;
451
+ /**
452
+ * Commit a set of already-on-disk file changes as a single git
453
+ * operation. Used by callers (e.g. the import route) that perform many
454
+ * `skipCommit: true` writes and want one transaction at the end instead
455
+ * of per-file commits.
456
+ *
457
+ * `entries` describes what each file represents so the transaction can
458
+ * be staged correctly. No-op when nothing is staged or git isn't
459
+ * available.
460
+ */
461
+ commitPending(entries: Array<{
462
+ operation: 'create' | 'update' | 'delete';
463
+ entityType: EntityType;
464
+ entityId: string;
465
+ filePath: string;
466
+ }>, options: {
467
+ commitMessage: string;
468
+ user?: GitUser;
469
+ extraPaths?: string[];
470
+ }): Promise<{
471
+ committed: boolean;
472
+ }>;
473
+ delete(entityType: EntityType, entityId: string, commitMessage?: string, user?: GitUser, opts?: {
474
+ keepAssets?: boolean;
475
+ }): Promise<void>;
110
476
  /**
111
477
  * Rename an entity (change its ID). Preserves all data, content, and source_ref.
112
478
  * Uses git mv for clean history. Updates entity_id in frontmatter.
113
479
  */
114
480
  rename(entityType: EntityType, oldId: string, newId: string, commitMessage?: string, user?: GitUser): Promise<EntityFile>;
115
481
  /**
116
- * Change an entity's type. Moves the file from oldType/ to newType/ directory.
117
- * Preserves all data and content. Updates entity_type in frontmatter.
482
+ * Change an entity's type. Updates frontmatter only the file stays in
483
+ * its current folder. In the type-agnostic folder model, type is a
484
+ * frontmatter property independent of location. (Legacy behavior moved
485
+ * the file between {plural-type}/ dirs; that's no longer correct because
486
+ * those dirs are now ordinary user-visible folders, not type markers.)
487
+ *
488
+ * If the user wants the file to also move (e.g. out of a "meetings/"
489
+ * folder when changed to a note), they invoke move() separately.
118
490
  */
119
491
  changeType(entityId: string, fromType: EntityType, toType: EntityType, commitMessage?: string, user?: GitUser): Promise<EntityFile>;
120
492
  /**
121
- * List entities of a given type
493
+ * Move an entry to a different folder within the same repo. The filename
494
+ * (and therefore the entity id) and type are unchanged. Auto-creates parent
495
+ * folders. Refuses if the target path already has an entry with this id —
496
+ * pass `overwrite: true` to replace it, but only when the occupant is
497
+ * itself a parseable entity (never silently clobber arbitrary files like
498
+ * README.md or .gitkeep).
499
+ */
500
+ move(entityType: EntityType, entityId: string, targetFolderPath: string, commitMessage?: string, user?: GitUser, overwrite?: boolean): Promise<EntityFile>;
501
+ /**
502
+ * Restore an entity to its content at a specific commit. Single-entity
503
+ * scope only — multi-entity rollback (e.g. "undo this commit's effects
504
+ * across all touched files") is a separate, more cautious flow that
505
+ * isn't built yet.
506
+ *
507
+ * Two paths through the method:
508
+ * - **Overwrite**: the entity exists today at path `P`. Read content
509
+ * from `git show <hash>:<P>` and write it back to `P`.
510
+ * - **Recreate**: the entity is gone today. Walk the historical
511
+ * commit's tree to find the .md file whose basename matches
512
+ * `entityId` AND whose frontmatter `entity_type` matches
513
+ * `entityType`. That path is the restore target. The walk only
514
+ * fires when the entity is truly absent — overwrites stay cheap.
515
+ *
516
+ * Throws a `PathConflictError` if the recreate target path is now
517
+ * occupied by a DIFFERENT entity (different type+id) — recreating
518
+ * over it would silently overwrite unrelated work. Caller surfaces
519
+ * the conflict to the user; resolution is "move or delete the
520
+ * occupant first."
521
+ */
522
+ restoreFile(entityType: EntityType, entityId: string, commitHash: string, user?: GitUser): Promise<{
523
+ action: 'recreate' | 'overwrite';
524
+ path: string;
525
+ }>;
526
+ /**
527
+ * Walk a commit's tree looking for a .md file whose basename matches
528
+ * `entityId` AND whose frontmatter `entity_type` matches `entityType`.
529
+ * Returns repo-relative path + content when found, otherwise null.
530
+ * Used by `restoreFile` for the recreate-from-deletion case.
531
+ */
532
+ private findEntityInCommit;
533
+ /**
534
+ * Identify the entity (if any) currently occupying `absPath`. Returns
535
+ * null when the path holds something that isn't an entity (README, etc).
536
+ * Mirrors the inference rules used in `getFileIndex`.
537
+ */
538
+ private identifyEntityAtPath;
539
+ /**
540
+ * Enumerate the distinct entity types present in this repo. Used by
541
+ * /api/repos to let the sidebar render the Views list without a full
542
+ * entity fetch per folder.
543
+ *
544
+ * Derived from the file index (which reads frontmatter), so it works for
545
+ * entries in any folder — not just the legacy {plural-type}/ dirs.
546
+ */
547
+ listEntityTypes(): string[];
548
+ /**
549
+ * Folder lifecycle: a directory is treated as a first-class persistent
550
+ * object. It exists from the moment it's created (createFolder, the destination
551
+ * of a moved entry, etc.) until it's explicitly removed via a folder-level
552
+ * operation (deleteFolder, renameFolder, moveFolderToRepo). Entry-level
553
+ * operations (create, delete, move, transfer) never decide whether a folder
554
+ * lives or dies.
555
+ *
556
+ * `listFolders()` requires either a .md child or a .gitkeep marker for a
557
+ * directory to surface in the API, so the two helpers below are the single
558
+ * place that adds and removes the marker:
559
+ *
560
+ * - `ensureFolderMarker` — call after an op that may have left `dir`
561
+ * without .md children. Writes `.gitkeep` and returns its path so the
562
+ * caller can stage it in the same commit.
563
+ * - `removeFolderMarker` — call after an op that placed an .md into `dir`.
564
+ * Drops a now-redundant `.gitkeep` so the repo stays tidy.
565
+ *
566
+ * Both no-op for the repo root (always implicit) and for paths that don't
567
+ * exist. Both return `null` when nothing changed.
568
+ */
569
+ private ensureFolderMarker;
570
+ private removeFolderMarker;
571
+ /**
572
+ * Walk up from `dir`, removing each directory that became empty after a
573
+ * folder-level removal (deleteFolder, renameFolder, moveFolderToRepo).
574
+ * Stops at the repo root. Silently no-ops if a directory is missing,
575
+ * non-empty, or can't be removed.
576
+ *
577
+ * NOT called by entry-level operations (create/delete/move/transfer) —
578
+ * they preserve folder structure regardless of whether they emptied a
579
+ * directory. Use `ensureFolderMarker` instead for those paths.
580
+ */
581
+ private pruneEmptyAncestors;
582
+ /**
583
+ * List entities of a given type (or all types if not specified).
584
+ *
585
+ * Walks the entire repo tree so entries in nested folders are discovered.
586
+ * The type filter is applied against frontmatter `entity_type`; legacy
587
+ * entries without explicit frontmatter type fall back to the depth-1
588
+ * plural-type directory name (so `meetings/foo.md` still resolves as a
589
+ * meeting). Files with no inferable type (README.md, CONTRIBUTING.md, etc.)
590
+ * are skipped.
122
591
  */
123
592
  list(entityType?: EntityType, limit?: number): EntityFile[];
124
593
  /**
125
594
  * Search entities
126
595
  */
127
596
  search(options: SearchOptions): EntityFile[];
597
+ /**
598
+ * Resolve a markdown file (anywhere under the repo) to its (type, id),
599
+ * tolerating both legacy {plural-type}/{id}.md and nested-folder layouts.
600
+ * Returns undefined for files without a recognizable entity type.
601
+ */
602
+ private resolveFileToEntity;
128
603
  /**
129
604
  * Get entities related to a given entity (via wikilinks)
130
605
  */
@@ -146,14 +621,175 @@ export declare class BaseGraphManager {
146
621
  refactorWikilink(oldId: string, newId: string, commitMessage?: string): Promise<{
147
622
  updated: number;
148
623
  }>;
624
+ /**
625
+ * List every non-empty folder in this repo, plus folders explicitly kept
626
+ * via .gitkeep. Returns repo-relative POSIX paths, sorted, deduplicated.
627
+ * The repo root ("") is intentionally omitted — it's implicit.
628
+ */
629
+ listFolders(): FolderEntry[];
630
+ /**
631
+ * Read the display_name override for a single folder, or null if no sidecar
632
+ * exists / is unreadable. Used by mutation paths that need the current
633
+ * override before deciding whether to rewrite it.
634
+ */
635
+ readFolderDisplayName(folderPath: string): string | null;
636
+ /**
637
+ * Write or remove the per-folder display_name sidecar. Pass `null` /
638
+ * empty-string to remove (returns to slug fallback). Returns the absolute
639
+ * path of the sidecar (for git staging) when one was written or removed,
640
+ * or null when no change was needed (idempotent).
641
+ *
642
+ * Caller is responsible for committing — the helper only touches the
643
+ * filesystem. Folder must already exist; this never creates one.
644
+ */
645
+ writeFolderDisplayName(folderPath: string, displayName: string | null): string | null;
646
+ /**
647
+ * Bulk-write display_name sidecars for many folders at once. Used by the
648
+ * import path to record original-casing overrides for every nested
649
+ * directory it slugified. First-writer-wins: existing sidecars are NOT
650
+ * overwritten, so a second import doesn't clobber a user's manual rename.
651
+ *
652
+ * Returns the list of sidecar paths actually written (for git staging).
653
+ * Skipped paths (folder missing, empty display, display_name override
654
+ * already set) are quietly omitted.
655
+ */
656
+ recordFolderDisplays(entries: Array<{
657
+ path: string;
658
+ display_name: string;
659
+ }>): string[];
660
+ /**
661
+ * Create a folder at the given path (mkdir -p semantics) and drop a
662
+ * .gitkeep so git tracks it even when empty. Validates the path. No-op if
663
+ * the folder already exists; .gitkeep is added if missing.
664
+ */
665
+ createFolder(folderPath: string, commitMessage?: string, user?: GitUser, options?: {
666
+ displayName?: string;
667
+ }): Promise<void>;
668
+ /**
669
+ * Rename / move a folder within the repo. Moves the entire subtree
670
+ * atomically via filesystem rename. Refuses if the target path is already
671
+ * occupied.
672
+ */
673
+ renameFolder(fromPath: string, toPath: string, commitMessage?: string, user?: GitUser, options?: {
674
+ displayName?: string | null;
675
+ }): Promise<void>;
676
+ /**
677
+ * Move a folder (and its full subtree) into a different repo at `targetFolderPath`.
678
+ *
679
+ * The naive way to do this is to iterate the source's entries and call
680
+ * `transfer` per entry — that's what the web UI used to do, and it costs
681
+ * 2 git commits per entry (1600 commits for 800 files), each blocking the
682
+ * Node event loop via `execSync`. This method performs the move as a
683
+ * single FS-level rename + one commit per repo, regardless of how many
684
+ * files are inside.
685
+ *
686
+ * Returns the count of entries + subfolders moved so the caller can
687
+ * surface progress.
688
+ */
689
+ moveFolderToRepo(sourceFolderPath: string, target: BaseGraphManager, targetFolderPath: string, options?: {
690
+ commitMessage?: string;
691
+ user?: GitUser;
692
+ }): Promise<FolderDeleteResult>;
693
+ /**
694
+ * Move a batch of entries (potentially across many source folders) into a
695
+ * single target folder, optionally in a different repo. The web UI's
696
+ * multi-select bulk move used to call /move or /transfer per entry — that
697
+ * was 1-2 sync git commits per entry, blocking the event loop on each one.
698
+ * This collapses the operation to a single FS rename per file plus one
699
+ * commit on each repo touched.
700
+ */
701
+ moveEntitiesToRepo(entries: Array<{
702
+ entityType: EntityType;
703
+ entityId: string;
704
+ }>, target: BaseGraphManager, targetFolderPath: string, options?: {
705
+ commitMessage?: string;
706
+ user?: GitUser;
707
+ }): Promise<{
708
+ moved: number;
709
+ }>;
710
+ /**
711
+ * Delete a folder. Refuses non-empty folders unless `recursive: true`.
712
+ * Returns the count of entries + subfolders removed (for blast-radius UI).
713
+ */
714
+ deleteFolder(folderPath: string, options?: {
715
+ recursive?: boolean;
716
+ commitMessage?: string;
717
+ user?: GitUser;
718
+ }): Promise<FolderDeleteResult>;
719
+ /**
720
+ * Count the entries (.md files with entity_type) and subfolders inside an
721
+ * absolute directory, recursively. Used to surface blast radius in the
722
+ * delete-folder approval UI.
723
+ */
724
+ private countFolderContents;
725
+ /**
726
+ * Return the storage backend the graph is bound to, or `undefined` if
727
+ * no asset service is configured. Used by routes that need to branch
728
+ * between local-stream and R2-redirect behavior.
729
+ */
730
+ getAssetStorage(): 'local' | 'r2' | undefined;
731
+ /** The asset storage service (raw key copy/exists), if configured. Used by
732
+ * the one-time key migration, which operates on raw `{...}/{file}` keys. */
733
+ getAssetService(): AssetService | undefined;
734
+ /** Pre-signed URL for an immutable-key asset ({assetId}/{filename}). */
735
+ getAssetSignedUrlByAssetId(assetId: string, filename: string, method?: 'GET' | 'HEAD', expiresIn?: number): Promise<string>;
736
+ /**
737
+ * Mint a short-lived pre-signed URL for an asset. Only supported by
738
+ * remote backends (R2); the local backend throws. `method` selects
739
+ * the verb the URL is signed against — HEAD callers need a HEAD URL.
740
+ */
741
+ getAssetSignedUrl(entityType: EntityType, entityId: string, filename: string, keyPrefix?: string, expiresIn?: number, method?: 'GET' | 'HEAD'): Promise<string>;
149
742
  /**
150
743
  * Upload asset for an entity
151
744
  */
152
- uploadAsset(entityType: EntityType, entityId: string, filename: string, buffer: Buffer, keyPrefix?: string): Promise<AssetInfo>;
745
+ uploadAsset(entityType: EntityType, entityId: string, filename: string, buffer: Buffer, keyPrefix?: string): Promise<AssetUploadResult>;
746
+ /** Inject the workspace-global asset ownership index (WorkspaceManager). */
747
+ setAssetIndex(index: AssetIndexService | undefined): void;
748
+ /** The asset ownership index, if wired. */
749
+ getAssetIndex(): AssetIndexService | undefined;
750
+ /**
751
+ * Remove every immutable-keyed asset owned by (entityType, entityId): the
752
+ * blob + its index row. Used by delete/bulkDelete/deleteFolder. Blob errors
753
+ * are non-fatal (markdown is the system of record). No-op without an index.
754
+ * Owner-scoped, so it only touches THIS entity's assets — a blob another
755
+ * entity also embeds (copied URL) is not enumerated here.
756
+ */
757
+ private cleanupOwnedAssets;
758
+ /** Re-point the owning coordinates of every asset owned by an entity, with
759
+ * no blob movement (keys are immutable). Used by rename (ownerId),
760
+ * changeType (ownerType), and cross-repo move/transfer (repo). No-op
761
+ * without an index. */
762
+ private reassignOwnedAssets;
153
763
  /**
154
764
  * List assets for an entity
155
765
  */
156
766
  listAssets(entityType: EntityType, entityId: string, keyPrefix?: string): Promise<AssetInfo[]>;
767
+ /**
768
+ * List every asset in the backend in one round-trip, tagged with
769
+ * (entityType, entityId) origin. Workspace-wide since the asset backend
770
+ * is shared across repos — callers filter by repo via {@link listEntityIds}.
771
+ */
772
+ listAllAssets(): Promise<AssetRecord[]>;
773
+ /**
774
+ * Enumerate (type, id) pairs in this repo. Used by endpoints (like
775
+ * /api/repos/:repo/assets) that need to answer "does entity X belong to
776
+ * this repo?".
777
+ *
778
+ * Backed by the file index, which reads frontmatter — so entries in
779
+ * nested folders are included alongside legacy {plural-type}/ entries.
780
+ */
781
+ listEntityIds(): Array<{
782
+ entityType: EntityType;
783
+ id: string;
784
+ }>;
785
+ /**
786
+ * Resolve the absolute on-disk markdown path for an entity. Goes through
787
+ * the file index so it works for both the flat repo-root layout and
788
+ * arbitrary nested folders. Use this anywhere callers need a path —
789
+ * never reconstruct one from `${plural-type}/${id}.md`, which assumes
790
+ * the legacy typed-folder layout and silently misses everything else.
791
+ */
792
+ getEntityFilePath(entityType: EntityType, entityId: string): string | undefined;
157
793
  /**
158
794
  * Delete an asset
159
795
  */
@@ -163,13 +799,38 @@ export declare class BaseGraphManager {
163
799
  */
164
800
  deleteAllAssets(entityType: EntityType, entityId: string, keyPrefix?: string): Promise<number>;
165
801
  /**
166
- * Get dataset rows, optionally filtered
802
+ * Resolve the authoritative CSV body for a dataset: the live editor body
803
+ * when one exists (the grid may be ahead of disk), else the on-disk body.
804
+ */
805
+ private datasetBody;
806
+ /**
807
+ * Get dataset rows, optionally filtered. Columns come from the CSV header.
167
808
  */
168
809
  getDatasetRows(entityId: string, filter?: DatasetFilter): DatasetRow[];
169
810
  /**
170
- * Append rows to a dataset entity
811
+ * Column names for a dataset, read from the CSV header. Independent of the
812
+ * rows so callers get the real columns even for a header-only dataset or a
813
+ * zero-match filter (where deriving columns from result rows would be empty).
814
+ */
815
+ getDatasetColumns(entityId: string): string[];
816
+ /**
817
+ * Append rows to a dataset entity.
818
+ *
819
+ * The existing CSV body is preserved verbatim and the new rows are appended
820
+ * after it — we do NOT re-parse and re-stringify existing rows. That keeps
821
+ * datasets with duplicate column headers from collapsing (csv-parse's
822
+ * object mode keeps only the last same-named column) and avoids reformatting
823
+ * unrelated cells. New rows are mapped to the existing header columns; keys
824
+ * not in the header are dropped (query the columns first). When the body has
825
+ * no header yet, the columns are taken from the new rows.
826
+ *
827
+ * The write routes through `update()` so it shares the BodyWriteCoordinator
828
+ * contract (per-doc lock, base-hash precondition, applyAgentContent, commit)
829
+ * instead of writing to disk directly — same guarantees the agent's markdown
830
+ * writes get. `baseRevision` makes a concurrent change since our read fail
831
+ * loudly rather than silently back-stomp.
171
832
  */
172
- appendDatasetRows(entityId: string, newRows: DatasetRow[], commitMessage?: string): Promise<EntityFile>;
833
+ appendDatasetRows(entityId: string, newRows: Array<Record<string, unknown>>, commitMessage?: string): Promise<EntityFile>;
173
834
  /**
174
835
  * Get repository status
175
836
  */