studiograph 1.3.3 → 1.3.4

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 (290) hide show
  1. package/dist/agent/orchestrator.d.ts +10 -0
  2. package/dist/agent/orchestrator.js +26 -7
  3. package/dist/agent/orchestrator.js.map +1 -1
  4. package/dist/agent/skills/sync-configuration.md +4 -29
  5. package/dist/agent/skills/sync-setup.md +2 -4
  6. package/dist/agent/tools/graph-tools.d.ts +5 -1
  7. package/dist/agent/tools/graph-tools.js +161 -9
  8. package/dist/agent/tools/graph-tools.js.map +1 -1
  9. package/dist/agent/tools/ops-tools.js +15 -126
  10. package/dist/agent/tools/ops-tools.js.map +1 -1
  11. package/dist/agent/tools/permission-tools.d.ts +15 -14
  12. package/dist/agent/tools/permission-tools.js +65 -128
  13. package/dist/agent/tools/permission-tools.js.map +1 -1
  14. package/dist/agent/tools/sync-tools.d.ts +7 -6
  15. package/dist/agent/tools/sync-tools.js +205 -178
  16. package/dist/agent/tools/sync-tools.js.map +1 -1
  17. package/dist/cli/commands/about.d.ts +13 -0
  18. package/dist/cli/commands/about.js +97 -0
  19. package/dist/cli/commands/about.js.map +1 -0
  20. package/dist/cli/commands/clone.d.ts +5 -2
  21. package/dist/cli/commands/clone.js +131 -62
  22. package/dist/cli/commands/clone.js.map +1 -1
  23. package/dist/cli/commands/connector.d.ts +2 -16
  24. package/dist/cli/commands/connector.js +32 -109
  25. package/dist/cli/commands/connector.js.map +1 -1
  26. package/dist/cli/commands/deploy.d.ts +0 -1
  27. package/dist/cli/commands/deploy.js +13 -103
  28. package/dist/cli/commands/deploy.js.map +1 -1
  29. package/dist/cli/commands/init.js +6 -93
  30. package/dist/cli/commands/init.js.map +1 -1
  31. package/dist/cli/commands/join.d.ts +3 -2
  32. package/dist/cli/commands/join.js +142 -97
  33. package/dist/cli/commands/join.js.map +1 -1
  34. package/dist/cli/commands/redeploy.js +1 -2
  35. package/dist/cli/commands/redeploy.js.map +1 -1
  36. package/dist/cli/commands/serve.d.ts +1 -3
  37. package/dist/cli/commands/serve.js +29 -109
  38. package/dist/cli/commands/serve.js.map +1 -1
  39. package/dist/cli/commands/start.js +1 -1
  40. package/dist/cli/commands/start.js.map +1 -1
  41. package/dist/cli/commands/sync-collection.d.ts +14 -0
  42. package/dist/cli/commands/sync-collection.js +366 -0
  43. package/dist/cli/commands/sync-collection.js.map +1 -0
  44. package/dist/cli/commands/sync.d.ts +4 -2
  45. package/dist/cli/commands/sync.js +529 -94
  46. package/dist/cli/commands/sync.js.map +1 -1
  47. package/dist/cli/index.js +15 -30
  48. package/dist/cli/index.js.map +1 -1
  49. package/dist/cli/setup-wizard.d.ts +0 -13
  50. package/dist/cli/setup-wizard.js +6 -81
  51. package/dist/cli/setup-wizard.js.map +1 -1
  52. package/dist/core/graph.d.ts +8 -2
  53. package/dist/core/graph.js +11 -7
  54. package/dist/core/graph.js.map +1 -1
  55. package/dist/core/types.d.ts +149 -21
  56. package/dist/core/types.js +16 -4
  57. package/dist/core/types.js.map +1 -1
  58. package/dist/core/workspace-manager.js +1 -5
  59. package/dist/core/workspace-manager.js.map +1 -1
  60. package/dist/core/workspace.d.ts +11 -4
  61. package/dist/core/workspace.js +61 -26
  62. package/dist/core/workspace.js.map +1 -1
  63. package/dist/integrations/asana.d.ts +26 -0
  64. package/dist/integrations/asana.js +77 -0
  65. package/dist/integrations/asana.js.map +1 -0
  66. package/dist/integrations/figma-local.d.ts +16 -0
  67. package/dist/integrations/figma-local.js +10 -0
  68. package/dist/integrations/figma-local.js.map +1 -0
  69. package/dist/integrations/figma.d.ts +17 -0
  70. package/dist/integrations/figma.js +16 -0
  71. package/dist/integrations/figma.js.map +1 -0
  72. package/dist/integrations/granola.d.ts +24 -0
  73. package/dist/integrations/granola.js +59 -0
  74. package/dist/integrations/granola.js.map +1 -0
  75. package/dist/integrations/linear.d.ts +14 -0
  76. package/dist/integrations/linear.js +70 -0
  77. package/dist/integrations/linear.js.map +1 -0
  78. package/dist/integrations/paper-local.d.ts +14 -0
  79. package/dist/integrations/paper-local.js +10 -0
  80. package/dist/integrations/paper-local.js.map +1 -0
  81. package/dist/integrations/paper.d.ts +2 -0
  82. package/dist/integrations/paper.js +10 -0
  83. package/dist/integrations/paper.js.map +1 -0
  84. package/dist/integrations/pipedrive.d.ts +26 -0
  85. package/dist/integrations/pipedrive.js +97 -0
  86. package/dist/integrations/pipedrive.js.map +1 -0
  87. package/dist/integrations/registry.d.ts +15 -0
  88. package/dist/integrations/registry.js +27 -0
  89. package/dist/integrations/registry.js.map +1 -0
  90. package/dist/integrations/types.d.ts +34 -0
  91. package/dist/integrations/types.js +9 -0
  92. package/dist/integrations/types.js.map +1 -0
  93. package/dist/mcp/connector-manager.d.ts +45 -31
  94. package/dist/mcp/connector-manager.js +164 -116
  95. package/dist/mcp/connector-manager.js.map +1 -1
  96. package/dist/mcp/server-oauth-provider.d.ts +56 -0
  97. package/dist/mcp/server-oauth-provider.js +138 -0
  98. package/dist/mcp/server-oauth-provider.js.map +1 -0
  99. package/dist/server/chrome/chrome.css +142 -28
  100. package/dist/server/chrome/chrome.js +46 -220
  101. package/dist/server/collab-authority.d.ts +70 -0
  102. package/dist/server/collab-authority.js +218 -0
  103. package/dist/server/collab-authority.js.map +1 -0
  104. package/dist/server/collab.d.ts +29 -0
  105. package/dist/server/collab.js +195 -0
  106. package/dist/server/collab.js.map +1 -0
  107. package/dist/server/commit-scheduler.d.ts +39 -0
  108. package/dist/server/commit-scheduler.js +113 -0
  109. package/dist/server/commit-scheduler.js.map +1 -0
  110. package/dist/server/index.d.ts +0 -2
  111. package/dist/server/index.js +166 -55
  112. package/dist/server/index.js.map +1 -1
  113. package/dist/server/routes/auth-api.d.ts +6 -0
  114. package/dist/server/routes/auth-api.js +78 -0
  115. package/dist/server/routes/auth-api.js.map +1 -1
  116. package/dist/server/routes/chat.js +4 -0
  117. package/dist/server/routes/chat.js.map +1 -1
  118. package/dist/server/routes/collab.d.ts +6 -0
  119. package/dist/server/routes/collab.js +10 -0
  120. package/dist/server/routes/collab.js.map +1 -0
  121. package/dist/server/routes/git-http.d.ts +23 -0
  122. package/dist/server/routes/git-http.js +251 -0
  123. package/dist/server/routes/git-http.js.map +1 -0
  124. package/dist/server/routes/graph-api.d.ts +6 -2
  125. package/dist/server/routes/graph-api.js +266 -82
  126. package/dist/server/routes/graph-api.js.map +1 -1
  127. package/dist/server/routes/mcp.d.ts +12 -0
  128. package/dist/server/routes/mcp.js +35 -0
  129. package/dist/server/routes/mcp.js.map +1 -0
  130. package/dist/server/routes/permissions-api.d.ts +6 -4
  131. package/dist/server/routes/permissions-api.js +53 -167
  132. package/dist/server/routes/permissions-api.js.map +1 -1
  133. package/dist/server/routes/sync-api.d.ts +26 -0
  134. package/dist/server/routes/sync-api.js +757 -0
  135. package/dist/server/routes/sync-api.js.map +1 -0
  136. package/dist/server/routes/ws.d.ts +9 -0
  137. package/dist/server/routes/ws.js +131 -0
  138. package/dist/server/routes/ws.js.map +1 -0
  139. package/dist/server/session-manager.d.ts +40 -0
  140. package/dist/server/session-manager.js +132 -0
  141. package/dist/server/session-manager.js.map +1 -0
  142. package/dist/server/ws-hub.d.ts +130 -0
  143. package/dist/server/ws-hub.js +250 -0
  144. package/dist/server/ws-hub.js.map +1 -0
  145. package/dist/server/yjs-manager.d.ts +59 -0
  146. package/dist/server/yjs-manager.js +194 -0
  147. package/dist/server/yjs-manager.js.map +1 -0
  148. package/dist/services/auth-service.d.ts +74 -0
  149. package/dist/services/auth-service.js +286 -6
  150. package/dist/services/auth-service.js.map +1 -1
  151. package/dist/services/git.d.ts +6 -0
  152. package/dist/services/git.js +32 -2
  153. package/dist/services/git.js.map +1 -1
  154. package/dist/services/sync/collection-sync.d.ts +73 -0
  155. package/dist/services/sync/collection-sync.js +726 -0
  156. package/dist/services/sync/collection-sync.js.map +1 -0
  157. package/dist/services/sync/commit.js +5 -20
  158. package/dist/services/sync/commit.js.map +1 -1
  159. package/dist/services/sync/data-fetcher.d.ts +31 -0
  160. package/dist/services/sync/data-fetcher.js +12 -0
  161. package/dist/services/sync/data-fetcher.js.map +1 -0
  162. package/dist/services/sync/entity-refresh.d.ts +30 -0
  163. package/dist/services/sync/entity-refresh.js +275 -0
  164. package/dist/services/sync/entity-refresh.js.map +1 -0
  165. package/dist/services/sync/frontmatter-extractor.d.ts +2 -2
  166. package/dist/services/sync/frontmatter-extractor.js +1 -2
  167. package/dist/services/sync/frontmatter-extractor.js.map +1 -1
  168. package/dist/services/sync/graph-match.js +1 -1
  169. package/dist/services/sync/graph-match.js.map +1 -1
  170. package/dist/services/sync/mcp-client.d.ts +16 -4
  171. package/dist/services/sync/mcp-client.js +34 -20
  172. package/dist/services/sync/mcp-client.js.map +1 -1
  173. package/dist/services/sync/prompts.js +1 -1
  174. package/dist/services/sync/reconciler.js +1 -2
  175. package/dist/services/sync/reconciler.js.map +1 -1
  176. package/dist/services/sync/rest-client.d.ts +40 -0
  177. package/dist/services/sync/rest-client.js +100 -0
  178. package/dist/services/sync/rest-client.js.map +1 -0
  179. package/dist/services/sync/source-config.d.ts +23 -1
  180. package/dist/services/sync/source-config.js +112 -16
  181. package/dist/services/sync/source-config.js.map +1 -1
  182. package/dist/services/sync/source-definitions/asana.d.ts +3 -4
  183. package/dist/services/sync/source-definitions/asana.js +7 -13
  184. package/dist/services/sync/source-definitions/asana.js.map +1 -1
  185. package/dist/services/sync/source-definitions/definitions.d.ts +5 -18
  186. package/dist/services/sync/source-definitions/definitions.js +4 -22
  187. package/dist/services/sync/source-definitions/definitions.js.map +1 -1
  188. package/dist/services/sync/source-definitions/granola.d.ts +1 -1
  189. package/dist/services/sync/source-definitions/granola.js +11 -18
  190. package/dist/services/sync/source-definitions/granola.js.map +1 -1
  191. package/dist/services/sync/source-definitions/linear.d.ts +1 -1
  192. package/dist/services/sync/source-definitions/linear.js +17 -15
  193. package/dist/services/sync/source-definitions/linear.js.map +1 -1
  194. package/dist/services/sync/source-definitions/pipedrive.d.ts +1 -1
  195. package/dist/services/sync/source-definitions/pipedrive.js +6 -15
  196. package/dist/services/sync/source-definitions/pipedrive.js.map +1 -1
  197. package/dist/services/sync/staging.js +1 -2
  198. package/dist/services/sync/staging.js.map +1 -1
  199. package/dist/services/sync/structured-extractor.d.ts +8 -2
  200. package/dist/services/sync/structured-extractor.js +243 -35
  201. package/dist/services/sync/structured-extractor.js.map +1 -1
  202. package/dist/services/sync/types.d.ts +192 -23
  203. package/dist/services/sync/unstructured-extractor.d.ts +1 -3
  204. package/dist/services/sync/unstructured-extractor.js +2 -14
  205. package/dist/services/sync/unstructured-extractor.js.map +1 -1
  206. package/dist/utils/git.d.ts +33 -20
  207. package/dist/utils/git.js +119 -62
  208. package/dist/utils/git.js.map +1 -1
  209. package/dist/utils/preflight.d.ts +1 -15
  210. package/dist/utils/preflight.js +1 -35
  211. package/dist/utils/preflight.js.map +1 -1
  212. package/dist/web/_app/immutable/assets/0.CupILLQs.css +1 -0
  213. package/dist/web/_app/immutable/assets/3.CtJi4Cy9.css +1 -0
  214. package/dist/web/_app/immutable/assets/5.CydFyZSu.css +1 -0
  215. package/dist/web/_app/immutable/assets/6.kqeOo0OW.css +1 -0
  216. package/dist/web/_app/immutable/assets/7.CseIx7qQ.css +1 -0
  217. package/dist/web/_app/immutable/assets/8.BYpFDZHK.css +1 -0
  218. package/dist/web/_app/immutable/assets/AppShell.Ch_ef9hJ.css +1 -0
  219. package/dist/web/_app/immutable/assets/ChatPanel.CP-_8txt.css +1 -0
  220. package/dist/web/_app/immutable/chunks/0oxpWEgM.js +1 -0
  221. package/dist/web/_app/immutable/chunks/B1y7Wy5O.js +18 -0
  222. package/dist/web/_app/immutable/chunks/B7eduG_j.js +64 -0
  223. package/dist/web/_app/immutable/chunks/BBLgaWN8.js +1 -0
  224. package/dist/web/_app/immutable/chunks/BCB5cYCz.js +2 -0
  225. package/dist/web/_app/immutable/chunks/{aosHekRC.js → BPUy9_sS.js} +1 -1
  226. package/dist/web/_app/immutable/chunks/BVBRzmeQ.js +7 -0
  227. package/dist/web/_app/immutable/chunks/{CUzqHQY_.js → BXuvR8Ks.js} +2 -1
  228. package/dist/web/_app/immutable/chunks/BeBar3OL.js +1 -0
  229. package/dist/web/_app/immutable/chunks/BuOTIbJu.js +1 -0
  230. package/dist/web/_app/immutable/chunks/CLFba8FK.js +5 -0
  231. package/dist/web/_app/immutable/chunks/CQCkXCml.js +1 -0
  232. package/dist/web/_app/immutable/chunks/CXuhHL4d.js +1 -0
  233. package/dist/web/_app/immutable/chunks/Cg9NOuOl.js +27 -0
  234. package/dist/web/_app/immutable/chunks/Cs5oz2oJ.js +5 -0
  235. package/dist/web/_app/immutable/chunks/Cs_ROD7H.js +2 -0
  236. package/dist/web/_app/immutable/chunks/D2aTbzFm.js +3 -0
  237. package/dist/web/_app/immutable/chunks/D4FXhiC2.js +1 -0
  238. package/dist/web/_app/immutable/chunks/D4VHRYeB.js +1 -0
  239. package/dist/web/_app/immutable/chunks/DCGSm8Hl.js +1 -0
  240. package/dist/web/_app/immutable/chunks/DP09rP34.js +2 -0
  241. package/dist/web/_app/immutable/chunks/DiP47fAp.js +1 -0
  242. package/dist/web/_app/immutable/chunks/DptGlK8O.js +1 -0
  243. package/dist/web/_app/immutable/chunks/O0fx2ss6.js +1 -0
  244. package/dist/web/_app/immutable/chunks/xBRYfpah.js +1 -0
  245. package/dist/web/_app/immutable/entry/app.FgnywZP_.js +2 -0
  246. package/dist/web/_app/immutable/entry/start.Bsa-zlPf.js +1 -0
  247. package/dist/web/_app/immutable/nodes/0.D3SW-LMc.js +10 -0
  248. package/dist/web/_app/immutable/nodes/1.y0c5TQTP.js +1 -0
  249. package/dist/web/_app/immutable/nodes/2.BQfSep9-.js +1 -0
  250. package/dist/web/_app/immutable/nodes/3.CC4Y-xMM.js +11 -0
  251. package/dist/web/_app/immutable/nodes/{5.BBpmYkAu.js → 4.Dp0Z-oPW.js} +2 -2
  252. package/dist/web/_app/immutable/nodes/5.gjZ03DON.js +2 -0
  253. package/dist/web/_app/immutable/nodes/6.dRNIwcJQ.js +1 -0
  254. package/dist/web/_app/immutable/nodes/7.I4Gjes3o.js +2 -0
  255. package/dist/web/_app/immutable/nodes/8.Dj14D7uH.js +1 -0
  256. package/dist/web/_app/version.json +1 -1
  257. package/dist/web/index.html +10 -12
  258. package/package.json +12 -2
  259. package/dist/web/_app/immutable/assets/0.CDbX4Cwz.css +0 -1
  260. package/dist/web/_app/immutable/assets/3.BJy7pVXi.css +0 -1
  261. package/dist/web/_app/immutable/assets/4.Ad16uh9o.css +0 -1
  262. package/dist/web/_app/immutable/assets/6.Bm2i7O0j.css +0 -1
  263. package/dist/web/_app/immutable/assets/AppShell.D0rmbdqF.css +0 -1
  264. package/dist/web/_app/immutable/assets/ChatPanel.RFD5GGYI.css +0 -1
  265. package/dist/web/_app/immutable/assets/editor.CPAf2SRV.css +0 -1
  266. package/dist/web/_app/immutable/chunks/479TgXB4.js +0 -1
  267. package/dist/web/_app/immutable/chunks/4QY4j-jX.js +0 -1
  268. package/dist/web/_app/immutable/chunks/BFb0g4TQ.js +0 -64
  269. package/dist/web/_app/immutable/chunks/Bopa-Ask.js +0 -1
  270. package/dist/web/_app/immutable/chunks/COwytaCP.js +0 -1
  271. package/dist/web/_app/immutable/chunks/DEJSHbC3.js +0 -1
  272. package/dist/web/_app/immutable/chunks/DNywhIex.js +0 -23
  273. package/dist/web/_app/immutable/chunks/DTUXhwEY.js +0 -1
  274. package/dist/web/_app/immutable/chunks/DThXpa0U.js +0 -6
  275. package/dist/web/_app/immutable/chunks/Dh_H7Owr.js +0 -18
  276. package/dist/web/_app/immutable/chunks/Dml-u95b.js +0 -2
  277. package/dist/web/_app/immutable/chunks/DnlgZ_Tk.js +0 -5
  278. package/dist/web/_app/immutable/chunks/DtVH--hH.js +0 -6
  279. package/dist/web/_app/immutable/chunks/DvKVaE7M.js +0 -1
  280. package/dist/web/_app/immutable/chunks/MbiSz-iW.js +0 -2
  281. package/dist/web/_app/immutable/chunks/bSAC733J.js +0 -1
  282. package/dist/web/_app/immutable/entry/app.BvodXQQ0.js +0 -2
  283. package/dist/web/_app/immutable/entry/start.Bkui3Kyw.js +0 -1
  284. package/dist/web/_app/immutable/nodes/0.DfbCOBhn.js +0 -2
  285. package/dist/web/_app/immutable/nodes/1.vtxUGpe6.js +0 -1
  286. package/dist/web/_app/immutable/nodes/2.Cq29oW4h.js +0 -1
  287. package/dist/web/_app/immutable/nodes/3.SquslPZy.js +0 -1
  288. package/dist/web/_app/immutable/nodes/4.COV8FR8b.js +0 -16
  289. package/dist/web/_app/immutable/nodes/6.BBbh6z9I.js +0 -2
  290. /package/dist/web/_app/immutable/assets/{5.BhKgiXd2.css → 4.BhKgiXd2.css} +0 -0
