studiograph 1.3.3 → 1.3.5
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.
- package/dist/agent/orchestrator.d.ts +10 -0
- package/dist/agent/orchestrator.js +26 -7
- package/dist/agent/orchestrator.js.map +1 -1
- package/dist/agent/skills/sync-configuration.md +4 -29
- package/dist/agent/skills/sync-setup.md +2 -4
- package/dist/agent/tools/graph-tools.d.ts +5 -1
- package/dist/agent/tools/graph-tools.js +161 -9
- package/dist/agent/tools/graph-tools.js.map +1 -1
- package/dist/agent/tools/ops-tools.js +15 -126
- package/dist/agent/tools/ops-tools.js.map +1 -1
- package/dist/agent/tools/permission-tools.d.ts +15 -14
- package/dist/agent/tools/permission-tools.js +65 -128
- package/dist/agent/tools/permission-tools.js.map +1 -1
- package/dist/agent/tools/sync-tools.d.ts +7 -6
- package/dist/agent/tools/sync-tools.js +205 -178
- package/dist/agent/tools/sync-tools.js.map +1 -1
- package/dist/cli/commands/about.d.ts +13 -0
- package/dist/cli/commands/about.js +97 -0
- package/dist/cli/commands/about.js.map +1 -0
- package/dist/cli/commands/clone.d.ts +5 -2
- package/dist/cli/commands/clone.js +131 -62
- package/dist/cli/commands/clone.js.map +1 -1
- package/dist/cli/commands/connector.d.ts +2 -16
- package/dist/cli/commands/connector.js +32 -109
- package/dist/cli/commands/connector.js.map +1 -1
- package/dist/cli/commands/deploy.d.ts +0 -1
- package/dist/cli/commands/deploy.js +13 -103
- package/dist/cli/commands/deploy.js.map +1 -1
- package/dist/cli/commands/init.js +6 -93
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/join.d.ts +3 -2
- package/dist/cli/commands/join.js +142 -97
- package/dist/cli/commands/join.js.map +1 -1
- package/dist/cli/commands/redeploy.js +1 -2
- package/dist/cli/commands/redeploy.js.map +1 -1
- package/dist/cli/commands/serve.d.ts +1 -3
- package/dist/cli/commands/serve.js +29 -109
- package/dist/cli/commands/serve.js.map +1 -1
- package/dist/cli/commands/start.js +1 -1
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/commands/sync-collection.d.ts +14 -0
- package/dist/cli/commands/sync-collection.js +366 -0
- package/dist/cli/commands/sync-collection.js.map +1 -0
- package/dist/cli/commands/sync.d.ts +4 -2
- package/dist/cli/commands/sync.js +529 -94
- package/dist/cli/commands/sync.js.map +1 -1
- package/dist/cli/index.js +15 -30
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/setup-wizard.d.ts +0 -13
- package/dist/cli/setup-wizard.js +6 -81
- package/dist/cli/setup-wizard.js.map +1 -1
- package/dist/core/graph.d.ts +8 -2
- package/dist/core/graph.js +11 -7
- package/dist/core/graph.js.map +1 -1
- package/dist/core/types.d.ts +149 -21
- package/dist/core/types.js +16 -4
- package/dist/core/types.js.map +1 -1
- package/dist/core/workspace-manager.js +1 -5
- package/dist/core/workspace-manager.js.map +1 -1
- package/dist/core/workspace.d.ts +11 -4
- package/dist/core/workspace.js +61 -26
- package/dist/core/workspace.js.map +1 -1
- package/dist/integrations/asana.d.ts +26 -0
- package/dist/integrations/asana.js +77 -0
- package/dist/integrations/asana.js.map +1 -0
- package/dist/integrations/figma-local.d.ts +16 -0
- package/dist/integrations/figma-local.js +10 -0
- package/dist/integrations/figma-local.js.map +1 -0
- package/dist/integrations/figma.d.ts +17 -0
- package/dist/integrations/figma.js +16 -0
- package/dist/integrations/figma.js.map +1 -0
- package/dist/integrations/granola.d.ts +24 -0
- package/dist/integrations/granola.js +59 -0
- package/dist/integrations/granola.js.map +1 -0
- package/dist/integrations/linear.d.ts +14 -0
- package/dist/integrations/linear.js +70 -0
- package/dist/integrations/linear.js.map +1 -0
- package/dist/integrations/paper-local.d.ts +14 -0
- package/dist/integrations/paper-local.js +10 -0
- package/dist/integrations/paper-local.js.map +1 -0
- package/dist/integrations/paper.d.ts +2 -0
- package/dist/integrations/paper.js +10 -0
- package/dist/integrations/paper.js.map +1 -0
- package/dist/integrations/pipedrive.d.ts +26 -0
- package/dist/integrations/pipedrive.js +97 -0
- package/dist/integrations/pipedrive.js.map +1 -0
- package/dist/integrations/registry.d.ts +15 -0
- package/dist/integrations/registry.js +27 -0
- package/dist/integrations/registry.js.map +1 -0
- package/dist/integrations/types.d.ts +34 -0
- package/dist/integrations/types.js +9 -0
- package/dist/integrations/types.js.map +1 -0
- package/dist/mcp/connector-manager.d.ts +45 -31
- package/dist/mcp/connector-manager.js +164 -116
- package/dist/mcp/connector-manager.js.map +1 -1
- package/dist/mcp/server-oauth-provider.d.ts +56 -0
- package/dist/mcp/server-oauth-provider.js +138 -0
- package/dist/mcp/server-oauth-provider.js.map +1 -0
- package/dist/server/chrome/chrome.css +142 -28
- package/dist/server/chrome/chrome.js +46 -220
- package/dist/server/collab-authority.d.ts +70 -0
- package/dist/server/collab-authority.js +218 -0
- package/dist/server/collab-authority.js.map +1 -0
- package/dist/server/collab.d.ts +29 -0
- package/dist/server/collab.js +195 -0
- package/dist/server/collab.js.map +1 -0
- package/dist/server/commit-scheduler.d.ts +39 -0
- package/dist/server/commit-scheduler.js +113 -0
- package/dist/server/commit-scheduler.js.map +1 -0
- package/dist/server/index.d.ts +0 -2
- package/dist/server/index.js +166 -55
- package/dist/server/index.js.map +1 -1
- package/dist/server/routes/auth-api.d.ts +6 -0
- package/dist/server/routes/auth-api.js +78 -0
- package/dist/server/routes/auth-api.js.map +1 -1
- package/dist/server/routes/chat.js +4 -0
- package/dist/server/routes/chat.js.map +1 -1
- package/dist/server/routes/collab.d.ts +6 -0
- package/dist/server/routes/collab.js +10 -0
- package/dist/server/routes/collab.js.map +1 -0
- package/dist/server/routes/git-http.d.ts +23 -0
- package/dist/server/routes/git-http.js +251 -0
- package/dist/server/routes/git-http.js.map +1 -0
- package/dist/server/routes/graph-api.d.ts +6 -2
- package/dist/server/routes/graph-api.js +266 -82
- package/dist/server/routes/graph-api.js.map +1 -1
- package/dist/server/routes/mcp.d.ts +12 -0
- package/dist/server/routes/mcp.js +35 -0
- package/dist/server/routes/mcp.js.map +1 -0
- package/dist/server/routes/permissions-api.d.ts +6 -4
- package/dist/server/routes/permissions-api.js +53 -167
- package/dist/server/routes/permissions-api.js.map +1 -1
- package/dist/server/routes/sync-api.d.ts +26 -0
- package/dist/server/routes/sync-api.js +757 -0
- package/dist/server/routes/sync-api.js.map +1 -0
- package/dist/server/routes/ws.d.ts +9 -0
- package/dist/server/routes/ws.js +131 -0
- package/dist/server/routes/ws.js.map +1 -0
- package/dist/server/session-manager.d.ts +40 -0
- package/dist/server/session-manager.js +132 -0
- package/dist/server/session-manager.js.map +1 -0
- package/dist/server/ws-hub.d.ts +130 -0
- package/dist/server/ws-hub.js +250 -0
- package/dist/server/ws-hub.js.map +1 -0
- package/dist/server/yjs-manager.d.ts +59 -0
- package/dist/server/yjs-manager.js +194 -0
- package/dist/server/yjs-manager.js.map +1 -0
- package/dist/services/auth-service.d.ts +74 -0
- package/dist/services/auth-service.js +286 -6
- package/dist/services/auth-service.js.map +1 -1
- package/dist/services/git.d.ts +6 -0
- package/dist/services/git.js +32 -2
- package/dist/services/git.js.map +1 -1
- package/dist/services/sync/collection-sync.d.ts +73 -0
- package/dist/services/sync/collection-sync.js +726 -0
- package/dist/services/sync/collection-sync.js.map +1 -0
- package/dist/services/sync/commit.js +5 -20
- package/dist/services/sync/commit.js.map +1 -1
- package/dist/services/sync/data-fetcher.d.ts +31 -0
- package/dist/services/sync/data-fetcher.js +12 -0
- package/dist/services/sync/data-fetcher.js.map +1 -0
- package/dist/services/sync/entity-refresh.d.ts +30 -0
- package/dist/services/sync/entity-refresh.js +275 -0
- package/dist/services/sync/entity-refresh.js.map +1 -0
- package/dist/services/sync/frontmatter-extractor.d.ts +2 -2
- package/dist/services/sync/frontmatter-extractor.js +1 -2
- package/dist/services/sync/frontmatter-extractor.js.map +1 -1
- package/dist/services/sync/graph-match.js +1 -1
- package/dist/services/sync/graph-match.js.map +1 -1
- package/dist/services/sync/mcp-client.d.ts +16 -4
- package/dist/services/sync/mcp-client.js +34 -20
- package/dist/services/sync/mcp-client.js.map +1 -1
- package/dist/services/sync/prompts.js +1 -1
- package/dist/services/sync/reconciler.js +1 -2
- package/dist/services/sync/reconciler.js.map +1 -1
- package/dist/services/sync/rest-client.d.ts +40 -0
- package/dist/services/sync/rest-client.js +100 -0
- package/dist/services/sync/rest-client.js.map +1 -0
- package/dist/services/sync/source-config.d.ts +23 -1
- package/dist/services/sync/source-config.js +112 -16
- package/dist/services/sync/source-config.js.map +1 -1
- package/dist/services/sync/source-definitions/asana.d.ts +3 -4
- package/dist/services/sync/source-definitions/asana.js +7 -13
- package/dist/services/sync/source-definitions/asana.js.map +1 -1
- package/dist/services/sync/source-definitions/definitions.d.ts +5 -18
- package/dist/services/sync/source-definitions/definitions.js +4 -22
- package/dist/services/sync/source-definitions/definitions.js.map +1 -1
- package/dist/services/sync/source-definitions/granola.d.ts +1 -1
- package/dist/services/sync/source-definitions/granola.js +11 -18
- package/dist/services/sync/source-definitions/granola.js.map +1 -1
- package/dist/services/sync/source-definitions/linear.d.ts +1 -1
- package/dist/services/sync/source-definitions/linear.js +17 -15
- package/dist/services/sync/source-definitions/linear.js.map +1 -1
- package/dist/services/sync/source-definitions/pipedrive.d.ts +1 -1
- package/dist/services/sync/source-definitions/pipedrive.js +6 -15
- package/dist/services/sync/source-definitions/pipedrive.js.map +1 -1
- package/dist/services/sync/staging.js +1 -2
- package/dist/services/sync/staging.js.map +1 -1
- package/dist/services/sync/structured-extractor.d.ts +8 -2
- package/dist/services/sync/structured-extractor.js +243 -35
- package/dist/services/sync/structured-extractor.js.map +1 -1
- package/dist/services/sync/types.d.ts +192 -23
- package/dist/services/sync/unstructured-extractor.d.ts +1 -3
- package/dist/services/sync/unstructured-extractor.js +2 -14
- package/dist/services/sync/unstructured-extractor.js.map +1 -1
- package/dist/utils/git.d.ts +33 -20
- package/dist/utils/git.js +119 -62
- package/dist/utils/git.js.map +1 -1
- package/dist/utils/preflight.d.ts +1 -15
- package/dist/utils/preflight.js +1 -35
- package/dist/utils/preflight.js.map +1 -1
- package/dist/web/_app/immutable/assets/0.CupILLQs.css +1 -0
- package/dist/web/_app/immutable/assets/3.CtJi4Cy9.css +1 -0
- package/dist/web/_app/immutable/assets/5.CydFyZSu.css +1 -0
- package/dist/web/_app/immutable/assets/6.kqeOo0OW.css +1 -0
- package/dist/web/_app/immutable/assets/7.CseIx7qQ.css +1 -0
- package/dist/web/_app/immutable/assets/8.BYpFDZHK.css +1 -0
- package/dist/web/_app/immutable/assets/AppShell.Ch_ef9hJ.css +1 -0
- package/dist/web/_app/immutable/assets/ChatPanel.CP-_8txt.css +1 -0
- package/dist/web/_app/immutable/chunks/0oxpWEgM.js +1 -0
- package/dist/web/_app/immutable/chunks/B1y7Wy5O.js +18 -0
- package/dist/web/_app/immutable/chunks/BBLgaWN8.js +1 -0
- package/dist/web/_app/immutable/chunks/BCB5cYCz.js +2 -0
- package/dist/web/_app/immutable/chunks/BNwaTAEi.js +1 -0
- package/dist/web/_app/immutable/chunks/{aosHekRC.js → BPUy9_sS.js} +1 -1
- package/dist/web/_app/immutable/chunks/BVBRzmeQ.js +7 -0
- package/dist/web/_app/immutable/chunks/{CUzqHQY_.js → BXuvR8Ks.js} +2 -1
- package/dist/web/_app/immutable/chunks/BeBar3OL.js +1 -0
- package/dist/web/_app/immutable/chunks/BuOTIbJu.js +1 -0
- package/dist/web/_app/immutable/chunks/CLFba8FK.js +5 -0
- package/dist/web/_app/immutable/chunks/CQCkXCml.js +1 -0
- package/dist/web/_app/immutable/chunks/CR70O-Zc.js +64 -0
- package/dist/web/_app/immutable/chunks/ChURX7q7.js +1 -0
- package/dist/web/_app/immutable/chunks/Cs5oz2oJ.js +5 -0
- package/dist/web/_app/immutable/chunks/Cs_ROD7H.js +2 -0
- package/dist/web/_app/immutable/chunks/D2aTbzFm.js +3 -0
- package/dist/web/_app/immutable/chunks/DCGSm8Hl.js +1 -0
- package/dist/web/_app/immutable/chunks/DMQKkbyp.js +1 -0
- package/dist/web/_app/immutable/chunks/DP09rP34.js +2 -0
- package/dist/web/_app/immutable/chunks/DiP47fAp.js +1 -0
- package/dist/web/_app/immutable/chunks/DvPliCZE.js +27 -0
- package/dist/web/_app/immutable/chunks/O0fx2ss6.js +1 -0
- package/dist/web/_app/immutable/chunks/mLOCL_1Z.js +1 -0
- package/dist/web/_app/immutable/chunks/xBRYfpah.js +1 -0
- package/dist/web/_app/immutable/entry/app.BcjicA1n.js +2 -0
- package/dist/web/_app/immutable/entry/start.Bwjb_6uL.js +1 -0
- package/dist/web/_app/immutable/nodes/0.p2-jprGE.js +10 -0
- package/dist/web/_app/immutable/nodes/1.DU93aLWG.js +1 -0
- package/dist/web/_app/immutable/nodes/2.cvPHG4LO.js +1 -0
- package/dist/web/_app/immutable/nodes/3.CTUfmgsr.js +11 -0
- package/dist/web/_app/immutable/nodes/{5.BBpmYkAu.js → 4.yO3SDYpr.js} +2 -2
- package/dist/web/_app/immutable/nodes/5.BQ_D1Eea.js +2 -0
- package/dist/web/_app/immutable/nodes/6.ljQTLrU2.js +1 -0
- package/dist/web/_app/immutable/nodes/7.C_LqUu_m.js +2 -0
- package/dist/web/_app/immutable/nodes/8.BA0tZS13.js +1 -0
- package/dist/web/_app/version.json +1 -1
- package/dist/web/index.html +10 -12
- package/package.json +12 -2
- package/dist/web/_app/immutable/assets/0.CDbX4Cwz.css +0 -1
- package/dist/web/_app/immutable/assets/3.BJy7pVXi.css +0 -1
- package/dist/web/_app/immutable/assets/4.Ad16uh9o.css +0 -1
- package/dist/web/_app/immutable/assets/6.Bm2i7O0j.css +0 -1
- package/dist/web/_app/immutable/assets/AppShell.D0rmbdqF.css +0 -1
- package/dist/web/_app/immutable/assets/ChatPanel.RFD5GGYI.css +0 -1
- package/dist/web/_app/immutable/assets/editor.CPAf2SRV.css +0 -1
- package/dist/web/_app/immutable/chunks/479TgXB4.js +0 -1
- package/dist/web/_app/immutable/chunks/4QY4j-jX.js +0 -1
- package/dist/web/_app/immutable/chunks/BFb0g4TQ.js +0 -64
- package/dist/web/_app/immutable/chunks/Bopa-Ask.js +0 -1
- package/dist/web/_app/immutable/chunks/COwytaCP.js +0 -1
- package/dist/web/_app/immutable/chunks/DEJSHbC3.js +0 -1
- package/dist/web/_app/immutable/chunks/DNywhIex.js +0 -23
- package/dist/web/_app/immutable/chunks/DTUXhwEY.js +0 -1
- package/dist/web/_app/immutable/chunks/DThXpa0U.js +0 -6
- package/dist/web/_app/immutable/chunks/Dh_H7Owr.js +0 -18
- package/dist/web/_app/immutable/chunks/Dml-u95b.js +0 -2
- package/dist/web/_app/immutable/chunks/DnlgZ_Tk.js +0 -5
- package/dist/web/_app/immutable/chunks/DtVH--hH.js +0 -6
- package/dist/web/_app/immutable/chunks/DvKVaE7M.js +0 -1
- package/dist/web/_app/immutable/chunks/MbiSz-iW.js +0 -2
- package/dist/web/_app/immutable/chunks/bSAC733J.js +0 -1
- package/dist/web/_app/immutable/entry/app.BvodXQQ0.js +0 -2
- package/dist/web/_app/immutable/entry/start.Bkui3Kyw.js +0 -1
- package/dist/web/_app/immutable/nodes/0.DfbCOBhn.js +0 -2
- package/dist/web/_app/immutable/nodes/1.vtxUGpe6.js +0 -1
- package/dist/web/_app/immutable/nodes/2.Cq29oW4h.js +0 -1
- package/dist/web/_app/immutable/nodes/3.SquslPZy.js +0 -1
- package/dist/web/_app/immutable/nodes/4.COV8FR8b.js +0 -16
- package/dist/web/_app/immutable/nodes/6.BBbh6z9I.js +0 -2
- /package/dist/web/_app/immutable/assets/{5.BhKgiXd2.css → 4.BhKgiXd2.css} +0 -0
|
@@ -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 type { AuthUser } from '../services/auth-service.js';
|
|
12
13
|
export interface AgentConfig {
|
|
13
14
|
workspacePath: string;
|
|
14
15
|
workspaceConfig: WorkspaceConfig;
|
|
@@ -19,6 +20,8 @@ export interface AgentConfig {
|
|
|
19
20
|
toolsDirs?: string[];
|
|
20
21
|
/** Recent daily memory content (today + yesterday) injected into system prompt. */
|
|
21
22
|
recentMemory?: string;
|
|
23
|
+
/** Shared WorkspaceManager instance (used by server to share state with agent). */
|
|
24
|
+
workspaceManager?: WorkspaceManager;
|
|
22
25
|
}
|
|
23
26
|
export interface AgentResponse {
|
|
24
27
|
content: string;
|
|
@@ -39,6 +42,8 @@ export declare class AgentOrchestrator {
|
|
|
39
42
|
private registryRef;
|
|
40
43
|
private _highlightCallback;
|
|
41
44
|
private _mutationCallback;
|
|
45
|
+
private _currentUser;
|
|
46
|
+
private authService;
|
|
42
47
|
private recentMemory?;
|
|
43
48
|
private currentSessionId;
|
|
44
49
|
private sessionsDir;
|
|
@@ -84,6 +89,11 @@ export declare class AgentOrchestrator {
|
|
|
84
89
|
* Get repository names
|
|
85
90
|
*/
|
|
86
91
|
getRepoNames(): string[];
|
|
92
|
+
/**
|
|
93
|
+
* Set the current authenticated user for per-collection access filtering.
|
|
94
|
+
* Called per-request by the chat endpoint. Null = full access (API key / open mode).
|
|
95
|
+
*/
|
|
96
|
+
setCurrentUser(user: AuthUser | null): void;
|
|
87
97
|
/**
|
|
88
98
|
* Set a callback for highlight_entities tool events (used by SSE streaming).
|
|
89
99
|
*/
|
|
@@ -14,6 +14,7 @@ import { getModel } from '@mariozechner/pi-ai';
|
|
|
14
14
|
import { Agent } from '@mariozechner/pi-agent-core';
|
|
15
15
|
import { WorkspaceManager } from '../core/workspace-manager.js';
|
|
16
16
|
import { createGraphTools } from './tools/graph-tools.js';
|
|
17
|
+
import { createSyncTools } from './tools/sync-tools.js';
|
|
17
18
|
import { loadSkillIndex, buildSkillIndexPrompt, loadEagerSkills } from './skill-loader.js';
|
|
18
19
|
import { createLoadSkillTool } from './tools/load-skill.js';
|
|
19
20
|
import { loadCustomTools } from './tools/tool-loader.js';
|
|
@@ -22,6 +23,7 @@ import { buildConnectorRegistry, createConnectorTools } from './tools/connector-
|
|
|
22
23
|
import { createFsTools } from './tools/fs-tools.js';
|
|
23
24
|
import { createOpsTools } from './tools/ops-tools.js';
|
|
24
25
|
import { createPermissionTools } from './tools/permission-tools.js';
|
|
26
|
+
import { AuthService } from '../services/auth-service.js';
|
|
25
27
|
import { loadUserConfig, resolveApiKey, resolveProvider, resolveModelId } from '../core/user-config.js';
|
|
26
28
|
export class AgentOrchestrator {
|
|
27
29
|
workspacePath;
|
|
@@ -34,6 +36,8 @@ export class AgentOrchestrator {
|
|
|
34
36
|
registryRef = { registry: null };
|
|
35
37
|
_highlightCallback = null;
|
|
36
38
|
_mutationCallback = null;
|
|
39
|
+
_currentUser = null;
|
|
40
|
+
authService;
|
|
37
41
|
recentMemory;
|
|
38
42
|
currentSessionId = null;
|
|
39
43
|
sessionsDir;
|
|
@@ -42,6 +46,7 @@ export class AgentOrchestrator {
|
|
|
42
46
|
this.config = config.workspaceConfig;
|
|
43
47
|
this.gitUser = config.gitUser;
|
|
44
48
|
this.recentMemory = config.recentMemory;
|
|
49
|
+
this.authService = new AuthService(config.workspacePath);
|
|
45
50
|
this.sessionsDir = join(homedir(), '.studiograph', 'sessions');
|
|
46
51
|
// Priority (highest → lowest): user > workspace > bundled > app
|
|
47
52
|
// First-seen name wins in the loader, so earlier dirs override later ones.
|
|
@@ -52,8 +57,8 @@ export class AgentOrchestrator {
|
|
|
52
57
|
const bundledSkillsDir = join(__dirname, 'skills');
|
|
53
58
|
this.skillsDirs = [userSkillsDir, workspaceSkillsDir, bundledSkillsDir, ...(config.skillsDirs ?? [])];
|
|
54
59
|
this.toolsDirs = [userToolsDir, workspaceToolsDir, ...(config.toolsDirs ?? [])];
|
|
55
|
-
//
|
|
56
|
-
this.workspaceManager = new WorkspaceManager(this.workspacePath, this.config, this.gitUser);
|
|
60
|
+
// Use shared workspace manager if provided, otherwise create one
|
|
61
|
+
this.workspaceManager = config.workspaceManager ?? new WorkspaceManager(this.workspacePath, this.config, this.gitUser);
|
|
57
62
|
// Initialize Pi-Mono agent (async tools loaded in createAgent)
|
|
58
63
|
this.agent = this.createAgent();
|
|
59
64
|
}
|
|
@@ -74,11 +79,10 @@ export class AgentOrchestrator {
|
|
|
74
79
|
const skillIndex = loadSkillIndex(this.skillsDirs);
|
|
75
80
|
// Build tools first so we can auto-generate the tool reference for the prompt
|
|
76
81
|
const tools = [
|
|
77
|
-
...createGraphTools(this.workspaceManager, this.gitUser, this.workspacePath, this.emitHighlight.bind(this), this.emitMutation.bind(this)),
|
|
78
|
-
|
|
79
|
-
// ...createSyncTools(this.workspacePath, this.config, this.registryRef),
|
|
82
|
+
...createGraphTools(this.workspaceManager, this.gitUser, this.workspacePath, this.emitHighlight.bind(this), this.emitMutation.bind(this), () => this._currentUser, this.authService),
|
|
83
|
+
...createSyncTools(this.workspacePath, this.config, this.registryRef),
|
|
80
84
|
...createOpsTools(this.workspacePath, this.config),
|
|
81
|
-
...createPermissionTools(this.
|
|
85
|
+
...createPermissionTools(this.authService),
|
|
82
86
|
...createFsTools(),
|
|
83
87
|
createLoadSkillTool(skillIndex),
|
|
84
88
|
];
|
|
@@ -106,7 +110,7 @@ export class AgentOrchestrator {
|
|
|
106
110
|
const context = { workspaceManager: this.workspaceManager, gitUser: this.gitUser };
|
|
107
111
|
Promise.all([
|
|
108
112
|
loadCustomTools(this.toolsDirs, context),
|
|
109
|
-
ConnectorManager.buildTools(ConnectorManager.loadConfigs()),
|
|
113
|
+
ConnectorManager.buildTools(ConnectorManager.loadConfigs(this.workspacePath)),
|
|
110
114
|
]).then(([customTools, connectorTools]) => {
|
|
111
115
|
const extra = [...customTools];
|
|
112
116
|
if (connectorTools.length > 0) {
|
|
@@ -162,6 +166,14 @@ export class AgentOrchestrator {
|
|
|
162
166
|
.join('\n\n');
|
|
163
167
|
base = base.replace('{{TOOL_REFERENCE}}', toolRef);
|
|
164
168
|
const parts = [base.trim()];
|
|
169
|
+
// Inject workspace ABOUT.md as organizational context
|
|
170
|
+
const aboutPath = join(this.workspacePath, '.studiograph', 'ABOUT.md');
|
|
171
|
+
if (existsSync(aboutPath)) {
|
|
172
|
+
const aboutContent = readFileSync(aboutPath, 'utf-8');
|
|
173
|
+
if (aboutContent.trim()) {
|
|
174
|
+
parts.push(`## Workspace Identity\n\n${aboutContent}`);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
165
177
|
// Append workspace schema extensions (org-specific fields and custom types)
|
|
166
178
|
const schemaSection = this.workspaceManager.getSchemaRegistry().toPromptSection();
|
|
167
179
|
if (schemaSection) {
|
|
@@ -267,6 +279,13 @@ ${repoList}`;
|
|
|
267
279
|
getRepoNames() {
|
|
268
280
|
return this.workspaceManager.getRepoNames();
|
|
269
281
|
}
|
|
282
|
+
/**
|
|
283
|
+
* Set the current authenticated user for per-collection access filtering.
|
|
284
|
+
* Called per-request by the chat endpoint. Null = full access (API key / open mode).
|
|
285
|
+
*/
|
|
286
|
+
setCurrentUser(user) {
|
|
287
|
+
this._currentUser = user;
|
|
288
|
+
}
|
|
270
289
|
/**
|
|
271
290
|
* Set a callback for highlight_entities tool events (used by SSE streaming).
|
|
272
291
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/agent/orchestrator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/agent/orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,14 +42,13 @@ Use this reference when helping users build or modify source configs at `.studio
|
|
|
42
42
|
| `list_params` | No | Extra params for list tool. Pass array for multiple list calls merged |
|
|
43
43
|
| `directory_patterns` | No | Directory patterns for file sources (frontmatter/unstructured) |
|
|
44
44
|
| `write_mode` | No | `"entity"` (default, `id/main.md` folder) or `"collection"` (flat `id.md` file) |
|
|
45
|
-
| `co_locate` | No | Co-locate as sub-content inside parent entity folder |
|
|
46
45
|
| `list_tool` | No | Explicit MCP tool name for listing records (bypasses heuristic matching) |
|
|
47
46
|
| `read_tool` | No | Explicit MCP tool name for reading records (bypasses heuristic matching) |
|
|
48
47
|
|
|
49
48
|
## Extraction Modes
|
|
50
49
|
|
|
51
50
|
- **`structured`** — API JSON → field_map → frontmatter. No LLM. For Pipedrive, Linear, Granola, Asana.
|
|
52
|
-
- **`frontmatter`** — Markdown files with YAML → field_map. No LLM.
|
|
51
|
+
- **`frontmatter`** — Markdown files with YAML → field_map. No LLM. Supports `_filename` and `_body` sentinels.
|
|
53
52
|
- **`unstructured`** — Freeform text → LLM extraction. Slow, expensive. Last resort when no structured metadata exists.
|
|
54
53
|
|
|
55
54
|
## Field Map Syntax
|
|
@@ -80,33 +79,12 @@ Result: `["[[alice]]", ...]`
|
|
|
80
79
|
| `wikilink` | `"Acme Corp"` | `"[[acme-corp]]"` |
|
|
81
80
|
| `wikilink-array` | `["Alice", "Bob"]` | `["[[alice]]", "[[bob]]"]` |
|
|
82
81
|
|
|
83
|
-
## Co-Location
|
|
84
|
-
|
|
85
|
-
Writes entities as sub-content files inside a parent entity folder instead of standalone entity folders.
|
|
86
|
-
|
|
87
|
-
**Config:** Add `co_locate` to a mapping:
|
|
88
|
-
```json
|
|
89
|
-
{
|
|
90
|
-
"co_locate": { "parent_field": "project", "subfolder": "tasks" },
|
|
91
|
-
"field_map": { "project": { "field": "project", "transform": "wikilink" } }
|
|
92
|
-
}
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
**Result path:** `{target_repo}/{parent_id}/{subfolder}/{entity_id}.md`
|
|
96
|
-
Example: `projects/cooper-hewitt-brand-refresh/tasks/sch-101.md`
|
|
97
|
-
|
|
98
|
-
**Rules:**
|
|
99
|
-
- `parent_field` must be a wikilink target in `field_map` so the reference is available
|
|
100
|
-
- Entities without a parent value are **skipped** (not an error)
|
|
101
|
-
- Co-located files are sub-content, not graph entities (no `entity_id/main.md` folder)
|
|
102
|
-
- `target_repo` should be the repo where the **parent** entities live
|
|
103
|
-
|
|
104
82
|
## Write Mode
|
|
105
83
|
|
|
106
84
|
Controls how entities are written to disk:
|
|
107
85
|
|
|
108
|
-
- **`entity`** (default) — `repo/entity-id
|
|
109
|
-
- **`collection`** — `repo/entity-id.md` flat file
|
|
86
|
+
- **`entity`** (default) — `repo/entity-type/entity-id.md` in a typed subfolder. Fully indexed. Use for core types (projects, clients, people).
|
|
87
|
+
- **`collection`** — `repo/entity-id.md` flat file at collection root. Use for high-volume types (meetings, notes, references).
|
|
110
88
|
|
|
111
89
|
## Explicit MCP Tool Selection
|
|
112
90
|
|
|
@@ -127,14 +105,11 @@ When omitted, the pipeline uses heuristic matching (looking for tools containing
|
|
|
127
105
|
|--------|----------|-------|
|
|
128
106
|
| **Pipedrive** | deal→project, person→person, org→client | Ready to sync |
|
|
129
107
|
| **Granola** | document→meeting | `fetch_details: true`, `list_limit: 1000` |
|
|
130
|
-
| **Linear** | issue→task
|
|
108
|
+
| **Linear** | issue→task, project→project | Tasks written to typed subfolder |
|
|
131
109
|
| **Asana** | task→task, project→project | Needs `list_params: { workspace: "GID" }` |
|
|
132
|
-
| **Obsidian** | Example mappings only (`.template` file) | Needs customization per vault |
|
|
133
110
|
|
|
134
111
|
## Configuration Patterns
|
|
135
112
|
|
|
136
|
-
**Adding co-location to any mapping:** Add `co_locate: { parent_field, subfolder }` and ensure `parent_field` is a wikilink target in `field_map`.
|
|
137
|
-
|
|
138
113
|
**Multiple list calls:** Set `list_params` as an array: `[{ workspace: "123", archived: false }, { workspace: "123", archived: true }]`
|
|
139
114
|
|
|
140
115
|
**Custom source (no built-in):** Create a source config with `entity_mappings` from scratch. Choose extraction_mode, define field_map targeting entity schema fields, set target_repo.
|
|
@@ -6,7 +6,7 @@ loading: eager
|
|
|
6
6
|
|
|
7
7
|
# Entity Sync
|
|
8
8
|
|
|
9
|
-
You can sync data from external sources (Linear, Pipedrive, Granola,
|
|
9
|
+
You can sync data from external sources (Linear, Pipedrive, Granola, Google Drive, Asana, etc.) into the knowledge graph using the sync tools.
|
|
10
10
|
|
|
11
11
|
## First-Time Setup
|
|
12
12
|
|
|
@@ -46,7 +46,7 @@ When a user asks to adjust, change, or view a source config, **immediately call
|
|
|
46
46
|
3. Build the updated `entity_mappings` array (you must pass the complete array — it replaces, not merges)
|
|
47
47
|
4. `sync_setup_source({ name: "...", entity_mappings: [...], force: true })` — overwrite with updated config
|
|
48
48
|
|
|
49
|
-
Common adjustments: changing `field_map` entries, adding/removing entity mappings, changing `target_repo`,
|
|
49
|
+
Common adjustments: changing `field_map` entries, adding/removing entity mappings, changing `target_repo`, switching `write_mode`, adjusting `status_map`, adding `list_tool`/`read_tool`.
|
|
50
50
|
|
|
51
51
|
## Repeat Sync Flow
|
|
52
52
|
|
|
@@ -71,8 +71,6 @@ After `sync_apply`, explain what happened to the user:
|
|
|
71
71
|
|
|
72
72
|
- **"Uncommitted changes"** — sync requires a clean working tree. Tell the user to commit or stash changes first, or use `--force` to override
|
|
73
73
|
- **"Connector not found"** — the connector isn't set up. User must run `studiograph connector add <name>` in terminal
|
|
74
|
-
- **Entities skipped during apply** — for co-located entities, check that the `parent_field` has a value in the extracted frontmatter. Missing parent = skip.
|
|
75
|
-
- **Obsidian template file** — Obsidian creates a `.template` file instead of default mappings (every vault is different). Tell the user to copy mappings from the template into the source config and adjust `directory_patterns` and `field_map` for their vault.
|
|
76
74
|
|
|
77
75
|
## Important Rules
|
|
78
76
|
|
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
* - Upload assets
|
|
9
9
|
*/
|
|
10
10
|
import { WorkspaceManager } from '../../core/workspace-manager.js';
|
|
11
|
+
import type { AuthUser } from '../../services/auth-service.js';
|
|
12
|
+
import type { AuthService } from '../../services/auth-service.js';
|
|
11
13
|
/**
|
|
12
14
|
* Helper to wrap tool results in AgentToolResult format
|
|
13
15
|
*/
|
|
@@ -31,7 +33,7 @@ export declare function createGraphTools(workspaceManager: WorkspaceManager, git
|
|
|
31
33
|
id: string;
|
|
32
34
|
name: string;
|
|
33
35
|
email: string;
|
|
34
|
-
}, workspacePath?: string, onHighlight?: (ids: string[]) => void, onMutation?: (m: MutationEvent) => void): ({
|
|
36
|
+
}, workspacePath?: string, onHighlight?: (ids: string[]) => void, onMutation?: (m: MutationEvent) => void, getCurrentUser?: () => AuthUser | null, authService?: AuthService | null): ({
|
|
35
37
|
name: string;
|
|
36
38
|
label: string;
|
|
37
39
|
description: string;
|
|
@@ -50,10 +52,12 @@ export declare function createGraphTools(workspaceManager: WorkspaceManager, git
|
|
|
50
52
|
parameters: import("@sinclair/typebox").TObject<{
|
|
51
53
|
name: import("@sinclair/typebox").TString;
|
|
52
54
|
description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
55
|
+
private: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
|
|
53
56
|
}>;
|
|
54
57
|
execute: (toolCallId: string, params: {
|
|
55
58
|
name: string;
|
|
56
59
|
description?: string;
|
|
60
|
+
private?: boolean;
|
|
57
61
|
}) => Promise<{
|
|
58
62
|
content: {
|
|
59
63
|
type: "text";
|
|
@@ -30,7 +30,58 @@ function cleanData(data) {
|
|
|
30
30
|
const { entity_type, entity_id, ...rest } = data;
|
|
31
31
|
return rest;
|
|
32
32
|
}
|
|
33
|
-
|
|
33
|
+
/**
|
|
34
|
+
* Per-request user context for collection access filtering.
|
|
35
|
+
* When getCurrentUser returns a non-admin user, tools filter results
|
|
36
|
+
* to only collections the user has been granted access to.
|
|
37
|
+
*/
|
|
38
|
+
/** Check if a user can see a private repo (only the owner can). */
|
|
39
|
+
function canSeePrivateRepo(repoConfig, user) {
|
|
40
|
+
if (!repoConfig?.private)
|
|
41
|
+
return true;
|
|
42
|
+
if (!user)
|
|
43
|
+
return !repoConfig.owner_id; // API key / open mode — only if no owner set
|
|
44
|
+
if (!repoConfig.owner_id)
|
|
45
|
+
return false; // Private without owner — hidden from all users
|
|
46
|
+
return user.id === repoConfig.owner_id;
|
|
47
|
+
}
|
|
48
|
+
function getAccessibleRepoNames(workspaceManager, getCurrentUser, authService) {
|
|
49
|
+
const user = getCurrentUser();
|
|
50
|
+
if (!user)
|
|
51
|
+
return null; // API key / open mode → no filtering
|
|
52
|
+
if (!authService)
|
|
53
|
+
return null;
|
|
54
|
+
const allRepos = workspaceManager.getAllRepoConfigs();
|
|
55
|
+
if (user.role === 'admin') {
|
|
56
|
+
// Admins see all non-private + their own private repos
|
|
57
|
+
const hidden = allRepos.filter(r => !canSeePrivateRepo(r, user)).map(r => r.name);
|
|
58
|
+
if (hidden.length === 0)
|
|
59
|
+
return null; // No filtering needed
|
|
60
|
+
const visible = new Set(allRepos.filter(r => canSeePrivateRepo(r, user)).map(r => r.name));
|
|
61
|
+
return visible;
|
|
62
|
+
}
|
|
63
|
+
const allowed = authService.getUserCollections(user.id);
|
|
64
|
+
const visible = allRepos.filter(r => canSeePrivateRepo(r, user) && (r.private && r.owner_id === user.id || allowed.includes(r.name)));
|
|
65
|
+
return new Set(visible.map(r => r.name));
|
|
66
|
+
}
|
|
67
|
+
function canAccessRepo(repoName, workspaceManager, getCurrentUser, authService) {
|
|
68
|
+
const user = getCurrentUser();
|
|
69
|
+
const repoConfig = workspaceManager.getRepoConfig(repoName);
|
|
70
|
+
if (!canSeePrivateRepo(repoConfig, user))
|
|
71
|
+
return false;
|
|
72
|
+
if (!user)
|
|
73
|
+
return true;
|
|
74
|
+
if (repoConfig?.private && repoConfig?.owner_id === user.id)
|
|
75
|
+
return true;
|
|
76
|
+
if (user.role === 'admin')
|
|
77
|
+
return true;
|
|
78
|
+
if (!authService)
|
|
79
|
+
return true;
|
|
80
|
+
return authService.getUserCollections(user.id).includes(repoName);
|
|
81
|
+
}
|
|
82
|
+
export function createGraphTools(workspaceManager, gitUser, workspacePath, onHighlight, onMutation, getCurrentUser, authService) {
|
|
83
|
+
const getUser = getCurrentUser ?? (() => null);
|
|
84
|
+
const authSvc = authService ?? null;
|
|
34
85
|
return [
|
|
35
86
|
// Create entity
|
|
36
87
|
{
|
|
@@ -53,6 +104,9 @@ export function createGraphTools(workspaceManager, gitUser, workspacePath, onHig
|
|
|
53
104
|
if (!repoName)
|
|
54
105
|
return wrapToolResult({ success: false, error: `repo is required — could not auto-resolve repo for type "${params.entityType}"` });
|
|
55
106
|
}
|
|
107
|
+
if (!canAccessRepo(repoName, workspaceManager, getUser, authSvc)) {
|
|
108
|
+
return wrapToolResult({ success: false, error: `Collection "${repoName}" not found` });
|
|
109
|
+
}
|
|
56
110
|
const graph = workspaceManager.getGraph(repoName);
|
|
57
111
|
// Workspace-level dedup: warn if an entity with this ID already exists elsewhere
|
|
58
112
|
const existing = workspaceManager.findEntityById(params.entityId);
|
|
@@ -111,6 +165,9 @@ export function createGraphTools(workspaceManager, gitUser, workspacePath, onHig
|
|
|
111
165
|
}),
|
|
112
166
|
execute: async (toolCallId, params) => {
|
|
113
167
|
try {
|
|
168
|
+
if (!canAccessRepo(params.repo, workspaceManager, getUser, authSvc)) {
|
|
169
|
+
return wrapToolResult({ success: false, error: `Collection "${params.repo}" not found` });
|
|
170
|
+
}
|
|
114
171
|
const graph = workspaceManager.getGraph(params.repo);
|
|
115
172
|
const entity = params.entityType
|
|
116
173
|
? graph.get(params.entityType, params.entityId)
|
|
@@ -157,6 +214,9 @@ export function createGraphTools(workspaceManager, gitUser, workspacePath, onHig
|
|
|
157
214
|
if (!repoName)
|
|
158
215
|
return wrapToolResult({ success: false, error: `repo is required — could not auto-resolve repo for type "${params.entityType}"` });
|
|
159
216
|
}
|
|
217
|
+
if (!canAccessRepo(repoName, workspaceManager, getUser, authSvc)) {
|
|
218
|
+
return wrapToolResult({ success: false, error: `Collection "${repoName}" not found` });
|
|
219
|
+
}
|
|
160
220
|
const graph = workspaceManager.getGraph(repoName);
|
|
161
221
|
// Add update metadata
|
|
162
222
|
const dataWithMeta = params.data
|
|
@@ -215,6 +275,9 @@ export function createGraphTools(workspaceManager, gitUser, workspacePath, onHig
|
|
|
215
275
|
if (!repoName)
|
|
216
276
|
return wrapToolResult({ success: false, error: `repo is required — could not auto-resolve repo for type "${params.entityType}"` });
|
|
217
277
|
}
|
|
278
|
+
if (!canAccessRepo(repoName, workspaceManager, getUser, authSvc)) {
|
|
279
|
+
return wrapToolResult({ success: false, error: `Collection "${repoName}" not found` });
|
|
280
|
+
}
|
|
218
281
|
const graph = workspaceManager.getGraph(repoName);
|
|
219
282
|
await graph.delete(params.entityType, params.entityId, params.commitMessage);
|
|
220
283
|
onMutation?.({ action: 'deleted', repo: repoName, entityType: params.entityType, entityId: params.entityId });
|
|
@@ -245,6 +308,12 @@ export function createGraphTools(workspaceManager, gitUser, workspacePath, onHig
|
|
|
245
308
|
}),
|
|
246
309
|
execute: async (toolCallId, params) => {
|
|
247
310
|
try {
|
|
311
|
+
if (!canAccessRepo(params.sourceRepo, workspaceManager, getUser, authSvc)) {
|
|
312
|
+
return wrapToolResult({ success: false, error: `Collection "${params.sourceRepo}" not found` });
|
|
313
|
+
}
|
|
314
|
+
if (!canAccessRepo(params.targetRepo, workspaceManager, getUser, authSvc)) {
|
|
315
|
+
return wrapToolResult({ success: false, error: `Collection "${params.targetRepo}" not found` });
|
|
316
|
+
}
|
|
248
317
|
const sourceGraph = workspaceManager.getGraph(params.sourceRepo);
|
|
249
318
|
const targetGraph = workspaceManager.getGraph(params.targetRepo);
|
|
250
319
|
// Read the full entity from source
|
|
@@ -295,10 +364,18 @@ export function createGraphTools(workspaceManager, gitUser, workspacePath, onHig
|
|
|
295
364
|
}),
|
|
296
365
|
execute: async (toolCallId, params) => {
|
|
297
366
|
try {
|
|
367
|
+
// Scope search to accessible collections
|
|
368
|
+
const allowed = getAccessibleRepoNames(workspaceManager, getUser, authSvc);
|
|
369
|
+
let repoNames = params.repoNames;
|
|
370
|
+
if (allowed) {
|
|
371
|
+
repoNames = repoNames
|
|
372
|
+
? repoNames.filter((r) => allowed.has(r))
|
|
373
|
+
: [...allowed];
|
|
374
|
+
}
|
|
298
375
|
const results = await workspaceManager.search({
|
|
299
376
|
query: params.query,
|
|
300
377
|
entityType: params.entityType,
|
|
301
|
-
repoNames
|
|
378
|
+
repoNames,
|
|
302
379
|
visibility: params.visibility,
|
|
303
380
|
tags: params.tags,
|
|
304
381
|
dateRange: params.dateRange,
|
|
@@ -335,7 +412,12 @@ export function createGraphTools(workspaceManager, gitUser, workspacePath, onHig
|
|
|
335
412
|
}),
|
|
336
413
|
execute: async (toolCallId, params) => {
|
|
337
414
|
try {
|
|
338
|
-
|
|
415
|
+
let results = workspaceManager.list(params.entityType, params.limit);
|
|
416
|
+
// Filter to accessible collections
|
|
417
|
+
const allowed = getAccessibleRepoNames(workspaceManager, getUser, authSvc);
|
|
418
|
+
if (allowed) {
|
|
419
|
+
results = results.filter(r => allowed.has(r.repoName));
|
|
420
|
+
}
|
|
339
421
|
return wrapToolResult({
|
|
340
422
|
success: true,
|
|
341
423
|
count: results.length,
|
|
@@ -367,7 +449,15 @@ export function createGraphTools(workspaceManager, gitUser, workspacePath, onHig
|
|
|
367
449
|
}),
|
|
368
450
|
execute: async (toolCallId, params) => {
|
|
369
451
|
try {
|
|
370
|
-
|
|
452
|
+
if (!canAccessRepo(params.repo, workspaceManager, getUser, authSvc)) {
|
|
453
|
+
return wrapToolResult({ success: false, error: `Collection "${params.repo}" not found` });
|
|
454
|
+
}
|
|
455
|
+
let related = workspaceManager.getRelated(params.repo, params.entityType, params.entityId);
|
|
456
|
+
// Filter cross-collection results to accessible repos
|
|
457
|
+
const allowed = getAccessibleRepoNames(workspaceManager, getUser, authSvc);
|
|
458
|
+
if (allowed) {
|
|
459
|
+
related = related.filter(r => allowed.has(r.repoName));
|
|
460
|
+
}
|
|
371
461
|
return wrapToolResult({
|
|
372
462
|
success: true,
|
|
373
463
|
count: related.length,
|
|
@@ -399,7 +489,15 @@ export function createGraphTools(workspaceManager, gitUser, workspacePath, onHig
|
|
|
399
489
|
}),
|
|
400
490
|
execute: async (toolCallId, params) => {
|
|
401
491
|
try {
|
|
402
|
-
|
|
492
|
+
if (!canAccessRepo(params.repo, workspaceManager, getUser, authSvc)) {
|
|
493
|
+
return wrapToolResult({ success: false, error: `Collection "${params.repo}" not found` });
|
|
494
|
+
}
|
|
495
|
+
let backlinks = workspaceManager.getBacklinks(params.repo, params.entityType, params.entityId);
|
|
496
|
+
// Filter cross-collection results to accessible repos
|
|
497
|
+
const allowed = getAccessibleRepoNames(workspaceManager, getUser, authSvc);
|
|
498
|
+
if (allowed) {
|
|
499
|
+
backlinks = backlinks.filter(r => allowed.has(r.repoName));
|
|
500
|
+
}
|
|
403
501
|
return wrapToolResult({
|
|
404
502
|
success: true,
|
|
405
503
|
count: backlinks.length,
|
|
@@ -431,6 +529,9 @@ export function createGraphTools(workspaceManager, gitUser, workspacePath, onHig
|
|
|
431
529
|
}),
|
|
432
530
|
execute: async (toolCallId, params) => {
|
|
433
531
|
try {
|
|
532
|
+
if (!canAccessRepo(params.repo, workspaceManager, getUser, authSvc)) {
|
|
533
|
+
return wrapToolResult({ success: false, error: `Collection "${params.repo}" not found` });
|
|
534
|
+
}
|
|
434
535
|
const validation = workspaceManager.validateWikilinks(params.repo, params.entityType, params.entityId);
|
|
435
536
|
return wrapToolResult({
|
|
436
537
|
success: true,
|
|
@@ -462,6 +563,26 @@ export function createGraphTools(workspaceManager, gitUser, workspacePath, onHig
|
|
|
462
563
|
execute: async (toolCallId, params) => {
|
|
463
564
|
try {
|
|
464
565
|
const summary = workspaceManager.getSummary();
|
|
566
|
+
const allowed = getAccessibleRepoNames(workspaceManager, getUser, authSvc);
|
|
567
|
+
if (allowed) {
|
|
568
|
+
// Filter summary to accessible collections only
|
|
569
|
+
const filteredByRepo = {};
|
|
570
|
+
let filteredTotal = 0;
|
|
571
|
+
for (const [repo, count] of Object.entries(summary.entitiesByRepo)) {
|
|
572
|
+
if (allowed.has(repo)) {
|
|
573
|
+
filteredByRepo[repo] = count;
|
|
574
|
+
filteredTotal += count;
|
|
575
|
+
}
|
|
576
|
+
}
|
|
577
|
+
return wrapToolResult({
|
|
578
|
+
success: true,
|
|
579
|
+
summary: {
|
|
580
|
+
totalCollections: allowed.size,
|
|
581
|
+
totalEntities: filteredTotal,
|
|
582
|
+
entitiesByCollection: filteredByRepo,
|
|
583
|
+
},
|
|
584
|
+
});
|
|
585
|
+
}
|
|
465
586
|
return wrapToolResult({
|
|
466
587
|
success: true,
|
|
467
588
|
summary: {
|
|
@@ -488,7 +609,11 @@ export function createGraphTools(workspaceManager, gitUser, workspacePath, onHig
|
|
|
488
609
|
parameters: T.Object({}),
|
|
489
610
|
execute: async (toolCallId, params) => {
|
|
490
611
|
try {
|
|
491
|
-
|
|
612
|
+
let repos = workspaceManager.getAllRepoConfigs();
|
|
613
|
+
const allowed = getAccessibleRepoNames(workspaceManager, getUser, authSvc);
|
|
614
|
+
if (allowed) {
|
|
615
|
+
repos = repos.filter(r => allowed.has(r.name));
|
|
616
|
+
}
|
|
492
617
|
return wrapToolResult({
|
|
493
618
|
success: true,
|
|
494
619
|
count: repos.length,
|
|
@@ -513,13 +638,19 @@ export function createGraphTools(workspaceManager, gitUser, workspacePath, onHig
|
|
|
513
638
|
{
|
|
514
639
|
name: 'create_collection',
|
|
515
640
|
label: 'Create Collection',
|
|
516
|
-
description: 'Create a new collection in the workspace. A collection is a git-backed container for entities.',
|
|
641
|
+
description: 'Create a new collection in the workspace. A collection is a git-backed container for entities. Private collections are only visible to the creating user.',
|
|
517
642
|
parameters: T.Object({
|
|
518
643
|
name: T.String({ description: 'Collection name in kebab-case (e.g., "client-projects")' }),
|
|
519
644
|
description: T.Optional(T.String({ description: 'Short description of the collection' })),
|
|
645
|
+
private: T.Optional(T.Boolean({ description: 'If true, creates a private collection visible only to you' })),
|
|
520
646
|
}),
|
|
521
647
|
execute: async (toolCallId, params) => {
|
|
522
648
|
try {
|
|
649
|
+
const user = getUser();
|
|
650
|
+
// Non-private collections require admin; private collections can be created by anyone
|
|
651
|
+
if (!params.private && user && user.role !== 'admin') {
|
|
652
|
+
return wrapToolResult({ success: false, error: 'Only admins can create collections' });
|
|
653
|
+
}
|
|
523
654
|
if (!/^[a-z0-9][a-z0-9-]*$/.test(params.name)) {
|
|
524
655
|
return wrapToolResult({ success: false, error: 'Collection name must be kebab-case (lowercase letters, numbers, hyphens)' });
|
|
525
656
|
}
|
|
@@ -528,6 +659,8 @@ export function createGraphTools(workspaceManager, gitUser, workspacePath, onHig
|
|
|
528
659
|
const repo = await workspace.registerRepo({
|
|
529
660
|
name: params.name,
|
|
530
661
|
description: params.description,
|
|
662
|
+
private: params.private,
|
|
663
|
+
...(params.private && user ? { owner_id: user.id } : {}),
|
|
531
664
|
});
|
|
532
665
|
// Reload workspace manager to pick up the new collection
|
|
533
666
|
workspaceManager.reloadConfig();
|
|
@@ -555,6 +688,9 @@ export function createGraphTools(workspaceManager, gitUser, workspacePath, onHig
|
|
|
555
688
|
}),
|
|
556
689
|
execute: async (toolCallId, params) => {
|
|
557
690
|
try {
|
|
691
|
+
if (!canAccessRepo(params.repo, workspaceManager, getUser, authSvc)) {
|
|
692
|
+
return wrapToolResult({ success: false, error: `Collection "${params.repo}" not found` });
|
|
693
|
+
}
|
|
558
694
|
const graph = workspaceManager.getGraph(params.repo);
|
|
559
695
|
const entity = graph.get('dataset', params.entityId);
|
|
560
696
|
const schema = entity.data.schema;
|
|
@@ -591,6 +727,9 @@ export function createGraphTools(workspaceManager, gitUser, workspacePath, onHig
|
|
|
591
727
|
}),
|
|
592
728
|
execute: async (toolCallId, params) => {
|
|
593
729
|
try {
|
|
730
|
+
if (!canAccessRepo(params.repo, workspaceManager, getUser, authSvc)) {
|
|
731
|
+
return wrapToolResult({ success: false, error: `Collection "${params.repo}" not found` });
|
|
732
|
+
}
|
|
594
733
|
const graph = workspaceManager.getGraph(params.repo);
|
|
595
734
|
// Get current row count before appending
|
|
596
735
|
const beforeRows = graph.getDatasetRows(params.entityId);
|
|
@@ -664,10 +803,17 @@ export function createGraphTools(workspaceManager, gitUser, workspacePath, onHig
|
|
|
664
803
|
}),
|
|
665
804
|
execute: async (toolCallId, params) => {
|
|
666
805
|
try {
|
|
667
|
-
|
|
806
|
+
if (params.repo && !canAccessRepo(params.repo, workspaceManager, getUser, authSvc)) {
|
|
807
|
+
return wrapToolResult({ success: false, error: `Collection "${params.repo}" not found` });
|
|
808
|
+
}
|
|
809
|
+
let issues = await lintWorkspace(workspaceManager, {
|
|
668
810
|
repo: params.repo,
|
|
669
811
|
entityType: params.entityType,
|
|
670
812
|
});
|
|
813
|
+
const allowed = getAccessibleRepoNames(workspaceManager, getUser, authSvc);
|
|
814
|
+
if (allowed) {
|
|
815
|
+
issues = issues.filter(i => allowed.has(i.repo));
|
|
816
|
+
}
|
|
671
817
|
// Group by entity type for easier reading
|
|
672
818
|
const grouped = new Map();
|
|
673
819
|
for (const issue of issues) {
|
|
@@ -713,10 +859,16 @@ export function createGraphTools(workspaceManager, gitUser, workspacePath, onHig
|
|
|
713
859
|
}),
|
|
714
860
|
execute: async (toolCallId, params) => {
|
|
715
861
|
try {
|
|
862
|
+
// Scope to accessible collections
|
|
863
|
+
const allowed = getAccessibleRepoNames(workspaceManager, getUser, authSvc);
|
|
864
|
+
let repos = params.repos;
|
|
865
|
+
if (allowed) {
|
|
866
|
+
repos = repos ? repos.filter((r) => allowed.has(r)) : [...allowed];
|
|
867
|
+
}
|
|
716
868
|
const result = findOrphans(workspaceManager, {
|
|
717
869
|
entityTypes: params.entityTypes,
|
|
718
870
|
minAgeDays: params.minAgeDays,
|
|
719
|
-
repos
|
|
871
|
+
repos,
|
|
720
872
|
});
|
|
721
873
|
// Tombstone if requested
|
|
722
874
|
if (params.tombstone && workspacePath && result.orphans.length > 0) {
|