studiograph 1.3.48-next.17 → 1.3.48-next.170

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 (851) hide show
  1. package/README.md +20 -16
  2. package/dist/agent/agent-pool.d.ts +52 -3
  3. package/dist/agent/agent-pool.js +96 -15
  4. package/dist/agent/agent-pool.js.map +1 -1
  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 +47 -4
  9. package/dist/agent/orchestrator.js +301 -59
  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 +102 -54
  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 +75 -431
  19. package/dist/agent/skills/interview/entity-templates.md +38 -37
  20. package/dist/agent/skills/interview/question-domains.md +54 -49
  21. package/dist/agent/skills/interview/skill.md +84 -16
  22. package/dist/agent/skills/schema-rules.md +28 -28
  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 +6 -5
  30. package/dist/agent/tools/fs-tools.js +5 -5
  31. package/dist/agent/tools/fs-tools.js.map +1 -1
  32. package/dist/agent/tools/graph-tools.d.ts +19 -72
  33. package/dist/agent/tools/graph-tools.js +572 -322
  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/message-tools.d.ts +13 -11
  42. package/dist/agent/tools/message-tools.js +31 -39
  43. package/dist/agent/tools/message-tools.js.map +1 -1
  44. package/dist/agent/tools/ops-tools.d.ts +5 -4
  45. package/dist/agent/tools/ops-tools.js +130 -236
  46. package/dist/agent/tools/ops-tools.js.map +1 -1
  47. package/dist/agent/tools/permission-tools.d.ts +87 -17
  48. package/dist/agent/tools/permission-tools.js +233 -43
  49. package/dist/agent/tools/permission-tools.js.map +1 -1
  50. package/dist/agent/tools/tool-loader.js +5 -4
  51. package/dist/agent/tools/tool-loader.js.map +1 -1
  52. package/dist/agent/tools/web-tools.js +58 -9
  53. package/dist/agent/tools/web-tools.js.map +1 -1
  54. package/dist/cli/commands/about.d.ts +1 -0
  55. package/dist/cli/commands/about.js +55 -3
  56. package/dist/cli/commands/about.js.map +1 -1
  57. package/dist/cli/commands/admin/audit-workspace.d.ts +23 -0
  58. package/dist/cli/commands/admin/audit-workspace.js +133 -0
  59. package/dist/cli/commands/admin/audit-workspace.js.map +1 -0
  60. package/dist/cli/commands/admin/audit.d.ts +21 -0
  61. package/dist/cli/commands/admin/audit.js +174 -0
  62. package/dist/cli/commands/admin/audit.js.map +1 -0
  63. package/dist/cli/commands/admin/backup.d.ts +54 -0
  64. package/dist/cli/commands/admin/backup.js +207 -0
  65. package/dist/cli/commands/admin/backup.js.map +1 -0
  66. package/dist/cli/commands/admin/folder.d.ts +11 -0
  67. package/dist/cli/commands/admin/folder.js +186 -0
  68. package/dist/cli/commands/admin/folder.js.map +1 -0
  69. package/dist/cli/commands/admin/index.d.ts +16 -0
  70. package/dist/cli/commands/admin/index.js +46 -0
  71. package/dist/cli/commands/admin/index.js.map +1 -0
  72. package/dist/cli/commands/admin/migrate-assets.d.ts +53 -0
  73. package/dist/cli/commands/admin/migrate-assets.js +184 -0
  74. package/dist/cli/commands/admin/migrate-assets.js.map +1 -0
  75. package/dist/cli/commands/admin/migrate.d.ts +56 -0
  76. package/dist/cli/commands/admin/migrate.js +263 -0
  77. package/dist/cli/commands/admin/migrate.js.map +1 -0
  78. package/dist/cli/commands/admin/restore.d.ts +24 -0
  79. package/dist/cli/commands/admin/restore.js +228 -0
  80. package/dist/cli/commands/admin/restore.js.map +1 -0
  81. package/dist/cli/commands/admin/secrets.d.ts +23 -0
  82. package/dist/cli/commands/admin/secrets.js +256 -0
  83. package/dist/cli/commands/admin/secrets.js.map +1 -0
  84. package/dist/cli/commands/admin/settings.d.ts +28 -0
  85. package/dist/cli/commands/admin/settings.js +284 -0
  86. package/dist/cli/commands/admin/settings.js.map +1 -0
  87. package/dist/cli/commands/admin/token.d.ts +42 -0
  88. package/dist/cli/commands/admin/token.js +126 -0
  89. package/dist/cli/commands/admin/token.js.map +1 -0
  90. package/dist/cli/commands/admin/transfer-ownership.d.ts +15 -0
  91. package/dist/cli/commands/admin/transfer-ownership.js +106 -0
  92. package/dist/cli/commands/admin/transfer-ownership.js.map +1 -0
  93. package/dist/cli/commands/admin/user.d.ts +11 -0
  94. package/dist/cli/commands/admin/user.js +187 -0
  95. package/dist/cli/commands/admin/user.js.map +1 -0
  96. package/dist/cli/commands/audit.d.ts +21 -0
  97. package/dist/cli/commands/audit.js +174 -0
  98. package/dist/cli/commands/audit.js.map +1 -0
  99. package/dist/cli/commands/clear.d.ts +5 -0
  100. package/dist/cli/commands/clear.js +144 -1
  101. package/dist/cli/commands/clear.js.map +1 -1
  102. package/dist/cli/commands/clone.d.ts +25 -3
  103. package/dist/cli/commands/clone.js +142 -36
  104. package/dist/cli/commands/clone.js.map +1 -1
  105. package/dist/cli/commands/config.d.ts +23 -107
  106. package/dist/cli/commands/config.js +52 -260
  107. package/dist/cli/commands/config.js.map +1 -1
  108. package/dist/cli/commands/connector.d.ts +10 -13
  109. package/dist/cli/commands/connector.js +16 -58
  110. package/dist/cli/commands/connector.js.map +1 -1
  111. package/dist/cli/commands/deploy.js +215 -68
  112. package/dist/cli/commands/deploy.js.map +1 -1
  113. package/dist/cli/commands/folder.d.ts +11 -0
  114. package/dist/cli/commands/{collection.js → folder.js} +31 -30
  115. package/dist/cli/commands/folder.js.map +1 -0
  116. package/dist/cli/commands/index.js +2 -2
  117. package/dist/cli/commands/index.js.map +1 -1
  118. package/dist/cli/commands/init.js +10 -30
  119. package/dist/cli/commands/init.js.map +1 -1
  120. package/dist/cli/commands/join.d.ts +1 -1
  121. package/dist/cli/commands/join.js +26 -14
  122. package/dist/cli/commands/join.js.map +1 -1
  123. package/dist/cli/commands/mcp.js +12 -4
  124. package/dist/cli/commands/mcp.js.map +1 -1
  125. package/dist/cli/commands/r2.d.ts +3 -0
  126. package/dist/cli/commands/r2.js +223 -204
  127. package/dist/cli/commands/r2.js.map +1 -1
  128. package/dist/cli/commands/redeploy.js +65 -12
  129. package/dist/cli/commands/redeploy.js.map +1 -1
  130. package/dist/cli/commands/reset.d.ts +22 -6
  131. package/dist/cli/commands/reset.js +132 -34
  132. package/dist/cli/commands/reset.js.map +1 -1
  133. package/dist/cli/commands/secrets.d.ts +23 -0
  134. package/dist/cli/commands/secrets.js +256 -0
  135. package/dist/cli/commands/secrets.js.map +1 -0
  136. package/dist/cli/commands/serve.js +209 -24
  137. package/dist/cli/commands/serve.js.map +1 -1
  138. package/dist/cli/commands/settings.d.ts +28 -0
  139. package/dist/cli/commands/settings.js +284 -0
  140. package/dist/cli/commands/settings.js.map +1 -0
  141. package/dist/cli/commands/start.js +140 -71
  142. package/dist/cli/commands/start.js.map +1 -1
  143. package/dist/cli/commands/sync.d.ts +1 -1
  144. package/dist/cli/commands/sync.js +342 -282
  145. package/dist/cli/commands/sync.js.map +1 -1
  146. package/dist/cli/commands/user.js +27 -21
  147. package/dist/cli/commands/user.js.map +1 -1
  148. package/dist/cli/crypto-bundle.d.ts +39 -0
  149. package/dist/cli/crypto-bundle.js +94 -0
  150. package/dist/cli/crypto-bundle.js.map +1 -0
  151. package/dist/cli/index.js +24 -26
  152. package/dist/cli/index.js.map +1 -1
  153. package/dist/cli/railway-pin.d.ts +68 -0
  154. package/dist/cli/railway-pin.js +96 -0
  155. package/dist/cli/railway-pin.js.map +1 -0
  156. package/dist/cli/railway-provisioning.d.ts +53 -0
  157. package/dist/cli/railway-provisioning.js +85 -0
  158. package/dist/cli/railway-provisioning.js.map +1 -0
  159. package/dist/cli/scaffolding.d.ts +4 -2
  160. package/dist/cli/scaffolding.js +43 -48
  161. package/dist/cli/scaffolding.js.map +1 -1
  162. package/dist/cli/setup-wizard.d.ts +30 -49
  163. package/dist/cli/setup-wizard.js +39 -40
  164. package/dist/cli/setup-wizard.js.map +1 -1
  165. package/dist/core/accent-palette.d.ts +22 -0
  166. package/dist/core/accent-palette.js +47 -0
  167. package/dist/core/accent-palette.js.map +1 -0
  168. package/dist/core/cell-anchor.d.ts +29 -0
  169. package/dist/core/cell-anchor.js +53 -0
  170. package/dist/core/cell-anchor.js.map +1 -0
  171. package/dist/core/comment-anchor.d.ts +41 -0
  172. package/dist/core/comment-anchor.js +147 -0
  173. package/dist/core/comment-anchor.js.map +1 -0
  174. package/dist/core/embeds.d.ts +56 -0
  175. package/dist/core/embeds.js +103 -0
  176. package/dist/core/embeds.js.map +1 -0
  177. package/dist/core/entity-body-templates.d.ts +21 -0
  178. package/dist/core/entity-body-templates.js +53 -0
  179. package/dist/core/entity-body-templates.js.map +1 -0
  180. package/dist/core/entity-types-catalog.d.ts +65 -0
  181. package/dist/core/entity-types-catalog.js +140 -0
  182. package/dist/core/entity-types-catalog.js.map +1 -0
  183. package/dist/core/feature-flags.d.ts +22 -0
  184. package/dist/core/feature-flags.js +15 -0
  185. package/dist/core/feature-flags.js.map +1 -0
  186. package/dist/core/features.d.ts +16 -0
  187. package/dist/core/features.js +48 -0
  188. package/dist/core/features.js.map +1 -0
  189. package/dist/core/folder-paths.d.ts +41 -0
  190. package/dist/core/folder-paths.js +95 -0
  191. package/dist/core/folder-paths.js.map +1 -0
  192. package/dist/core/folder-sidecar.d.ts +36 -0
  193. package/dist/core/folder-sidecar.js +91 -0
  194. package/dist/core/folder-sidecar.js.map +1 -0
  195. package/dist/core/graph.d.ts +641 -14
  196. package/dist/core/graph.js +1959 -313
  197. package/dist/core/graph.js.map +1 -1
  198. package/dist/core/schema-registry.d.ts +36 -0
  199. package/dist/core/schema-registry.js +149 -37
  200. package/dist/core/schema-registry.js.map +1 -1
  201. package/dist/core/schemas/connector.d.ts +67 -0
  202. package/dist/core/schemas/connector.js +100 -0
  203. package/dist/core/schemas/connector.js.map +1 -0
  204. package/dist/core/schemas/workspace.d.ts +122 -0
  205. package/dist/core/schemas/workspace.js +211 -0
  206. package/dist/core/schemas/workspace.js.map +1 -0
  207. package/dist/core/secrets/SecretStore.d.ts +77 -0
  208. package/dist/core/secrets/SecretStore.js +13 -0
  209. package/dist/core/secrets/SecretStore.js.map +1 -0
  210. package/dist/core/secrets/SettingsResolver.d.ts +54 -0
  211. package/dist/core/secrets/SettingsResolver.js +80 -0
  212. package/dist/core/secrets/SettingsResolver.js.map +1 -0
  213. package/dist/core/secrets/SettingsStore.d.ts +30 -0
  214. package/dist/core/secrets/SettingsStore.js +9 -0
  215. package/dist/core/secrets/SettingsStore.js.map +1 -0
  216. package/dist/core/secrets/SqliteEncryptedStore.d.ts +90 -0
  217. package/dist/core/secrets/SqliteEncryptedStore.js +598 -0
  218. package/dist/core/secrets/SqliteEncryptedStore.js.map +1 -0
  219. package/dist/core/secrets/audit.d.ts +36 -0
  220. package/dist/core/secrets/audit.js +60 -0
  221. package/dist/core/secrets/audit.js.map +1 -0
  222. package/dist/core/secrets/auth-db-migration.d.ts +129 -0
  223. package/dist/core/secrets/auth-db-migration.js +653 -0
  224. package/dist/core/secrets/auth-db-migration.js.map +1 -0
  225. package/dist/core/secrets/bundle.d.ts +141 -0
  226. package/dist/core/secrets/bundle.js +435 -0
  227. package/dist/core/secrets/bundle.js.map +1 -0
  228. package/dist/core/secrets/dual-write.d.ts +81 -0
  229. package/dist/core/secrets/dual-write.js +247 -0
  230. package/dist/core/secrets/dual-write.js.map +1 -0
  231. package/dist/core/secrets/encryption.d.ts +44 -0
  232. package/dist/core/secrets/encryption.js +97 -0
  233. package/dist/core/secrets/encryption.js.map +1 -0
  234. package/dist/core/secrets/importer.d.ts +94 -0
  235. package/dist/core/secrets/importer.js +319 -0
  236. package/dist/core/secrets/importer.js.map +1 -0
  237. package/dist/core/secrets/index.d.ts +49 -0
  238. package/dist/core/secrets/index.js +74 -0
  239. package/dist/core/secrets/index.js.map +1 -0
  240. package/dist/core/secrets/master-key.d.ts +38 -0
  241. package/dist/core/secrets/master-key.js +122 -0
  242. package/dist/core/secrets/master-key.js.map +1 -0
  243. package/dist/core/secrets/probes/anthropic.d.ts +98 -0
  244. package/dist/core/secrets/probes/anthropic.js +300 -0
  245. package/dist/core/secrets/probes/anthropic.js.map +1 -0
  246. package/dist/core/secrets/probes/brave.d.ts +9 -0
  247. package/dist/core/secrets/probes/brave.js +15 -0
  248. package/dist/core/secrets/probes/brave.js.map +1 -0
  249. package/dist/core/secrets/probes/r2.d.ts +15 -0
  250. package/dist/core/secrets/probes/r2.js +14 -0
  251. package/dist/core/secrets/probes/r2.js.map +1 -0
  252. package/dist/core/secrets/probes/voyage.d.ts +13 -0
  253. package/dist/core/secrets/probes/voyage.js +52 -0
  254. package/dist/core/secrets/probes/voyage.js.map +1 -0
  255. package/dist/core/secrets/r2-structural-migration.d.ts +39 -0
  256. package/dist/core/secrets/r2-structural-migration.js +109 -0
  257. package/dist/core/secrets/r2-structural-migration.js.map +1 -0
  258. package/dist/core/secrets/read-flip.d.ts +59 -0
  259. package/dist/core/secrets/read-flip.js +87 -0
  260. package/dist/core/secrets/read-flip.js.map +1 -0
  261. package/dist/core/secrets/registry.d.ts +188 -0
  262. package/dist/core/secrets/registry.js +598 -0
  263. package/dist/core/secrets/registry.js.map +1 -0
  264. package/dist/core/types.d.ts +71 -483
  265. package/dist/core/types.js +10 -3
  266. package/dist/core/types.js.map +1 -1
  267. package/dist/core/user-config.d.ts +75 -12
  268. package/dist/core/user-config.js +155 -14
  269. package/dist/core/user-config.js.map +1 -1
  270. package/dist/core/validation.d.ts +695 -1386
  271. package/dist/core/validation.js +326 -148
  272. package/dist/core/validation.js.map +1 -1
  273. package/dist/core/workspace-manager.d.ts +77 -14
  274. package/dist/core/workspace-manager.js +207 -95
  275. package/dist/core/workspace-manager.js.map +1 -1
  276. package/dist/core/workspace.d.ts +19 -5
  277. package/dist/core/workspace.js +66 -39
  278. package/dist/core/workspace.js.map +1 -1
  279. package/dist/mcp/comment-virtual-entity.d.ts +36 -0
  280. package/dist/mcp/comment-virtual-entity.js +71 -0
  281. package/dist/mcp/comment-virtual-entity.js.map +1 -0
  282. package/dist/mcp/connector-manager.d.ts +72 -2
  283. package/dist/mcp/connector-manager.js +211 -32
  284. package/dist/mcp/connector-manager.js.map +1 -1
  285. package/dist/mcp/oauth-provider.d.ts +0 -5
  286. package/dist/mcp/oauth-provider.js +10 -22
  287. package/dist/mcp/oauth-provider.js.map +1 -1
  288. package/dist/mcp/oauth-registry.d.ts +46 -8
  289. package/dist/mcp/oauth-registry.js +52 -13
  290. package/dist/mcp/oauth-registry.js.map +1 -1
  291. package/dist/mcp/server.d.ts +11 -3
  292. package/dist/mcp/server.js +30 -5
  293. package/dist/mcp/server.js.map +1 -1
  294. package/dist/mcp/state-signer.d.ts +41 -0
  295. package/dist/mcp/state-signer.js +120 -0
  296. package/dist/mcp/state-signer.js.map +1 -0
  297. package/dist/mcp/tools.d.ts +35 -2
  298. package/dist/mcp/tools.js +995 -117
  299. package/dist/mcp/tools.js.map +1 -1
  300. package/dist/server/__tests__/helpers/graph-api.d.ts +18 -0
  301. package/dist/server/__tests__/helpers/graph-api.js +16 -0
  302. package/dist/server/__tests__/helpers/graph-api.js.map +1 -0
  303. package/dist/server/body-write-coordinator.d.ts +151 -0
  304. package/dist/server/body-write-coordinator.js +161 -0
  305. package/dist/server/body-write-coordinator.js.map +1 -0
  306. package/dist/server/commit-audit.d.ts +26 -0
  307. package/dist/server/commit-audit.js +30 -0
  308. package/dist/server/commit-audit.js.map +1 -0
  309. package/dist/server/index.d.ts +14 -3
  310. package/dist/server/index.js +417 -263
  311. package/dist/server/index.js.map +1 -1
  312. package/dist/server/middleware/sanitize.d.ts +46 -0
  313. package/dist/server/middleware/sanitize.js +171 -0
  314. package/dist/server/middleware/sanitize.js.map +1 -0
  315. package/dist/server/routes/asset-api.js +214 -65
  316. package/dist/server/routes/asset-api.js.map +1 -1
  317. package/dist/server/routes/audit-api.d.ts +24 -0
  318. package/dist/server/routes/audit-api.js +117 -0
  319. package/dist/server/routes/audit-api.js.map +1 -0
  320. package/dist/server/routes/auth-api.js +298 -58
  321. package/dist/server/routes/auth-api.js.map +1 -1
  322. package/dist/server/routes/capture-api.d.ts +10 -3
  323. package/dist/server/routes/capture-api.js +180 -24
  324. package/dist/server/routes/capture-api.js.map +1 -1
  325. package/dist/server/routes/chat.d.ts +4 -1
  326. package/dist/server/routes/chat.js +178 -46
  327. package/dist/server/routes/chat.js.map +1 -1
  328. package/dist/server/routes/comments-api.d.ts +15 -0
  329. package/dist/server/routes/comments-api.js +444 -0
  330. package/dist/server/routes/comments-api.js.map +1 -0
  331. package/dist/server/routes/config-api.d.ts +11 -7
  332. package/dist/server/routes/config-api.js +186 -127
  333. package/dist/server/routes/config-api.js.map +1 -1
  334. package/dist/server/routes/connectors-api.js +177 -42
  335. package/dist/server/routes/connectors-api.js.map +1 -1
  336. package/dist/server/routes/event-ingest-api.d.ts +15 -0
  337. package/dist/server/routes/{meeting-ingest-api.js → event-ingest-api.js} +33 -18
  338. package/dist/server/routes/event-ingest-api.js.map +1 -0
  339. package/dist/server/routes/features-api.d.ts +19 -0
  340. package/dist/server/routes/features-api.js +28 -0
  341. package/dist/server/routes/features-api.js.map +1 -0
  342. package/dist/server/routes/git-http.d.ts +2 -2
  343. package/dist/server/routes/git-http.js +86 -39
  344. package/dist/server/routes/git-http.js.map +1 -1
  345. package/dist/server/routes/graph-api-access.d.ts +35 -0
  346. package/dist/server/routes/graph-api-access.js +105 -0
  347. package/dist/server/routes/graph-api-access.js.map +1 -0
  348. package/dist/server/routes/graph-api.d.ts +3 -2
  349. package/dist/server/routes/graph-api.js +1124 -318
  350. package/dist/server/routes/graph-api.js.map +1 -1
  351. package/dist/server/routes/health.d.ts +18 -0
  352. package/dist/server/routes/health.js +74 -0
  353. package/dist/server/routes/health.js.map +1 -0
  354. package/dist/server/routes/insights-api.d.ts +1 -2
  355. package/dist/server/routes/insights-api.js +118 -68
  356. package/dist/server/routes/insights-api.js.map +1 -1
  357. package/dist/server/routes/mcp.d.ts +7 -3
  358. package/dist/server/routes/mcp.js +22 -6
  359. package/dist/server/routes/mcp.js.map +1 -1
  360. package/dist/server/routes/messages-api.d.ts +3 -3
  361. package/dist/server/routes/messages-api.js +325 -128
  362. package/dist/server/routes/messages-api.js.map +1 -1
  363. package/dist/server/routes/permissions-api.d.ts +9 -2
  364. package/dist/server/routes/permissions-api.js +87 -31
  365. package/dist/server/routes/permissions-api.js.map +1 -1
  366. package/dist/server/routes/r2-api.d.ts +25 -0
  367. package/dist/server/routes/r2-api.js +276 -0
  368. package/dist/server/routes/r2-api.js.map +1 -0
  369. package/dist/server/routes/secrets-api.d.ts +36 -0
  370. package/dist/server/routes/secrets-api.js +308 -0
  371. package/dist/server/routes/secrets-api.js.map +1 -0
  372. package/dist/server/routes/settings-api.d.ts +29 -0
  373. package/dist/server/routes/settings-api.js +180 -0
  374. package/dist/server/routes/settings-api.js.map +1 -0
  375. package/dist/server/routes/views-api.js +57 -0
  376. package/dist/server/routes/views-api.js.map +1 -1
  377. package/dist/server/routes/workspace-api.d.ts +2 -1
  378. package/dist/server/routes/workspace-api.js +131 -20
  379. package/dist/server/routes/workspace-api.js.map +1 -1
  380. package/dist/server/routes/ws.d.ts +3 -2
  381. package/dist/server/routes/ws.js +64 -17
  382. package/dist/server/routes/ws.js.map +1 -1
  383. package/dist/server/session-manager.d.ts +48 -5
  384. package/dist/server/session-manager.js +175 -11
  385. package/dist/server/session-manager.js.map +1 -1
  386. package/dist/server/ws-hub.d.ts +124 -37
  387. package/dist/server/ws-hub.js +0 -0
  388. package/dist/server/ws-hub.js.map +1 -1
  389. package/dist/server/yjs-manager.d.ts +285 -7
  390. package/dist/server/yjs-manager.js +854 -38
  391. package/dist/server/yjs-manager.js.map +1 -1
  392. package/dist/server/yjs-persistence.d.ts +165 -0
  393. package/dist/server/yjs-persistence.js +557 -0
  394. package/dist/server/yjs-persistence.js.map +1 -0
  395. package/dist/server/yjs-text-diff.d.ts +32 -0
  396. package/dist/server/yjs-text-diff.js +61 -0
  397. package/dist/server/yjs-text-diff.js.map +1 -0
  398. package/dist/services/access-control.d.ts +73 -0
  399. package/dist/services/access-control.js +146 -0
  400. package/dist/services/access-control.js.map +1 -0
  401. package/dist/services/asset-listing.d.ts +39 -0
  402. package/dist/services/asset-listing.js +125 -0
  403. package/dist/services/asset-listing.js.map +1 -0
  404. package/dist/services/asset-upload-service.d.ts +53 -0
  405. package/dist/services/asset-upload-service.js +201 -0
  406. package/dist/services/asset-upload-service.js.map +1 -0
  407. package/dist/services/assets/asset-index-service.d.ts +82 -0
  408. package/dist/services/assets/asset-index-service.js +167 -0
  409. package/dist/services/assets/asset-index-service.js.map +1 -0
  410. package/dist/services/assets/base.d.ts +44 -0
  411. package/dist/services/assets/base.js +55 -0
  412. package/dist/services/assets/base.js.map +1 -1
  413. package/dist/services/assets/index.d.ts +69 -1
  414. package/dist/services/assets/index.js +125 -0
  415. package/dist/services/assets/index.js.map +1 -1
  416. package/dist/services/assets/local.d.ts +12 -1
  417. package/dist/services/assets/local.js +100 -1
  418. package/dist/services/assets/local.js.map +1 -1
  419. package/dist/services/assets/r2-sync.d.ts +88 -0
  420. package/dist/services/assets/r2-sync.js +412 -0
  421. package/dist/services/assets/r2-sync.js.map +1 -0
  422. package/dist/services/assets/r2.d.ts +34 -1
  423. package/dist/services/assets/r2.js +93 -1
  424. package/dist/services/assets/r2.js.map +1 -1
  425. package/dist/services/auth-service.d.ts +270 -45
  426. package/dist/services/auth-service.js +932 -193
  427. package/dist/services/auth-service.js.map +1 -1
  428. package/dist/services/briefing.d.ts +1 -1
  429. package/dist/services/briefing.js +14 -37
  430. package/dist/services/briefing.js.map +1 -1
  431. package/dist/services/comment-service.d.ts +97 -0
  432. package/dist/services/comment-service.js +341 -0
  433. package/dist/services/comment-service.js.map +1 -0
  434. package/dist/services/csv-service.d.ts +22 -17
  435. package/dist/services/csv-service.js +55 -92
  436. package/dist/services/csv-service.js.map +1 -1
  437. package/dist/services/entity-mutations.d.ts +161 -0
  438. package/dist/services/entity-mutations.js +296 -0
  439. package/dist/services/entity-mutations.js.map +1 -0
  440. package/dist/services/{meeting-processor.d.ts → event-processor.d.ts} +12 -5
  441. package/dist/services/{meeting-processor.js → event-processor.js} +123 -64
  442. package/dist/services/event-processor.js.map +1 -0
  443. package/dist/services/folder-creation.d.ts +33 -0
  444. package/dist/services/folder-creation.js +103 -0
  445. package/dist/services/folder-creation.js.map +1 -0
  446. package/dist/services/git.d.ts +50 -0
  447. package/dist/services/git.js +178 -55
  448. package/dist/services/git.js.map +1 -1
  449. package/dist/services/heartbeat.d.ts +19 -12
  450. package/dist/services/heartbeat.js +162 -107
  451. package/dist/services/heartbeat.js.map +1 -1
  452. package/dist/services/import-service.d.ts +38 -1
  453. package/dist/services/import-service.js +241 -106
  454. package/dist/services/import-service.js.map +1 -1
  455. package/dist/services/lint-service.js +9 -16
  456. package/dist/services/lint-service.js.map +1 -1
  457. package/dist/services/markdown.d.ts +12 -1
  458. package/dist/services/markdown.js +71 -6
  459. package/dist/services/markdown.js.map +1 -1
  460. package/dist/services/mention-detector.d.ts +23 -0
  461. package/dist/services/mention-detector.js +47 -0
  462. package/dist/services/mention-detector.js.map +1 -0
  463. package/dist/services/message-service.d.ts +62 -21
  464. package/dist/services/message-service.js +160 -43
  465. package/dist/services/message-service.js.map +1 -1
  466. package/dist/services/notification-broadcast.d.ts +32 -0
  467. package/dist/services/notification-broadcast.js +38 -0
  468. package/dist/services/notification-broadcast.js.map +1 -0
  469. package/dist/services/notification-service.d.ts +41 -0
  470. package/dist/services/notification-service.js +100 -0
  471. package/dist/services/notification-service.js.map +1 -0
  472. package/dist/services/personal-folder.d.ts +40 -0
  473. package/dist/services/personal-folder.js +101 -0
  474. package/dist/services/personal-folder.js.map +1 -0
  475. package/dist/services/user-person-bridge.d.ts +118 -0
  476. package/dist/services/user-person-bridge.js +306 -0
  477. package/dist/services/user-person-bridge.js.map +1 -0
  478. package/dist/services/vector-service.d.ts +146 -6
  479. package/dist/services/vector-service.js +276 -13
  480. package/dist/services/vector-service.js.map +1 -1
  481. package/dist/services/workspace-access.d.ts +106 -0
  482. package/dist/services/workspace-access.js +149 -0
  483. package/dist/services/workspace-access.js.map +1 -0
  484. package/dist/utils/git.d.ts +17 -2
  485. package/dist/utils/git.js +23 -7
  486. package/dist/utils/git.js.map +1 -1
  487. package/dist/utils/log.d.ts +42 -0
  488. package/dist/utils/log.js +137 -0
  489. package/dist/utils/log.js.map +1 -0
  490. package/dist/utils/preflight.js +2 -2
  491. package/dist/utils/preflight.js.map +1 -1
  492. package/dist/utils/version-checker.d.ts +12 -19
  493. package/dist/utils/version-checker.js +14 -104
  494. package/dist/utils/version-checker.js.map +1 -1
  495. package/dist/web/_app/immutable/assets/0.BA9zEqMO.css +2 -0
  496. package/dist/web/_app/immutable/assets/11.DlIf1mKh.css +1 -0
  497. package/dist/web/_app/immutable/assets/12.Dmlt28l2.css +1 -0
  498. package/dist/web/_app/immutable/assets/13.CmLrbzZp.css +1 -0
  499. package/dist/web/_app/immutable/assets/2.UPfaLUj4.css +1 -0
  500. package/dist/web/_app/immutable/assets/3.BdNa1z-b.css +1 -0
  501. package/dist/web/_app/immutable/assets/4.09F-KSoB.css +1 -0
  502. package/dist/web/_app/immutable/assets/AgentOverlay.C9xf50ov.css +1 -0
  503. package/dist/web/_app/immutable/assets/AssetManagerModal.ZfasE2L3.css +1 -0
  504. package/dist/web/_app/immutable/assets/CalendarView.CxdTsBOU.css +1 -0
  505. package/dist/web/_app/immutable/assets/Filters.BNSqCL2w.css +1 -0
  506. package/dist/web/_app/immutable/assets/FolderMembersPanel.BTK40ZV-.css +1 -0
  507. package/dist/web/_app/immutable/assets/FolderMutationDialogs.BMRF6Z3z.css +1 -0
  508. package/dist/web/_app/immutable/assets/FolderPicker.B5KdvRYl.css +1 -0
  509. package/dist/web/_app/immutable/assets/GalleryView.CJM0qb0Z.css +1 -0
  510. package/dist/web/_app/immutable/assets/GraphView.BHnGIltS.css +1 -0
  511. package/dist/web/_app/immutable/assets/KanbanView.BykCv6-6.css +1 -0
  512. package/dist/web/_app/immutable/assets/Markdown.B4lW7Llh.css +1 -0
  513. package/dist/web/_app/immutable/assets/SettingsDialog.DWIvReSL.css +1 -0
  514. package/dist/web/_app/immutable/assets/Spinner.UBfl0pab.css +1 -0
  515. package/dist/web/_app/immutable/assets/StopFilledAlt.clodJdp5.css +1 -0
  516. package/dist/web/_app/immutable/assets/TimelineView.C97Q_R7Q.css +1 -0
  517. package/dist/web/_app/immutable/assets/WorkspaceView.BZIvO04T.css +1 -0
  518. package/dist/web/_app/immutable/assets/button.BlLm4Dg1.css +1 -0
  519. package/dist/web/_app/immutable/assets/captureResults.Bm7lTneV.css +1 -0
  520. package/dist/web/_app/immutable/assets/dialog.BxVal_19.css +1 -0
  521. package/dist/web/_app/immutable/assets/dist.DDCWxn3B.css +1 -0
  522. package/dist/web/_app/immutable/assets/dist.U57Jb1b6.css +1 -0
  523. package/dist/web/_app/immutable/assets/dropdown-menu.BSsUUQ3o.css +1 -0
  524. package/dist/web/_app/immutable/assets/entity-row.Bl5FyNCt.css +1 -0
  525. package/dist/web/_app/immutable/assets/formatting.kiXsrt_O.css +1 -0
  526. package/dist/web/_app/immutable/assets/ibm-plex-mono-latin-400-normal.CvHOgSBP.woff +0 -0
  527. package/dist/web/_app/immutable/assets/ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2 +0 -0
  528. package/dist/web/_app/immutable/assets/ibm-plex-mono-latin-500-normal.CB9ihrfo.woff +0 -0
  529. package/dist/web/_app/immutable/assets/ibm-plex-mono-latin-500-normal.DSY6xOcd.woff2 +0 -0
  530. package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-400-italic.CZTNEAuW.woff2 +0 -0
  531. package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-400-italic.CsGl1sm0.woff +0 -0
  532. package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-400-normal.CDDApCn2.woff2 +0 -0
  533. package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-400-normal.CYLoc0-x.woff +0 -0
  534. package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-500-italic.BNK2_mGO.woff2 +0 -0
  535. package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-500-italic.DpEwFAQM.woff +0 -0
  536. package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-500-normal.6ng42L7E.woff2 +0 -0
  537. package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-500-normal.BgVn5rGT.woff +0 -0
  538. package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-600-normal.Cu4Hd6ag.woff +0 -0
  539. package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-600-normal.CuJfVYMP.woff2 +0 -0
  540. package/dist/web/_app/immutable/assets/inline-list.DORLo4xF.css +1 -0
  541. package/dist/web/_app/immutable/assets/radio-group.GJJRVPUJ.css +1 -0
  542. package/dist/web/_app/immutable/assets/select.D_AV992j.css +1 -0
  543. package/dist/web/_app/immutable/assets/sheet.DJPuqnTg.css +1 -0
  544. package/dist/web/_app/immutable/assets/speech-dictation.DOnQxxBP.css +1 -0
  545. package/dist/web/_app/immutable/chunks/1IUi-LlN2.js +1 -0
  546. package/dist/web/_app/immutable/chunks/3RiSoUyU.js +1 -0
  547. package/dist/web/_app/immutable/chunks/3h94PB-X.js +1 -0
  548. package/dist/web/_app/immutable/chunks/9bCTHkeS.js +1 -0
  549. package/dist/web/_app/immutable/chunks/ABFIeViK2.js +1 -0
  550. package/dist/web/_app/immutable/chunks/B0QlKv_y2.js +1 -0
  551. package/dist/web/_app/immutable/chunks/B3wplzwT.js +5 -0
  552. package/dist/web/_app/immutable/chunks/B5Msg8c9.js +1 -0
  553. package/dist/web/_app/immutable/chunks/B6jmww-W.js +1 -0
  554. package/dist/web/_app/immutable/chunks/B78yLITZ2.js +1 -0
  555. package/dist/web/_app/immutable/chunks/B9dk7OcQ.js +1 -0
  556. package/dist/web/_app/immutable/chunks/BA10-DAl2.js +1 -0
  557. package/dist/web/_app/immutable/chunks/BBVb0hAs.js +1 -0
  558. package/dist/web/_app/immutable/chunks/BCVEaBWw.js +1 -0
  559. package/dist/web/_app/immutable/chunks/BChTKONz.js +41 -0
  560. package/dist/web/_app/immutable/chunks/BE2ewAd6.js +1 -0
  561. package/dist/web/_app/immutable/chunks/BFdSOeRg2.js +1 -0
  562. package/dist/web/_app/immutable/chunks/BHEaUcm-.js +1 -0
  563. package/dist/web/_app/immutable/chunks/BHdtIHph2.js +1 -0
  564. package/dist/web/_app/immutable/chunks/BJ1WyX5l.js +23 -0
  565. package/dist/web/_app/immutable/chunks/BKJxbYlw2.js +1 -0
  566. package/dist/web/_app/immutable/chunks/BLbv79id.js +1 -0
  567. package/dist/web/_app/immutable/chunks/BMF2kgRl.js +1 -0
  568. package/dist/web/_app/immutable/chunks/BNTlsKDJ.js +1 -0
  569. package/dist/web/_app/immutable/chunks/BOLBnq4S2.js +1 -0
  570. package/dist/web/_app/immutable/chunks/BPphsWzE2.js +2 -0
  571. package/dist/web/_app/immutable/chunks/BQ7FQO6Y.js +1 -0
  572. package/dist/web/_app/immutable/chunks/BRAte_-b.js +1 -0
  573. package/dist/web/_app/immutable/chunks/BT3KAag_.js +3 -0
  574. package/dist/web/_app/immutable/chunks/BY9JAHZa.js +83 -0
  575. package/dist/web/_app/immutable/chunks/BZnJ8tbJ.js +1 -0
  576. package/dist/web/_app/immutable/chunks/BdmrtKYp2.js +1 -0
  577. package/dist/web/_app/immutable/chunks/BiFpvCJe2.js +1 -0
  578. package/dist/web/_app/immutable/chunks/BjGNHoI_.js +1 -0
  579. package/dist/web/_app/immutable/chunks/Brnt5OaR.js +1 -0
  580. package/dist/web/_app/immutable/chunks/Bsokmj9K.js +3 -0
  581. package/dist/web/_app/immutable/chunks/Buq5akT7.js +1 -0
  582. package/dist/web/_app/immutable/chunks/BuzQceOn.js +1 -0
  583. package/dist/web/_app/immutable/chunks/By52SWFQ.js +1 -0
  584. package/dist/web/_app/immutable/chunks/C-OaypFN.js +1 -0
  585. package/dist/web/_app/immutable/chunks/C24IUqw0.js +224 -0
  586. package/dist/web/_app/immutable/chunks/C2pzynAx.js +1 -0
  587. package/dist/web/_app/immutable/chunks/C9mSWIDl2.js +1 -0
  588. package/dist/web/_app/immutable/chunks/CA-SSsmA2.js +64 -0
  589. package/dist/web/_app/immutable/chunks/CAnnQJhK.js +1 -0
  590. package/dist/web/_app/immutable/chunks/CCIXvL-4.js +1 -0
  591. package/dist/web/_app/immutable/chunks/CFFwOnjy2.js +1 -0
  592. package/dist/web/_app/immutable/chunks/CFMXRG2C.js +1 -0
  593. package/dist/web/_app/immutable/chunks/CHgG1pyP.js +3 -0
  594. package/dist/web/_app/immutable/chunks/CI0x_Zvz2.js +4 -0
  595. package/dist/web/_app/immutable/chunks/CJ6d6ePw2.js +2 -0
  596. package/dist/web/_app/immutable/chunks/COcA3ksE2.js +1 -0
  597. package/dist/web/_app/immutable/chunks/CQ3GQmfw.js +1 -0
  598. package/dist/web/_app/immutable/chunks/CSvuCeFa.js +1 -0
  599. package/dist/web/_app/immutable/chunks/CW-tcm9w.js +6 -0
  600. package/dist/web/_app/immutable/chunks/CWJVikgc.js +1 -0
  601. package/dist/web/_app/immutable/chunks/CWYxmjA9.js +1 -0
  602. package/dist/web/_app/immutable/chunks/CZXBk6f7.js +1 -0
  603. package/dist/web/_app/immutable/chunks/C_DPJIiI.js +1 -0
  604. package/dist/web/_app/immutable/chunks/C_OQGsMP.js +1 -0
  605. package/dist/web/_app/immutable/chunks/CaWyI47y2.js +1 -0
  606. package/dist/web/_app/immutable/chunks/CcTkKa7t.js +1 -0
  607. package/dist/web/_app/immutable/chunks/CcVuIXb4.js +1 -0
  608. package/dist/web/_app/immutable/chunks/CdWZV3Mv.js +185 -0
  609. package/dist/web/_app/immutable/chunks/CdxueNVV2.js +1 -0
  610. package/dist/web/_app/immutable/chunks/Cdzi5eXS2.js +5 -0
  611. package/dist/web/_app/immutable/chunks/Ce2BYFn2.js +1 -0
  612. package/dist/web/_app/immutable/chunks/Cf9Tl9SZ.js +1 -0
  613. package/dist/web/_app/immutable/chunks/CfwZNkcR.js +1 -0
  614. package/dist/web/_app/immutable/chunks/CjrvnLDf.js +1 -0
  615. package/dist/web/_app/immutable/chunks/CkX_FgeP.js +1 -0
  616. package/dist/web/_app/immutable/chunks/CkxWsTxP.js +1 -0
  617. package/dist/web/_app/immutable/chunks/ClfZwNp32.js +1 -0
  618. package/dist/web/_app/immutable/chunks/CmYHsiEp2.js +1 -0
  619. package/dist/web/_app/immutable/chunks/Cn4uWvXa.js +11 -0
  620. package/dist/web/_app/immutable/chunks/CnIuUOU82.js +1 -0
  621. package/dist/web/_app/immutable/chunks/CryKRL4O2.js +1 -0
  622. package/dist/web/_app/immutable/chunks/Cy7CbwT6.js +1 -0
  623. package/dist/web/_app/immutable/chunks/D-qftGmx.js +22 -0
  624. package/dist/web/_app/immutable/chunks/D0BO6Lbw.js +14 -0
  625. package/dist/web/_app/immutable/chunks/D17NMdKc.js +2 -0
  626. package/dist/web/_app/immutable/chunks/D1ZDlb582.js +1 -0
  627. package/dist/web/_app/immutable/chunks/D25CpUpa.js +1 -0
  628. package/dist/web/_app/immutable/chunks/D2w4mPEF.js +1 -0
  629. package/dist/web/_app/immutable/chunks/D7L6XPS4.js +5 -0
  630. package/dist/web/_app/immutable/chunks/DDADdPaI.js +1 -0
  631. package/dist/web/_app/immutable/chunks/DDrZo1ja.js +1 -0
  632. package/dist/web/_app/immutable/chunks/DEyd-YQw.js +184 -0
  633. package/dist/web/_app/immutable/chunks/DGYUucD9.js +1 -0
  634. package/dist/web/_app/immutable/chunks/DGpZN1Lp2.js +1 -0
  635. package/dist/web/_app/immutable/chunks/DNLox5BN2.js +3 -0
  636. package/dist/web/_app/immutable/chunks/DPBBzmNi2.js +1 -0
  637. package/dist/web/_app/immutable/chunks/DPNVpxC52.js +1 -0
  638. package/dist/web/_app/immutable/chunks/DPtEUAYV2.js +1 -0
  639. package/dist/web/_app/immutable/chunks/DQ7LjxZD.js +2 -0
  640. package/dist/web/_app/immutable/chunks/DRDas3EM2.js +1 -0
  641. package/dist/web/_app/immutable/chunks/DSC6ch4B.js +2 -0
  642. package/dist/web/_app/immutable/chunks/DVXrH9Sk.js +1 -0
  643. package/dist/web/_app/immutable/chunks/DVs2iynz.js +2 -0
  644. package/dist/web/_app/immutable/chunks/DXOmI705.js +1 -0
  645. package/dist/web/_app/immutable/chunks/DXfqlchZ2.js +1 -0
  646. package/dist/web/_app/immutable/chunks/DZRz5Jaz.js +1 -0
  647. package/dist/web/_app/immutable/chunks/DZWSKD4B.js +1 -0
  648. package/dist/web/_app/immutable/chunks/DZzqmhRV2.js +1 -0
  649. package/dist/web/_app/immutable/chunks/DcXSx4DX.js +1 -0
  650. package/dist/web/_app/immutable/chunks/De4vjwu82.js +1 -0
  651. package/dist/web/_app/immutable/chunks/DgyLeDN4.js +1 -0
  652. package/dist/web/_app/immutable/chunks/Dj8qQTtH2.js +1 -0
  653. package/dist/web/_app/immutable/chunks/Dk-ks0hL.js +1 -0
  654. package/dist/web/_app/immutable/chunks/DkZkS2e3.js +1 -0
  655. package/dist/web/_app/immutable/chunks/Dmtw4IHL.js +1 -0
  656. package/dist/web/_app/immutable/chunks/DoRjlkba.js +1 -0
  657. package/dist/web/_app/immutable/chunks/DoU_ZN0V2.js +2 -0
  658. package/dist/web/_app/immutable/chunks/DqZmeWn2.js +1 -0
  659. package/dist/web/_app/immutable/chunks/Dqujpr2J2.js +1 -0
  660. package/dist/web/_app/immutable/chunks/DrMTtpP7.js +2 -0
  661. package/dist/web/_app/immutable/chunks/DrRcjjPn.js +9 -0
  662. package/dist/web/_app/immutable/chunks/DtX0WmTj.js +1 -0
  663. package/dist/web/_app/immutable/chunks/Du5wbcRu.js +1 -0
  664. package/dist/web/_app/immutable/chunks/Dxq8WNsL.js +1 -0
  665. package/dist/web/_app/immutable/chunks/Dy0wJ-2i.js +1 -0
  666. package/dist/web/_app/immutable/chunks/HeIhAG8e2.js +1 -0
  667. package/dist/web/_app/immutable/chunks/JdxLEXV1.js +1 -0
  668. package/dist/web/_app/immutable/chunks/LxsXcms32.js +1 -0
  669. package/dist/web/_app/immutable/chunks/NUWxw3q-.js +1 -0
  670. package/dist/web/_app/immutable/chunks/NqVTtJWQ2.js +1 -0
  671. package/dist/web/_app/immutable/chunks/PKJwETHu.js +1 -0
  672. package/dist/web/_app/immutable/chunks/Qfl7tlUB.js +1 -0
  673. package/dist/web/_app/immutable/chunks/RSiqYyjk2.js +1 -0
  674. package/dist/web/_app/immutable/chunks/TK5UsGfg2.js +1 -0
  675. package/dist/web/_app/immutable/chunks/TNy_tmA22.js +1 -0
  676. package/dist/web/_app/immutable/chunks/U1-Tn4Xg2.js +2 -0
  677. package/dist/web/_app/immutable/chunks/YajMQay-2.js +1 -0
  678. package/dist/web/_app/immutable/chunks/_G6O77q2.js +156 -0
  679. package/dist/web/_app/immutable/chunks/eJNbcV2s.js +7 -0
  680. package/dist/web/_app/immutable/chunks/fpcthsge2.js +1 -0
  681. package/dist/web/_app/immutable/chunks/ikKa4mia.js +1 -0
  682. package/dist/web/_app/immutable/chunks/ipYqP0P92.js +1 -0
  683. package/dist/web/_app/immutable/chunks/jUv7UbKo.js +1 -0
  684. package/dist/web/_app/immutable/chunks/jb3wXG-M2.js +1 -0
  685. package/dist/web/_app/immutable/chunks/kC2Bqqp-.js +1 -0
  686. package/dist/web/_app/immutable/chunks/lfhdjeJB.js +1 -0
  687. package/dist/web/_app/immutable/chunks/mIAuGNVb.js +1 -0
  688. package/dist/web/_app/immutable/chunks/osHKvPM1.js +1 -0
  689. package/dist/web/_app/immutable/chunks/sEj1Ztgn.js +5 -0
  690. package/dist/web/_app/immutable/chunks/soMdXAIS.js +2487 -0
  691. package/dist/web/_app/immutable/chunks/t62M88qj.js +1 -0
  692. package/dist/web/_app/immutable/chunks/uqxmB78b.js +1 -0
  693. package/dist/web/_app/immutable/chunks/vepwPm-7.js +2 -0
  694. package/dist/web/_app/immutable/chunks/wcGRWqFZ.js +1 -0
  695. package/dist/web/_app/immutable/chunks/xTCGZyVl2.js +1 -0
  696. package/dist/web/_app/immutable/chunks/yfO96jud.js +1 -0
  697. package/dist/web/_app/immutable/entry/app.3rnl6ema.js +2 -0
  698. package/dist/web/_app/immutable/entry/start.eJznUT0J.js +1 -0
  699. package/dist/web/_app/immutable/nodes/0.CjpyY_9c.js +2 -0
  700. package/dist/web/_app/immutable/nodes/1.CFKD033o.js +1 -0
  701. package/dist/web/_app/immutable/nodes/10.BWzbX_BH.js +1 -0
  702. package/dist/web/_app/immutable/nodes/11.Dk7hAs7F.js +1 -0
  703. package/dist/web/_app/immutable/nodes/12.BmDyynW-.js +1 -0
  704. package/dist/web/_app/immutable/nodes/13.BTnFNmK-.js +1 -0
  705. package/dist/web/_app/immutable/nodes/2.x3yEhnol.js +109 -0
  706. package/dist/web/_app/immutable/nodes/3.CkgtaaDz.js +2 -0
  707. package/dist/web/_app/immutable/nodes/4.BOvkeFYn.js +14 -0
  708. package/dist/web/_app/immutable/nodes/5.C6BWLpdY.js +1 -0
  709. package/dist/web/_app/immutable/nodes/6.DOXMfqzx.js +1 -0
  710. package/dist/web/_app/immutable/nodes/7.CyXZWz_j.js +1 -0
  711. package/dist/web/_app/immutable/nodes/8.DmOwNPM1.js +1 -0
  712. package/dist/web/_app/immutable/nodes/9.aXRWDgir.js +1 -0
  713. package/dist/web/_app/version.json +1 -1
  714. package/dist/web/favicon-16.png +0 -0
  715. package/dist/web/favicon-180.png +0 -0
  716. package/dist/web/favicon-32.png +0 -0
  717. package/dist/web/favicon-48.png +0 -0
  718. package/dist/web/favicon-512.png +0 -0
  719. package/dist/web/favicon.ico +0 -0
  720. package/dist/web/favicon.svg +8 -0
  721. package/dist/web/index.html +65 -21
  722. package/dist/web/studiograph-logomark.svg +29 -0
  723. package/package.json +29 -14
  724. package/dist/agent/skills/enrich-entities.md +0 -136
  725. package/dist/agent/skills/sync-configuration.md +0 -119
  726. package/dist/agent/skills/sync-setup.md +0 -82
  727. package/dist/cli/commands/app.d.ts +0 -7
  728. package/dist/cli/commands/app.js +0 -268
  729. package/dist/cli/commands/app.js.map +0 -1
  730. package/dist/cli/commands/collection.d.ts +0 -10
  731. package/dist/cli/commands/collection.js.map +0 -1
  732. package/dist/integrations/registry.d.ts +0 -8
  733. package/dist/integrations/registry.js +0 -7
  734. package/dist/integrations/registry.js.map +0 -1
  735. package/dist/integrations/types.d.ts +0 -43
  736. package/dist/integrations/types.js +0 -5
  737. package/dist/integrations/types.js.map +0 -1
  738. package/dist/lib/lib/utils.d.ts +0 -2
  739. package/dist/lib/lib/utils.js +0 -6
  740. package/dist/lib/lib/utils.js.map +0 -1
  741. package/dist/server/chrome/chrome.css +0 -691
  742. package/dist/server/chrome/chrome.js +0 -374
  743. package/dist/server/commit-scheduler.d.ts +0 -39
  744. package/dist/server/commit-scheduler.js +0 -113
  745. package/dist/server/commit-scheduler.js.map +0 -1
  746. package/dist/server/plugin-loader.d.ts +0 -53
  747. package/dist/server/plugin-loader.js +0 -155
  748. package/dist/server/plugin-loader.js.map +0 -1
  749. package/dist/server/routes/meeting-ingest-api.d.ts +0 -14
  750. package/dist/server/routes/meeting-ingest-api.js.map +0 -1
  751. package/dist/services/batch-processor.d.ts +0 -49
  752. package/dist/services/batch-processor.js +0 -166
  753. package/dist/services/batch-processor.js.map +0 -1
  754. package/dist/services/image-import-service.d.ts +0 -24
  755. package/dist/services/image-import-service.js +0 -108
  756. package/dist/services/image-import-service.js.map +0 -1
  757. package/dist/services/insights.d.ts +0 -38
  758. package/dist/services/insights.js +0 -269
  759. package/dist/services/insights.js.map +0 -1
  760. package/dist/services/meeting-processor.js.map +0 -1
  761. package/dist/utils/workspace-config.d.ts +0 -8
  762. package/dist/utils/workspace-config.js +0 -22
  763. package/dist/utils/workspace-config.js.map +0 -1
  764. package/dist/web/_app/immutable/assets/0.QUqBcyuu.css +0 -1
  765. package/dist/web/_app/immutable/assets/11.2jzI3cZY.css +0 -1
  766. package/dist/web/_app/immutable/assets/12.CT4xL4K3.css +0 -1
  767. package/dist/web/_app/immutable/assets/13.BUrHkYry.css +0 -1
  768. package/dist/web/_app/immutable/assets/2.r_RsAHPw.css +0 -1
  769. package/dist/web/_app/immutable/assets/3.BxdqT7zi.css +0 -1
  770. package/dist/web/_app/immutable/assets/4.DdNqjd0T.css +0 -1
  771. package/dist/web/_app/immutable/assets/5.DFeGxLYf.css +0 -1
  772. package/dist/web/_app/immutable/assets/6.DXZr_rI_.css +0 -1
  773. package/dist/web/_app/immutable/assets/GraphView.D9ePpZez.css +0 -1
  774. package/dist/web/_app/immutable/assets/Toaster.rN8r_Hzv.css +0 -1
  775. package/dist/web/_app/immutable/assets/ViewToolbar.BWE03S64.css +0 -1
  776. package/dist/web/_app/immutable/assets/WorkspaceView.CgGDi_Zb.css +0 -1
  777. package/dist/web/_app/immutable/assets/wikilinks.CzMBkUMB.css +0 -1
  778. package/dist/web/_app/immutable/chunks/6QRrnDy9.js +0 -1
  779. package/dist/web/_app/immutable/chunks/7-LKKYgY.js +0 -2
  780. package/dist/web/_app/immutable/chunks/7S2LGqoP.js +0 -2
  781. package/dist/web/_app/immutable/chunks/7pDO_Xjm.js +0 -5
  782. package/dist/web/_app/immutable/chunks/8KjyTALf.js +0 -1
  783. package/dist/web/_app/immutable/chunks/B4JP7kA5.js +0 -1
  784. package/dist/web/_app/immutable/chunks/BB_5th5W.js +0 -3383
  785. package/dist/web/_app/immutable/chunks/BJ6XXU0i.js +0 -1
  786. package/dist/web/_app/immutable/chunks/BVHkGver.js +0 -1
  787. package/dist/web/_app/immutable/chunks/BYso51l9.js +0 -1
  788. package/dist/web/_app/immutable/chunks/BZLSmHNj.js +0 -4
  789. package/dist/web/_app/immutable/chunks/BaDin9wo.js +0 -1
  790. package/dist/web/_app/immutable/chunks/BhlvzGQx.js +0 -1
  791. package/dist/web/_app/immutable/chunks/BrebtJNG.js +0 -18
  792. package/dist/web/_app/immutable/chunks/Bz0ZjVQE.js +0 -2
  793. package/dist/web/_app/immutable/chunks/C0LVZhvn.js +0 -1
  794. package/dist/web/_app/immutable/chunks/C44qgEoN.js +0 -1
  795. package/dist/web/_app/immutable/chunks/CH5Gu7tz.js +0 -1
  796. package/dist/web/_app/immutable/chunks/CJY8i5jr.js +0 -2
  797. package/dist/web/_app/immutable/chunks/CJzvSGK1.js +0 -1
  798. package/dist/web/_app/immutable/chunks/CNFF7CEV.js +0 -1
  799. package/dist/web/_app/immutable/chunks/CP9ILBTi.js +0 -1
  800. package/dist/web/_app/immutable/chunks/CSOMekQH.js +0 -1
  801. package/dist/web/_app/immutable/chunks/CSVbGg_b.js +0 -5
  802. package/dist/web/_app/immutable/chunks/CX_61fY8.js +0 -5
  803. package/dist/web/_app/immutable/chunks/CYrVHOHA.js +0 -1
  804. package/dist/web/_app/immutable/chunks/Cfndhxn-.js +0 -1
  805. package/dist/web/_app/immutable/chunks/CqkleIqs.js +0 -1
  806. package/dist/web/_app/immutable/chunks/Cs1cXkrt.js +0 -1
  807. package/dist/web/_app/immutable/chunks/Cuzh9257.js +0 -1
  808. package/dist/web/_app/immutable/chunks/D2ZBuzbH.js +0 -1
  809. package/dist/web/_app/immutable/chunks/D4d3zK35.js +0 -2
  810. package/dist/web/_app/immutable/chunks/DB6hOQGd.js +0 -1
  811. package/dist/web/_app/immutable/chunks/DFTFD2om.js +0 -1
  812. package/dist/web/_app/immutable/chunks/DFYOFE3o.js +0 -1
  813. package/dist/web/_app/immutable/chunks/DHzLCnpy.js +0 -1
  814. package/dist/web/_app/immutable/chunks/DK8xU_Uy.js +0 -1
  815. package/dist/web/_app/immutable/chunks/DQ8emfCR.js +0 -1
  816. package/dist/web/_app/immutable/chunks/DR-vCNFL.js +0 -1
  817. package/dist/web/_app/immutable/chunks/De3qCPAq.js +0 -1
  818. package/dist/web/_app/immutable/chunks/DjZH9qgH.js +0 -2
  819. package/dist/web/_app/immutable/chunks/DmVDaSIv.js +0 -1
  820. package/dist/web/_app/immutable/chunks/DnL9f0lc.js +0 -7
  821. package/dist/web/_app/immutable/chunks/DsnmJJEf.js +0 -1
  822. package/dist/web/_app/immutable/chunks/DvcGlbrh.js +0 -1
  823. package/dist/web/_app/immutable/chunks/E6Cc4vt4.js +0 -1
  824. package/dist/web/_app/immutable/chunks/HrpAvCi_.js +0 -1
  825. package/dist/web/_app/immutable/chunks/KyjzlWRN.js +0 -2
  826. package/dist/web/_app/immutable/chunks/PA4tBWuK.js +0 -1
  827. package/dist/web/_app/immutable/chunks/PPVm8Dsz.js +0 -1
  828. package/dist/web/_app/immutable/chunks/V2OZNCEA.js +0 -2
  829. package/dist/web/_app/immutable/chunks/WSUKABI_.js +0 -1
  830. package/dist/web/_app/immutable/chunks/YE-Yf03J.js +0 -1
  831. package/dist/web/_app/immutable/chunks/e6VSQYgj.js +0 -1
  832. package/dist/web/_app/immutable/chunks/jIhM7gb8.js +0 -1
  833. package/dist/web/_app/immutable/chunks/vroTgKlt.js +0 -1
  834. package/dist/web/_app/immutable/chunks/vxEtkL8z.js +0 -1
  835. package/dist/web/_app/immutable/chunks/wDIGUaoU.js +0 -3
  836. package/dist/web/_app/immutable/entry/app.KKJX6h92.js +0 -2
  837. package/dist/web/_app/immutable/entry/start.FC_juwXp.js +0 -1
  838. package/dist/web/_app/immutable/nodes/0.r5mY7E1q.js +0 -2
  839. package/dist/web/_app/immutable/nodes/1.Ck_plRe8.js +0 -1
  840. package/dist/web/_app/immutable/nodes/10.C3zJufV9.js +0 -1
  841. package/dist/web/_app/immutable/nodes/11.C-wEHuIV.js +0 -1
  842. package/dist/web/_app/immutable/nodes/12.BcyZcN9X.js +0 -1
  843. package/dist/web/_app/immutable/nodes/13.BfSzKA0C.js +0 -1
  844. package/dist/web/_app/immutable/nodes/2.D6Ab4wFn.js +0 -267
  845. package/dist/web/_app/immutable/nodes/3.C64Zfs-s.js +0 -5
  846. package/dist/web/_app/immutable/nodes/4.C1B61MI9.js +0 -11
  847. package/dist/web/_app/immutable/nodes/5.DrE5GDm6.js +0 -4
  848. package/dist/web/_app/immutable/nodes/6.DBA565dH.js +0 -1
  849. package/dist/web/_app/immutable/nodes/7.CTQ91hh2.js +0 -1
  850. package/dist/web/_app/immutable/nodes/8.BJzxSS21.js +0 -1
  851. package/dist/web/_app/immutable/nodes/9.2lc1IgjW.js +0 -1