@@ -1,61 +1,26 @@
1
1
  /**
2
2
  * Permission Tools for Studiograph Agent
3
3
  *
4
- * GitHub-based org, team, and collection access management.
5
- * Wraps GitHubService methods so the agent can manage permissions conversationally.
4
+ * Self-hosted user and per-collection access management backed by AuthService.
6
5
  */
7
6
  import { Type as T } from '@sinclair/typebox';
8
7
  import { wrapToolResult } from './graph-tools.js';
9
- import { loadToken, getAuthenticatedOctokit } from '../../auth/github.js';
10
- import { GitHubService } from '../../services/github-service.js';
11
- function getService(config) {
12
- const org = config.github?.org;
13
- if (!org)
14
- return null;
15
- const stored = loadToken();
16
- if (!stored)
17
- return null;
18
- return new GitHubService(getAuthenticatedOctokit(stored.token), org);
19
- }
20
- function extractRepoName(url) {
21
- if (!url)
22
- return undefined;
23
- const match = url.match(/\/([^/]+?)(?:\.git)?$/);
24
- return match?.[1];
25
- }
26
- function resolveRepoName(config, collection) {
27
- const repo = config.repos?.find(r => r.name === collection);
28
- if (!repo)
29
- return null;
30
- return extractRepoName(repo.github_url) ?? repo.name;
31
- }
32
- const PERMISSION_LABELS = {
33
- pull: 'Read',
34
- push: 'Member',
35
- admin: 'Admin',
36
- maintain: 'Maintain',
37
- triage: 'Triage',
38
- };
39
- function friendlyPermission(perm) {
40
- return PERMISSION_LABELS[perm] ?? perm;
41
- }
42
- export function createPermissionTools(config) {
8
+ export function createPermissionTools(authService) {
43
9
  return [
44
10
  {
45
- name: 'permission_list_members',
46
- label: 'List Org Members',
47
- description: 'List all members of the GitHub organization, including their roles (admin or member).',
11
+ name: 'permission_list_users',
12
+ label: 'List Users',
13
+ description: 'List all workspace users with their roles and collection access.',
48
14
  parameters: T.Object({}),
49
15
  execute: async (_toolCallId, _params) => {
50
- const service = getService(config);
51
- if (!service)
52
- return wrapToolResult({ error: 'GitHub not configured' });
53
16
  try {
54
- const members = await service.listMembers();
55
- return wrapToolResult(members.map(m => ({
56
- login: m.login,
57
- role: m.role,
58
- name: m.name,
17
+ const users = authService.listUsers();
18
+ return wrapToolResult(users.map(u => ({
19
+ id: u.id,
20
+ email: u.email,
21
+ displayName: u.displayName,
22
+ role: u.role,
23
+ collections: u.role === 'admin' ? '(all — admin)' : authService.getUserCollections(u.id),
59
24
  })));
60
25
  }
61
26
  catch (err) {
@@ -64,44 +29,44 @@ export function createPermissionTools(config) {
64
29
  },
65
30
  },
66
31
  {
67
- name: 'permission_invite_member',
68
- label: 'Invite to Org',
69
- description: 'Invite a GitHub user to the organization. Requires admin role. Always confirm with the user before calling this.',
32
+ name: 'permission_create_user',
33
+ label: 'Create User',
34
+ description: 'Create a new workspace user with email, password, name, and role. Always confirm with the user before calling this.',
70
35
  parameters: T.Object({
71
- username: T.String({ description: 'GitHub username to invite' }),
36
+ email: T.String({ description: 'Email address' }),
37
+ password: T.String({ description: 'Password (minimum 8 characters)' }),
38
+ name: T.String({ description: 'Display name' }),
39
+ role: T.Optional(T.String({ description: 'Role: admin or member. Defaults to member.' })),
72
40
  }),
73
41
  execute: async (_toolCallId, params) => {
74
- const service = getService(config);
75
- if (!service)
76
- return wrapToolResult({ error: 'GitHub not configured' });
77
42
  try {
78
- const isMember = await service.isOrgMember(params.username);
79
- if (isMember)
80
- return wrapToolResult({ status: 'already_member', username: params.username });
81
- await service.inviteUser(params.username);
82
- return wrapToolResult({ status: 'invited', username: params.username });
43
+ const role = (params.role === 'admin' ? 'admin' : 'member');
44
+ const user = authService.createUser(params.email, params.password, params.name, role);
45
+ return wrapToolResult({ created: true, email: user.email, displayName: user.displayName, role: user.role });
83
46
  }
84
47
  catch (err) {
85
- if (err?.status === 422)
86
- return wrapToolResult({ status: 'already_invited', username: params.username });
87
48
  return wrapToolResult({ error: err.message });
88
49
  }
89
50
  },
90
51
  },
91
52
  {
92
- name: 'permission_remove_member',
93
- label: 'Remove from Org',
94
- description: 'Remove a user from the GitHub organization. Requires admin role. Always confirm with the user before calling this.',
53
+ name: 'permission_delete_user',
54
+ label: 'Delete User',
55
+ description: 'Delete a workspace user by email. Always confirm with the user before calling this.',
95
56
  parameters: T.Object({
96
- username: T.String({ description: 'GitHub username to remove' }),
57
+ email: T.String({ description: 'Email of the user to delete' }),
97
58
  }),
98
59
  execute: async (_toolCallId, params) => {
99
- const service = getService(config);
100
- if (!service)
101
- return wrapToolResult({ error: 'GitHub not configured' });
102
60
  try {
103
- await service.removeUser(params.username);
104
- return wrapToolResult({ ok: true, username: params.username });
61
+ const users = authService.listUsers();
62
+ const target = users.find(u => u.email === params.email.toLowerCase().trim());
63
+ if (!target)
64
+ return wrapToolResult({ error: `User "${params.email}" not found` });
65
+ if (target.role === 'admin' && users.filter(u => u.role === 'admin').length <= 1) {
66
+ return wrapToolResult({ error: 'Cannot delete the last admin' });
67
+ }
68
+ const deleted = authService.deleteUser(params.email);
69
+ return wrapToolResult(deleted ? { ok: true, email: params.email } : { error: `User "${params.email}" not found` });
105
70
  }
106
71
  catch (err) {
107
72
  return wrapToolResult({ error: err.message });
@@ -109,31 +74,23 @@ export function createPermissionTools(config) {
109
74
  },
110
75
  },
111
76
  {
112
- name: 'permission_list_access',
113
- label: 'List Collection Access',
114
- description: 'List teams and collaborators with access to a specific collection (GitHub repo).',
77
+ name: 'permission_grant_access',
78
+ label: 'Grant Collection Access',
79
+ description: 'Grant a user access to a collection. Specify user by email and collection by name. Always confirm with the user before calling this.',
115
80
  parameters: T.Object({
81
+ email: T.String({ description: 'Email of the user to grant access to' }),
116
82
  collection: T.String({ description: 'Collection name' }),
117
83
  }),
118
84
  execute: async (_toolCallId, params) => {
119
- const service = getService(config);
120
- if (!service)
121
- return wrapToolResult({ error: 'GitHub not configured' });
122
- const repoName = resolveRepoName(config, params.collection);
123
- if (!repoName)
124
- return wrapToolResult({ error: `Collection "${params.collection}" not found` });
125
85
  try {
126
- const { teams, collaborators } = await service.getRepoAccess(repoName);
127
- return wrapToolResult({
128
- collection: params.collection,
129
- repoName,
130
- teams: teams.map(t => ({ team: t.teamName, permission: friendlyPermission(t.permission) })),
131
- collaborators: collaborators.map(c => ({
132
- login: c.login,
133
- permission: friendlyPermission(c.permission),
134
- pending: c.pending ?? false,
135
- })),
136
- });
86
+ const users = authService.listUsers();
87
+ const user = users.find(u => u.email === params.email.toLowerCase().trim());
88
+ if (!user)
89
+ return wrapToolResult({ error: `User "${params.email}" not found` });
90
+ if (user.role === 'admin')
91
+ return wrapToolResult({ info: 'Admins already have access to all collections' });
92
+ authService.grantCollectionAccess(user.id, params.collection);
93
+ return wrapToolResult({ ok: true, email: params.email, collection: params.collection });
137
94
  }
138
95
  catch (err) {
139
96
  return wrapToolResult({ error: err.message });
@@ -141,30 +98,21 @@ export function createPermissionTools(config) {
141
98
  },
142
99
  },
143
100
  {
144
- name: 'permission_grant_access',
145
- label: 'Grant Collection Access',
146
- description: 'Grant a GitHub user access to a collection via an auto-managed team. The user gets instant access if they are an org member, or a pending invite if not. Always confirm with the user before calling this.',
101
+ name: 'permission_revoke_access',
102
+ label: 'Revoke Collection Access',
103
+ description: 'Revoke a user\'s access to a collection. Always confirm with the user before calling this.',
147
104
  parameters: T.Object({
105
+ email: T.String({ description: 'Email of the user to revoke access from' }),
148
106
  collection: T.String({ description: 'Collection name' }),
149
- username: T.String({ description: 'GitHub username to grant access to' }),
150
- permission: T.Optional(T.String({ description: 'Permission level: pull (read), push (member), or admin. Defaults to push.' })),
151
107
  }),
152
108
  execute: async (_toolCallId, params) => {
153
- const service = getService(config);
154
- if (!service)
155
- return wrapToolResult({ error: 'GitHub not configured' });
156
- const repoName = resolveRepoName(config, params.collection);
157
- if (!repoName)
158
- return wrapToolResult({ error: `Collection "${params.collection}" not found` });
159
109
  try {
160
- const result = await service.grantAccessViaTeam(repoName, params.username, params.permission ?? 'push');
161
- return wrapToolResult({
162
- collection: params.collection,
163
- username: params.username,
164
- permission: friendlyPermission(params.permission ?? 'push'),
165
- isOrgMember: result.isOrgMember,
166
- status: result.status,
167
- });
110
+ const users = authService.listUsers();
111
+ const user = users.find(u => u.email === params.email.toLowerCase().trim());
112
+ if (!user)
113
+ return wrapToolResult({ error: `User "${params.email}" not found` });
114
+ authService.revokeCollectionAccess(user.id, params.collection);
115
+ return wrapToolResult({ ok: true, email: params.email, collection: params.collection });
168
116
  }
169
117
  catch (err) {
170
118
  return wrapToolResult({ error: err.message });
@@ -172,30 +120,19 @@ export function createPermissionTools(config) {
172
120
  },
173
121
  },
174
122
  {
175
- name: 'permission_revoke_access',
176
- label: 'Revoke Collection Access',
177
- description: 'Revoke a user\'s access to a collection. Removes them from the auto-managed team and as a direct collaborator. Always confirm with the user before calling this.',
123
+ name: 'permission_list_collection_access',
124
+ label: 'List Collection Access',
125
+ description: 'List users who have been granted access to a specific collection.',
178
126
  parameters: T.Object({
179
127
  collection: T.String({ description: 'Collection name' }),
180
- username: T.String({ description: 'GitHub username to revoke access from' }),
181
128
  }),
182
129
  execute: async (_toolCallId, params) => {
183
- const service = getService(config);
184
- if (!service)
185
- return wrapToolResult({ error: 'GitHub not configured' });
186
- const repoName = resolveRepoName(config, params.collection);
187
- if (!repoName)
188
- return wrapToolResult({ error: `Collection "${params.collection}" not found` });
189
130
  try {
190
- try {
191
- await service.removeFromTeam(repoName, params.username);
192
- }
193
- catch { /* not on team */ }
194
- try {
195
- await service.revokeUserAccess(repoName, params.username);
196
- }
197
- catch { /* not a collaborator */ }
198
- return wrapToolResult({ ok: true, collection: params.collection, username: params.username });
131
+ const users = authService.getCollectionUsers(params.collection);
132
+ return wrapToolResult({
133
+ collection: params.collection,
134
+ users: users.map(u => ({ email: u.email, displayName: u.displayName, role: u.role })),
135
+ });
199
136
  }
200
137
  catch (err) {
201
138
  return wrapToolResult({ error: err.message });
@@ -1 +1 @@
1
- {"version":3,"file":"permission-tools.js","sourceRoot":"","sources":["../../../src/agent/tools/permission-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"permission-tools.js","sourceRoot":"","sources":["../../../src/agent/tools/permission-tools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,IAAI,CAAC,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGlD,MAAM,UAAU,qBAAqB,CAAC,WAAwB;IAC5D,OAAO;QACL;YACE,IAAI,EAAE,uBAAuB;YAC7B,KAAK,EAAE,YAAY;YACnB,WAAW,EAAE,kEAAkE;YAC/E,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;YACxB,OAAO,EAAE,KAAK,EAAE,WAAmB,EAAE,OAAY,EAAE,EAAE;gBACnD,IAAI,CAAC;oBACH,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,EAAE,CAAC;oBACtC,OAAO,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;wBACpC,EAAE,EAAE,CAAC,CAAC,EAAE;wBACR,KAAK,EAAE,CAAC,CAAC,KAAK;wBACd,WAAW,EAAE,CAAC,CAAC,WAAW;wBAC1B,IAAI,EAAE,CAAC,CAAC,IAAI;wBACZ,WAAW,EAAE,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;qBACzF,CAAC,CAAC,CAAC,CAAC;gBACP,CAAC;gBAAC,OAAO,GAAQ,EAAE,CAAC;oBAClB,OAAO,cAAc,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC;SACF;QACD;YACE,IAAI,EAAE,wBAAwB;YAC9B,KAAK,EAAE,aAAa;YACpB,WAAW,EAAE,qHAAqH;YAClI,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;gBACnB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC;gBACjD,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,iCAAiC,EAAE,CAAC;gBACtE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC;gBAC/C,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,4CAA4C,EAAE,CAAC,CAAC;aAC1F,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,WAAmB,EAAE,MAAwE,EAAE,EAAE;gBAC/G,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAuB,CAAC;oBAClF,MAAM,IAAI,GAAG,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;oBACtF,OAAO,cAAc,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC9G,CAAC;gBAAC,OAAO,GAAQ,EAAE,CAAC;oBAClB,OAAO,cAAc,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC;SACF;QACD;YACE,IAAI,EAAE,wBAAwB;YAC9B,KAAK,EAAE,aAAa;YACpB,WAAW,EAAE,qFAAqF;YAClG,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;gBACnB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,6BAA6B,EAAE,CAAC;aAChE,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,WAAmB,EAAE,MAAyB,EAAE,EAAE;gBAChE,IAAI,CAAC;oBACH,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,EAAE,CAAC;oBACtC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;oBAC9E,IAAI,CAAC,MAAM;wBAAE,OAAO,cAAc,CAAC,EAAE,KAAK,EAAE,SAAS,MAAM,CAAC,KAAK,aAAa,EAAE,CAAC,CAAC;oBAClF,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;wBACjF,OAAO,cAAc,CAAC,EAAE,KAAK,EAAE,8BAA8B,EAAE,CAAC,CAAC;oBACnE,CAAC;oBACD,MAAM,OAAO,GAAG,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACrD,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,MAAM,CAAC,KAAK,aAAa,EAAE,CAAC,CAAC;gBACrH,CAAC;gBAAC,OAAO,GAAQ,EAAE,CAAC;oBAClB,OAAO,cAAc,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC;SACF;QACD;YACE,IAAI,EAAE,yBAAyB;YAC/B,KAAK,EAAE,yBAAyB;YAChC,WAAW,EAAE,sIAAsI;YACnJ,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;gBACnB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,sCAAsC,EAAE,CAAC;gBACxE,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC;aACzD,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,WAAmB,EAAE,MAA6C,EAAE,EAAE;gBACpF,IAAI,CAAC;oBACH,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,EAAE,CAAC;oBACtC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;oBAC5E,IAAI,CAAC,IAAI;wBAAE,OAAO,cAAc,CAAC,EAAE,KAAK,EAAE,SAAS,MAAM,CAAC,KAAK,aAAa,EAAE,CAAC,CAAC;oBAChF,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;wBAAE,OAAO,cAAc,CAAC,EAAE,IAAI,EAAE,+CAA+C,EAAE,CAAC,CAAC;oBAC5G,WAAW,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;oBAC9D,OAAO,cAAc,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;gBAC1F,CAAC;gBAAC,OAAO,GAAQ,EAAE,CAAC;oBAClB,OAAO,cAAc,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC;SACF;QACD;YACE,IAAI,EAAE,0BAA0B;YAChC,KAAK,EAAE,0BAA0B;YACjC,WAAW,EAAE,4FAA4F;YACzG,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;gBACnB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,yCAAyC,EAAE,CAAC;gBAC3E,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC;aACzD,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,WAAmB,EAAE,MAA6C,EAAE,EAAE;gBACpF,IAAI,CAAC;oBACH,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,EAAE,CAAC;oBACtC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;oBAC5E,IAAI,CAAC,IAAI;wBAAE,OAAO,cAAc,CAAC,EAAE,KAAK,EAAE,SAAS,MAAM,CAAC,KAAK,aAAa,EAAE,CAAC,CAAC;oBAChF,WAAW,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;oBAC/D,OAAO,cAAc,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;gBAC1F,CAAC;gBAAC,OAAO,GAAQ,EAAE,CAAC;oBAClB,OAAO,cAAc,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC;SACF;QACD;YACE,IAAI,EAAE,mCAAmC;YACzC,KAAK,EAAE,wBAAwB;YAC/B,WAAW,EAAE,mEAAmE;YAChF,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;gBACnB,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC;aACzD,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,WAAmB,EAAE,MAA8B,EAAE,EAAE;gBACrE,IAAI,CAAC;oBACH,MAAM,KAAK,GAAG,WAAW,CAAC,kBAAkB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;oBAChE,OAAO,cAAc,CAAC;wBACpB,UAAU,EAAE,MAAM,CAAC,UAAU;wBAC7B,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;qBACtF,CAAC,CAAC;gBACL,CAAC;gBAAC,OAAO,GAAQ,EAAE,CAAC;oBAClB,OAAO,cAAc,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -1,10 +1,11 @@
1
1
  /**
2
- * Sync & Enrich Tools for Studiograph Agent
2
+ * Sync & Workspace Tools for Studiograph Agent
3
3
  *
4
- * These tools allow the agent to orchestrate sync and enrich operations:
5
- * - Run the sync pipeline, apply staging, commit
6
- * - Run LLM enrichment on entities
7
- * - Manage source configs
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
8
9
  */
9
10
  import type { WorkspaceConfig } from '../../core/types.js';
10
11
  import type { ConnectorRegistry } from './connector-tools.js';
@@ -23,7 +24,7 @@ export declare function createSyncTools(workspacePath: string, workspaceConfig:
23
24
  label: string;
24
25
  description: string;
25
26
  parameters: import("@sinclair/typebox").TObject<{}>;
26
- execute: (toolCallId: string, params: any) => Promise<{
27
+ execute: (toolCallId: string, _params: any) => Promise<{
27
28
  content: {
28
29
  type: "text";
29
30
  text: string;