studiograph 1.3.46 → 1.3.48-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1057) hide show
  1. package/README.md +26 -16
  2. package/dist/agent/agent-pool.d.ts +117 -0
  3. package/dist/agent/agent-pool.js +287 -0
  4. package/dist/agent/agent-pool.js.map +1 -0
  5. package/dist/agent/followups.d.ts +34 -0
  6. package/dist/agent/followups.js +52 -0
  7. package/dist/agent/followups.js.map +1 -0
  8. package/dist/agent/orchestrator.d.ts +113 -22
  9. package/dist/agent/orchestrator.js +573 -181
  10. package/dist/agent/orchestrator.js.map +1 -1
  11. package/dist/agent/prompts/entity-types-section.d.ts +36 -0
  12. package/dist/agent/prompts/entity-types-section.js +90 -0
  13. package/dist/agent/prompts/entity-types-section.js.map +1 -0
  14. package/dist/agent/prompts/system.md +148 -69
  15. package/dist/agent/skill-loader.d.ts +30 -17
  16. package/dist/agent/skill-loader.js +63 -30
  17. package/dist/agent/skill-loader.js.map +1 -1
  18. package/dist/agent/skills/entity-schema.md +77 -433
  19. package/dist/agent/skills/interview/entity-templates.md +193 -0
  20. package/dist/agent/skills/interview/question-domains.md +391 -0
  21. package/dist/agent/skills/interview/skill.md +204 -0
  22. package/dist/agent/skills/schema-rules.md +54 -0
  23. package/dist/agent/tools/capture-tools.d.ts +31 -0
  24. package/dist/agent/tools/capture-tools.js +40 -0
  25. package/dist/agent/tools/capture-tools.js.map +1 -0
  26. package/dist/agent/tools/folder-tools.d.ts +47 -0
  27. package/dist/agent/tools/folder-tools.js +249 -0
  28. package/dist/agent/tools/folder-tools.js.map +1 -0
  29. package/dist/agent/tools/fs-tools.d.ts +7 -6
  30. package/dist/agent/tools/fs-tools.js +5 -4
  31. package/dist/agent/tools/fs-tools.js.map +1 -1
  32. package/dist/agent/tools/graph-tools.d.ts +21 -58
  33. package/dist/agent/tools/graph-tools.js +635 -332
  34. package/dist/agent/tools/graph-tools.js.map +1 -1
  35. package/dist/agent/tools/history-tools.d.ts +95 -0
  36. package/dist/agent/tools/history-tools.js +461 -0
  37. package/dist/agent/tools/history-tools.js.map +1 -0
  38. package/dist/agent/tools/load-skill.d.ts +6 -5
  39. package/dist/agent/tools/load-skill.js +3 -3
  40. package/dist/agent/tools/load-skill.js.map +1 -1
  41. package/dist/agent/tools/ops-tools.d.ts +5 -4
  42. package/dist/agent/tools/ops-tools.js +130 -236
  43. package/dist/agent/tools/ops-tools.js.map +1 -1
  44. package/dist/agent/tools/permission-tools.d.ts +87 -17
  45. package/dist/agent/tools/permission-tools.js +233 -38
  46. package/dist/agent/tools/permission-tools.js.map +1 -1
  47. package/dist/agent/tools/tool-loader.js +5 -4
  48. package/dist/agent/tools/tool-loader.js.map +1 -1
  49. package/dist/agent/tools/web-tools.d.ts +18 -0
  50. package/dist/agent/tools/web-tools.js +283 -0
  51. package/dist/agent/tools/web-tools.js.map +1 -0
  52. package/dist/cli/commands/about.d.ts +1 -0
  53. package/dist/cli/commands/about.js +55 -3
  54. package/dist/cli/commands/about.js.map +1 -1
  55. package/dist/cli/commands/admin/audit-workspace.d.ts +23 -0
  56. package/dist/cli/commands/admin/audit-workspace.js +133 -0
  57. package/dist/cli/commands/admin/audit-workspace.js.map +1 -0
  58. package/dist/cli/commands/admin/audit.d.ts +21 -0
  59. package/dist/cli/commands/admin/audit.js +174 -0
  60. package/dist/cli/commands/admin/audit.js.map +1 -0
  61. package/dist/cli/commands/admin/backup.d.ts +54 -0
  62. package/dist/cli/commands/admin/backup.js +207 -0
  63. package/dist/cli/commands/admin/backup.js.map +1 -0
  64. package/dist/cli/commands/admin/folder.d.ts +11 -0
  65. package/dist/cli/commands/admin/folder.js +186 -0
  66. package/dist/cli/commands/admin/folder.js.map +1 -0
  67. package/dist/cli/commands/admin/index.d.ts +16 -0
  68. package/dist/cli/commands/admin/index.js +46 -0
  69. package/dist/cli/commands/admin/index.js.map +1 -0
  70. package/dist/cli/commands/admin/migrate-assets.d.ts +53 -0
  71. package/dist/cli/commands/admin/migrate-assets.js +184 -0
  72. package/dist/cli/commands/admin/migrate-assets.js.map +1 -0
  73. package/dist/cli/commands/admin/migrate.d.ts +56 -0
  74. package/dist/cli/commands/admin/migrate.js +263 -0
  75. package/dist/cli/commands/admin/migrate.js.map +1 -0
  76. package/dist/cli/commands/admin/restore.d.ts +24 -0
  77. package/dist/cli/commands/admin/restore.js +228 -0
  78. package/dist/cli/commands/admin/restore.js.map +1 -0
  79. package/dist/cli/commands/admin/secrets.d.ts +23 -0
  80. package/dist/cli/commands/admin/secrets.js +256 -0
  81. package/dist/cli/commands/admin/secrets.js.map +1 -0
  82. package/dist/cli/commands/admin/settings.d.ts +28 -0
  83. package/dist/cli/commands/admin/settings.js +284 -0
  84. package/dist/cli/commands/admin/settings.js.map +1 -0
  85. package/dist/cli/commands/admin/token.d.ts +42 -0
  86. package/dist/cli/commands/admin/token.js +126 -0
  87. package/dist/cli/commands/admin/token.js.map +1 -0
  88. package/dist/cli/commands/admin/transfer-ownership.d.ts +15 -0
  89. package/dist/cli/commands/admin/transfer-ownership.js +106 -0
  90. package/dist/cli/commands/admin/transfer-ownership.js.map +1 -0
  91. package/dist/cli/commands/admin/user.d.ts +11 -0
  92. package/dist/cli/commands/admin/user.js +187 -0
  93. package/dist/cli/commands/admin/user.js.map +1 -0
  94. package/dist/cli/commands/clone.d.ts +25 -3
  95. package/dist/cli/commands/clone.js +142 -36
  96. package/dist/cli/commands/clone.js.map +1 -1
  97. package/dist/cli/commands/commit.d.ts +1 -1
  98. package/dist/cli/commands/commit.js +24 -11
  99. package/dist/cli/commands/commit.js.map +1 -1
  100. package/dist/cli/commands/config.d.ts +23 -107
  101. package/dist/cli/commands/config.js +52 -260
  102. package/dist/cli/commands/config.js.map +1 -1
  103. package/dist/cli/commands/connector.d.ts +10 -13
  104. package/dist/cli/commands/connector.js +16 -58
  105. package/dist/cli/commands/connector.js.map +1 -1
  106. package/dist/cli/commands/deploy.js +215 -68
  107. package/dist/cli/commands/deploy.js.map +1 -1
  108. package/dist/cli/commands/index.js +2 -2
  109. package/dist/cli/commands/index.js.map +1 -1
  110. package/dist/cli/commands/init.js +10 -30
  111. package/dist/cli/commands/init.js.map +1 -1
  112. package/dist/cli/commands/mcp.js +12 -4
  113. package/dist/cli/commands/mcp.js.map +1 -1
  114. package/dist/cli/commands/orphans.js +14 -30
  115. package/dist/cli/commands/orphans.js.map +1 -1
  116. package/dist/cli/commands/r2.d.ts +3 -0
  117. package/dist/cli/commands/r2.js +223 -204
  118. package/dist/cli/commands/r2.js.map +1 -1
  119. package/dist/cli/commands/redeploy.js +65 -12
  120. package/dist/cli/commands/redeploy.js.map +1 -1
  121. package/dist/cli/commands/reset.d.ts +22 -6
  122. package/dist/cli/commands/reset.js +142 -63
  123. package/dist/cli/commands/reset.js.map +1 -1
  124. package/dist/cli/commands/serve.js +209 -24
  125. package/dist/cli/commands/serve.js.map +1 -1
  126. package/dist/cli/commands/sync.d.ts +1 -1
  127. package/dist/cli/commands/sync.js +372 -202
  128. package/dist/cli/commands/sync.js.map +1 -1
  129. package/dist/cli/crypto-bundle.d.ts +39 -0
  130. package/dist/cli/crypto-bundle.js +94 -0
  131. package/dist/cli/crypto-bundle.js.map +1 -0
  132. package/dist/cli/index.js +24 -35
  133. package/dist/cli/index.js.map +1 -1
  134. package/dist/cli/railway-pin.d.ts +68 -0
  135. package/dist/cli/railway-pin.js +96 -0
  136. package/dist/cli/railway-pin.js.map +1 -0
  137. package/dist/cli/railway-provisioning.d.ts +53 -0
  138. package/dist/cli/railway-provisioning.js +85 -0
  139. package/dist/cli/railway-provisioning.js.map +1 -0
  140. package/dist/cli/setup-wizard.d.ts +33 -52
  141. package/dist/cli/setup-wizard.js +43 -68
  142. package/dist/cli/setup-wizard.js.map +1 -1
  143. package/dist/core/accent-palette.d.ts +22 -0
  144. package/dist/core/accent-palette.js +47 -0
  145. package/dist/core/accent-palette.js.map +1 -0
  146. package/dist/core/cell-anchor.d.ts +29 -0
  147. package/dist/core/cell-anchor.js +53 -0
  148. package/dist/core/cell-anchor.js.map +1 -0
  149. package/dist/core/comment-anchor.d.ts +41 -0
  150. package/dist/core/comment-anchor.js +147 -0
  151. package/dist/core/comment-anchor.js.map +1 -0
  152. package/dist/core/commit-messages.d.ts +57 -0
  153. package/dist/core/commit-messages.js +85 -0
  154. package/dist/core/commit-messages.js.map +1 -0
  155. package/dist/core/embeds.d.ts +56 -0
  156. package/dist/core/embeds.js +103 -0
  157. package/dist/core/embeds.js.map +1 -0
  158. package/dist/core/entity-body-templates.d.ts +21 -0
  159. package/dist/core/entity-body-templates.js +53 -0
  160. package/dist/core/entity-body-templates.js.map +1 -0
  161. package/dist/core/entity-types-catalog.d.ts +65 -0
  162. package/dist/core/entity-types-catalog.js +140 -0
  163. package/dist/core/entity-types-catalog.js.map +1 -0
  164. package/dist/core/folder-paths.d.ts +41 -0
  165. package/dist/core/folder-paths.js +95 -0
  166. package/dist/core/folder-paths.js.map +1 -0
  167. package/dist/core/folder-sidecar.d.ts +36 -0
  168. package/dist/core/folder-sidecar.js +91 -0
  169. package/dist/core/folder-sidecar.js.map +1 -0
  170. package/dist/core/graph.d.ts +675 -14
  171. package/dist/core/graph.js +2118 -314
  172. package/dist/core/graph.js.map +1 -1
  173. package/dist/core/history-diff.d.ts +35 -0
  174. package/dist/core/history-diff.js +114 -0
  175. package/dist/core/history-diff.js.map +1 -0
  176. package/dist/core/schema-registry.d.ts +59 -0
  177. package/dist/core/schema-registry.js +198 -0
  178. package/dist/core/schema-registry.js.map +1 -1
  179. package/dist/core/schemas/connector.d.ts +67 -0
  180. package/dist/core/schemas/connector.js +100 -0
  181. package/dist/core/schemas/connector.js.map +1 -0
  182. package/dist/core/schemas/workspace.d.ts +122 -0
  183. package/dist/core/schemas/workspace.js +211 -0
  184. package/dist/core/schemas/workspace.js.map +1 -0
  185. package/dist/core/secrets/SecretStore.d.ts +77 -0
  186. package/dist/core/secrets/SecretStore.js +13 -0
  187. package/dist/core/secrets/SecretStore.js.map +1 -0
  188. package/dist/core/secrets/SettingsResolver.d.ts +54 -0
  189. package/dist/core/secrets/SettingsResolver.js +80 -0
  190. package/dist/core/secrets/SettingsResolver.js.map +1 -0
  191. package/dist/core/secrets/SettingsStore.d.ts +30 -0
  192. package/dist/core/secrets/SettingsStore.js +9 -0
  193. package/dist/core/secrets/SettingsStore.js.map +1 -0
  194. package/dist/core/secrets/SqliteEncryptedStore.d.ts +90 -0
  195. package/dist/core/secrets/SqliteEncryptedStore.js +598 -0
  196. package/dist/core/secrets/SqliteEncryptedStore.js.map +1 -0
  197. package/dist/core/secrets/audit.d.ts +36 -0
  198. package/dist/core/secrets/audit.js +60 -0
  199. package/dist/core/secrets/audit.js.map +1 -0
  200. package/dist/core/secrets/auth-db-migration.d.ts +129 -0
  201. package/dist/core/secrets/auth-db-migration.js +653 -0
  202. package/dist/core/secrets/auth-db-migration.js.map +1 -0
  203. package/dist/core/secrets/bundle.d.ts +141 -0
  204. package/dist/core/secrets/bundle.js +435 -0
  205. package/dist/core/secrets/bundle.js.map +1 -0
  206. package/dist/core/secrets/dual-write.d.ts +81 -0
  207. package/dist/core/secrets/dual-write.js +247 -0
  208. package/dist/core/secrets/dual-write.js.map +1 -0
  209. package/dist/core/secrets/encryption.d.ts +44 -0
  210. package/dist/core/secrets/encryption.js +97 -0
  211. package/dist/core/secrets/encryption.js.map +1 -0
  212. package/dist/core/secrets/index.d.ts +49 -0
  213. package/dist/core/secrets/index.js +74 -0
  214. package/dist/core/secrets/index.js.map +1 -0
  215. package/dist/core/secrets/master-key.d.ts +38 -0
  216. package/dist/core/secrets/master-key.js +122 -0
  217. package/dist/core/secrets/master-key.js.map +1 -0
  218. package/dist/core/secrets/probes/anthropic.d.ts +98 -0
  219. package/dist/core/secrets/probes/anthropic.js +300 -0
  220. package/dist/core/secrets/probes/anthropic.js.map +1 -0
  221. package/dist/core/secrets/probes/brave.d.ts +9 -0
  222. package/dist/core/secrets/probes/brave.js +15 -0
  223. package/dist/core/secrets/probes/brave.js.map +1 -0
  224. package/dist/core/secrets/probes/r2.d.ts +15 -0
  225. package/dist/core/secrets/probes/r2.js +14 -0
  226. package/dist/core/secrets/probes/r2.js.map +1 -0
  227. package/dist/core/secrets/probes/voyage.d.ts +13 -0
  228. package/dist/core/secrets/probes/voyage.js +52 -0
  229. package/dist/core/secrets/probes/voyage.js.map +1 -0
  230. package/dist/core/secrets/r2-structural-migration.d.ts +39 -0
  231. package/dist/core/secrets/r2-structural-migration.js +109 -0
  232. package/dist/core/secrets/r2-structural-migration.js.map +1 -0
  233. package/dist/core/secrets/read-flip.d.ts +59 -0
  234. package/dist/core/secrets/read-flip.js +87 -0
  235. package/dist/core/secrets/read-flip.js.map +1 -0
  236. package/dist/core/secrets/registry.d.ts +188 -0
  237. package/dist/core/secrets/registry.js +598 -0
  238. package/dist/core/secrets/registry.js.map +1 -0
  239. package/dist/core/types.d.ts +77 -455
  240. package/dist/core/types.js +17 -3
  241. package/dist/core/types.js.map +1 -1
  242. package/dist/core/user-config.d.ts +75 -7
  243. package/dist/core/user-config.js +155 -7
  244. package/dist/core/user-config.js.map +1 -1
  245. package/dist/core/validation.d.ts +717 -1791
  246. package/dist/core/validation.js +357 -228
  247. package/dist/core/validation.js.map +1 -1
  248. package/dist/core/workspace-manager.d.ts +79 -12
  249. package/dist/core/workspace-manager.js +213 -73
  250. package/dist/core/workspace-manager.js.map +1 -1
  251. package/dist/core/workspace.d.ts +19 -5
  252. package/dist/core/workspace.js +69 -35
  253. package/dist/core/workspace.js.map +1 -1
  254. package/dist/mcp/comment-virtual-entity.d.ts +36 -0
  255. package/dist/mcp/comment-virtual-entity.js +71 -0
  256. package/dist/mcp/comment-virtual-entity.js.map +1 -0
  257. package/dist/mcp/connector-manager.d.ts +94 -13
  258. package/dist/mcp/connector-manager.js +283 -62
  259. package/dist/mcp/connector-manager.js.map +1 -1
  260. package/dist/mcp/oauth-provider.d.ts +27 -33
  261. package/dist/mcp/oauth-provider.js +65 -134
  262. package/dist/mcp/oauth-provider.js.map +1 -1
  263. package/dist/mcp/oauth-registry.d.ts +62 -0
  264. package/dist/mcp/oauth-registry.js +85 -0
  265. package/dist/mcp/oauth-registry.js.map +1 -0
  266. package/dist/mcp/server.d.ts +11 -3
  267. package/dist/mcp/server.js +30 -5
  268. package/dist/mcp/server.js.map +1 -1
  269. package/dist/mcp/state-signer.d.ts +41 -0
  270. package/dist/mcp/state-signer.js +120 -0
  271. package/dist/mcp/state-signer.js.map +1 -0
  272. package/dist/mcp/tools.d.ts +35 -2
  273. package/dist/mcp/tools.js +1051 -117
  274. package/dist/mcp/tools.js.map +1 -1
  275. package/dist/server/__tests__/helpers/graph-api.d.ts +18 -0
  276. package/dist/server/__tests__/helpers/graph-api.js +16 -0
  277. package/dist/server/__tests__/helpers/graph-api.js.map +1 -0
  278. package/dist/server/body-write-coordinator.d.ts +151 -0
  279. package/dist/server/body-write-coordinator.js +161 -0
  280. package/dist/server/body-write-coordinator.js.map +1 -0
  281. package/dist/server/cloud-billing-flow.d.ts +32 -0
  282. package/dist/server/cloud-billing-flow.js +75 -0
  283. package/dist/server/cloud-billing-flow.js.map +1 -0
  284. package/dist/server/commit-audit.d.ts +26 -0
  285. package/dist/server/commit-audit.js +30 -0
  286. package/dist/server/commit-audit.js.map +1 -0
  287. package/dist/server/index.d.ts +14 -3
  288. package/dist/server/index.js +451 -193
  289. package/dist/server/index.js.map +1 -1
  290. package/dist/server/middleware/sanitize.d.ts +46 -0
  291. package/dist/server/middleware/sanitize.js +171 -0
  292. package/dist/server/middleware/sanitize.js.map +1 -0
  293. package/dist/server/routes/asset-api.d.ts +10 -0
  294. package/dist/server/routes/asset-api.js +294 -0
  295. package/dist/server/routes/asset-api.js.map +1 -0
  296. package/dist/server/routes/audit-api.d.ts +24 -0
  297. package/dist/server/routes/audit-api.js +117 -0
  298. package/dist/server/routes/audit-api.js.map +1 -0
  299. package/dist/server/routes/auth-api.d.ts +3 -2
  300. package/dist/server/routes/auth-api.js +519 -38
  301. package/dist/server/routes/auth-api.js.map +1 -1
  302. package/dist/server/routes/capture-api.d.ts +18 -0
  303. package/dist/server/routes/capture-api.js +257 -0
  304. package/dist/server/routes/capture-api.js.map +1 -0
  305. package/dist/server/routes/chat.d.ts +4 -1
  306. package/dist/server/routes/chat.js +298 -88
  307. package/dist/server/routes/chat.js.map +1 -1
  308. package/dist/server/routes/comments-api.d.ts +15 -0
  309. package/dist/server/routes/comments-api.js +444 -0
  310. package/dist/server/routes/comments-api.js.map +1 -0
  311. package/dist/server/routes/config-api.d.ts +21 -0
  312. package/dist/server/routes/config-api.js +256 -0
  313. package/dist/server/routes/config-api.js.map +1 -0
  314. package/dist/server/routes/connectors-api.d.ts +17 -0
  315. package/dist/server/routes/connectors-api.js +410 -0
  316. package/dist/server/routes/connectors-api.js.map +1 -0
  317. package/dist/server/routes/event-ingest-api.d.ts +15 -0
  318. package/dist/server/routes/event-ingest-api.js +125 -0
  319. package/dist/server/routes/event-ingest-api.js.map +1 -0
  320. package/dist/server/routes/git-http.d.ts +3 -3
  321. package/dist/server/routes/git-http.js +86 -38
  322. package/dist/server/routes/git-http.js.map +1 -1
  323. package/dist/server/routes/graph-api-access.d.ts +35 -0
  324. package/dist/server/routes/graph-api-access.js +105 -0
  325. package/dist/server/routes/graph-api-access.js.map +1 -0
  326. package/dist/server/routes/graph-api.d.ts +3 -2
  327. package/dist/server/routes/graph-api.js +1321 -263
  328. package/dist/server/routes/graph-api.js.map +1 -1
  329. package/dist/server/routes/health.d.ts +18 -0
  330. package/dist/server/routes/health.js +74 -0
  331. package/dist/server/routes/health.js.map +1 -0
  332. package/dist/server/routes/insights-api.d.ts +1 -2
  333. package/dist/server/routes/insights-api.js +149 -41
  334. package/dist/server/routes/insights-api.js.map +1 -1
  335. package/dist/server/routes/mcp.d.ts +7 -3
  336. package/dist/server/routes/mcp.js +22 -6
  337. package/dist/server/routes/mcp.js.map +1 -1
  338. package/dist/server/routes/permissions-api.d.ts +9 -2
  339. package/dist/server/routes/permissions-api.js +87 -30
  340. package/dist/server/routes/permissions-api.js.map +1 -1
  341. package/dist/server/routes/r2-api.d.ts +25 -0
  342. package/dist/server/routes/r2-api.js +276 -0
  343. package/dist/server/routes/r2-api.js.map +1 -0
  344. package/dist/server/routes/secrets-api.d.ts +36 -0
  345. package/dist/server/routes/secrets-api.js +308 -0
  346. package/dist/server/routes/secrets-api.js.map +1 -0
  347. package/dist/server/routes/settings-api.d.ts +29 -0
  348. package/dist/server/routes/settings-api.js +180 -0
  349. package/dist/server/routes/settings-api.js.map +1 -0
  350. package/dist/server/routes/url-api.d.ts +7 -0
  351. package/dist/server/routes/url-api.js +74 -0
  352. package/dist/server/routes/url-api.js.map +1 -0
  353. package/dist/server/routes/views-api.js +81 -7
  354. package/dist/server/routes/views-api.js.map +1 -1
  355. package/dist/server/routes/workspace-api.d.ts +2 -1
  356. package/dist/server/routes/workspace-api.js +124 -35
  357. package/dist/server/routes/workspace-api.js.map +1 -1
  358. package/dist/server/routes/ws.d.ts +2 -1
  359. package/dist/server/routes/ws.js +64 -16
  360. package/dist/server/routes/ws.js.map +1 -1
  361. package/dist/server/session-manager.d.ts +48 -5
  362. package/dist/server/session-manager.js +182 -15
  363. package/dist/server/session-manager.js.map +1 -1
  364. package/dist/server/ws-hub.d.ts +138 -14
  365. package/dist/server/ws-hub.js +0 -0
  366. package/dist/server/ws-hub.js.map +1 -1
  367. package/dist/server/yjs-manager.d.ts +285 -7
  368. package/dist/server/yjs-manager.js +907 -36
  369. package/dist/server/yjs-manager.js.map +1 -1
  370. package/dist/server/yjs-persistence.d.ts +165 -0
  371. package/dist/server/yjs-persistence.js +557 -0
  372. package/dist/server/yjs-persistence.js.map +1 -0
  373. package/dist/server/yjs-text-diff.d.ts +32 -0
  374. package/dist/server/yjs-text-diff.js +61 -0
  375. package/dist/server/yjs-text-diff.js.map +1 -0
  376. package/dist/services/access-control.d.ts +73 -0
  377. package/dist/services/access-control.js +146 -0
  378. package/dist/services/access-control.js.map +1 -0
  379. package/dist/services/asset-listing.d.ts +39 -0
  380. package/dist/services/asset-listing.js +125 -0
  381. package/dist/services/asset-listing.js.map +1 -0
  382. package/dist/services/asset-upload-service.d.ts +53 -0
  383. package/dist/services/asset-upload-service.js +201 -0
  384. package/dist/services/asset-upload-service.js.map +1 -0
  385. package/dist/services/assets/asset-index-service.d.ts +82 -0
  386. package/dist/services/assets/asset-index-service.js +167 -0
  387. package/dist/services/assets/asset-index-service.js.map +1 -0
  388. package/dist/services/assets/base.d.ts +44 -0
  389. package/dist/services/assets/base.js +55 -0
  390. package/dist/services/assets/base.js.map +1 -1
  391. package/dist/services/assets/index.d.ts +69 -1
  392. package/dist/services/assets/index.js +125 -0
  393. package/dist/services/assets/index.js.map +1 -1
  394. package/dist/services/assets/local.d.ts +12 -1
  395. package/dist/services/assets/local.js +100 -1
  396. package/dist/services/assets/local.js.map +1 -1
  397. package/dist/services/assets/r2-sync.d.ts +88 -0
  398. package/dist/services/assets/r2-sync.js +412 -0
  399. package/dist/services/assets/r2-sync.js.map +1 -0
  400. package/dist/services/assets/r2.d.ts +34 -1
  401. package/dist/services/assets/r2.js +93 -1
  402. package/dist/services/assets/r2.js.map +1 -1
  403. package/dist/services/auth-service.d.ts +314 -36
  404. package/dist/services/auth-service.js +1126 -139
  405. package/dist/services/auth-service.js.map +1 -1
  406. package/dist/services/bookmark-import-service.d.ts +49 -0
  407. package/dist/services/bookmark-import-service.js +250 -0
  408. package/dist/services/bookmark-import-service.js.map +1 -0
  409. package/dist/services/cloud-inference-billing.d.ts +64 -0
  410. package/dist/services/cloud-inference-billing.js +313 -0
  411. package/dist/services/cloud-inference-billing.js.map +1 -0
  412. package/dist/services/comment-service.d.ts +97 -0
  413. package/dist/services/comment-service.js +341 -0
  414. package/dist/services/comment-service.js.map +1 -0
  415. package/dist/services/csv-service.d.ts +22 -17
  416. package/dist/services/csv-service.js +55 -92
  417. package/dist/services/csv-service.js.map +1 -1
  418. package/dist/services/entity-mutations.d.ts +161 -0
  419. package/dist/services/entity-mutations.js +296 -0
  420. package/dist/services/entity-mutations.js.map +1 -0
  421. package/dist/services/event-processor.d.ts +104 -0
  422. package/dist/services/event-processor.js +441 -0
  423. package/dist/services/event-processor.js.map +1 -0
  424. package/dist/services/folder-creation.d.ts +33 -0
  425. package/dist/services/folder-creation.js +103 -0
  426. package/dist/services/folder-creation.js.map +1 -0
  427. package/dist/services/git.d.ts +54 -0
  428. package/dist/services/git.js +188 -54
  429. package/dist/services/git.js.map +1 -1
  430. package/dist/services/graph-maintenance.d.ts +42 -0
  431. package/dist/services/graph-maintenance.js +143 -0
  432. package/dist/services/graph-maintenance.js.map +1 -0
  433. package/dist/services/import-service.d.ts +45 -2
  434. package/dist/services/import-service.js +304 -100
  435. package/dist/services/import-service.js.map +1 -1
  436. package/dist/services/lint-service.js +9 -16
  437. package/dist/services/lint-service.js.map +1 -1
  438. package/dist/services/markdown.d.ts +12 -1
  439. package/dist/services/markdown.js +71 -6
  440. package/dist/services/markdown.js.map +1 -1
  441. package/dist/services/memory-service.d.ts +22 -14
  442. package/dist/services/memory-service.js +53 -35
  443. package/dist/services/memory-service.js.map +1 -1
  444. package/dist/services/mention-detector.d.ts +23 -0
  445. package/dist/services/mention-detector.js +47 -0
  446. package/dist/services/mention-detector.js.map +1 -0
  447. package/dist/services/notification-broadcast.d.ts +32 -0
  448. package/dist/services/notification-broadcast.js +38 -0
  449. package/dist/services/notification-broadcast.js.map +1 -0
  450. package/dist/services/notification-service.d.ts +41 -0
  451. package/dist/services/notification-service.js +100 -0
  452. package/dist/services/notification-service.js.map +1 -0
  453. package/dist/services/personal-folder.d.ts +40 -0
  454. package/dist/services/personal-folder.js +101 -0
  455. package/dist/services/personal-folder.js.map +1 -0
  456. package/dist/services/user-person-bridge.d.ts +118 -0
  457. package/dist/services/user-person-bridge.js +306 -0
  458. package/dist/services/user-person-bridge.js.map +1 -0
  459. package/dist/services/vector-service.d.ts +146 -6
  460. package/dist/services/vector-service.js +276 -13
  461. package/dist/services/vector-service.js.map +1 -1
  462. package/dist/services/workspace-access.d.ts +106 -0
  463. package/dist/services/workspace-access.js +149 -0
  464. package/dist/services/workspace-access.js.map +1 -0
  465. package/dist/utils/git.d.ts +17 -2
  466. package/dist/utils/git.js +23 -7
  467. package/dist/utils/git.js.map +1 -1
  468. package/dist/utils/log.d.ts +42 -0
  469. package/dist/utils/log.js +137 -0
  470. package/dist/utils/log.js.map +1 -0
  471. package/dist/utils/preflight.js +2 -2
  472. package/dist/utils/preflight.js.map +1 -1
  473. package/dist/utils/version-checker.d.ts +12 -19
  474. package/dist/utils/version-checker.js +14 -104
  475. package/dist/utils/version-checker.js.map +1 -1
  476. package/dist/web/_app/immutable/assets/0.DDqq11xY.css +2 -0
  477. package/dist/web/_app/immutable/assets/12.DlIf1mKh.css +1 -0
  478. package/dist/web/_app/immutable/assets/13.7d-Q37wc.css +1 -0
  479. package/dist/web/_app/immutable/assets/14.CmLrbzZp.css +1 -0
  480. package/dist/web/_app/immutable/assets/2.CGK2ky-K.css +1 -0
  481. package/dist/web/_app/immutable/assets/3.CV0abekd.css +1 -0
  482. package/dist/web/_app/immutable/assets/4.fGsEpo95.css +1 -0
  483. package/dist/web/_app/immutable/assets/AgentOverlay.DqzjAOm4.css +1 -0
  484. package/dist/web/_app/immutable/assets/AssetManagerModal.BKJfPAPk.css +1 -0
  485. package/dist/web/_app/immutable/assets/CalendarView.bNewSxkH.css +1 -0
  486. package/dist/web/_app/immutable/assets/FolderMembersPanel.DX1oBeF_.css +1 -0
  487. package/dist/web/_app/immutable/assets/FolderMutationDialogs.BMRF6Z3z.css +1 -0
  488. package/dist/web/_app/immutable/assets/FolderPicker.B5KdvRYl.css +1 -0
  489. package/dist/web/_app/immutable/assets/GalleryView.DgvSjS0I.css +1 -0
  490. package/dist/web/_app/immutable/assets/GraphView.BJtGL9py.css +1 -0
  491. package/dist/web/_app/immutable/assets/KanbanView.D0QbZFd6.css +1 -0
  492. package/dist/web/_app/immutable/assets/Markdown.B4lW7Llh.css +1 -0
  493. package/dist/web/_app/immutable/assets/SettingsDialog.DYWYMFSO.css +1 -0
  494. package/dist/web/_app/immutable/assets/Spinner.UBfl0pab.css +1 -0
  495. package/dist/web/_app/immutable/assets/StopFilledAlt.clodJdp5.css +1 -0
  496. package/dist/web/_app/immutable/assets/TimelineView.DA-H6dvv.css +1 -0
  497. package/dist/web/_app/immutable/assets/WorkspaceView.BS1ildu7.css +1 -0
  498. package/dist/web/_app/immutable/assets/button.BlLm4Dg1.css +1 -0
  499. package/dist/web/_app/immutable/assets/formatting.B912lpdG.css +1 -0
  500. package/dist/web/_app/immutable/assets/ibm-plex-mono-latin-400-normal.CvHOgSBP.woff +0 -0
  501. package/dist/web/_app/immutable/assets/ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2 +0 -0
  502. package/dist/web/_app/immutable/assets/ibm-plex-mono-latin-500-normal.CB9ihrfo.woff +0 -0
  503. package/dist/web/_app/immutable/assets/ibm-plex-mono-latin-500-normal.DSY6xOcd.woff2 +0 -0
  504. package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-400-italic.CZTNEAuW.woff2 +0 -0
  505. package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-400-italic.CsGl1sm0.woff +0 -0
  506. package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-400-normal.CDDApCn2.woff2 +0 -0
  507. package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-400-normal.CYLoc0-x.woff +0 -0
  508. package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-500-italic.BNK2_mGO.woff2 +0 -0
  509. package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-500-italic.DpEwFAQM.woff +0 -0
  510. package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-500-normal.6ng42L7E.woff2 +0 -0
  511. package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-500-normal.BgVn5rGT.woff +0 -0
  512. package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-600-normal.Cu4Hd6ag.woff +0 -0
  513. package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-600-normal.CuJfVYMP.woff2 +0 -0
  514. package/dist/web/_app/immutable/assets/inline-list.cqga56xT.css +1 -0
  515. package/dist/web/_app/immutable/assets/list-columns.DCMVmy_Q.css +1 -0
  516. package/dist/web/_app/immutable/assets/realtime.DDCWxn3B.css +1 -0
  517. package/dist/web/_app/immutable/assets/sheet.DJPuqnTg.css +1 -0
  518. package/dist/web/_app/immutable/assets/speech-dictation.C5CYFhS1.css +1 -0
  519. package/dist/web/_app/immutable/chunks/0iDDDyaZ.js +1 -0
  520. package/dist/web/_app/immutable/chunks/2LgrBrpS2.js +2 -0
  521. package/dist/web/_app/immutable/chunks/3EfPAYzi2.js +1 -0
  522. package/dist/web/_app/immutable/chunks/7Bu427my2.js +184 -0
  523. package/dist/web/_app/immutable/chunks/96h3ktuk.js +1 -0
  524. package/dist/web/_app/immutable/chunks/A6FJA1AF.js +1 -0
  525. package/dist/web/_app/immutable/chunks/B-FAwCqe2.js +1 -0
  526. package/dist/web/_app/immutable/chunks/B-V5eMSw2.js +1 -0
  527. package/dist/web/_app/immutable/chunks/B-i9_YVM.js +1 -0
  528. package/dist/web/_app/immutable/chunks/B15-kvCe2.js +1 -0
  529. package/dist/web/_app/immutable/chunks/B1KZ7zY32.js +2 -0
  530. package/dist/web/_app/immutable/chunks/B4gpzeQ2.js +1 -0
  531. package/dist/web/_app/immutable/chunks/B6Lt-qaJ2.js +1 -0
  532. package/dist/web/_app/immutable/chunks/B7tbGyiU2.js +1 -0
  533. package/dist/web/_app/immutable/chunks/BBxt8lpa.js +1 -0
  534. package/dist/web/_app/immutable/chunks/BCaRi2AF.js +1 -0
  535. package/dist/web/_app/immutable/chunks/BJ6Z7eAM.js +2 -0
  536. package/dist/web/_app/immutable/chunks/BM_vIwVC.js +83 -0
  537. package/dist/web/_app/immutable/chunks/BQULA6er.js +4 -0
  538. package/dist/web/_app/immutable/chunks/BQW-EDgP2.js +224 -0
  539. package/dist/web/_app/immutable/chunks/BR6jMpLB.js +1 -0
  540. package/dist/web/_app/immutable/chunks/BVnuLlVg.js +1 -0
  541. package/dist/web/_app/immutable/chunks/BddNmQ8j.js +1 -0
  542. package/dist/web/_app/immutable/chunks/BeuunHPO.js +1 -0
  543. package/dist/web/_app/immutable/chunks/BhTmSo4n2.js +1 -0
  544. package/dist/web/_app/immutable/chunks/BikW7mty2.js +1 -0
  545. package/dist/web/_app/immutable/chunks/BkyFvJvz.js +1 -0
  546. package/dist/web/_app/immutable/chunks/BlyFGPFV.js +22 -0
  547. package/dist/web/_app/immutable/chunks/Bo5dghSu.js +3 -0
  548. package/dist/web/_app/immutable/chunks/BpPyho8Y.js +3 -0
  549. package/dist/web/_app/immutable/chunks/BsuvyNDN2.js +2 -0
  550. package/dist/web/_app/immutable/chunks/BuKi0vpu2.js +7 -0
  551. package/dist/web/_app/immutable/chunks/BuuYnIjE.js +1 -0
  552. package/dist/web/_app/immutable/chunks/By4lVKNC.js +2 -0
  553. package/dist/web/_app/immutable/chunks/ByQGCIwO.js +5 -0
  554. package/dist/web/_app/immutable/chunks/ByidpUhu.js +1 -0
  555. package/dist/web/_app/immutable/chunks/C35TIzaB.js +1 -0
  556. package/dist/web/_app/immutable/chunks/C5dM5op-.js +1 -0
  557. package/dist/web/_app/immutable/chunks/C6Nx0jpM.js +1 -0
  558. package/dist/web/_app/immutable/chunks/C6pVyOEl2.js +1 -0
  559. package/dist/web/_app/immutable/chunks/C80GKPZ9.js +1 -0
  560. package/dist/web/_app/immutable/chunks/C94TJqPI.js +1 -0
  561. package/dist/web/_app/immutable/chunks/C9PETsiT.js +1 -0
  562. package/dist/web/_app/immutable/chunks/CAuAQ81a2.js +1 -0
  563. package/dist/web/_app/immutable/chunks/CBnzSITi2.js +1 -0
  564. package/dist/web/_app/immutable/chunks/CC9p2p6w.js +1 -0
  565. package/dist/web/_app/immutable/chunks/CCLR-AJL2.js +185 -0
  566. package/dist/web/_app/immutable/chunks/CD0X7XPW.js +6 -0
  567. package/dist/web/_app/immutable/chunks/CDTjuBSm.js +1 -0
  568. package/dist/web/_app/immutable/chunks/CH-KYFIm.js +64 -0
  569. package/dist/web/_app/immutable/chunks/CHj8fObQ2.js +9 -0
  570. package/dist/web/_app/immutable/chunks/CK-UnH-n2.js +1 -0
  571. package/dist/web/_app/immutable/chunks/CKH5BEAh.js +1 -0
  572. package/dist/web/_app/immutable/chunks/CPSupDJp2.js +2 -0
  573. package/dist/web/_app/immutable/chunks/CSUrYOis.js +1 -0
  574. package/dist/web/_app/immutable/chunks/CYTTTma0.js +3 -0
  575. package/dist/web/_app/immutable/chunks/Cbaut_us2.js +1 -0
  576. package/dist/web/_app/immutable/chunks/CiIpSx5n2.js +1 -0
  577. package/dist/web/_app/immutable/chunks/CkLfUXwy.js +1 -0
  578. package/dist/web/_app/immutable/chunks/CokE4L8B2.js +1 -0
  579. package/dist/web/_app/immutable/chunks/CpLdnbh3.js +1 -0
  580. package/dist/web/_app/immutable/chunks/CvDrXJk9.js +1 -0
  581. package/dist/web/_app/immutable/chunks/D00MFB9_2.js +1 -0
  582. package/dist/web/_app/immutable/chunks/D41CbXmM.js +1 -0
  583. package/dist/web/_app/immutable/chunks/D5Hj-MPO2.js +1 -0
  584. package/dist/web/_app/immutable/chunks/D6nLEmZy2.js +1 -0
  585. package/dist/web/_app/immutable/chunks/D71ZlQBM2.js +2 -0
  586. package/dist/web/_app/immutable/chunks/D9ql9vXU.js +1 -0
  587. package/dist/web/_app/immutable/chunks/DAXW5iLp.js +1 -0
  588. package/dist/web/_app/immutable/chunks/DBzQ8LyQ2.js +2 -0
  589. package/dist/web/_app/immutable/chunks/DIb5rAPU2.js +1 -0
  590. package/dist/web/_app/immutable/chunks/DOmH4G9o.js +14 -0
  591. package/dist/web/_app/immutable/chunks/DQMWa2t72.js +1 -0
  592. package/dist/web/_app/immutable/chunks/DRsswX8S.js +1 -0
  593. package/dist/web/_app/immutable/chunks/DTCHhxD5.js +1 -0
  594. package/dist/web/_app/immutable/chunks/DUwgGBxa.js +1 -0
  595. package/dist/web/_app/immutable/chunks/DVcy5Pp82.js +1 -0
  596. package/dist/web/_app/immutable/chunks/DWygwzcO.js +1 -0
  597. package/dist/web/_app/immutable/chunks/DYXDRmoo.js +1 -0
  598. package/dist/web/_app/immutable/chunks/DZ-YyRVM.js +1 -0
  599. package/dist/web/_app/immutable/chunks/D_HVOuHV.js +1 -0
  600. package/dist/web/_app/immutable/chunks/DaoOQFPb.js +1 -0
  601. package/dist/web/_app/immutable/chunks/DdLkNvPf.js +23 -0
  602. package/dist/web/_app/immutable/chunks/DiMQob8p.js +1 -0
  603. package/dist/web/_app/immutable/chunks/DiQJ9DLy.js +1 -0
  604. package/dist/web/_app/immutable/chunks/DlORZqfE.js +1 -0
  605. package/dist/web/_app/immutable/chunks/DmeYl7eL.js +2 -0
  606. package/dist/web/_app/immutable/chunks/Dng3OcRd2.js +1 -0
  607. package/dist/web/_app/immutable/chunks/DoKMFfJd.js +1 -0
  608. package/dist/web/_app/immutable/chunks/DpzG2mVI2.js +1 -0
  609. package/dist/web/_app/immutable/chunks/DvJSCDuZ2.js +1 -0
  610. package/dist/web/_app/immutable/chunks/DvPuaTCl2.js +5 -0
  611. package/dist/web/_app/immutable/chunks/ItgU4ei5.js +1 -0
  612. package/dist/web/_app/immutable/chunks/JJDMrjj62.js +1 -0
  613. package/dist/web/_app/immutable/chunks/OTTMDMTW.js +1 -0
  614. package/dist/web/_app/immutable/chunks/RmiWpCin2.js +1 -0
  615. package/dist/web/_app/immutable/chunks/ZTiqmKJy2.js +1 -0
  616. package/dist/web/_app/immutable/chunks/ahC5WoXX2.js +1 -0
  617. package/dist/web/_app/immutable/chunks/e3SY5t2O2.js +2692 -0
  618. package/dist/web/_app/immutable/chunks/g09ZrevW.js +1 -0
  619. package/dist/web/_app/immutable/chunks/go8N1nWD2.js +3 -0
  620. package/dist/web/_app/immutable/chunks/nTAmRNKw2.js +1 -0
  621. package/dist/web/_app/immutable/chunks/oBQOivfH2.js +1 -0
  622. package/dist/web/_app/immutable/chunks/oUTRxd0f.js +1 -0
  623. package/dist/web/_app/immutable/chunks/s_7BJJYy.js +2 -0
  624. package/dist/web/_app/immutable/chunks/uuFM-ygL.js +1 -0
  625. package/dist/web/_app/immutable/chunks/v7me-ydg.js +2 -0
  626. package/dist/web/_app/immutable/chunks/xihTtKlq.js +1 -0
  627. package/dist/web/_app/immutable/chunks/zl16E4yc2.js +1 -0
  628. package/dist/web/_app/immutable/entry/app.CbuUtkoM.js +2 -0
  629. package/dist/web/_app/immutable/entry/start.DeZyKwOT.js +1 -0
  630. package/dist/web/_app/immutable/nodes/0.C4PMtdx9.js +2 -0
  631. package/dist/web/_app/immutable/nodes/1.BwVfPLMn.js +1 -0
  632. package/dist/web/_app/immutable/nodes/10.DPr_SYan.js +1 -0
  633. package/dist/web/_app/immutable/nodes/11.CJAmEchE.js +1 -0
  634. package/dist/web/_app/immutable/nodes/12.ChMWXPMk.js +1 -0
  635. package/dist/web/_app/immutable/nodes/13.8vOKq8ue.js +1 -0
  636. package/dist/web/_app/immutable/nodes/14.BOSNmj9h.js +1 -0
  637. package/dist/web/_app/immutable/nodes/2.7N4BLwhX.js +109 -0
  638. package/dist/web/_app/immutable/nodes/3.Cd-tx8Ej.js +2 -0
  639. package/dist/web/_app/immutable/nodes/4.DtuT-syy.js +14 -0
  640. package/dist/web/_app/immutable/nodes/5.YwNHOrkt.js +1 -0
  641. package/dist/web/_app/immutable/nodes/6.BSPlYQuq.js +1 -0
  642. package/dist/web/_app/immutable/nodes/7.DPXzwW0H.js +1 -0
  643. package/dist/web/_app/immutable/nodes/8.Dhpk7w3X.js +1 -0
  644. package/dist/web/_app/immutable/nodes/9.Dd4iAQN5.js +1 -0
  645. package/dist/web/_app/version.json +1 -1
  646. package/dist/web/favicon-16.png +0 -0
  647. package/dist/web/favicon-180.png +0 -0
  648. package/dist/web/favicon-32.png +0 -0
  649. package/dist/web/favicon-48.png +0 -0
  650. package/dist/web/favicon-512.png +0 -0
  651. package/dist/web/favicon.ico +0 -0
  652. package/dist/web/favicon.svg +8 -0
  653. package/dist/web/index.html +54 -19
  654. package/dist/web/studiograph-logomark.svg +29 -0
  655. package/package.json +34 -14
  656. package/dist/agent/skills/enrich-entities.md +0 -136
  657. package/dist/agent/skills/obsidian-source-setup.md +0 -246
  658. package/dist/agent/skills/skill-loader.d.ts +0 -48
  659. package/dist/agent/skills/skill-loader.js +0 -166
  660. package/dist/agent/skills/skill-loader.js.map +0 -1
  661. package/dist/agent/skills/sync-configuration.md +0 -119
  662. package/dist/agent/skills/sync-setup.md +0 -82
  663. package/dist/agent/tools/sync-tools.d.ts +0 -35
  664. package/dist/agent/tools/sync-tools.js +0 -992
  665. package/dist/agent/tools/sync-tools.js.map +0 -1
  666. package/dist/auth/github.d.ts +0 -56
  667. package/dist/auth/github.js +0 -169
  668. package/dist/auth/github.js.map +0 -1
  669. package/dist/cli/commands/access.d.ts +0 -11
  670. package/dist/cli/commands/access.js +0 -156
  671. package/dist/cli/commands/access.js.map +0 -1
  672. package/dist/cli/commands/app.d.ts +0 -7
  673. package/dist/cli/commands/app.js +0 -268
  674. package/dist/cli/commands/app.js.map +0 -1
  675. package/dist/cli/commands/auth.d.ts +0 -10
  676. package/dist/cli/commands/auth.js +0 -79
  677. package/dist/cli/commands/auth.js.map +0 -1
  678. package/dist/cli/commands/clear.d.ts +0 -5
  679. package/dist/cli/commands/clear.js +0 -36
  680. package/dist/cli/commands/clear.js.map +0 -1
  681. package/dist/cli/commands/collection.d.ts +0 -10
  682. package/dist/cli/commands/collection.js +0 -187
  683. package/dist/cli/commands/collection.js.map +0 -1
  684. package/dist/cli/commands/enrich.d.ts +0 -11
  685. package/dist/cli/commands/enrich.js +0 -135
  686. package/dist/cli/commands/enrich.js.map +0 -1
  687. package/dist/cli/commands/graphrag.d.ts +0 -12
  688. package/dist/cli/commands/graphrag.js +0 -122
  689. package/dist/cli/commands/graphrag.js.map +0 -1
  690. package/dist/cli/commands/join.d.ts +0 -9
  691. package/dist/cli/commands/join.js +0 -255
  692. package/dist/cli/commands/join.js.map +0 -1
  693. package/dist/cli/commands/members.d.ts +0 -11
  694. package/dist/cli/commands/members.js +0 -230
  695. package/dist/cli/commands/members.js.map +0 -1
  696. package/dist/cli/commands/org.d.ts +0 -10
  697. package/dist/cli/commands/org.js +0 -132
  698. package/dist/cli/commands/org.js.map +0 -1
  699. package/dist/cli/commands/provision.d.ts +0 -8
  700. package/dist/cli/commands/provision.js +0 -116
  701. package/dist/cli/commands/provision.js.map +0 -1
  702. package/dist/cli/commands/resolve.d.ts +0 -8
  703. package/dist/cli/commands/resolve.js +0 -85
  704. package/dist/cli/commands/resolve.js.map +0 -1
  705. package/dist/cli/commands/review.d.ts +0 -19
  706. package/dist/cli/commands/review.js +0 -128
  707. package/dist/cli/commands/review.js.map +0 -1
  708. package/dist/cli/commands/source.d.ts +0 -16
  709. package/dist/cli/commands/source.js +0 -159
  710. package/dist/cli/commands/source.js.map +0 -1
  711. package/dist/cli/commands/start.d.ts +0 -7
  712. package/dist/cli/commands/start.js +0 -589
  713. package/dist/cli/commands/start.js.map +0 -1
  714. package/dist/cli/commands/sync-collection.d.ts +0 -14
  715. package/dist/cli/commands/sync-collection.js +0 -355
  716. package/dist/cli/commands/sync-collection.js.map +0 -1
  717. package/dist/cli/commands/sync-entities.d.ts +0 -13
  718. package/dist/cli/commands/sync-entities.js +0 -242
  719. package/dist/cli/commands/sync-entities.js.map +0 -1
  720. package/dist/cli/commands/team.d.ts +0 -12
  721. package/dist/cli/commands/team.js +0 -185
  722. package/dist/cli/commands/team.js.map +0 -1
  723. package/dist/cli/commands/update.d.ts +0 -8
  724. package/dist/cli/commands/update.js +0 -155
  725. package/dist/cli/commands/update.js.map +0 -1
  726. package/dist/cli/commands/user.d.ts +0 -7
  727. package/dist/cli/commands/user.js +0 -153
  728. package/dist/cli/commands/user.js.map +0 -1
  729. package/dist/cli/scaffolding.d.ts +0 -12
  730. package/dist/cli/scaffolding.js +0 -397
  731. package/dist/cli/scaffolding.js.map +0 -1
  732. package/dist/cli/sync-review-interactive.d.ts +0 -31
  733. package/dist/cli/sync-review-interactive.js +0 -393
  734. package/dist/cli/sync-review-interactive.js.map +0 -1
  735. package/dist/core/migration-runner.d.ts +0 -42
  736. package/dist/core/migration-runner.js +0 -232
  737. package/dist/core/migration-runner.js.map +0 -1
  738. package/dist/core/migration-types.d.ts +0 -101
  739. package/dist/core/migration-types.js +0 -21
  740. package/dist/core/migration-types.js.map +0 -1
  741. package/dist/core/migrations/20260219-formalize-memory-location.d.ts +0 -2
  742. package/dist/core/migrations/20260219-formalize-memory-location.js +0 -35
  743. package/dist/core/migrations/20260219-formalize-memory-location.js.map +0 -1
  744. package/dist/core/migrations/20260220-add-workspace-metadata.d.ts +0 -12
  745. package/dist/core/migrations/20260220-add-workspace-metadata.js +0 -65
  746. package/dist/core/migrations/20260220-add-workspace-metadata.js.map +0 -1
  747. package/dist/core/migrations/20260220-add-workspace-readme.d.ts +0 -11
  748. package/dist/core/migrations/20260220-add-workspace-readme.js +0 -82
  749. package/dist/core/migrations/20260220-add-workspace-readme.js.map +0 -1
  750. package/dist/core/migrations/20260220-migrate-yaml-to-json.d.ts +0 -9
  751. package/dist/core/migrations/20260220-migrate-yaml-to-json.js +0 -64
  752. package/dist/core/migrations/20260220-migrate-yaml-to-json.js.map +0 -1
  753. package/dist/core/migrations/index.d.ts +0 -11
  754. package/dist/core/migrations/index.js +0 -23
  755. package/dist/core/migrations/index.js.map +0 -1
  756. package/dist/integrations/asana.d.ts +0 -26
  757. package/dist/integrations/asana.js +0 -78
  758. package/dist/integrations/asana.js.map +0 -1
  759. package/dist/integrations/figma-local.d.ts +0 -16
  760. package/dist/integrations/figma-local.js +0 -10
  761. package/dist/integrations/figma-local.js.map +0 -1
  762. package/dist/integrations/figma.d.ts +0 -17
  763. package/dist/integrations/figma.js +0 -17
  764. package/dist/integrations/figma.js.map +0 -1
  765. package/dist/integrations/granola.d.ts +0 -24
  766. package/dist/integrations/granola.js +0 -60
  767. package/dist/integrations/granola.js.map +0 -1
  768. package/dist/integrations/linear.d.ts +0 -14
  769. package/dist/integrations/linear.js +0 -80
  770. package/dist/integrations/linear.js.map +0 -1
  771. package/dist/integrations/paper-local.d.ts +0 -14
  772. package/dist/integrations/paper-local.js +0 -10
  773. package/dist/integrations/paper-local.js.map +0 -1
  774. package/dist/integrations/paper.d.ts +0 -2
  775. package/dist/integrations/paper.js +0 -10
  776. package/dist/integrations/paper.js.map +0 -1
  777. package/dist/integrations/pipedrive.d.ts +0 -26
  778. package/dist/integrations/pipedrive.js +0 -97
  779. package/dist/integrations/pipedrive.js.map +0 -1
  780. package/dist/integrations/registry.d.ts +0 -15
  781. package/dist/integrations/registry.js +0 -27
  782. package/dist/integrations/registry.js.map +0 -1
  783. package/dist/integrations/types.d.ts +0 -38
  784. package/dist/integrations/types.js +0 -9
  785. package/dist/integrations/types.js.map +0 -1
  786. package/dist/lib/lib/utils.d.ts +0 -2
  787. package/dist/lib/lib/utils.js +0 -6
  788. package/dist/lib/lib/utils.js.map +0 -1
  789. package/dist/mcp/connectors/asana.d.ts +0 -2
  790. package/dist/mcp/connectors/asana.js +0 -20
  791. package/dist/mcp/connectors/asana.js.map +0 -1
  792. package/dist/mcp/connectors/definitions.d.ts +0 -45
  793. package/dist/mcp/connectors/definitions.js +0 -32
  794. package/dist/mcp/connectors/definitions.js.map +0 -1
  795. package/dist/mcp/connectors/figma.d.ts +0 -5
  796. package/dist/mcp/connectors/figma.js +0 -21
  797. package/dist/mcp/connectors/figma.js.map +0 -1
  798. package/dist/mcp/connectors/gdrive.d.ts +0 -2
  799. package/dist/mcp/connectors/gdrive.js +0 -20
  800. package/dist/mcp/connectors/gdrive.js.map +0 -1
  801. package/dist/mcp/connectors/granola.d.ts +0 -2
  802. package/dist/mcp/connectors/granola.js +0 -12
  803. package/dist/mcp/connectors/granola.js.map +0 -1
  804. package/dist/mcp/connectors/linear.d.ts +0 -2
  805. package/dist/mcp/connectors/linear.js +0 -19
  806. package/dist/mcp/connectors/linear.js.map +0 -1
  807. package/dist/mcp/connectors/obsidian.d.ts +0 -2
  808. package/dist/mcp/connectors/obsidian.js +0 -19
  809. package/dist/mcp/connectors/obsidian.js.map +0 -1
  810. package/dist/mcp/connectors/pipedrive.d.ts +0 -2
  811. package/dist/mcp/connectors/pipedrive.js +0 -20
  812. package/dist/mcp/connectors/pipedrive.js.map +0 -1
  813. package/dist/mcp/connectors/slack.d.ts +0 -2
  814. package/dist/mcp/connectors/slack.js +0 -21
  815. package/dist/mcp/connectors/slack.js.map +0 -1
  816. package/dist/mcp/server-oauth-provider.d.ts +0 -56
  817. package/dist/mcp/server-oauth-provider.js +0 -142
  818. package/dist/mcp/server-oauth-provider.js.map +0 -1
  819. package/dist/server/chrome/chrome.css +0 -691
  820. package/dist/server/chrome/chrome.js +0 -374
  821. package/dist/server/collab-authority.d.ts +0 -70
  822. package/dist/server/collab-authority.js +0 -218
  823. package/dist/server/collab-authority.js.map +0 -1
  824. package/dist/server/collab.d.ts +0 -29
  825. package/dist/server/collab.js +0 -195
  826. package/dist/server/collab.js.map +0 -1
  827. package/dist/server/commit-scheduler.d.ts +0 -39
  828. package/dist/server/commit-scheduler.js +0 -113
  829. package/dist/server/commit-scheduler.js.map +0 -1
  830. package/dist/server/plugin-loader.d.ts +0 -53
  831. package/dist/server/plugin-loader.js +0 -155
  832. package/dist/server/plugin-loader.js.map +0 -1
  833. package/dist/server/routes/collab.d.ts +0 -6
  834. package/dist/server/routes/collab.js +0 -10
  835. package/dist/server/routes/collab.js.map +0 -1
  836. package/dist/server/routes/git-api.d.ts +0 -9
  837. package/dist/server/routes/git-api.js +0 -82
  838. package/dist/server/routes/git-api.js.map +0 -1
  839. package/dist/server/routes/meeting-ingest-api.d.ts +0 -15
  840. package/dist/server/routes/meeting-ingest-api.js +0 -321
  841. package/dist/server/routes/meeting-ingest-api.js.map +0 -1
  842. package/dist/server/routes/sync-api.d.ts +0 -26
  843. package/dist/server/routes/sync-api.js +0 -814
  844. package/dist/server/routes/sync-api.js.map +0 -1
  845. package/dist/server/routes/webhook.d.ts +0 -14
  846. package/dist/server/routes/webhook.js +0 -102
  847. package/dist/server/routes/webhook.js.map +0 -1
  848. package/dist/services/github-provisioner.d.ts +0 -36
  849. package/dist/services/github-provisioner.js +0 -126
  850. package/dist/services/github-provisioner.js.map +0 -1
  851. package/dist/services/github-service.d.ts +0 -99
  852. package/dist/services/github-service.js +0 -310
  853. package/dist/services/github-service.js.map +0 -1
  854. package/dist/services/insights.d.ts +0 -38
  855. package/dist/services/insights.js +0 -246
  856. package/dist/services/insights.js.map +0 -1
  857. package/dist/services/sync/collection-sync.d.ts +0 -60
  858. package/dist/services/sync/collection-sync.js +0 -509
  859. package/dist/services/sync/collection-sync.js.map +0 -1
  860. package/dist/services/sync/commit.d.ts +0 -60
  861. package/dist/services/sync/commit.js +0 -354
  862. package/dist/services/sync/commit.js.map +0 -1
  863. package/dist/services/sync/context-index.d.ts +0 -69
  864. package/dist/services/sync/context-index.js +0 -280
  865. package/dist/services/sync/context-index.js.map +0 -1
  866. package/dist/services/sync/data-fetcher.d.ts +0 -31
  867. package/dist/services/sync/data-fetcher.js +0 -12
  868. package/dist/services/sync/data-fetcher.js.map +0 -1
  869. package/dist/services/sync/derive.d.ts +0 -34
  870. package/dist/services/sync/derive.js +0 -164
  871. package/dist/services/sync/derive.js.map +0 -1
  872. package/dist/services/sync/enrichment-state.d.ts +0 -31
  873. package/dist/services/sync/enrichment-state.js +0 -63
  874. package/dist/services/sync/enrichment-state.js.map +0 -1
  875. package/dist/services/sync/enrichment.d.ts +0 -25
  876. package/dist/services/sync/enrichment.js +0 -121
  877. package/dist/services/sync/enrichment.js.map +0 -1
  878. package/dist/services/sync/entity-refresh.d.ts +0 -30
  879. package/dist/services/sync/entity-refresh.js +0 -275
  880. package/dist/services/sync/entity-refresh.js.map +0 -1
  881. package/dist/services/sync/frontmatter-extractor.d.ts +0 -40
  882. package/dist/services/sync/frontmatter-extractor.js +0 -279
  883. package/dist/services/sync/frontmatter-extractor.js.map +0 -1
  884. package/dist/services/sync/graph-match-state.d.ts +0 -33
  885. package/dist/services/sync/graph-match-state.js +0 -61
  886. package/dist/services/sync/graph-match-state.js.map +0 -1
  887. package/dist/services/sync/graph-match.d.ts +0 -53
  888. package/dist/services/sync/graph-match.js +0 -316
  889. package/dist/services/sync/graph-match.js.map +0 -1
  890. package/dist/services/sync/graphrag-client.d.ts +0 -43
  891. package/dist/services/sync/graphrag-client.js +0 -94
  892. package/dist/services/sync/graphrag-client.js.map +0 -1
  893. package/dist/services/sync/graphrag-config.d.ts +0 -16
  894. package/dist/services/sync/graphrag-config.js +0 -39
  895. package/dist/services/sync/graphrag-config.js.map +0 -1
  896. package/dist/services/sync/graphrag-context.d.ts +0 -14
  897. package/dist/services/sync/graphrag-context.js +0 -109
  898. package/dist/services/sync/graphrag-context.js.map +0 -1
  899. package/dist/services/sync/graphrag-indexer.d.ts +0 -30
  900. package/dist/services/sync/graphrag-indexer.js +0 -358
  901. package/dist/services/sync/graphrag-indexer.js.map +0 -1
  902. package/dist/services/sync/llm.d.ts +0 -32
  903. package/dist/services/sync/llm.js +0 -115
  904. package/dist/services/sync/llm.js.map +0 -1
  905. package/dist/services/sync/mcp-client.d.ts +0 -71
  906. package/dist/services/sync/mcp-client.js +0 -299
  907. package/dist/services/sync/mcp-client.js.map +0 -1
  908. package/dist/services/sync/model-factory.d.ts +0 -13
  909. package/dist/services/sync/model-factory.js +0 -38
  910. package/dist/services/sync/model-factory.js.map +0 -1
  911. package/dist/services/sync/name-quality.d.ts +0 -31
  912. package/dist/services/sync/name-quality.js +0 -60
  913. package/dist/services/sync/name-quality.js.map +0 -1
  914. package/dist/services/sync/output-schemas.d.ts +0 -92
  915. package/dist/services/sync/output-schemas.js +0 -43
  916. package/dist/services/sync/output-schemas.js.map +0 -1
  917. package/dist/services/sync/prompts.d.ts +0 -19
  918. package/dist/services/sync/prompts.js +0 -128
  919. package/dist/services/sync/prompts.js.map +0 -1
  920. package/dist/services/sync/reconciler.d.ts +0 -48
  921. package/dist/services/sync/reconciler.js +0 -294
  922. package/dist/services/sync/reconciler.js.map +0 -1
  923. package/dist/services/sync/rest-client.d.ts +0 -40
  924. package/dist/services/sync/rest-client.js +0 -100
  925. package/dist/services/sync/rest-client.js.map +0 -1
  926. package/dist/services/sync/source-config.d.ts +0 -67
  927. package/dist/services/sync/source-config.js +0 -304
  928. package/dist/services/sync/source-config.js.map +0 -1
  929. package/dist/services/sync/source-definitions/asana.d.ts +0 -14
  930. package/dist/services/sync/source-definitions/asana.js +0 -42
  931. package/dist/services/sync/source-definitions/asana.js.map +0 -1
  932. package/dist/services/sync/source-definitions/definitions.d.ts +0 -8
  933. package/dist/services/sync/source-definitions/definitions.js +0 -8
  934. package/dist/services/sync/source-definitions/definitions.js.map +0 -1
  935. package/dist/services/sync/source-definitions/gdrive.d.ts +0 -16
  936. package/dist/services/sync/source-definitions/gdrive.js +0 -68
  937. package/dist/services/sync/source-definitions/gdrive.js.map +0 -1
  938. package/dist/services/sync/source-definitions/granola.d.ts +0 -2
  939. package/dist/services/sync/source-definitions/granola.js +0 -21
  940. package/dist/services/sync/source-definitions/granola.js.map +0 -1
  941. package/dist/services/sync/source-definitions/linear.d.ts +0 -2
  942. package/dist/services/sync/source-definitions/linear.js +0 -62
  943. package/dist/services/sync/source-definitions/linear.js.map +0 -1
  944. package/dist/services/sync/source-definitions/obsidian.d.ts +0 -2
  945. package/dist/services/sync/source-definitions/obsidian.js +0 -55
  946. package/dist/services/sync/source-definitions/obsidian.js.map +0 -1
  947. package/dist/services/sync/source-definitions/pipedrive.d.ts +0 -2
  948. package/dist/services/sync/source-definitions/pipedrive.js +0 -43
  949. package/dist/services/sync/source-definitions/pipedrive.js.map +0 -1
  950. package/dist/services/sync/staging.d.ts +0 -53
  951. package/dist/services/sync/staging.js +0 -130
  952. package/dist/services/sync/staging.js.map +0 -1
  953. package/dist/services/sync/structured-extractor.d.ts +0 -57
  954. package/dist/services/sync/structured-extractor.js +0 -584
  955. package/dist/services/sync/structured-extractor.js.map +0 -1
  956. package/dist/services/sync/sync-runner.d.ts +0 -32
  957. package/dist/services/sync/sync-runner.js +0 -195
  958. package/dist/services/sync/sync-runner.js.map +0 -1
  959. package/dist/services/sync/sync-state.d.ts +0 -43
  960. package/dist/services/sync/sync-state.js +0 -154
  961. package/dist/services/sync/sync-state.js.map +0 -1
  962. package/dist/services/sync/types.d.ts +0 -381
  963. package/dist/services/sync/types.js +0 -8
  964. package/dist/services/sync/types.js.map +0 -1
  965. package/dist/services/sync/unstructured-extractor.d.ts +0 -27
  966. package/dist/services/sync/unstructured-extractor.js +0 -185
  967. package/dist/services/sync/unstructured-extractor.js.map +0 -1
  968. package/dist/utils/merge-resolver.d.ts +0 -59
  969. package/dist/utils/merge-resolver.js +0 -303
  970. package/dist/utils/merge-resolver.js.map +0 -1
  971. package/dist/utils/workspace-config.d.ts +0 -8
  972. package/dist/utils/workspace-config.js +0 -22
  973. package/dist/utils/workspace-config.js.map +0 -1
  974. package/dist/web/_app/immutable/assets/0.DdizXOKi.css +0 -1
  975. package/dist/web/_app/immutable/assets/10.BUrHkYry.css +0 -1
  976. package/dist/web/_app/immutable/assets/2.n7-yW_Fs.css +0 -1
  977. package/dist/web/_app/immutable/assets/3.BtaZagnv.css +0 -1
  978. package/dist/web/_app/immutable/assets/4.DSiqtN6T.css +0 -1
  979. package/dist/web/_app/immutable/assets/5.DFeGxLYf.css +0 -1
  980. package/dist/web/_app/immutable/assets/6.CquhUpOu.css +0 -1
  981. package/dist/web/_app/immutable/assets/7.CjbDRbuG.css +0 -1
  982. package/dist/web/_app/immutable/assets/8.S1QdUGNM.css +0 -1
  983. package/dist/web/_app/immutable/assets/9.CT4xL4K3.css +0 -1
  984. package/dist/web/_app/immutable/assets/Copy.FS8bdfxr.css +0 -1
  985. package/dist/web/_app/immutable/assets/Toaster.rN8r_Hzv.css +0 -1
  986. package/dist/web/_app/immutable/assets/ViewToolbar.D-QW2oKe.css +0 -1
  987. package/dist/web/_app/immutable/assets/index.D6tMDJWk.css +0 -1
  988. package/dist/web/_app/immutable/chunks/37NdyH6G.js +0 -32
  989. package/dist/web/_app/immutable/chunks/4Hhzb6pv.js +0 -1
  990. package/dist/web/_app/immutable/chunks/72bZS3G9.js +0 -1
  991. package/dist/web/_app/immutable/chunks/7S2LGqoP.js +0 -2
  992. package/dist/web/_app/immutable/chunks/B340SUKR.js +0 -1
  993. package/dist/web/_app/immutable/chunks/BB_5th5W.js +0 -3383
  994. package/dist/web/_app/immutable/chunks/BI8HVuKu.js +0 -1
  995. package/dist/web/_app/immutable/chunks/BO9dsUba.js +0 -1
  996. package/dist/web/_app/immutable/chunks/BS2rFAVq.js +0 -1
  997. package/dist/web/_app/immutable/chunks/BSsDC_p4.js +0 -1
  998. package/dist/web/_app/immutable/chunks/BTX2Jr8_.js +0 -1
  999. package/dist/web/_app/immutable/chunks/Bsacq2UX.js +0 -1
  1000. package/dist/web/_app/immutable/chunks/ByunV8un.js +0 -1
  1001. package/dist/web/_app/immutable/chunks/C7VoTosa.js +0 -2
  1002. package/dist/web/_app/immutable/chunks/CDV5Q7RN.js +0 -1
  1003. package/dist/web/_app/immutable/chunks/CJ8__CWt.js +0 -1
  1004. package/dist/web/_app/immutable/chunks/CJUKmosC.js +0 -5
  1005. package/dist/web/_app/immutable/chunks/CSVbGg_b.js +0 -5
  1006. package/dist/web/_app/immutable/chunks/CT6oIU-C.js +0 -1
  1007. package/dist/web/_app/immutable/chunks/CTRxNfZk.js +0 -1
  1008. package/dist/web/_app/immutable/chunks/CWQRQXxy.js +0 -1
  1009. package/dist/web/_app/immutable/chunks/CXAIHzUX.js +0 -1
  1010. package/dist/web/_app/immutable/chunks/CXH6iFbA.js +0 -1
  1011. package/dist/web/_app/immutable/chunks/CX_61fY8.js +0 -5
  1012. package/dist/web/_app/immutable/chunks/CYrVHOHA.js +0 -1
  1013. package/dist/web/_app/immutable/chunks/CaQ0MRCC.js +0 -1
  1014. package/dist/web/_app/immutable/chunks/CdeYcEuU.js +0 -1
  1015. package/dist/web/_app/immutable/chunks/CmCtpZ1Y.js +0 -1
  1016. package/dist/web/_app/immutable/chunks/CqkleIqs.js +0 -1
  1017. package/dist/web/_app/immutable/chunks/CrdV0ttd.js +0 -1
  1018. package/dist/web/_app/immutable/chunks/CscoF-YL.js +0 -18
  1019. package/dist/web/_app/immutable/chunks/Cx4YdFMk.js +0 -1
  1020. package/dist/web/_app/immutable/chunks/D7ZqAKi9.js +0 -3
  1021. package/dist/web/_app/immutable/chunks/DF6CqIgb.js +0 -1
  1022. package/dist/web/_app/immutable/chunks/DGbA7IXh.js +0 -2
  1023. package/dist/web/_app/immutable/chunks/DUScXtWD.js +0 -2
  1024. package/dist/web/_app/immutable/chunks/DYsIuENi.js +0 -1
  1025. package/dist/web/_app/immutable/chunks/DbbB6Up5.js +0 -1
  1026. package/dist/web/_app/immutable/chunks/DnL9f0lc.js +0 -7
  1027. package/dist/web/_app/immutable/chunks/Dnnz2_is.js +0 -1
  1028. package/dist/web/_app/immutable/chunks/DtM5cEDu.js +0 -1
  1029. package/dist/web/_app/immutable/chunks/DviMV1EY.js +0 -4
  1030. package/dist/web/_app/immutable/chunks/Eqahi7_S.js +0 -2
  1031. package/dist/web/_app/immutable/chunks/FdYTYKiQ.js +0 -1
  1032. package/dist/web/_app/immutable/chunks/O9Eb9k00.js +0 -1
  1033. package/dist/web/_app/immutable/chunks/PPVm8Dsz.js +0 -1
  1034. package/dist/web/_app/immutable/chunks/QF8MAmnc.js +0 -1
  1035. package/dist/web/_app/immutable/chunks/UjzxCpxn.js +0 -1
  1036. package/dist/web/_app/immutable/chunks/WSUKABI_.js +0 -1
  1037. package/dist/web/_app/immutable/chunks/Y90OgS-9.js +0 -1
  1038. package/dist/web/_app/immutable/chunks/cLyZlkXv.js +0 -1
  1039. package/dist/web/_app/immutable/chunks/iDtAARVW.js +0 -2
  1040. package/dist/web/_app/immutable/chunks/oC_W7W7p.js +0 -1
  1041. package/dist/web/_app/immutable/chunks/rJdWIgh-.js +0 -1
  1042. package/dist/web/_app/immutable/chunks/tvOsokaa.js +0 -1
  1043. package/dist/web/_app/immutable/chunks/uLEXaPwE.js +0 -1
  1044. package/dist/web/_app/immutable/chunks/vSaooFHB.js +0 -1
  1045. package/dist/web/_app/immutable/entry/app.CaogB_bT.js +0 -2
  1046. package/dist/web/_app/immutable/entry/start.wZ7yhkXM.js +0 -1
  1047. package/dist/web/_app/immutable/nodes/0.Cq712UJU.js +0 -2
  1048. package/dist/web/_app/immutable/nodes/1.Cf_Sxi8f.js +0 -1
  1049. package/dist/web/_app/immutable/nodes/10.EhMTpB-W.js +0 -1
  1050. package/dist/web/_app/immutable/nodes/2.pdWVc6Tw.js +0 -168
  1051. package/dist/web/_app/immutable/nodes/3.DP7cSzLO.js +0 -1
  1052. package/dist/web/_app/immutable/nodes/4.BASs7ojR.js +0 -12
  1053. package/dist/web/_app/immutable/nodes/5.ZimC-3ag.js +0 -4
  1054. package/dist/web/_app/immutable/nodes/6.CnZ2TeIl.js +0 -2
  1055. package/dist/web/_app/immutable/nodes/7.hxwrWQeK.js +0 -2
  1056. package/dist/web/_app/immutable/nodes/8.DEJ5W3rM.js +0 -1
  1057. package/dist/web/_app/immutable/nodes/9.CIrEHtYu.js +0 -1