package/README.md CHANGED
@@ -31,22 +31,27 @@ To create repos on GitHub during init:
31
31
  studiograph init "My Studio" --github --github-org my-org
32
32
  ```
33
33
 
34
- ### Join an Existing Workspace
34
+ ### Clone an Existing Workspace
35
35
 
36
36
  ```bash
37
- studiograph join https://github.com/my-org/.studiograph.git
37
+ studiograph clone https://studiograph.example.com /path/to/local/copy
38
38
  ```
39
39
 
40
- This clones the config repo, identifies your role from the team roster, and clones all repos you have access to.
40
+ Authenticates as the workspace owner against a running Studiograph server,
41
+ mints a per-machine API token, persists it to `~/.studiograph/user.json`, and
42
+ clones every accessible repo. Subsequent `pull`/`push` runs are non-interactive
43
+ via the stored token.
41
44
 
42
- ### Start the Agent
45
+ ### Boot the Workspace
43
46
 
44
47
  ```bash
45
48
  cd my-studio
46
- studiograph start
49
+ studiograph serve
47
50
  ```
48
51
 
49
- On first run, you'll be prompted to select an AI provider and model. The agent provides a chat interface where you can create, search, and manage entities across your knowledge graph.
52
+ This starts the local HTTP server + opens the web UI. The web chat panel is the canonical agent surface: a richer chat UX, real-time graph view, and inline editor. On first boot you'll be prompted to set up an AI provider and model.
53
+
54
+ If you want a terminal-side agent (Claude Desktop / Cursor integration), run `studiograph mcp` — it exposes the same toolset over MCP.
50
55
 
51
56
  ## How It Works
52
57
 
@@ -57,15 +62,15 @@ A Studiograph workspace is a directory containing a `.studiograph/` configuratio
57
62
  ```
