studiograph 1.3.47 → 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 -323
  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.DT7X0x5S.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/B-7hHz7B.js +0 -1
  993. package/dist/web/_app/immutable/chunks/B340SUKR.js +0 -1
  994. package/dist/web/_app/immutable/chunks/BB_5th5W.js +0 -3383
  995. package/dist/web/_app/immutable/chunks/BDoWDZaG.js +0 -1
  996. package/dist/web/_app/immutable/chunks/BFyl1ZHO.js +0 -1
  997. package/dist/web/_app/immutable/chunks/BS2rFAVq.js +0 -1
  998. package/dist/web/_app/immutable/chunks/BSsDC_p4.js +0 -1
  999. package/dist/web/_app/immutable/chunks/BTX2Jr8_.js +0 -1
  1000. package/dist/web/_app/immutable/chunks/BWNY8zw6.js +0 -2
  1001. package/dist/web/_app/immutable/chunks/BdPUVvAi.js +0 -1
  1002. package/dist/web/_app/immutable/chunks/BmsJVLyy.js +0 -1
  1003. package/dist/web/_app/immutable/chunks/BoAosqzE.js +0 -1
  1004. package/dist/web/_app/immutable/chunks/Bs-tL5OR.js +0 -1
  1005. package/dist/web/_app/immutable/chunks/Bsacq2UX.js +0 -1
  1006. package/dist/web/_app/immutable/chunks/BuewkNdS.js +0 -4
  1007. package/dist/web/_app/immutable/chunks/ByunV8un.js +0 -1
  1008. package/dist/web/_app/immutable/chunks/C7VoTosa.js +0 -2
  1009. package/dist/web/_app/immutable/chunks/CDV5Q7RN.js +0 -1
  1010. package/dist/web/_app/immutable/chunks/CJ8__CWt.js +0 -1
  1011. package/dist/web/_app/immutable/chunks/CJUKmosC.js +0 -5
  1012. package/dist/web/_app/immutable/chunks/CSVbGg_b.js +0 -5
  1013. package/dist/web/_app/immutable/chunks/CT6oIU-C.js +0 -1
  1014. package/dist/web/_app/immutable/chunks/CTRxNfZk.js +0 -1
  1015. package/dist/web/_app/immutable/chunks/CWQRQXxy.js +0 -1
  1016. package/dist/web/_app/immutable/chunks/CXH6iFbA.js +0 -1
  1017. package/dist/web/_app/immutable/chunks/CX_61fY8.js +0 -5
  1018. package/dist/web/_app/immutable/chunks/CYrVHOHA.js +0 -1
  1019. package/dist/web/_app/immutable/chunks/CdeYcEuU.js +0 -1
  1020. package/dist/web/_app/immutable/chunks/CmCtpZ1Y.js +0 -1
  1021. package/dist/web/_app/immutable/chunks/CqkleIqs.js +0 -1
  1022. package/dist/web/_app/immutable/chunks/CrdV0ttd.js +0 -1
  1023. package/dist/web/_app/immutable/chunks/CscoF-YL.js +0 -18
  1024. package/dist/web/_app/immutable/chunks/Cx4YdFMk.js +0 -1
  1025. package/dist/web/_app/immutable/chunks/D7ZqAKi9.js +0 -3
  1026. package/dist/web/_app/immutable/chunks/DGbA7IXh.js +0 -2
  1027. package/dist/web/_app/immutable/chunks/DbbB6Up5.js +0 -1
  1028. package/dist/web/_app/immutable/chunks/DnL9f0lc.js +0 -7
  1029. package/dist/web/_app/immutable/chunks/DtM5cEDu.js +0 -1
  1030. package/dist/web/_app/immutable/chunks/Eqahi7_S.js +0 -2
  1031. package/dist/web/_app/immutable/chunks/FFlLQIiS.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.DAR-mtfg.js +0 -2
  1046. package/dist/web/_app/immutable/entry/start.xDnyRaR1.js +0 -1
  1047. package/dist/web/_app/immutable/nodes/0.D0aV-Zro.js +0 -2
  1048. package/dist/web/_app/immutable/nodes/1.C7QoM8qD.js +0 -1
  1049. package/dist/web/_app/immutable/nodes/10.DrDOAjOD.js +0 -1
  1050. package/dist/web/_app/immutable/nodes/2.B0OgNuKW.js +0 -168
  1051. package/dist/web/_app/immutable/nodes/3.BZ4qHGZi.js +0 -1
  1052. package/dist/web/_app/immutable/nodes/4.hm-mxuuj.js +0 -12
  1053. package/dist/web/_app/immutable/nodes/5.Bdbt4fjx.js +0 -4
  1054. package/dist/web/_app/immutable/nodes/6.BXrCI40c.js +0 -2
  1055. package/dist/web/_app/immutable/nodes/7.Chd4i9bm.js +0 -2
  1056. package/dist/web/_app/immutable/nodes/8.B8SF-aNs.js +0 -1
  1057. package/dist/web/_app/immutable/nodes/9.YDeu-RnO.js +0 -1