@@ -1,992 +0,0 @@
1
- /**
2
- * Sync & Workspace Tools for Studiograph Agent
3
- *
4
- * These tools allow the agent to:
5
- * - Sync external data into collections (collection-scoped sync)
6
- * - Refresh individual synced entities from their source
7
- * - Manage workspace git operations (commit, push, pull, status)
8
- * - Inspect MCP connectors for sync configuration
9
- */
10
- import { Type as T } from '@sinclair/typebox';
11
- import { spawnSync } from 'child_process';
12
- import { gitPush, gitPull } from '../../utils/git.js';
13
- import { existsSync } from 'fs';
14
- import { join } from 'path';
15
- import { homedir } from 'os';
16
- import { commitRepos } from '../../services/sync/commit.js';
17
- import { StagingManager } from '../../services/sync/staging.js';
18
- import { SourceConfigManager } from '../../services/sync/source-config.js';
19
- import { ConnectorManager } from '../../mcp/connector-manager.js';
20
- import { SOURCE_DEFINITIONS } from '../../services/sync/source-definitions/definitions.js';
21
- import { syncRepo, syncWorkspaceRule } from '../../services/sync/collection-sync.js';
22
- import { refreshEntity } from '../../services/sync/entity-refresh.js';
23
- import { wrapToolResult } from './graph-tools.js';
24
- import { VectorService } from '../../services/vector-service.js';
25
- import { BaseGraphManager } from '../../core/graph.js';
26
- import { loadUserConfig } from '../../core/user-config.js';
27
- export function createSyncTools(workspacePath, workspaceConfig, registryRef, getCurrentUser) {
28
- const getUser = getCurrentUser ?? (() => null);
29
- const getRegistry = () => registryRef?.registry ?? null;
30
- function adminOnly() {
31
- const user = getUser();
32
- if (!user)
33
- return null;
34
- if (user.role === 'admin')
35
- return null;
36
- return 'Sync operations require admin access.';
37
- }
38
- return [
39
- // ── Collection-scoped sync tools ─────────────────────────────────────────
40
- // Sync a collection — runs collection-level rules AND workspace-level rules targeting it
41
- {
42
- name: 'sync_collection',
43
- label: 'Sync Collection',
44
- description: 'Pull new entities from external sources into a collection (admin only). Runs both collection-level sync rules and any workspace-level sync rules that target this collection. Creates new entities only — existing entities (matched by source_ref) are never updated. Always confirm with the user before calling.',
45
- parameters: T.Object({
46
- collection: T.String({ description: 'Collection name to sync' }),
47
- }),
48
- execute: async (toolCallId, params) => {
49
- try {
50
- const denied = adminOnly();
51
- if (denied)
52
- return wrapToolResult({ success: false, error: denied });
53
- const progress = [];
54
- const { results } = await syncRepo({
55
- workspacePath,
56
- collectionName: params.collection,
57
- workspaceConfig,
58
- schemaExtensions: workspaceConfig.schema_extensions,
59
- onProgress: (msg) => progress.push(msg),
60
- });
61
- const totalCreated = results.reduce((s, r) => r.targets.reduce((ts, t) => ts + t.created + t.derived, 0) + s, 0);
62
- const totalSkipped = results.reduce((s, r) => r.targets.reduce((ts, t) => ts + t.skipped, 0) + s, 0);
63
- return wrapToolResult({
64
- success: true,
65
- results,
66
- summary: `Created ${totalCreated}, skipped ${totalSkipped}`,
67
- progress: progress.join('\n'),
68
- nextSteps: totalCreated > 0 ? 'Commit changes with workspace_commit' : undefined,
69
- });
70
- }
71
- catch (error) {
72
- return wrapToolResult({
73
- success: false,
74
- error: error instanceof Error ? error.message : 'Unknown error',
75
- });
76
- }
77
- },
78
- },
79
- // Run all workspace-level sync rules
80
- {
81
- name: 'sync_workspace',
82
- label: 'Sync Workspace',
83
- description: 'Run all workspace-level sync rules (admin only). Each rule fetches from its source once and distributes records to multiple target collections.',
84
- parameters: T.Object({}),
85
- execute: async (toolCallId, _params) => {
86
- try {
87
- const denied = adminOnly();
88
- if (denied)
89
- return wrapToolResult({ success: false, error: denied });
90
- const rules = workspaceConfig.sync ?? [];
91
- if (rules.length === 0) {
92
- return wrapToolResult({ success: true, results: [], summary: 'No workspace-level sync rules configured' });
93
- }
94
- const progress = [];
95
- const results = [];
96
- for (const rule of rules) {
97
- const result = await syncWorkspaceRule({
98
- workspacePath,
99
- rule,
100
- workspaceConfig,
101
- schemaExtensions: workspaceConfig.schema_extensions,
102
- onProgress: (msg) => progress.push(msg),
103
- });
104
- results.push(result);
105
- }
106
- const totalCreated = results.reduce((s, r) => r.targets.reduce((ts, t) => ts + t.created + t.derived, 0) + s, 0);
107
- return wrapToolResult({
108
- success: true,
109
- results,
110
- summary: `Ran ${rules.length} workspace rule(s), created ${totalCreated} entities`,
111
- progress: progress.join('\n'),
112
- nextSteps: totalCreated > 0 ? 'Commit changes with workspace_commit' : undefined,
113
- });
114
- }
115
- catch (error) {
116
- return wrapToolResult({
117
- success: false,
118
- error: error instanceof Error ? error.message : 'Unknown error',
119
- });
120
- }
121
- },
122
- },
123
- // Refresh a single synced entity
124
- {
125
- name: 'sync_refresh',
126
- label: 'Refresh Synced Entity',
127
- description: 'Refresh a single entity from its external source (admin only). Shows what fields have changed.',
128
- parameters: T.Object({
129
- entity_id: T.String({ description: 'Entity ID to refresh' }),
130
- collection: T.Optional(T.String({ description: 'Collection name (auto-detected if omitted)' })),
131
- entity_type: T.Optional(T.String({ description: 'Entity type (auto-detected if omitted)' })),
132
- apply: T.Optional(T.Boolean({ description: 'Apply changes immediately (default: false, just show diff)' })),
133
- }),
134
- execute: async (toolCallId, params) => {
135
- const denied = adminOnly();
136
- if (denied)
137
- return wrapToolResult({ success: false, error: denied });
138
- try {
139
- let { collection, entity_type, entity_id, apply } = params;
140
- // Auto-detect collection and entity_type if not provided
141
- if (!collection || !entity_type) {
142
- for (const repo of workspaceConfig.repos) {
143
- try {
144
- const repoPath = join(workspacePath, repo.path);
145
- if (!existsSync(repoPath))
146
- continue;
147
- const graph = new BaseGraphManager({
148
- repoPath,
149
- repoName: repo.name,
150
- gitUser: { id: 'agent', name: 'Agent', email: 'agent@studiograph.local' },
151
- });
152
- const entities = graph.list();
153
- const match = entities.find(e => e.data?.entity_id === entity_id);
154
- if (match) {
155
- collection = repo.name;
156
- entity_type = match.entityType;
157
- break;
158
- }
159
- }
160
- catch { /* skip */ }
161
- }
162
- }
163
- if (!collection || !entity_type) {
164
- return wrapToolResult({
165
- success: false,
166
- error: `Entity "${entity_id}" not found in any collection`,
167
- });
168
- }
169
- const result = await refreshEntity({
170
- workspacePath,
171
- collectionName: collection,
172
- entityType: entity_type,
173
- entityId: entity_id,
174
- workspaceConfig: workspaceConfig,
175
- schemaExtensions: workspaceConfig.schema_extensions,
176
- apply: apply ?? false,
177
- });
178
- if (result.diffs.length === 0 && !result.body_changed) {
179
- return wrapToolResult({
180
- success: true,
181
- message: 'Entity is already up to date with the source.',
182
- entity_id,
183
- source_ref: result.source_ref,
184
- });
185
- }
186
- return wrapToolResult({
187
- success: true,
188
- entity_id,
189
- source_ref: result.source_ref,
190
- applied: result.applied,
191
- changes: result.diffs.map(d => ({
192
- field: d.field,
193
- from: d.old_value,
194
- to: d.new_value,
195
- })),
196
- body_changed: result.body_changed,
197
- nextSteps: result.applied
198
- ? 'Changes applied. Commit with workspace_commit.'
199
- : 'Review the changes above and call sync_refresh with apply: true to apply them.',
200
- });
201
- }
202
- catch (error) {
203
- return wrapToolResult({
204
- success: false,
205
- error: error instanceof Error ? error.message : 'Unknown error',
206
- });
207
- }
208
- },
209
- },
210
- // Show sync status across collections
211
- {
212
- name: 'sync_status',
213
- label: 'Sync Status',
214
- description: 'Show which collections have sync rules configured, their sources, and last sync time. Use this when users ask about sync configuration or what has been synced.',
215
- parameters: T.Object({
216
- collection: T.Optional(T.String({ description: 'Filter to a specific collection' })),
217
- }),
218
- execute: async (toolCallId, params) => {
219
- try {
220
- const repos = params.collection
221
- ? workspaceConfig.repos.filter(r => r.name === params.collection)
222
- : workspaceConfig.repos;
223
- const collections = [];
224
- for (const repo of repos) {
225
- const syncRules = repo.sync;
226
- if (!syncRules || syncRules.length === 0)
227
- continue;
228
- let syncedCount = 0;
229
- let lastSync = null;
230
- try {
231
- const repoPath = join(workspacePath, repo.path);
232
- if (!existsSync(repoPath))
233
- continue;
234
- const graph = new BaseGraphManager({
235
- repoPath,
236
- repoName: repo.name,
237
- gitUser: { id: 'agent', name: 'Agent', email: 'agent@studiograph.local' },
238
- });
239
- for (const entity of graph.list()) {
240
- const syncedAt = entity.data?.synced_at;
241
- if (syncedAt) {
242
- syncedCount++;
243
- if (!lastSync || syncedAt > lastSync)
244
- lastSync = syncedAt;
245
- }
246
- }
247
- }
248
- catch { /* skip */ }
249
- collections.push({ name: repo.name, syncRules, syncedCount, lastSync });
250
- }
251
- // Also list available source definitions
252
- const configMgr = new SourceConfigManager(workspacePath);
253
- const sources = configMgr.getAll().map(s => s.name);
254
- // Check for new-format too
255
- const { readdirSync } = await import('fs');
256
- const sourcesDir = join(workspacePath, '.studiograph', 'sources');
257
- if (existsSync(sourcesDir)) {
258
- for (const file of readdirSync(sourcesDir)) {
259
- if (!file.endsWith('.json'))
260
- continue;
261
- const name = file.replace('.json', '');
262
- if (!sources.includes(name)) {
263
- const def = configMgr.getDefinition(name);
264
- if (def)
265
- sources.push(name);
266
- }
267
- }
268
- }
269
- return wrapToolResult({
270
- success: true,
271
- collections,
272
- availableSources: sources,
273
- message: collections.length > 0
274
- ? `${collections.length} collection(s) with sync rules`
275
- : 'No collections have sync rules configured.',
276
- });
277
- }
278
- catch (error) {
279
- return wrapToolResult({
280
- success: false,
281
- error: error instanceof Error ? error.message : 'Unknown error',
282
- });
283
- }
284
- },
285
- },
286
- // Git commit across workspace repos
287
- {
288
- name: 'workspace_commit',
289
- label: 'Commit Changes',
290
- description: 'Git commit entity changes across all workspace repos. Works after sync_apply, enrich_run, or manual edits. Always confirm with the user before calling this.',
291
- parameters: T.Object({
292
- messagePrefix: T.Optional(T.String({ description: 'Commit message prefix (default: "update")' })),
293
- }),
294
- execute: async (toolCallId, params) => {
295
- try {
296
- const progress = [];
297
- await commitRepos(workspacePath, (msg) => progress.push(msg), { messagePrefix: params.messagePrefix ?? 'update' });
298
- return wrapToolResult({
299
- success: true,
300
- progress: progress.join('\n'),
301
- });
302
- }
303
- catch (error) {
304
- return wrapToolResult({
305
- success: false,
306
- error: error instanceof Error ? error.message : 'Unknown error',
307
- });
308
- }
309
- },
310
- },
311
- // List sources and connectors
312
- {
313
- name: 'sync_list_sources',
314
- label: 'List Sync Sources',
315
- description: 'Read sync source configurations. Returns full source configs with entity_mappings, field maps, transforms, and all settings. Also lists available connectors and known source definitions. Use this whenever users ask about their source config.',
316
- parameters: T.Object({}),
317
- execute: async (toolCallId, params) => {
318
- try {
319
- const configMgr = new SourceConfigManager(workspacePath);
320
- const sources = configMgr.getAll();
321
- // Load connectors but strip sensitive fields
322
- const connectors = ConnectorManager.loadConfigs(workspacePath).map(c => ({
323
- name: c.name,
324
- url: c.url,
325
- description: c.description,
326
- }));
327
- const availableDefinitions = Object.keys(SOURCE_DEFINITIONS);
328
- return wrapToolResult({
329
- success: true,
330
- sources,
331
- connectors,
332
- availableDefinitions,
333
- });
334
- }
335
- catch (error) {
336
- return wrapToolResult({
337
- success: false,
338
- error: error instanceof Error ? error.message : 'Unknown error',
339
- });
340
- }
341
- },
342
- },
343
- // Set up a new source
344
- {
345
- name: 'sync_setup_source',
346
- label: 'Setup Sync Source',
347
- description: 'Add or reconfigure a sync source (admin only).',
348
- parameters: T.Object({
349
- name: T.String({ description: 'Source name — must match a built-in source definition (e.g. "linear", "pipedrive", "granola", "asana")' }),
350
- connector: T.Optional(T.String({ description: 'Connector name (defaults to source name)' })),
351
- force: T.Optional(T.Boolean({ description: 'Overwrite existing source config' })),
352
- }),
353
- execute: async (toolCallId, params) => {
354
- try {
355
- const denied = adminOnly();
356
- if (denied)
357
- return wrapToolResult({ success: false, error: denied });
358
- const configMgr = new SourceConfigManager(workspacePath);
359
- const connectorName = params.connector ?? params.name;
360
- // Check if source already exists
361
- const existing = configMgr.get(params.name);
362
- if (existing && !params.force) {
363
- return wrapToolResult({
364
- success: false,
365
- error: `Source "${params.name}" already exists. Use force: true to overwrite.`,
366
- });
367
- }
368
- // Verify connector exists
369
- const connectors = ConnectorManager.loadConfigs(workspacePath);
370
- const connector = connectors.find(c => c.name === connectorName);
371
- if (!connector) {
372
- return wrapToolResult({
373
- success: false,
374
- error: `Connector "${connectorName}" not found. Set up the connector first using the CLI: studiograph connector add ${connectorName}`,
375
- availableConnectors: connectors.map(c => c.name),
376
- });
377
- }
378
- // Built-in definition required — don't allow custom configs
379
- const definition = SOURCE_DEFINITIONS[params.name] ?? SOURCE_DEFINITIONS[connectorName];
380
- if (!definition || !definition.entities || Object.keys(definition.entities).length === 0) {
381
- return wrapToolResult({
382
- success: false,
383
- error: `No built-in source definition for "${params.name}". Available sources: ${Object.keys(SOURCE_DEFINITIONS).join(', ')}`,
384
- });
385
- }
386
- // Save as new-format source definition
387
- const savedDef = {
388
- ...definition,
389
- name: params.name,
390
- enabled: true,
391
- added_at: new Date().toISOString(),
392
- };
393
- configMgr.saveDefinition(params.name, savedDef);
394
- const entityTypes = Object.keys(definition.entities);
395
- return wrapToolResult({
396
- success: true,
397
- message: `Source "${params.name}" configured with ${entityTypes.length} entity type(s): ${entityTypes.join(', ')}. Assign it to a collection via sync rules in collection settings.`,
398
- definition: savedDef,
399
- });
400
- }
401
- catch (error) {
402
- return wrapToolResult({
403
- success: false,
404
- error: error instanceof Error ? error.message : 'Unknown error',
405
- });
406
- }
407
- },
408
- },
409
- // Remove a source
410
- {
411
- name: 'sync_remove_source',
412
- label: 'Remove Sync Source',
413
- description: 'Remove a sync source configuration (admin only).',
414
- parameters: T.Object({
415
- name: T.String({ description: 'Source name to remove' }),
416
- }),
417
- execute: async (toolCallId, params) => {
418
- try {
419
- const denied = adminOnly();
420
- if (denied)
421
- return wrapToolResult({ success: false, error: denied });
422
- const configMgr = new SourceConfigManager(workspacePath);
423
- const removed = configMgr.remove(params.name);
424
- return wrapToolResult({
425
- success: true,
426
- removed,
427
- message: removed
428
- ? `Source "${params.name}" removed.`
429
- : `Source "${params.name}" not found.`,
430
- });
431
- }
432
- catch (error) {
433
- return wrapToolResult({
434
- success: false,
435
- error: error instanceof Error ? error.message : 'Unknown error',
436
- });
437
- }
438
- },
439
- },
440
- // ── Connector introspection for sync config building ────────────────────
441
- // Inspect a connector's tools, categorized for sync
442
- {
443
- name: 'sync_inspect_connector',
444
- label: 'Inspect Connector for Sync',
445
- description: 'Inspect a connector\'s MCP tools to understand what data types are available for sync. Auto-categorizes tools by purpose (list, get, search, create) and detects syncable entity types with their list/get tool pairs. Use this when building a new source config to understand what the connector offers.',
446
- parameters: T.Object({
447
- connector: T.String({ description: 'Connector name (e.g. "pipedrive", "linear", "granola")' }),
448
- }),
449
- execute: async (toolCallId, params) => {
450
- try {
451
- const reg = getRegistry();
452
- const tools = reg?.connectors.get(params.connector);
453
- if (!tools) {
454
- const available = reg ? [...reg.connectors.keys()] : [];
455
- return wrapToolResult({
456
- success: false,
457
- error: available.length === 0
458
- ? 'No connectors loaded yet. Connectors may still be initializing, or none are configured.'
459
- : `Connector "${params.connector}" not found`,
460
- availableConnectors: available,
461
- });
462
- }
463
- // Categorize tools by purpose
464
- const categories = {
465
- list: [],
466
- get: [],
467
- search: [],
468
- create: [],
469
- update: [],
470
- delete: [],
471
- other: [],
472
- };
473
- for (const tool of tools) {
474
- const n = tool.localName;
475
- if (/(?:^list_|_list$|_list_)/.test(n))
476
- categories.list.push({ name: n, description: tool.description });
477
- else if (/(?:^get_|_get$|^read_|_read$)/.test(n))
478
- categories.get.push({ name: n, description: tool.description });
479
- else if (/(?:^search_|_search$)/.test(n))
480
- categories.search.push({ name: n, description: tool.description });
481
- else if (/(?:^create_|_create$)/.test(n))
482
- categories.create.push({ name: n, description: tool.description });
483
- else if (/(?:^update_|_update$)/.test(n))
484
- categories.update.push({ name: n, description: tool.description });
485
- else if (/(?:^delete_|_delete$|^remove_|_remove$)/.test(n))
486
- categories.delete.push({ name: n, description: tool.description });
487
- else
488
- categories.other.push({ name: n, description: tool.description });
489
- }
490
- // Detect syncable entity types (list + optional get pairs)
491
- const toolNames = new Set(tools.map(t => t.localName));
492
- const detected = [];
493
- for (const tool of categories.list) {
494
- // Extract entity type from tool name
495
- let sourceType = null;
496
- const listMatch = tool.name.match(/^list_(.+?)s?$/);
497
- if (listMatch)
498
- sourceType = listMatch[1];
499
- if (!sourceType) {
500
- const suffixMatch = tool.name.match(/^(.+?)s?_list(?:_|$)/);
501
- if (suffixMatch)
502
- sourceType = suffixMatch[1];
503
- }
504
- if (!sourceType)
505
- continue;
506
- if (detected.some(d => d.source_type === sourceType))
507
- continue;
508
- // Find corresponding get tool
509
- const getVariants = [`get_${sourceType}`, `${sourceType}_get`, `${sourceType}s_get`, `read_${sourceType}`];
510
- const getTool = getVariants.find(g => toolNames.has(g)) ?? null;
511
- detected.push({ source_type: sourceType, list_tool: tool.name, get_tool: getTool });
512
- }
513
- return wrapToolResult({
514
- success: true,
515
- connector: params.connector,
516
- totalTools: tools.length,
517
- categories: Object.fromEntries(Object.entries(categories).filter(([_, v]) => v.length > 0)),
518
- syncableTypes: detected,
519
- hint: detected.length > 0
520
- ? 'Use sync_sample_data to fetch a sample record from any list tool and see available fields for field_map building.'
521
- : 'No list tools detected. This connector may not support sync, or tools may use non-standard naming.',
522
- });
523
- }
524
- catch (error) {
525
- return wrapToolResult({
526
- success: false,
527
- error: error instanceof Error ? error.message : 'Unknown error',
528
- });
529
- }
530
- },
531
- },
532
- // Fetch sample data from a connector to inspect field shapes
533
- {
534
- name: 'sync_sample_data',
535
- label: 'Fetch Sample Data',
536
- description: 'Fetch a sample record from a connector to inspect its field structure. Calls a list tool with limit 1 and returns the field names, types, nesting, and sample values. Use this to auto-build field_map entries for sync source configs.',
537
- parameters: T.Object({
538
- connector: T.String({ description: 'Connector name (e.g. "pipedrive", "linear")' }),
539
- tool: T.String({ description: 'Tool name to call (e.g. "deals_list", "list_issues")' }),
540
- arguments: T.Optional(T.Object({}, { additionalProperties: true, description: 'Extra arguments to pass to the tool (limit is auto-set to 1 if the tool accepts it)' })),
541
- }),
542
- execute: async (toolCallId, params) => {
543
- try {
544
- const reg = getRegistry();
545
- const tools = reg?.connectors.get(params.connector);
546
- if (!tools) {
547
- const available = reg ? [...reg.connectors.keys()] : [];
548
- return wrapToolResult({
549
- success: false,
550
- error: available.length === 0
551
- ? 'No connectors loaded yet. Connectors may still be initializing, or none are configured.'
552
- : `Connector "${params.connector}" not found`,
553
- availableConnectors: available,
554
- });
555
- }
556
- const tool = tools.find(t => t.localName === params.tool);
557
- if (!tool) {
558
- return wrapToolResult({
559
- success: false,
560
- error: `Tool "${params.tool}" not found in ${params.connector}`,
561
- availableTools: tools.slice(0, 30).map(t => t.localName),
562
- });
563
- }
564
- // Build arguments — try to limit to 1 record
565
- const args = { ...params.arguments };
566
- const schema = tool.parameters;
567
- const props = schema?.properties || {};
568
- if ('limit' in props && !args.limit)
569
- args.limit = 1;
570
- if ('first' in props && !args.first)
571
- args.first = 1;
572
- if ('per_page' in props && !args.per_page)
573
- args.per_page = 1;
574
- if ('page_size' in props && !args.page_size)
575
- args.page_size = 1;
576
- // Call the tool
577
- const result = await tool.execute(toolCallId, args);
578
- const text = result?.content?.[0]?.text ?? '';
579
- // Parse the response
580
- let data;
581
- try {
582
- data = JSON.parse(text);
583
- }
584
- catch {
585
- // Some tools return double-wrapped content
586
- try {
587
- const outer = JSON.parse(text);
588
- if (outer.content?.[0]?.text) {
589
- data = JSON.parse(outer.content[0].text);
590
- }
591
- }
592
- catch {
593
- return wrapToolResult({
594
- success: true,
595
- rawResponse: text.slice(0, 3000),
596
- note: 'Response is not JSON. Showing raw text for manual inspection.',
597
- });
598
- }
599
- }
600
- // Extract the first record from common response shapes
601
- let record = null;
602
- if (Array.isArray(data)) {
603
- record = data[0];
604
- }
605
- else if (data?.data && Array.isArray(data.data)) {
606
- record = data.data[0];
607
- }
608
- else if (data?.items && Array.isArray(data.items)) {
609
- record = data.items[0];
610
- }
611
- else if (data?.results && Array.isArray(data.results)) {
612
- record = data.results[0];
613
- }
614
- else if (data?.nodes && Array.isArray(data.nodes)) {
615
- record = data.nodes[0];
616
- }
617
- else if (typeof data === 'object' && data !== null && !Array.isArray(data)) {
618
- // Might be a single record response
619
- record = data;
620
- }
621
- if (!record) {
622
- return wrapToolResult({
623
- success: true,
624
- note: 'No records returned. The source may be empty or the tool may need different arguments.',
625
- responseShape: typeof data,
626
- responseKeys: data && typeof data === 'object' ? Object.keys(data) : [],
627
- });
628
- }
629
- // Analyze field structure
630
- const analyzeFields = (obj, prefix = '') => {
631
- const fields = [];
632
- if (!obj || typeof obj !== 'object')
633
- return fields;
634
- for (const [key, value] of Object.entries(obj)) {
635
- const path = prefix ? `${prefix}.${key}` : key;
636
- const type = value === null ? 'null'
637
- : Array.isArray(value) ? `array(${value.length})`
638
- : typeof value;
639
- // Truncate long strings for display
640
- let sample = value;
641
- if (typeof value === 'string' && value.length > 100) {
642
- sample = value.slice(0, 100) + '...';
643
- }
644
- if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
645
- fields.push({ path, type: 'object', sample: `{${Object.keys(value).join(', ')}}` });
646
- // Recurse one level into objects
647
- fields.push(...analyzeFields(value, path));
648
- }
649
- else if (Array.isArray(value) && value.length > 0 && typeof value[0] === 'object') {
650
- fields.push({ path, type: `array(${value.length})`, sample: `[{${Object.keys(value[0]).join(', ')}}]` });
651
- }
652
- else {
653
- fields.push({ path, type, sample });
654
- }
655
- }
656
- return fields;
657
- };
658
- const fields = analyzeFields(record);
659
- // Suggest field_map entries for common entity fields
660
- const topLevelKeys = Object.keys(record);
661
- const suggestions = {};
662
- const nameFields = ['title', 'name', 'subject', 'summary'];
663
- const statusFields = ['status', 'state', 'stage'];
664
- const dateFields = ['created_at', 'createdAt', 'date', 'start_date', 'due_date', 'dueDate'];
665
- const descFields = ['description', 'content', 'body', 'notes', 'note'];
666
- for (const key of topLevelKeys) {
667
- if (nameFields.includes(key))
668
- suggestions[key] = 'name';
669
- else if (statusFields.includes(key))
670
- suggestions[key] = 'status';
671
- else if (dateFields.includes(key))
672
- suggestions[key] = 'date (use date-iso transform)';
673
- else if (descFields.includes(key))
674
- suggestions[key] = 'description (or use as content_from)';
675
- }
676
- return wrapToolResult({
677
- success: true,
678
- connector: params.connector,
679
- tool: params.tool,
680
- fieldCount: fields.length,
681
- fields,
682
- topLevelKeys,
683
- suggestedFieldMap: Object.keys(suggestions).length > 0 ? suggestions : undefined,
684
- hint: 'Use these field paths in field_map when configuring sync_setup_source. Nested fields use dot notation (e.g. "org_id.name": "organization").',
685
- });
686
- }
687
- catch (error) {
688
- return wrapToolResult({
689
- success: false,
690
- error: error instanceof Error ? error.message : 'Unknown error',
691
- });
692
- }
693
- },
694
- },
695
- // Reset workspace (discard uncommitted changes)
696
- {
697
- name: 'workspace_reset',
698
- label: 'Reset Workspace',
699
- description: 'Discard ALL uncommitted changes across workspace repos: reverts modified files (git checkout) and removes untracked files (git clean -fd). Also clears staging if present. This is destructive — always confirm with the user before calling.',
700
- parameters: T.Object({}),
701
- execute: async (toolCallId, _params) => {
702
- try {
703
- const repos = workspaceConfig.repos ?? [];
704
- const resetRepos = [];
705
- const details = [];
706
- for (const repo of repos) {
707
- const repoPath = join(workspacePath, repo.path);
708
- if (!existsSync(repoPath))
709
- continue;
710
- // Check if there are changes to reset
711
- const status = spawnSync('git', ['status', '--porcelain'], { cwd: repoPath, encoding: 'utf-8' });
712
- if (status.status !== 0 || !status.stdout.trim())
713
- continue;
714
- const fileCount = status.stdout.trim().split('\n').length;
715
- // Revert tracked file changes
716
- spawnSync('git', ['checkout', '--', '.'], { cwd: repoPath, encoding: 'utf-8' });
717
- // Remove untracked files and directories
718
- spawnSync('git', ['clean', '-fd'], { cwd: repoPath, encoding: 'utf-8' });
719
- resetRepos.push(repo.name);
720
- details.push(`${repo.name}: ${fileCount} file(s) reset`);
721
- }
722
- // Clear staging too
723
- let clearedStaging = false;
724
- try {
725
- const staging = new StagingManager(workspacePath);
726
- if (staging.hasStaging()) {
727
- staging.clear();
728
- clearedStaging = true;
729
- }
730
- }
731
- catch { /* staging dir may not exist */ }
732
- const parts = [];
733
- if (resetRepos.length > 0)
734
- parts.push(`Reset ${resetRepos.length} repo(s): ${resetRepos.join(', ')}`);
735
- if (clearedStaging)
736
- parts.push('Cleared staging');
737
- return wrapToolResult({
738
- success: true,
739
- resetRepos,
740
- details,
741
- clearedStaging,
742
- message: parts.length > 0 ? parts.join('. ') + '.' : 'No changes to reset.',
743
- });
744
- }
745
- catch (error) {
746
- return wrapToolResult({
747
- success: false,
748
- error: String(error instanceof Error ? error.message : error),
749
- });
750
- }
751
- },
752
- },
753
- // Reindex search
754
- {
755
- name: 'workspace_reindex',
756
- label: 'Reindex Search',
757
- description: 'Rebuild the search index (LanceDB) for all workspace collections. Run after sync, enrich, or manual entity edits to update search results.',
758
- parameters: T.Object({
759
- repo: T.Optional(T.String({ description: 'Reindex a single collection only' })),
760
- }),
761
- execute: async (toolCallId, params) => {
762
- try {
763
- const userConfig = loadUserConfig();
764
- const dbPath = userConfig.vector_db_path || join(homedir(), '.studiograph', 'vector');
765
- const vectorService = new VectorService(dbPath, userConfig.voyage_api_key);
766
- await vectorService.init();
767
- const allRepos = workspaceConfig.repos ?? [];
768
- const repos = params.repo
769
- ? allRepos.filter(r => r.name === params.repo)
770
- : allRepos;
771
- if (params.repo && repos.length === 0) {
772
- return wrapToolResult({
773
- success: false,
774
- error: `Repo "${params.repo}" not found in workspace`,
775
- availableRepos: allRepos.map(r => r.name),
776
- });
777
- }
778
- const repoResults = {};
779
- let totalIndexed = 0;
780
- for (const repo of repos) {
781
- const repoPath = join(workspacePath, repo.path);
782
- if (!existsSync(repoPath))
783
- continue;
784
- try {
785
- const graph = new BaseGraphManager({
786
- repoPath,
787
- repoName: repo.name,
788
- gitUser: { id: 'reindex', name: 'reindex', email: 'reindex@studiograph.local' },
789
- });
790
- const entities = graph.list();
791
- if (entities.length > 0) {
792
- await vectorService.upsertMany(repo.name, entities);
793
- }
794
- vectorService.setLastIndexedTime(repo.name);
795
- repoResults[repo.name] = entities.length;
796
- totalIndexed += entities.length;
797
- }
798
- catch (err) {
799
- repoResults[repo.name] = -1; // signal failure
800
- }
801
- }
802
- return wrapToolResult({
803
- success: true,
804
- indexed: totalIndexed,
805
- repos: repoResults,
806
- message: `Indexed ${totalIndexed} entities across ${repos.length} repo(s)`,
807
- });
808
- }
809
- catch (error) {
810
- return wrapToolResult({
811
- success: false,
812
- error: error instanceof Error ? error.message : 'Unknown error',
813
- });
814
- }
815
- },
816
- },
817
- // ── Graph status & review ─────────────────────────────────────────────────
818
- // Show changed files across repos
819
- {
820
- name: 'workspace_status',
821
- label: 'Workspace Status',
822
- description: 'Show uncommitted git changes across all workspace repos. Use this when users ask about pending changes, what files are modified, or whether there are changes ready to commit.',
823
- parameters: T.Object({}),
824
- execute: async (toolCallId, params) => {
825
- try {
826
- const repos = workspaceConfig.repos ?? [];
827
- const changes = {};
828
- let totalChanged = 0;
829
- for (const repo of repos) {
830
- const repoPath = join(workspacePath, repo.path);
831
- if (!existsSync(repoPath))
832
- continue;
833
- const result = spawnSync('git', ['status', '--porcelain'], { cwd: repoPath, encoding: 'utf-8' });
834
- if (result.status === 0 && result.stdout.trim()) {
835
- const files = result.stdout.trim().split('\n').filter(Boolean);
836
- changes[repo.name] = files;
837
- totalChanged += files.length;
838
- }
839
- }
840
- return wrapToolResult({
841
- success: true,
842
- totalChanged,
843
- changes,
844
- message: totalChanged > 0
845
- ? `${totalChanged} file${totalChanged === 1 ? '' : 's'} changed across ${Object.keys(changes).length} repo${Object.keys(changes).length === 1 ? '' : 's'}`
846
- : 'No uncommitted changes.',
847
- });
848
- }
849
- catch (error) {
850
- return wrapToolResult({
851
- success: false,
852
- error: error instanceof Error ? error.message : 'Unknown error',
853
- });
854
- }
855
- },
856
- },
857
- // Show diffs for review
858
- {
859
- name: 'workspace_review',
860
- label: 'Review Changes',
861
- description: 'Show git diffs for uncommitted entity changes across workspace repos. Use this to preview what will be committed. Optionally filter by entity type or specific file path.',
862
- parameters: T.Object({
863
- entityType: T.Optional(T.String({ description: 'Filter diff to a specific entity type (e.g. "person", "deal")' })),
864
- file: T.Optional(T.String({ description: 'Show diff for a specific file path' })),
865
- committed: T.Optional(T.Boolean({ description: 'Review last commit instead of uncommitted changes' })),
866
- }),
867
- execute: async (toolCallId, params) => {
868
- try {
869
- const repos = workspaceConfig.repos ?? [];
870
- const diffArgs = params.committed
871
- ? ['diff', 'HEAD~1..HEAD']
872
- : ['diff'];
873
- const diffs = {};
874
- for (const repo of repos) {
875
- const repoPath = join(workspacePath, repo.path);
876
- if (!existsSync(repoPath))
877
- continue;
878
- const args = [...diffArgs];
879
- if (params.file) {
880
- args.push('--', params.file);
881
- }
882
- else if (params.entityType) {
883
- args.push('--', `${params.entityType}/`);
884
- }
885
- const result = spawnSync('git', args, { cwd: repoPath, encoding: 'utf-8' });
886
- if (result.status === 0 && result.stdout.trim()) {
887
- // Truncate very large diffs to avoid overwhelming the context
888
- const diff = result.stdout;
889
- diffs[repo.name] = diff.length > 10000
890
- ? diff.slice(0, 10000) + '\n\n... (truncated, use --file for specific entities)'
891
- : diff;
892
- }
893
- }
894
- return wrapToolResult({
895
- success: true,
896
- hasDiffs: Object.keys(diffs).length > 0,
897
- diffs,
898
- message: Object.keys(diffs).length > 0
899
- ? `Diffs from ${Object.keys(diffs).length} repo(s)`
900
- : 'No changes found.',
901
- });
902
- }
903
- catch (error) {
904
- return wrapToolResult({
905
- success: false,
906
- error: error instanceof Error ? error.message : 'Unknown error',
907
- });
908
- }
909
- },
910
- },
911
- // Push all repos
912
- {
913
- name: 'workspace_push',
914
- label: 'Push Repos',
915
- description: 'Git push all workspace repos to their remotes. Always confirm with the user before calling this. IMPORTANT: Pushing does NOT automatically update a Railway deployment. If the workspace is deployed to Railway, call redeploy_railway after pushing to trigger a fresh deploy with the latest commits.',
916
- parameters: T.Object({}),
917
- execute: async (_toolCallId, _params) => {
918
- try {
919
- const repos = workspaceConfig.repos ?? [];
920
- const results = {};
921
- for (const repo of repos) {
922
- const repoPath = join(workspacePath, repo.path);
923
- if (!existsSync(repoPath))
924
- continue;
925
- try {
926
- results[repo.name] = gitPush(repoPath);
927
- }
928
- catch (err) {
929
- results[repo.name] = `error: ${err instanceof Error ? err.message : String(err)}`;
930
- }
931
- }
932
- const pushed = Object.values(results).filter(r => r === 'pushed').length;
933
- return wrapToolResult({
934
- success: true,
935
- results,
936
- message: pushed > 0
937
- ? `Pushed ${pushed} repo${pushed === 1 ? '' : 's'}`
938
- : 'All repos already up to date.',
939
- });
940
- }
941
- catch (error) {
942
- return wrapToolResult({
943
- success: false,
944
- error: error instanceof Error ? error.message : 'Unknown error',
945
- });
946
- }
947
- },
948
- },
949
- // Pull all repos
950
- {
951
- name: 'workspace_pull',
952
- label: 'Pull Repos',
953
- description: 'Git pull all workspace repos from their remotes. Reports conflicts if any.',
954
- parameters: T.Object({}),
955
- execute: async (_toolCallId, _params) => {
956
- try {
957
- const repos = workspaceConfig.repos ?? [];
958
- const results = {};
959
- for (const repo of repos) {
960
- const repoPath = join(workspacePath, repo.path);
961
- if (!existsSync(repoPath))
962
- continue;
963
- try {
964
- results[repo.name] = gitPull(repoPath);
965
- }
966
- catch (err) {
967
- results[repo.name] = `error: ${err instanceof Error ? err.message : String(err)}`;
968
- }
969
- }
970
- const updated = Object.values(results).filter(r => r === 'updated').length;
971
- const conflicts = Object.values(results).filter(r => r === 'conflict').length;
972
- return wrapToolResult({
973
- success: conflicts === 0,
974
- results,
975
- message: conflicts > 0
976
- ? `${conflicts} repo${conflicts === 1 ? '' : 's'} with merge conflicts — resolve manually`
977
- : updated > 0
978
- ? `Pulled updates in ${updated} repo${updated === 1 ? '' : 's'}`
979
- : 'All repos already up to date.',
980
- });
981
- }
982
- catch (error) {
983
- return wrapToolResult({
984
- success: false,
985
- error: error instanceof Error ? error.message : 'Unknown error',
986
- });
987
- }
988
- },
989
- },
990
- ];
991
- }
992
- //# sourceMappingURL=sync-tools.js.map