58
63
  my-studio/
59
64
  ├── .studiograph/ # Config repo (workspace.json, team roster, migrations)
60
- ├── acme-rebrand/ # Collection (client project)
61
- ├── website-redesign/ # Collection (another project)
62
- ├── team-knowledge/ # Collection (processes, standards)
65
+ ├── acme-rebrand/ # Folder (client project)
66
+ ├── website-redesign/ # Folder (another project)
67
+ ├── team-knowledge/ # Folder (processes, standards)
63
68
  └── private/ # Local-only, gitignored
64
69
  ```
65
70
 
66
- ### Collections
71
+ ### Folders
67
72
 
68
- Each subdirectory is a **collection** — a Git repo containing related entities. Collections are lightweight and flexible: one per project, one for team knowledge, one for business operations, or however your team thinks.
73
+ Each subdirectory is a **folder** — a Git repo containing related entities. Folders are lightweight and flexible: one per project, one for team knowledge, one for business operations, or however your team thinks.
69
74
 
70
75
  ### Entities
71
76
 
@@ -118,14 +123,13 @@ There are 17 built-in entity types (project, meeting, person, organization, deci
118
123
  | Command | Description |
119
124
  |---------|-------------|
120
125
  | `studiograph init <team-name> [dir]` | Initialize a new workspace |
121
- | `studiograph join <url> [dir]` | Join an existing workspace via GitHub URL |
122
- | `studiograph auth` | Manage GitHub authentication |
126
+ | `studiograph clone <url> [dir]` | Clone an existing workspace from a running server |
123
127
 
124
128
  ### Daily Workflow
125
129
 
126
130
  | Command | Description |
127
131
  |---------|-------------|
128
- | `studiograph start` | Launch the AI agent chat interface |
132
+ | `studiograph serve` | Boot the local HTTP server + open the web UI |
129
133
  | `studiograph pull` | Pull latest changes from remote |
130
134
  | `studiograph push` | Push local commits to remote |
131
135
 
@@ -133,7 +137,7 @@ There are 17 built-in entity types (project, meeting, person, organization, deci
133
137
 
134
138
  | Command | Description |
135
139
  |---------|-------------|
136
- | `studiograph collection` | Manage collections (add, list, rename, remove) |
140
+ | `studiograph folder` | Manage folders (add, list, rename, remove) |
137
141
  | `studiograph provision` | Push workspace config to GitHub as a separate repo |
138
142
  | `studiograph members` | Manage team members and roles |
139
143
  | `studiograph index` | Rebuild search index |
@@ -190,7 +194,7 @@ Studiograph exposes a [Model Context Protocol](https://modelcontextprotocol.io/)
190
194
 
191
195
  If you're running from the workspace directory, you can omit the path: `studiograph mcp`.
192
196
 
193
- MCP tools available: `list_repos`, `list_entities`, `get_entity`, `search_entities`, `create_entity`, `update_entity`, `delete_entity`.
197
+ MCP tools available: `list_repos`, `create_repo`, `list_entities`, `get_entity`, `search_entities`, `create_entity`, `update_entity`, `delete_entity`.
194
198
 
195
199
  ### Third-Party Connectors
196
200
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Agent Pool — manages per-session Agent instances for concurrent access.
3
3
  *
4
- * Each session (collection chat, private chat, capture) gets its own Agent
4
+ * Each session (folder chat, private chat, capture) gets its own Agent
5
5
  * with independent conversation history. Shared resources (tools, system
6
6
  * prompt, model) are created once and passed to each new agent.
7
7
  *
@@ -15,12 +15,37 @@ export interface AgentContext {
15
15
  user: AuthUser | null;
16
16
  onHighlight?: ((ids: string[]) => void) | null;
17
17
  onMutation?: ((m: MutationEvent) => void) | null;
18
+ /**
19
+ * Called by tool wrappers at the start (`enter`) and end (`leave`) of any
20
+ * mutation that targets a folder. Powers the "X's agent is acting" sidebar
21
+ * chip via wsHub.handleAgentActivity. Optional — no-op if unset.
22
+ */
23
+ onAgentActivity?: ((action: 'enter' | 'leave' | 'heartbeat', repo: string) => void) | null;
24
+ /**
25
+ * Wired only by the quick-capture flow. When the agent calls the
26
+ * `nothing_to_capture` tool, this receives the structured reason so the
27
+ * UI can render a toast without going through freeform assistant prose
28
+ * (which is variable-quality and leaks the followups marker).
29
+ */
30
+ onNothingToCapture?: ((reason: string) => void) | null;
18
31
  }
19
32
  export interface SharedAgentConfig {
20
33
  /** Factory to create a fresh Agent instance with tools, prompt, and model. */
21
34
  createAgent: (userId?: number) => Agent;
22
- /** Callback to load custom tools async (called once per new agent). */
23
- loadCustomTools?: (agent: Agent) => void;
35
+ /**
36
+ * Callback to load custom tools async (called once per new agent). The
37
+ * pool passes the session's `userId` so per-user MCP connector OAuth
38
+ * tokens can be resolved at tool-build time — without this, the agent
39
+ * runtime can't read tokens stored under `(user, connector)`.
40
+ *
41
+ * Must return a Promise that resolves when tool loading is done (or
42
+ * rejects on failure — the pool catches and treats it as "load gave
43
+ * up, proceed with bundled tools"). `withAgent` awaits this on the
44
+ * first chat call for the session so the first turn doesn't race
45
+ * against still-loading MCP connector tools. The promise resolves
46
+ * once and subsequent turns see it as a no-op.
47
+ */
48
+ loadCustomTools?: (agent: Agent, userId?: number) => Promise<void>;
24
49
  /** Base sessions directory. */
25
50
  sessionsDir: string;
26
51
  }
@@ -52,6 +77,30 @@ export declare class AgentPool {
52
77
  getAgent(sessionId: string): Agent | null;
53
78
  /** Abort the agent for a session. */
54
79
  abort(sessionId: string): void;
80
+ /**
81
+ * Evict every cached agent instance. Persists each session's history
82
+ * first so no in-memory transcript is lost. Next chat for any session
83
+ * spins up a fresh agent (via `createAgent` from the config), which
84
+ * re-reads model/provider/api_key via `resolveApiKey` — picking up
85
+ * whatever the store now has.
86
+ *
87
+ * Used as the eviction hook on secret/setting mutations: when the
88
+ * operator rotates an API key or switches providers via Settings UI,
89
+ * the running agent's captured apiKey is stale until restart. This
90
+ * is the surgical fix instead of restarting the whole process.
91
+ */
92
+ invalidateAll(): void;
93
+ /**
94
+ * Evict every pool entry owned by a specific user. Used as the eviction
95
+ * hook on per-user OAuth mutations: when a user OAuths a new connector
96
+ * (or revokes one), their running agent's tool list — captured at
97
+ * createAgentInstance time — no longer matches reality. Sessions
98
+ * belonging to OTHER users stay in the pool untouched.
99
+ *
100
+ * Saved sessions are written to disk before removal, same as
101
+ * `invalidateAll`, so no transcript is lost.
102
+ */
103
+ invalidateUser(userId: number): void;
55
104
  /** Save all sessions and stop the reaper. */
56
105
  shutdown(): Promise<void>;
57
106
  /** Clear all saved session files for a user. */
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Agent Pool — manages per-session Agent instances for concurrent access.
3
3
  *
4
- * Each session (collection chat, private chat, capture) gets its own Agent
4
+ * Each session (folder chat, private chat, capture) gets its own Agent
5
5
  * with independent conversation history. Shared resources (tools, system
6
6
  * prompt, model) are created once and passed to each new agent.
7
7
  *
@@ -37,8 +37,14 @@ export class AgentPool {
37
37
  */
38
38
  async withAgent(sessionId, ctx, fn, opts) {
39
39
  const entry = this.getOrCreate(sessionId, opts?.userId, opts?.fallbackHistory);
40
- // Chain on the session's lock to serialize calls
40
+ // Chain on the session's lock to serialize calls. Also await
41
+ // toolsLoaded so the first turn's prompt-to-Anthropic sees the
42
+ // full tool list (bundled + custom + per-user connector). On
43
+ // subsequent turns this promise is already resolved — no wait.
44
+ // Toolloading errors were caught upstream; the await is purely
45
+ // for ordering, never throws.
41
46
  const result = entry.lock.then(async () => {
47
+ await entry.toolsLoaded;
42
48
  entry.lastUsedAt = Date.now();
43
49
  this.contextMap.set(sessionId, ctx);
44
50
  try {
@@ -62,6 +68,43 @@ export class AgentPool {
62
68
  abort(sessionId) {
63
69
  this.pool.get(sessionId)?.agent.abort();
64
70
  }
71
+ /**
72
+ * Evict every cached agent instance. Persists each session's history
73
+ * first so no in-memory transcript is lost. Next chat for any session
74
+ * spins up a fresh agent (via `createAgent` from the config), which
75
+ * re-reads model/provider/api_key via `resolveApiKey` — picking up
76
+ * whatever the store now has.
77
+ *
78
+ * Used as the eviction hook on secret/setting mutations: when the
79
+ * operator rotates an API key or switches providers via Settings UI,
80
+ * the running agent's captured apiKey is stale until restart. This
81
+ * is the surgical fix instead of restarting the whole process.
82
+ */
83
+ invalidateAll() {
84
+ for (const entry of this.pool.values()) {
85
+ this.saveSession(entry);
86
+ }
87
+ this.pool.clear();
88
+ }
89
+ /**
90
+ * Evict every pool entry owned by a specific user. Used as the eviction
91
+ * hook on per-user OAuth mutations: when a user OAuths a new connector
92
+ * (or revokes one), their running agent's tool list — captured at
93
+ * createAgentInstance time — no longer matches reality. Sessions
94
+ * belonging to OTHER users stay in the pool untouched.
95
+ *
96
+ * Saved sessions are written to disk before removal, same as
97
+ * `invalidateAll`, so no transcript is lost.
98
+ */
99
+ invalidateUser(userId) {
100
+ for (const [sessionId, entry] of this.pool.entries()) {
101
+ if (entry.userId === userId) {
102
+ this.saveSession(entry);
103
+ this.pool.delete(sessionId);
104
+ this.contextMap.delete(sessionId);
105
+ }
106
+ }
107
+ }
65
108
  /** Save all sessions and stop the reaper. */
66
109
  async shutdown() {
67
110
  if (this.reapTimer) {
@@ -103,22 +146,59 @@ export class AgentPool {
103
146
  const existing = this.pool.get(sessionId);
104
147
  if (existing)
105
148
  return existing;
106
- // Create a fresh agent instance (pass userId for per-user context like briefing)
149
+ // Create a fresh agent instance (pass userId for per-user context)
107
150
  const agent = this.config.createAgent(userId);
108
- this.config.loadCustomTools?.(agent);
151
+ // Kick off async tool loading. The returned promise gets stashed on
152
+ // the pool entry so the first withAgent call can await it — that's
153
+ // what closes the timing race between agent construction and the
154
+ // user's first chat turn referencing a connector tool. If the
155
+ // callback returns undefined (legacy or test surfaces that don't
156
+ // need to gate on it), treat it as already-resolved.
157
+ const toolsLoaded = (this.config.loadCustomTools?.(agent, userId) ?? Promise.resolve()).catch((err) => {
158
+ // Swallow the rejection here — the agent should proceed with
159
+ // whatever subset of tools landed. The orchestrator's own
160
+ // catch path already logged the underlying failure.
161
+ // eslint-disable-next-line no-console
162
+ console.warn(`[agent-pool] tool loading rejected, proceeding with bundled tools: ${err instanceof Error ? err.message : err}`);
163
+ });
109
164
  // Try loading session from disk
110
165
  const loaded = this.loadSession(agent, sessionId, userId);
111
- // Fallback: inject history as context if no saved session
166
+ // Fallback: rebuild the transcript as proper role-tagged messages when
167
+ // the saved session file is missing (cleared, corrupted, or first turn
168
+ // on a fresh container). The previous implementation flattened the
169
+ // entire history into a single role: 'user' message with "Assistant:" /
170
+ // "User:" prefixes embedded as plain text — the model then had to parse
171
+ // those textual prefixes to know what was its own output, and would
172
+ // sometimes mis-attribute its prior turns to the user (e.g. "you
173
+ // mentioned that Watowa consults" when the user had just said "we
174
+ // consult on..."). Mapping each turn to its actual role tag lets the
175
+ // model distinguish reliably without parsing-by-prefix.
112
176
  if (!loaded && fallbackHistory && fallbackHistory.length > 0) {
113
- const transcript = fallbackHistory
114
- .map(m => `${m.role === 'assistant' ? 'Assistant' : 'User'}: ${m.content}`)
115
- .join('\n\n');
116
- const contextMsg = {
117
- role: 'user',
118
- content: [{ type: 'text', text: `[Prior conversation context]\n\n${transcript}` }],
119
- timestamp: Date.now(),
120
- };
121
- agent.replaceMessages([contextMsg]);
177
+ const model = agent.state.model;
178
+ const baseTime = Date.now() - fallbackHistory.length * 1000;
179
+ agent.state.messages = fallbackHistory.map((m, i) => {
180
+ const timestamp = baseTime + i * 1000;
181
+ if (m.role === 'assistant') {
182
+ return {
183
+ role: 'assistant',
184
+ content: [{ type: 'text', text: m.content }],
185
+ api: model.api,
186
+ provider: model.provider,
187
+ model: model.id,
188
+ usage: {
189
+ input: 0, output: 0, cacheRead: 0, cacheWrite: 0, totalTokens: 0,
190
+ cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },
191
+ },
192
+ stopReason: 'stop',
193
+ timestamp,
194
+ };
195
+ }
196
+ return {
197
+ role: 'user',
198
+ content: [{ type: 'text', text: m.content }],
199
+ timestamp,
200
+ };
201
+ });
122
202
  }
123
203
  const entry = {
124
204
  agent,
@@ -126,6 +206,7 @@ export class AgentPool {
126
206
  userId,
127
207
  lastUsedAt: Date.now(),
128
208
  lock: Promise.resolve(),
209
+ toolsLoaded,
129
210
  };
130
211
  this.pool.set(sessionId, entry);
131
212
  return entry;
@@ -140,7 +221,7 @@ export class AgentPool {
140
221
  try {
141
222
  const data = JSON.parse(readFileSync(sessionPath, 'utf-8'));
142
223
  if (Array.isArray(data.messages) && data.messages.length > 0) {
143
- agent.replaceMessages(data.messages);
224
+ agent.state.messages = data.messages;
144
225
  return true;
145
226
  }
146
227
  }
@@ -1 +1 @@
1
- {"version":3,"file":"agent-pool.js","sourceRoot":"","sources":["../../src/agent/agent-pool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-pool.js","sourceRoot":"","sources":["../../src/agent/agent-pool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Follow-up suggestion marker parsing.
3
+ *
4
+ * The system prompt instructs the agent to end every response with an HTML
5
+ * comment of the form:
6
+ *
7
+ * <!-- followups: ["prompt 1", "prompt 2", "prompt 3"] -->
8
+ *
9
+ * Each transport (web, CLI, MCP) must strip this marker from the content it
10
+ * displays and surface the suggestions in whatever form fits its UI — chips
11
+ * in the web client, a dim numbered list in the CLI, a `suggestions` field
12
+ * in MCP, etc.
13
+ *
14
+ * Keep the parser in one place so a new transport can't silently leak the
15
+ * raw marker.
16
+ */
17
+ export interface ParsedFollowups {
18
+ /** Response content with the marker removed and trailing whitespace trimmed. */
19
+ content: string;
20
+ /** Parsed suggestions, if the marker was present and valid JSON. */
21
+ suggestions?: string[];
22
+ }
23
+ /**
24
+ * Parse a raw agent response and split it into clean content plus optional
25
+ * follow-up suggestions. Malformed markers are left in place (the caller can
26
+ * choose to strip or render as-is), matching the existing web behaviour.
27
+ */
28
+ export declare function parseFollowups(raw: string): ParsedFollowups;
29
+ /**
30
+ * Return true if `text` contains an *unclosed* followups marker — used by
31
+ * streaming consumers to know whether to defer rendering the tail of a
32
+ * delta until the closing `-->` arrives.
33
+ */
34
+ export declare function hasOpenFollowupsMarker(text: string): boolean;
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Follow-up suggestion marker parsing.
3
+ *
4
+ * The system prompt instructs the agent to end every response with an HTML
5
+ * comment of the form:
6
+ *
7
+ * <!-- followups: ["prompt 1", "prompt 2", "prompt 3"] -->
8
+ *
9
+ * Each transport (web, CLI, MCP) must strip this marker from the content it
10
+ * displays and surface the suggestions in whatever form fits its UI — chips
11
+ * in the web client, a dim numbered list in the CLI, a `suggestions` field
12
+ * in MCP, etc.
13
+ *
14
+ * Keep the parser in one place so a new transport can't silently leak the
15
+ * raw marker.
16
+ */
17
+ /** Matches the trailing followups HTML comment at end of text (with optional trailing whitespace). */
18
+ const FOLLOWUPS_RE = /<!--\s*followups:\s*(\[[\s\S]*?\])\s*-->\s*$/;
19
+ /**
20
+ * Parse a raw agent response and split it into clean content plus optional
21
+ * follow-up suggestions. Malformed markers are left in place (the caller can
22
+ * choose to strip or render as-is), matching the existing web behaviour.
23
+ */
24
+ export function parseFollowups(raw) {
25
+ const match = raw.match(FOLLOWUPS_RE);
26
+ if (!match)
27
+ return { content: raw };
28
+ try {
29
+ const parsed = JSON.parse(match[1]);
30
+ if (!Array.isArray(parsed) || !parsed.every((s) => typeof s === 'string')) {
31
+ return { content: raw };
32
+ }
33
+ const content = raw.slice(0, match.index).trimEnd();
34
+ return { content, suggestions: parsed };
35
+ }
36
+ catch {
37
+ return { content: raw };
38
+ }
39
+ }
40
+ /**
41
+ * Return true if `text` contains an *unclosed* followups marker — used by
42
+ * streaming consumers to know whether to defer rendering the tail of a
43
+ * delta until the closing `-->` arrives.
44
+ */
45
+ export function hasOpenFollowupsMarker(text) {
46
+ const lastOpen = text.lastIndexOf('<!--');
47
+ if (lastOpen < 0)
48
+ return false;
49
+ const lastClose = text.lastIndexOf('-->');
50
+ return lastClose < lastOpen;
51
+ }
52
+ //# sourceMappingURL=followups.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"followups.js","sourceRoot":"","sources":["../../src/agent/followups.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,sGAAsG;AACtG,MAAM,YAAY,GAAG,8CAA8C,CAAC;AASpE;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACtC,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IAEpC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;YAC1E,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;QAC1B,CAAC;QACD,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;QACpD,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IAC1B,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAY;IACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1C,IAAI,QAAQ,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAC1C,OAAO,SAAS,GAAG,QAAQ,CAAC;AAC9B,CAAC"}
@@ -9,6 +9,7 @@ import { WorkspaceManager } from '../core/workspace-manager.js';
9
9
  import { WorkspaceConfig } from '../core/types.js';
10
10
  import { GitUser } from '../services/git.js';
11
11
  import { type MutationEvent } from './tools/graph-tools.js';
12
+ import { AuthService } from '../services/auth-service.js';
12
13
  import type { AuthUser } from '../services/auth-service.js';
13
14
  import { AgentPool } from './agent-pool.js';
14
15
  export interface AgentConfig {
@@ -23,8 +24,24 @@ export interface AgentConfig {
23
24
  recentMemory?: string;
24
25
  /** Shared WorkspaceManager instance (used by server to share state with agent). */
25
26
  workspaceManager?: WorkspaceManager;
26
- /** Shared MessageService instance (for searching collection messages). */
27
- messageService?: import('../services/message-service.js').MessageService;
27
+ /**
28
+ * Shared AuthService — pass the route-level instance so the
29
+ * orchestrator participates in the same OAuth-mutation pubsub and uses
30
+ * the master-key-wired crypto path for `oauth_tokens` reads.
31
+ *
32
+ * Without this, the orchestrator constructs a fresh AuthService that
33
+ * (a) has no master key, so reads of encrypted oauth_tokens rows
34
+ * throw; (b) subscribes to a different pubsub channel than the one
35
+ * `connectors-api.ts` fires, so OAuth-mutation invalidations never
36
+ * reach the agent pool. Phase 8 (May 11 2026) wired crypto into the
37
+ * route-level AuthService but missed this instance — latent until
38
+ * the 2026-05-13 per-user OAuth runtime wiring made the orchestrator
39
+ * actually read encrypted oauth_tokens.
40
+ *
41
+ * Tests and CLI surfaces still construct their own — back-compat
42
+ * fallback below.
43
+ */
44
+ authService?: AuthService;
28
45
  }
29
46
  export interface AgentResponse {
30
47
  content: string;
@@ -44,7 +61,6 @@ export declare class AgentOrchestrator {
44
61
  private toolsDirs;
45
62
  private registryRef;
46
63
  private authService;
47
- private messageService;
48
64
  private recentMemory?;
49
65
  private sessionsDir;
50
66
  private _currentUser;
@@ -63,12 +79,32 @@ export declare class AgentOrchestrator {
63
79
  * Runs async after construction — custom tools may not be available for the
64
80
  * very first message if initialisation is extremely fast, but in practice
65
81
  * the first user message arrives well after startup.
82
+ *
83
+ * `userId` is forwarded into `ConnectorManager.buildTools` so per-user MCP
84
+ * OAuth tokens are resolved at tool-build time. Without it the runtime
85
+ * silently falls back to workspace-shared static headers (the deferred
86
+ * gap before 2026-05-13). The agent pool keys agents per-session and
87
+ * supplies the session's userId on creation; CLI / non-interactive
88
+ * spawns pass `undefined` and intentionally land on the workspace
89
+ * fallback.
66
90
  */
67
91
  private loadCustomToolsAsync;
68
92
  /**
69
93
  * Build the full system prompt: base prompt + eager skill content + skill index.
70
94
  */
71
95
  private buildSystemPrompt;
96
+ /**
97
+ * Enumerate skill entities across all folders the user can access. Each
98
+ * skill becomes a SkillMeta with a `graph://<repo>/<id>` sentinel
99
+ * entrypoint. Priority order: user's private folder first, then shared
100
+ * folders alphabetically. First occurrence of a given name wins.
101
+ */
102
+ private getPromptRepoScope;
103
+ private enumerateGraphSkills;
104
+ /**
105
+ * Load the markdown body of a skill entity by (repo, id).
106
+ */
107
+ private readGraphSkillBody;
72
108
  /**
73
109
  * Build a workspace identity section from graph entities.
74
110
  * Reads organization, person, practice-area, and guideline entries
@@ -76,6 +112,13 @@ export declare class AgentOrchestrator {
76
112
  * Returns null if no organization entries exist.
77
113
  */
78
114
  private buildWorkspaceIdentity;
115
+ /**
116
+ * Per-repo subfolder summary for the system prompt. Lists each accessible
117
+ * repo with up to MAX_PER_REPO subfolder paths so the agent can route new
118
+ * entries into existing folders without calling list_folders for every
119
+ * decision. Refresh cadence is per-session (system prompt is built once).
120
+ */
121
+ private buildFolderInventory;
79
122
  /**
80
123
  * Fallback system prompt when prompts/system.md is not found.
81
124
  */
@@ -118,7 +161,7 @@ export declare class AgentOrchestrator {
118
161
  */
119
162
  getRepoNames(): string[];
120
163
  /**
121
- * Set the current authenticated user for per-collection access filtering.
164
+ * Set the current authenticated user for per-folder access filtering.
122
165
  * Called per-request by the chat endpoint. Null = full access (API key / open mode).
123
166
  */
124
167
  setCurrentUser(user: AuthUser | null): void;