@@ -1,814 +0,0 @@
1
- /**
2
- * Sync API routes
3
- *
4
- * REST endpoints for collection-scoped sync:
5
- * POST /api/repos/:repo/sync — run sync for a collection
6
- * POST /api/repos/:repo/entities/:type/:id/refresh — get refresh diff
7
- * POST /api/repos/:repo/entities/:type/:id/refresh/apply — apply refresh
8
- * GET /api/repos/:repo/sync/status — sync config and last sync time
9
- * GET /api/sources — list source definitions
10
- * GET /api/sources/:name — get a single source definition
11
- * POST /api/sources/:name — create/update source definition
12
- * DELETE /api/sources/:name — remove source definition
13
- * GET /api/connectors — list available MCP connectors
14
- * GET /api/connectors/:name/config — get connector config (secrets masked)
15
- * POST /api/connectors/:name/config — create/update connector config
16
- * DELETE /api/connectors/:name/config — remove connector config
17
- * POST /api/connectors/:name/oauth/authorize — initiate OAuth flow
18
- * GET /api/oauth/callback/:name — OAuth callback (browser redirect)
19
- * GET /api/connectors/:name/oauth/status — poll OAuth connection status
20
- * POST /api/connectors/:name/oauth/disconnect — clear OAuth tokens
21
- */
22
- import { Workspace } from '../../core/workspace.js';
23
- import { syncRepo, syncSource } from '../../services/sync/collection-sync.js';
24
- import { refreshEntity } from '../../services/sync/entity-refresh.js';
25
- import { SourceConfigManager } from '../../services/sync/source-config.js';
26
- import { ConnectorManager, KNOWN_CONNECTORS } from '../../mcp/connector-manager.js';
27
- import { ServerOAuthProvider, decodeOAuthState } from '../../mcp/server-oauth-provider.js';
28
- import { auth as mcpAuth } from '@modelcontextprotocol/sdk/client/auth.js';
29
- /**
30
- * Creates a fetch wrapper for OAuth that handles providers with broken or missing
31
- * metadata discovery endpoints. When custom OAuth endpoints are configured, returns
32
- * synthetic metadata so the SDK uses the correct authorize/token URLs.
33
- */
34
- function createOAuthFetch(oauthApp) {
35
- return async (input, init) => {
36
- const url = typeof input === 'string' ? input : input instanceof URL ? input.toString() : input.url;
37
- // Intercept .well-known discovery requests
38
- if (url.includes('.well-known/')) {
39
- // If we have custom endpoints, return synthetic metadata
40
- if (oauthApp?.authorization_endpoint && oauthApp?.token_endpoint) {
41
- const metadata = {
42
- issuer: new URL(oauthApp.authorization_endpoint).origin,
43
- authorization_endpoint: oauthApp.authorization_endpoint,
44
- token_endpoint: oauthApp.token_endpoint,
45
- response_types_supported: ['code'],
46
- code_challenge_methods_supported: ['S256'],
47
- };
48
- return new Response(JSON.stringify(metadata), {
49
- status: 200,
50
- headers: { 'Content-Type': 'application/json' },
51
- });
52
- }
53
- // Otherwise, try the real endpoint but convert 5xx to 404
54
- const res = await fetch(input, init);
55
- if (res.status >= 500) {
56
- return new Response(null, { status: 404 });
57
- }
58
- return res;
59
- }
60
- return fetch(input, init);
61
- };
62
- }
63
- import { SOURCE_DEFINITIONS } from '../../services/sync/source-definitions/definitions.js';
64
- import { join } from 'path';
65
- /** Check if the current user is an admin (or API key mode). */
66
- function isAdmin(req) {
67
- const user = req.user;
68
- if (!user)
69
- return true; // API key / open mode
70
- return user.role === 'admin';
71
- }
72
- /** Check if user can access a repo (admin, or has collection access, or owns private collection). */
73
- function hasRepoAccess(req, repoName, workspaceManager, authService) {
74
- const user = req.user;
75
- if (!user)
76
- return true; // API key / open mode
77
- const repoConfig = workspaceManager.getRepoConfig(repoName);
78
- if (repoConfig?.private && repoConfig?.owner_id === user.id)
79
- return true;
80
- if (user.role === 'admin')
81
- return true;
82
- return authService.getUserCollections(user.id).includes(repoName);
83
- }
84
- /** Check if user can run sync on a repo (admin for shared, owner for private). */
85
- function canSync(req, repoName, workspaceManager, authService) {
86
- const user = req.user;
87
- if (!user)
88
- return true; // API key / open mode
89
- const repoConfig = workspaceManager.getRepoConfig(repoName);
90
- if (repoConfig?.private && repoConfig?.owner_id === user.id)
91
- return true;
92
- return user.role === 'admin';
93
- }
94
- export async function registerSyncApiRoutes(fastify, workspaceManager, authService, workspacePath, wsHub) {
95
- // POST /api/repos/:repo/sync — run all sync rules that apply to a collection
96
- // (collection-level rules + any workspace-level rules targeting this collection)
97
- fastify.post('/api/repos/:repo/sync', async (req, reply) => {
98
- const { repo } = req.params;
99
- if (!canSync(req, repo, workspaceManager, authService)) {
100
- return reply.status(403).send({ error: 'Only admins can sync shared collections' });
101
- }
102
- const actor = req.user?.displayName ?? 'sync';
103
- const progress = (msg) => {
104
- console.log(`[sync] ${msg}`);
105
- wsHub?.broadcast({ type: 'sync_progress', repo, message: msg, actor, timestamp: new Date().toISOString() });
106
- };
107
- try {
108
- const workspace = new Workspace(workspacePath);
109
- const config = await workspace.loadConfig();
110
- const user = req.user;
111
- const { results } = await syncRepo({
112
- workspacePath,
113
- collectionName: repo,
114
- workspaceConfig: config,
115
- schemaExtensions: config.schema_extensions,
116
- onProgress: progress,
117
- userId: user?.id,
118
- authService,
119
- serverUrl: await getServerUrl(req),
120
- });
121
- const allCreated = results.reduce((s, r) => r.targets.reduce((ts, t) => ts + t.created, 0) + s, 0);
122
- const sources = results.map(r => r.source).join(', ') || repo;
123
- wsHub?.broadcast({
124
- type: 'sync_complete',
125
- repo,
126
- source: sources,
127
- created: allCreated,
128
- updated: 0,
129
- deleted: 0,
130
- actor,
131
- timestamp: new Date().toISOString(),
132
- });
133
- return { success: true, results };
134
- }
135
- catch (err) {
136
- return reply.status(400).send({
137
- success: false,
138
- error: err instanceof Error ? err.message : 'Unknown error',
139
- });
140
- }
141
- });
142
- // POST /api/repos/:repo/import — import files as entities (any authenticated user)
143
- fastify.post('/api/repos/:repo/import', async (req, reply) => {
144
- const { repo } = req.params;
145
- if (!hasRepoAccess(req, repo, workspaceManager, authService)) {
146
- return reply.status(403).send({ error: 'Access denied' });
147
- }
148
- try {
149
- const { importFile, isSupportedFile } = await import('../../services/import-service.js');
150
- const graph = workspaceManager.getGraph(repo);
151
- const results = [];
152
- // Accept JSON body with files array: [{ filename, content }]
153
- const body = req.body;
154
- if (!body?.files || !Array.isArray(body.files)) {
155
- return reply.status(400).send({ error: 'Expected { files: [{ filename, content }] }' });
156
- }
157
- for (const file of body.files) {
158
- if (!file.filename || !isSupportedFile(file.filename)) {
159
- results.push({ entityId: '', entityType: '', status: 'error', error: `Unsupported file: ${file.filename}` });
160
- continue;
161
- }
162
- const result = await importFile(graph, file.filename, file.content);
163
- results.push(result);
164
- }
165
- // Commit all imported entities in one go
166
- const created = results.filter(r => r.status === 'created').length;
167
- if (created > 0) {
168
- const { spawnSync } = await import('child_process');
169
- const repoConfig = workspaceManager.getRepoConfig(repo);
170
- const repoPath = repoConfig ? join(workspacePath, repoConfig.path) : join(workspacePath, repo);
171
- spawnSync('git', ['add', '-A'], { cwd: repoPath, stdio: 'ignore' });
172
- spawnSync('git', ['-c', 'user.name=Studiograph Import', '-c', 'user.email=import@studiograph.local', 'commit', '-m', `import: ${created} entities`], { cwd: repoPath, stdio: 'ignore' });
173
- }
174
- return {
175
- success: true,
176
- imported: created,
177
- skipped: results.filter(r => r.status === 'skipped').length,
178
- errors: results.filter(r => r.status === 'error').map(r => r.error),
179
- results,
180
- };
181
- }
182
- catch (err) {
183
- return reply.status(400).send({
184
- success: false,
185
- error: err instanceof Error ? err.message : 'Unknown error',
186
- });
187
- }
188
- });
189
- // POST /api/sync — run all sync rules (collection-level + workspace-level)
190
- fastify.post('/api/sync', async (req, reply) => {
191
- if (!isAdmin(req)) {
192
- return reply.status(403).send({ error: 'Admin access required' });
193
- }
194
- const user = req.user;
195
- const actor = user?.displayName ?? 'sync';
196
- try {
197
- const workspace = new Workspace(workspacePath);
198
- const config = await workspace.loadConfig();
199
- const sUrl = await getServerUrl(req);
200
- const results = [];
201
- // All events from the global sync are keyed to 'workspace' so the sidebar
202
- // toast (started with startSyncToast('workspace')) receives progress updates.
203
- const broadcast = (msg) => {
204
- console.log(`[sync] ${msg}`);
205
- wsHub?.broadcast({ type: 'sync_progress', repo: 'workspace', message: msg, actor, timestamp: new Date().toISOString() });
206
- };
207
- const authCtx = { userId: user?.id, authService, serverUrl: sUrl };
208
- // Group collection-level rules by (source, entity_type) so each source is
209
- // fetched exactly once and results are distributed to all matching collections.
210
- const grouped = new Map();
211
- for (const repo of config.repos) {
212
- const collectionRules = repo.sync;
213
- if (!collectionRules || collectionRules.length === 0)
214
- continue;
215
- for (const rule of collectionRules) {
216
- const key = `${rule.source}::${rule.entity_type ?? ''}`;
217
- if (!grouped.has(key)) {
218
- grouped.set(key, { source: rule.source, entity_type: rule.entity_type, targets: [] });
219
- }
220
- grouped.get(key).targets.push({ repo: repo.name, filter: rule.filter });
221
- }
222
- }
223
- // Run each group as a single sync source call (one fetch, N writes)
224
- for (const syntheticRule of grouped.values()) {
225
- try {
226
- results.push(await syncSource({
227
- workspacePath,
228
- rule: syntheticRule,
229
- workspaceConfig: config,
230
- schemaExtensions: config.schema_extensions,
231
- onProgress: broadcast,
232
- ...authCtx,
233
- }));
234
- }
235
- catch (err) {
236
- const msg = err instanceof Error ? err.message : String(err);
237
- results.push({ source: syntheticRule.source, targets: syntheticRule.targets.map((t) => ({ repo: t.repo, created: 0, skipped: 0, derived: 0, errors: [msg] })) });
238
- }
239
- }
240
- // Run explicit workspace-level rules from config.sync
241
- for (const rule of config.sync ?? []) {
242
- try {
243
- results.push(await syncSource({
244
- workspacePath,
245
- rule,
246
- workspaceConfig: config,
247
- schemaExtensions: config.schema_extensions,
248
- onProgress: broadcast,
249
- ...authCtx,
250
- }));
251
- }
252
- catch (err) {
253
- const msg = err instanceof Error ? err.message : String(err);
254
- results.push({ source: rule.source, targets: rule.targets.map((t) => ({ repo: t.repo, created: 0, skipped: 0, derived: 0, errors: [msg] })) });
255
- }
256
- }
257
- return { success: true, results };
258
- }
259
- catch (err) {
260
- return reply.status(400).send({
261
- success: false,
262
- error: err instanceof Error ? err.message : 'Unknown error',
263
- });
264
- }
265
- });
266
- // POST /api/repos/:repo/entities/:type/:id/refresh — get refresh diff
267
- fastify.post('/api/repos/:repo/entities/:type/:id/refresh', async (req, reply) => {
268
- const { repo, type, id } = req.params;
269
- if (!hasRepoAccess(req, repo, workspaceManager, authService)) {
270
- return reply.status(403).send({ error: 'Access denied' });
271
- }
272
- try {
273
- const workspace = new Workspace(workspacePath);
274
- const config = await workspace.loadConfig();
275
- const user = req.user;
276
- const result = await refreshEntity({
277
- workspacePath,
278
- collectionName: repo,
279
- entityType: type,
280
- entityId: id,
281
- workspaceConfig: config,
282
- schemaExtensions: config.schema_extensions,
283
- apply: false,
284
- userId: user?.id,
285
- authService,
286
- serverUrl: getServerUrl(req),
287
- });
288
- return { success: true, result };
289
- }
290
- catch (err) {
291
- return reply.status(400).send({
292
- success: false,
293
- error: err instanceof Error ? err.message : 'Unknown error',
294
- });
295
- }
296
- });
297
- // POST /api/repos/:repo/entities/:type/:id/refresh/apply — apply refresh
298
- fastify.post('/api/repos/:repo/entities/:type/:id/refresh/apply', async (req, reply) => {
299
- const { repo, type, id } = req.params;
300
- if (!hasRepoAccess(req, repo, workspaceManager, authService)) {
301
- return reply.status(403).send({ error: 'Access denied' });
302
- }
303
- try {
304
- const workspace = new Workspace(workspacePath);
305
- const config = await workspace.loadConfig();
306
- const user = req.user;
307
- const result = await refreshEntity({
308
- workspacePath,
309
- collectionName: repo,
310
- entityType: type,
311
- entityId: id,
312
- workspaceConfig: config,
313
- schemaExtensions: config.schema_extensions,
314
- apply: true,
315
- userId: user?.id,
316
- authService,
317
- serverUrl: getServerUrl(req),
318
- });
319
- return { success: true, result };
320
- }
321
- catch (err) {
322
- return reply.status(400).send({
323
- success: false,
324
- error: err instanceof Error ? err.message : 'Unknown error',
325
- });
326
- }
327
- });
328
- // GET /api/repos/:repo/sync/status — sync config and last sync time
329
- fastify.get('/api/repos/:repo/sync/status', async (req, reply) => {
330
- const { repo } = req.params;
331
- if (!hasRepoAccess(req, repo, workspaceManager, authService)) {
332
- return reply.status(403).send({ error: 'Access denied' });
333
- }
334
- try {
335
- const workspace = new Workspace(workspacePath);
336
- const config = await workspace.loadConfig();
337
- const repoConfig = workspaceManager.getRepoConfig(repo);
338
- const syncRules = repoConfig?.sync;
339
- // Get synced entity count and last sync time
340
- let syncedCount = 0;
341
- let lastSync = null;
342
- try {
343
- const graph = workspaceManager.getGraph(repo);
344
- const entities = graph.list();
345
- for (const entity of entities) {
346
- const syncedAt = entity.data?.synced_at;
347
- if (syncedAt) {
348
- syncedCount++;
349
- if (!lastSync || syncedAt > lastSync)
350
- lastSync = syncedAt;
351
- }
352
- }
353
- }
354
- catch {
355
- // collection may be empty
356
- }
357
- const workspaceSyncRules = (config.sync ?? []).filter(r => r.targets.some(t => t.repo === repo));
358
- return {
359
- success: true,
360
- collection: repo,
361
- syncRules: syncRules ?? [],
362
- workspaceSyncRules,
363
- syncedCount,
364
- lastSync,
365
- };
366
- }
367
- catch (err) {
368
- return reply.status(400).send({
369
- success: false,
370
- error: err instanceof Error ? err.message : 'Unknown error',
371
- });
372
- }
373
- });
374
- // GET /api/sources — list all source definitions
375
- fastify.get('/api/sources', async (req, reply) => {
376
- if (!isAdmin(req)) {
377
- return reply.status(403).send({ error: 'Admin access required' });
378
- }
379
- const configMgr = new SourceConfigManager(workspacePath);
380
- const sources = [];
381
- const connectorConfigs = ConnectorManager.loadConfigs(workspacePath);
382
- // Scan on-disk source files
383
- const { readdirSync, existsSync } = await import('fs');
384
- const sourcesDir = join(workspacePath, '.studiograph', 'sources');
385
- const seen = new Set();
386
- if (existsSync(sourcesDir)) {
387
- for (const file of readdirSync(sourcesDir)) {
388
- if (!file.endsWith('.json'))
389
- continue;
390
- const name = file.replace('.json', '');
391
- seen.add(name);
392
- const def = configMgr.getDefinition(name);
393
- if (def) {
394
- const hasConfig = connectorConfigs.some(c => c.name === def.connector);
395
- const isKnownOAuth = KNOWN_CONNECTORS[def.connector]?.auth === 'oauth';
396
- sources.push({
397
- name,
398
- format: 'new',
399
- connector: def.connector,
400
- entityTypes: Object.keys(def.entities),
401
- localOnly: false,
402
- filterFields: def.filter_fields ?? [],
403
- configured: hasConfig || isKnownOAuth,
404
- });
405
- }
406
- else {
407
- const old = configMgr.get(name);
408
- if (old) {
409
- const hasConfig = connectorConfigs.some(c => c.name === old.connector);
410
- const isKnownOAuth = KNOWN_CONNECTORS[old.connector]?.auth === 'oauth';
411
- sources.push({
412
- name: old.name,
413
- format: 'legacy',
414
- connector: old.connector,
415
- entityTypes: old.entity_mappings.map(m => m.entity_type),
416
- localOnly: false,
417
- filterFields: SOURCE_DEFINITIONS[old.connector]?.filter_fields ?? [],
418
- configured: hasConfig || isKnownOAuth,
419
- });
420
- }
421
- }
422
- }
423
- }
424
- // Add built-in templates that don't have an on-disk file
425
- for (const [name, def] of Object.entries(SOURCE_DEFINITIONS)) {
426
- if (seen.has(name))
427
- continue;
428
- // A source is configured if: connector config exists on disk, OR it's a known OAuth connector
429
- // (OAuth connectors don't need manual config — users just click Connect)
430
- const hasConfig = connectorConfigs.some(c => c.name === def.connector);
431
- const isKnownOAuth = KNOWN_CONNECTORS[def.connector]?.auth === 'oauth';
432
- sources.push({
433
- name,
434
- format: 'new',
435
- connector: def.connector,
436
- entityTypes: Object.keys(def.entities),
437
- localOnly: false,
438
- filterFields: def.filter_fields ?? [],
439
- configured: hasConfig || isKnownOAuth,
440
- });
441
- }
442
- return { success: true, sources };
443
- });
444
- // GET /api/sources/:name — get a single source definition (full JSON)
445
- fastify.get('/api/sources/:name', async (req, reply) => {
446
- if (!isAdmin(req)) {
447
- return reply.status(403).send({ error: 'Admin access required' });
448
- }
449
- const { name } = req.params;
450
- const configMgr = new SourceConfigManager(workspacePath);
451
- const def = configMgr.getDefinition(name);
452
- if (def) {
453
- return { success: true, source: def };
454
- }
455
- const old = configMgr.get(name);
456
- if (old) {
457
- return { success: true, source: old };
458
- }
459
- return reply.status(404).send({ success: false, error: `Source "${name}" not found` });
460
- });
461
- // POST /api/sources/:name — create or update a source definition
462
- fastify.post('/api/sources/:name', async (req, reply) => {
463
- if (!isAdmin(req)) {
464
- return reply.status(403).send({ error: 'Admin access required' });
465
- }
466
- const { name } = req.params;
467
- const body = req.body;
468
- const configMgr = new SourceConfigManager(workspacePath);
469
- // Auto-create from built-in template
470
- if (body && body.fromTemplate === true) {
471
- const template = SOURCE_DEFINITIONS[name];
472
- if (!template) {
473
- return reply.status(400).send({
474
- success: false,
475
- error: `No built-in template found for "${name}"`,
476
- });
477
- }
478
- if (!template.entities || Object.keys(template.entities).length === 0) {
479
- return reply.status(400).send({
480
- success: false,
481
- error: `Template for "${name}" has no entity configs`,
482
- });
483
- }
484
- const savedDef = { ...template, name, enabled: true, added_at: new Date().toISOString() };
485
- configMgr.saveDefinition(name, savedDef);
486
- return { success: true, message: `Source "${name}" created from template` };
487
- }
488
- // Standard create/update with full definition
489
- const validation = configMgr.validateDefinition(body);
490
- if (!validation.valid) {
491
- return reply.status(400).send({
492
- success: false,
493
- errors: validation.errors,
494
- });
495
- }
496
- configMgr.saveDefinition(name, body);
497
- return { success: true, message: `Source "${name}" saved` };
498
- });
499
- // DELETE /api/sources/:name — remove a source definition
500
- fastify.delete('/api/sources/:name', async (req, reply) => {
501
- if (!isAdmin(req)) {
502
- return reply.status(403).send({ error: 'Admin access required' });
503
- }
504
- const { name } = req.params;
505
- const configMgr = new SourceConfigManager(workspacePath);
506
- const removed = configMgr.remove(name);
507
- if (removed) {
508
- return { success: true, message: `Source "${name}" removed` };
509
- }
510
- return reply.status(404).send({ success: false, error: `Source "${name}" not found` });
511
- });
512
- // GET /api/connectors — list known + installed MCP connectors with status
513
- fastify.get('/api/connectors', async (req, reply) => {
514
- const user = req.user;
515
- const userId = user?.id;
516
- const configMgr = new SourceConfigManager(workspacePath);
517
- const installedConfigs = ConnectorManager.loadConfigs(workspacePath);
518
- const installedMap = new Map(installedConfigs.map(c => [c.name, c]));
519
- const connectors = [];
520
- // 1. All known connectors (always listed)
521
- for (const [name, known] of Object.entries(KNOWN_CONNECTORS)) {
522
- const installed = installedMap.get(name);
523
- const hasSource = configMgr.getDefinition(name) !== null || configMgr.get(name) !== null;
524
- const template = SOURCE_DEFINITIONS[name];
525
- const hasTemplate = !!(template?.entities && Object.keys(template.entities).length > 0);
526
- // Connected if: OAuth tokens exist for this user, or manual headers present
527
- let connected = false;
528
- if (known.auth === 'oauth' && userId) {
529
- connected = authService.hasOAuthTokens(userId, name);
530
- }
531
- else if (known.auth === 'none') {
532
- connected = !!installed; // local connectors are "connected" when configured
533
- }
534
- else if (installed?.headers?.['Authorization']) {
535
- connected = true;
536
- }
537
- const secretEnv = known.oauth?.client_secret_env;
538
- const oauthConfigured = !secretEnv || !!process.env[secretEnv];
539
- connectors.push({
540
- name,
541
- url: known.url,
542
- description: installed?.description || known.description,
543
- configured: !!installed,
544
- connected,
545
- auth: known.auth,
546
- hasSource,
547
- hasTemplate,
548
- isKnown: true,
549
- oauthConfigured,
550
- });
551
- installedMap.delete(name);
552
- }
553
- // 2. Custom user-added connectors (not in KNOWN_CONNECTORS)
554
- for (const config of installedMap.values()) {
555
- const hasSource = configMgr.getDefinition(config.name) !== null || configMgr.get(config.name) !== null;
556
- const template = SOURCE_DEFINITIONS[config.name];
557
- const hasTemplate = !!(template?.entities && Object.keys(template.entities).length > 0);
558
- connectors.push({
559
- name: config.name,
560
- url: config.url,
561
- description: config.description || '',
562
- configured: true,
563
- connected: !!config.headers?.['Authorization'],
564
- auth: config.auth ?? 'headers',
565
- hasSource,
566
- hasTemplate,
567
- isKnown: false,
568
- oauthConfigured: true, // custom connectors don't use pre-registered OAuth
569
- });
570
- }
571
- return { success: true, connectors };
572
- });
573
- // GET /api/connectors/:name/config — get connector config with masked secrets
574
- fastify.get('/api/connectors/:name/config', async (req, reply) => {
575
- if (!isAdmin(req)) {
576
- return reply.status(403).send({ error: 'Admin access required' });
577
- }
578
- const { name } = req.params;
579
- const config = ConnectorManager.loadConfig(name, workspacePath);
580
- if (!config) {
581
- return { success: true, config: null };
582
- }
583
- // Mask Authorization header
584
- const masked = { ...config };
585
- if (masked.headers) {
586
- masked.headers = { ...masked.headers };
587
- for (const key of Object.keys(masked.headers)) {
588
- if (key.toLowerCase() === 'authorization') {
589
- masked.headers[key] = '••••••••';
590
- }
591
- }
592
- }
593
- return { success: true, config: masked };
594
- });
595
- // POST /api/connectors/:name/config — create or update connector config
596
- fastify.post('/api/connectors/:name/config', async (req, reply) => {
597
- if (!isAdmin(req)) {
598
- return reply.status(403).send({ error: 'Admin access required' });
599
- }
600
- const { name } = req.params;
601
- const body = req.body;
602
- if (!body || !body.url) {
603
- return reply.status(400).send({ error: 'url is required' });
604
- }
605
- const config = {
606
- name,
607
- url: body.url,
608
- headers: body.headers,
609
- description: body.description ?? name,
610
- };
611
- ConnectorManager.saveConfig(config);
612
- ConnectorManager.saveWorkspaceConfig(config, workspacePath);
613
- // Auto-create source definition from template if one exists
614
- const template = SOURCE_DEFINITIONS[name];
615
- if (template) {
616
- const configMgr = new SourceConfigManager(workspacePath);
617
- const existingSource = configMgr.getDefinition(name);
618
- if (!existingSource && template.entities && Object.keys(template.entities).length > 0) {
619
- const savedDef = { ...template, name, enabled: true, added_at: new Date().toISOString() };
620
- configMgr.saveDefinition(name, savedDef);
621
- }
622
- }
623
- return { success: true, message: `Connector "${name}" configured` };
624
- });
625
- // DELETE /api/connectors/:name/config — remove connector config
626
- fastify.delete('/api/connectors/:name/config', async (req, reply) => {
627
- if (!isAdmin(req)) {
628
- return reply.status(403).send({ error: 'Admin access required' });
629
- }
630
- const { name } = req.params;
631
- const removed = ConnectorManager.removeConfig(name, workspacePath);
632
- if (removed) {
633
- return { success: true, message: `Connector "${name}" removed` };
634
- }
635
- return reply.status(404).send({ success: false, error: `No config for "${name}"` });
636
- });
637
- // ── OAuth flow routes ────────────────────────────────────────────────────
638
- /** Resolve the server's public URL for OAuth callbacks. Uses request headers so it works on both localhost and production. */
639
- function getServerUrl(req) {
640
- const proto = req.headers['x-forwarded-proto'] || req.protocol || 'http';
641
- const host = req.headers['x-forwarded-host'] || req.headers.host || req.hostname;
642
- return `${proto}://${host}`;
643
- }
644
- // POST /api/connectors/:name/oauth/authorize — initiate OAuth flow
645
- fastify.post('/api/connectors/:name/oauth/authorize', async (req, reply) => {
646
- const user = req.user;
647
- if (!user)
648
- return reply.status(401).send({ error: 'Authentication required' });
649
- const { name } = req.params;
650
- const known = KNOWN_CONNECTORS[name];
651
- if (!known) {
652
- return reply.status(400).send({ error: `Unknown connector "${name}". OAuth is only available for known connectors.` });
653
- }
654
- // Ensure connector config exists
655
- let config = ConnectorManager.loadConfig(name, workspacePath);
656
- if (!config) {
657
- config = { name, url: known.url, auth: 'oauth', description: known.description };
658
- ConnectorManager.saveConfig(config);
659
- ConnectorManager.saveWorkspaceConfig(config, workspacePath);
660
- }
661
- const serverUrl = getServerUrl(req);
662
- const provider = new ServerOAuthProvider(name, user.id, authService, serverUrl, known.oauth);
663
- try {
664
- const result = await mcpAuth(provider, { serverUrl: known.url, fetchFn: createOAuthFetch(known.oauth) });
665
- if (result === 'AUTHORIZED') {
666
- // Already authorized (tokens valid)
667
- return { success: true, connected: true };
668
- }
669
- // result === 'REDIRECT' — provider.authorizationUrl is set
670
- if (!provider.authorizationUrl) {
671
- return reply.status(500).send({ error: 'OAuth flow did not produce an authorization URL' });
672
- }
673
- return { success: true, authorizationUrl: provider.authorizationUrl };
674
- }
675
- catch (err) {
676
- const msg = err instanceof Error ? err.message : String(err);
677
- console.error(`[oauth] authorize error for ${name}:`, msg);
678
- return reply.status(500).send({ error: `OAuth initialization failed: ${msg}` });
679
- }
680
- });
681
- // GET /api/oauth/callback/:name — OAuth callback (browser redirect from OAuth provider)
682
- // Public endpoint — user identity comes from the state parameter (cross-site redirects don't carry cookies).
683
- fastify.get('/api/oauth/callback/:name', async (req, reply) => {
684
- const { name } = req.params;
685
- try {
686
- const { code, state } = req.query;
687
- const known = KNOWN_CONNECTORS[name];
688
- if (!code) {
689
- const error = req.query.error || 'missing authorization code';
690
- return reply.type('text/html').send(`<html><body><h2>Authorization failed</h2><p>${error}</p><p>You can close this tab.</p></body></html>`);
691
- }
692
- if (!known) {
693
- return reply.status(400).type('text/html').send(`<html><body><h2>Unknown connector</h2><p>"${name}" is not a known connector.</p></body></html>`);
694
- }
695
- const decoded = state ? decodeOAuthState(state) : null;
696
- if (!decoded) {
697
- return reply.status(400).type('text/html').send('<html><body><h2>Authorization failed</h2><p>Invalid or missing state parameter. Please try connecting again.</p></body></html>');
698
- }
699
- const serverUrl = getServerUrl(req);
700
- const provider = new ServerOAuthProvider(decoded.connectorName, decoded.userId, authService, serverUrl, known?.oauth);
701
- await mcpAuth(provider, { serverUrl: known.url, authorizationCode: code, fetchFn: createOAuthFetch(known?.oauth) });
702
- return reply.type('text/html').send(`<html><body><h2>Connected to ${name}</h2><p>You can close this tab and return to Studiograph.</p></body></html>`);
703
- }
704
- catch (err) {
705
- const msg = err instanceof Error ? err.message : String(err);
706
- console.error(`[oauth] callback error for ${name}:`, msg);
707
- return reply.type('text/html').send(`<html><body><h2>Authorization failed</h2><p>${msg}</p><p>You can close this tab and try again.</p></body></html>`);
708
- }
709
- });
710
- // GET /api/connectors/:name/oauth/status — poll for OAuth connection status
711
- fastify.get('/api/connectors/:name/oauth/status', async (req, reply) => {
712
- const user = req.user;
713
- if (!user)
714
- return reply.status(401).send({ error: 'Authentication required' });
715
- const { name } = req.params;
716
- const connected = authService.hasOAuthTokens(user.id, name);
717
- const known = KNOWN_CONNECTORS[name];
718
- // Check if the required client secret env var is set on the server
719
- const secretEnv = known?.oauth?.client_secret_env;
720
- const oauthConfigured = !secretEnv || !!process.env[secretEnv];
721
- return { connected, oauthConfigured };
722
- });
723
- // POST /api/connectors/:name/oauth/disconnect — clear OAuth tokens
724
- fastify.post('/api/connectors/:name/oauth/disconnect', async (req, reply) => {
725
- const user = req.user;
726
- if (!user)
727
- return reply.status(401).send({ error: 'Authentication required' });
728
- const { name } = req.params;
729
- authService.clearOAuthData(user.id, name);
730
- return { success: true };
731
- });
732
- // GET /api/config/bundle — export all shareable workspace config (admin only)
733
- fastify.get('/api/config/bundle', async (req, reply) => {
734
- if (!isAdmin(req)) {
735
- return reply.status(403).send({ error: 'Admin access required' });
736
- }
737
- const { readdirSync, readFileSync, existsSync } = await import('fs');
738
- const workspace = new Workspace(workspacePath);
739
- const config = await workspace.loadConfig();
740
- const about = workspace.loadAbout();
741
- const seed = authService.getSeedData();
742
- // Source definitions
743
- const sources = {};
744
- const sourcesDir = join(workspacePath, '.studiograph', 'sources');
745
- if (existsSync(sourcesDir)) {
746
- for (const entry of readdirSync(sourcesDir)) {
747
- if (!entry.endsWith('.json'))
748
- continue;
749
- try {
750
- sources[entry.replace('.json', '')] = JSON.parse(readFileSync(join(sourcesDir, entry), 'utf-8'));
751
- }
752
- catch { /* skip malformed */ }
753
- }
754
- }
755
- // Workspace connector configs (already stripped of secrets)
756
- const connectors = ConnectorManager.loadWorkspaceConfigs(workspacePath);
757
- return reply.send({ workspace: config, about, authSeed: seed, sources, connectors });
758
- });
759
- // POST /api/config/bundle — import config bundle from a remote admin (admin only)
760
- fastify.post('/api/config/bundle', async (req, reply) => {
761
- if (!isAdmin(req)) {
762
- return reply.status(403).send({ error: 'Admin access required' });
763
- }
764
- const { mkdirSync, writeFileSync } = await import('fs');
765
- const bundle = req.body;
766
- if (!bundle) {
767
- return reply.status(400).send({ error: 'Request body is required' });
768
- }
769
- const sgDir = join(workspacePath, '.studiograph');
770
- const applied = [];
771
- // 1. Workspace config — merge: keep server-local fields, update shared fields
772
- if (bundle.workspace) {
773
- const workspace = new Workspace(workspacePath);
774
- const local = await workspace.loadConfig().catch(() => ({}));
775
- const merged = { ...local, ...bundle.workspace };
776
- // Preserve server-local fields
777
- if (local.server_url)
778
- merged.server_url = local.server_url;
779
- writeFileSync(join(sgDir, 'workspace.json'), JSON.stringify(merged, null, 2), 'utf-8');
780
- applied.push('workspace');
781
- }
782
- // 2. ABOUT.md
783
- if (bundle.about !== undefined && bundle.about !== null) {
784
- writeFileSync(join(sgDir, 'ABOUT.md'), bundle.about, 'utf-8');
785
- applied.push('about');
786
- }
787
- // 3. Auth seed
788
- if (bundle.authSeed) {
789
- writeFileSync(join(sgDir, 'auth-seed.json'), JSON.stringify(bundle.authSeed, null, 2), 'utf-8');
790
- authService.applySeed();
791
- applied.push(`auth (${bundle.authSeed.users?.length ?? 0} users)`);
792
- }
793
- // 4. Sources
794
- if (bundle.sources && Object.keys(bundle.sources).length > 0) {
795
- const sourcesDir = join(sgDir, 'sources');
796
- mkdirSync(sourcesDir, { recursive: true });
797
- for (const [name, def] of Object.entries(bundle.sources)) {
798
- writeFileSync(join(sourcesDir, `${name}.json`), JSON.stringify(def, null, 2), 'utf-8');
799
- }
800
- applied.push(`sources (${Object.keys(bundle.sources).join(', ')})`);
801
- }
802
- // 5. Connectors (sanitized)
803
- if (bundle.connectors && bundle.connectors.length > 0) {
804
- const connectorsDir = join(sgDir, 'connectors');
805
- mkdirSync(connectorsDir, { recursive: true });
806
- for (const conn of bundle.connectors) {
807
- writeFileSync(join(connectorsDir, `${conn.name}.json`), JSON.stringify(conn, null, 2), 'utf-8');
808
- }
809
- applied.push(`connectors (${bundle.connectors.map((c) => c.name).join(', ')})`);
810
- }
811
- return reply.send({ success: true, applied });
812
- });
813
- }
814
- //# sourceMappingURL=sync-api.js.map