studiograph 1.2.0-beta.1 → 1.2.0-beta.10
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 +53 -0
- package/dist/agent/orchestrator.js +146 -6
- package/dist/agent/orchestrator.js.map +1 -1
- package/dist/agent/prompts/system.md +15 -1
- package/dist/agent/skills/sync-setup.md +17 -1
- package/dist/agent/tools/graph-tools.d.ts +23 -1
- package/dist/agent/tools/graph-tools.js +106 -19
- package/dist/agent/tools/graph-tools.js.map +1 -1
- package/dist/agent/tools/ops-tools.d.ts +24 -0
- package/dist/agent/tools/ops-tools.js +542 -0
- package/dist/agent/tools/ops-tools.js.map +1 -0
- package/dist/agent/tools/sync-tools.d.ts +9 -1
- package/dist/agent/tools/sync-tools.js +258 -2
- package/dist/agent/tools/sync-tools.js.map +1 -1
- package/dist/cli/commands/app.js +121 -18
- package/dist/cli/commands/app.js.map +1 -1
- package/dist/cli/commands/commit.js +2 -1
- package/dist/cli/commands/commit.js.map +1 -1
- package/dist/cli/commands/deploy.d.ts +4 -6
- package/dist/cli/commands/deploy.js +292 -115
- package/dist/cli/commands/deploy.js.map +1 -1
- package/dist/cli/commands/init.js +17 -2
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/r2.js +8 -2
- package/dist/cli/commands/r2.js.map +1 -1
- package/dist/cli/commands/redeploy.d.ts +9 -0
- package/dist/cli/commands/redeploy.js +203 -0
- package/dist/cli/commands/redeploy.js.map +1 -0
- package/dist/cli/commands/resolve.d.ts +8 -0
- package/dist/cli/commands/resolve.js +85 -0
- package/dist/cli/commands/resolve.js.map +1 -0
- package/dist/cli/commands/serve.js +55 -8
- package/dist/cli/commands/serve.js.map +1 -1
- package/dist/cli/commands/start.js +27 -5
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/commands/sync.js +49 -4
- package/dist/cli/commands/sync.js.map +1 -1
- package/dist/cli/index.js +25 -20
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/scaffolding.js +24 -23
- package/dist/cli/scaffolding.js.map +1 -1
- package/dist/core/graph.d.ts +36 -4
- package/dist/core/graph.js +232 -41
- package/dist/core/graph.js.map +1 -1
- package/dist/core/types.d.ts +2 -1
- package/dist/core/types.js +1 -0
- package/dist/core/types.js.map +1 -1
- package/dist/core/user-config.d.ts +6 -0
- package/dist/core/user-config.js.map +1 -1
- package/dist/core/workspace-manager.d.ts +6 -1
- package/dist/core/workspace-manager.js +29 -4
- package/dist/core/workspace-manager.js.map +1 -1
- package/dist/core/workspace.js +5 -0
- package/dist/core/workspace.js.map +1 -1
- package/dist/lib/lib/utils.d.ts +2 -0
- package/dist/lib/lib/utils.js +6 -0
- package/dist/lib/lib/utils.js.map +1 -0
- package/dist/server/index.js +97 -11
- package/dist/server/index.js.map +1 -1
- package/dist/server/plugin-loader.d.ts +1 -0
- package/dist/server/plugin-loader.js +1 -1
- package/dist/server/plugin-loader.js.map +1 -1
- package/dist/server/routes/chat.d.ts +3 -2
- package/dist/server/routes/chat.js +67 -16
- package/dist/server/routes/chat.js.map +1 -1
- package/dist/server/routes/git-api.d.ts +9 -0
- package/dist/server/routes/git-api.js +82 -0
- package/dist/server/routes/git-api.js.map +1 -0
- package/dist/server/routes/graph-api.d.ts +2 -2
- package/dist/server/routes/graph-api.js +164 -3
- package/dist/server/routes/graph-api.js.map +1 -1
- package/dist/server/routes/workspace-api.d.ts +9 -0
- package/dist/server/routes/workspace-api.js +170 -0
- package/dist/server/routes/workspace-api.js.map +1 -0
- package/dist/services/assets/base.d.ts +2 -2
- package/dist/services/assets/base.js +4 -4
- package/dist/services/assets/base.js.map +1 -1
- package/dist/services/assets/index.d.ts +6 -6
- package/dist/services/assets/index.js +12 -12
- package/dist/services/assets/index.js.map +1 -1
- package/dist/services/git.d.ts +31 -0
- package/dist/services/git.js +92 -3
- package/dist/services/git.js.map +1 -1
- package/dist/services/sync/commit.d.ts +2 -0
- package/dist/services/sync/commit.js +32 -12
- package/dist/services/sync/commit.js.map +1 -1
- package/dist/utils/git.d.ts +5 -0
- package/dist/utils/git.js +10 -0
- package/dist/utils/git.js.map +1 -1
- package/dist/utils/merge-resolver.d.ts +34 -8
- package/dist/utils/merge-resolver.js +158 -55
- package/dist/utils/merge-resolver.js.map +1 -1
- package/dist/web/_app/env.js +1 -0
- package/dist/web/_app/immutable/assets/0.BwJV4fvl.css +1 -0
- package/dist/web/_app/immutable/assets/2.DRHi7ABa.css +1 -0
- package/dist/web/_app/immutable/assets/3.CnAQdPKU.css +1 -0
- package/dist/web/_app/immutable/assets/4.BG92MufE.css +1 -0
- package/dist/web/_app/immutable/assets/5.CfrQIPYs.css +1 -0
- package/dist/web/_app/immutable/assets/ChatPanel.BNzaCFTL.css +1 -0
- package/dist/web/_app/immutable/assets/editor.D6Rjo7RE.css +1 -0
- package/dist/web/_app/immutable/chunks/4QY4j-jX.js +1 -0
- package/dist/web/_app/immutable/chunks/B4G4uWkV.js +1 -0
- package/dist/web/_app/immutable/chunks/BB_5th5W.js +3383 -0
- package/dist/web/_app/immutable/chunks/CUzqHQY_.js +1 -0
- package/dist/web/_app/immutable/chunks/CYrVHOHA.js +1 -0
- package/dist/web/_app/immutable/chunks/CksE5s8n.js +1 -0
- package/dist/web/_app/immutable/chunks/CqkleIqs.js +1 -0
- package/dist/web/_app/immutable/chunks/D0JBkEPE.js +86 -0
- package/dist/web/_app/immutable/chunks/D2K5GzLj.js +1 -0
- package/dist/web/_app/immutable/chunks/DEkoussQ.js +2 -0
- package/dist/web/_app/immutable/chunks/DW-KmHRi.js +1 -0
- package/dist/web/_app/immutable/chunks/DcCr4z9k.js +1 -0
- package/dist/web/_app/immutable/chunks/Dg2wWwJu.js +2 -0
- package/dist/web/_app/immutable/chunks/Dh_H7Owr.js +18 -0
- package/dist/web/_app/immutable/chunks/DnlgZ_Tk.js +5 -0
- package/dist/web/_app/immutable/chunks/DtVH--hH.js +6 -0
- package/dist/web/_app/immutable/chunks/PPVm8Dsz.js +1 -0
- package/dist/web/_app/immutable/chunks/SBEriEQR.js +1 -0
- package/dist/web/_app/immutable/chunks/WSUKABI_.js +1 -0
- package/dist/web/_app/immutable/chunks/YTERt3Ul.js +6 -0
- package/dist/web/_app/immutable/chunks/m_R7HatS.js +1 -0
- package/dist/web/_app/immutable/chunks/vlmEnjfO.js +1 -0
- package/dist/web/_app/immutable/entry/app.B9pwpU_x.js +2 -0
- package/dist/web/_app/immutable/entry/start.CDuNCEco.js +1 -0
- package/dist/web/_app/immutable/nodes/0.YEQhw1us.js +1 -0
- package/dist/web/_app/immutable/nodes/1.CvmHhpRy.js +1 -0
- package/dist/web/_app/immutable/nodes/2.c5k1r7dq.js +1 -0
- package/dist/web/_app/immutable/nodes/3.B24tcdLK.js +1 -0
- package/dist/web/_app/immutable/nodes/4.kX2m5Pp9.js +16 -0
- package/dist/web/_app/immutable/nodes/5.DELt6wTD.js +2 -0
- package/dist/web/_app/version.json +1 -0
- package/dist/web/index.html +41 -0
- package/package.json +6 -1
|
@@ -4,9 +4,11 @@
|
|
|
4
4
|
* Manages the Pi-Mono agent instance and coordinates with workspace managers.
|
|
5
5
|
* Loads skills, handles system prompts, and manages conversation flow.
|
|
6
6
|
*/
|
|
7
|
+
import { Agent } from '@mariozechner/pi-agent-core';
|
|
7
8
|
import { WorkspaceManager } from '../core/workspace-manager.js';
|
|
8
9
|
import { WorkspaceConfig } from '../core/types.js';
|
|
9
10
|
import { GitUser } from '../services/git.js';
|
|
11
|
+
import { type MutationEvent } from './tools/graph-tools.js';
|
|
10
12
|
export interface AgentConfig {
|
|
11
13
|
workspacePath: string;
|
|
12
14
|
workspaceConfig: WorkspaceConfig;
|
|
@@ -15,6 +17,8 @@ export interface AgentConfig {
|
|
|
15
17
|
skillsDirs?: string[];
|
|
16
18
|
/** Additional custom tool directories from installed apps (highest-priority first). */
|
|
17
19
|
toolsDirs?: string[];
|
|
20
|
+
/** Recent daily memory content (today + yesterday) injected into system prompt. */
|
|
21
|
+
recentMemory?: string;
|
|
18
22
|
}
|
|
19
23
|
export interface AgentResponse {
|
|
20
24
|
content: string;
|
|
@@ -32,6 +36,12 @@ export declare class AgentOrchestrator {
|
|
|
32
36
|
private gitUser;
|
|
33
37
|
private skillsDirs;
|
|
34
38
|
private toolsDirs;
|
|
39
|
+
private registryRef;
|
|
40
|
+
private _highlightCallback;
|
|
41
|
+
private _mutationCallback;
|
|
42
|
+
private recentMemory?;
|
|
43
|
+
private currentSessionId;
|
|
44
|
+
private sessionsDir;
|
|
35
45
|
constructor(config: AgentConfig);
|
|
36
46
|
/**
|
|
37
47
|
* Create Pi-Mono agent with tools and system prompt.
|
|
@@ -74,4 +84,47 @@ export declare class AgentOrchestrator {
|
|
|
74
84
|
* Get repository names
|
|
75
85
|
*/
|
|
76
86
|
getRepoNames(): string[];
|
|
87
|
+
/**
|
|
88
|
+
* Set a callback for highlight_entities tool events (used by SSE streaming).
|
|
89
|
+
*/
|
|
90
|
+
setHighlightCallback(cb: ((ids: string[]) => void) | null): void;
|
|
91
|
+
/**
|
|
92
|
+
* Emit a highlight event (called by graph-tools highlight_entities).
|
|
93
|
+
*/
|
|
94
|
+
emitHighlight(ids: string[]): void;
|
|
95
|
+
/**
|
|
96
|
+
* Set a callback for entity mutation events (used by SSE streaming).
|
|
97
|
+
*/
|
|
98
|
+
setMutationCallback(cb: ((m: MutationEvent) => void) | null): void;
|
|
99
|
+
/**
|
|
100
|
+
* Emit a mutation event (called by graph-tools create/update/delete).
|
|
101
|
+
*/
|
|
102
|
+
emitMutation(m: MutationEvent): void;
|
|
103
|
+
/**
|
|
104
|
+
* Expose the raw pi-agent-core Agent instance.
|
|
105
|
+
*/
|
|
106
|
+
getAgent(): Agent;
|
|
107
|
+
/**
|
|
108
|
+
* Get the current session ID (null if none active).
|
|
109
|
+
*/
|
|
110
|
+
getCurrentSessionId(): string | null;
|
|
111
|
+
/**
|
|
112
|
+
* Switch the agent to a different session.
|
|
113
|
+
* - Same session → no-op
|
|
114
|
+
* - Existing session file → restore messages from disk
|
|
115
|
+
* - No file but fallback history → inject as context message
|
|
116
|
+
* - Nothing → clear messages for a fresh start
|
|
117
|
+
*/
|
|
118
|
+
switchSession(sessionId: string, fallbackHistory?: Array<{
|
|
119
|
+
role: string;
|
|
120
|
+
content: string;
|
|
121
|
+
}>): Promise<void>;
|
|
122
|
+
/**
|
|
123
|
+
* Save the current session's messages to disk.
|
|
124
|
+
*/
|
|
125
|
+
saveSession(): void;
|
|
126
|
+
/**
|
|
127
|
+
* Keep only the N most recent session files by mtime.
|
|
128
|
+
*/
|
|
129
|
+
private pruneSessions;
|
|
77
130
|
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Manages the Pi-Mono agent instance and coordinates with workspace managers.
|
|
5
5
|
* Loads skills, handles system prompts, and manages conversation flow.
|
|
6
6
|
*/
|
|
7
|
-
import { readFileSync, existsSync } from 'fs';
|
|
7
|
+
import { readFileSync, existsSync, readdirSync, writeFileSync, mkdirSync, unlinkSync, statSync } from 'fs';
|
|
8
8
|
import { join, dirname } from 'path';
|
|
9
9
|
import { homedir } from 'os';
|
|
10
10
|
import { fileURLToPath } from 'url';
|
|
@@ -21,6 +21,7 @@ import { loadCustomTools } from './tools/tool-loader.js';
|
|
|
21
21
|
import { ConnectorManager } from '../mcp/connector-manager.js';
|
|
22
22
|
import { buildConnectorRegistry, createConnectorTools } from './tools/connector-tools.js';
|
|
23
23
|
import { createFsTools } from './tools/fs-tools.js';
|
|
24
|
+
import { createOpsTools } from './tools/ops-tools.js';
|
|
24
25
|
import { loadUserConfig, getAnthropicCredential } from '../core/user-config.js';
|
|
25
26
|
export class AgentOrchestrator {
|
|
26
27
|
workspacePath;
|
|
@@ -30,10 +31,18 @@ export class AgentOrchestrator {
|
|
|
30
31
|
gitUser;
|
|
31
32
|
skillsDirs;
|
|
32
33
|
toolsDirs;
|
|
34
|
+
registryRef = { registry: null };
|
|
35
|
+
_highlightCallback = null;
|
|
36
|
+
_mutationCallback = null;
|
|
37
|
+
recentMemory;
|
|
38
|
+
currentSessionId = null;
|
|
39
|
+
sessionsDir;
|
|
33
40
|
constructor(config) {
|
|
34
41
|
this.workspacePath = config.workspacePath;
|
|
35
42
|
this.config = config.workspaceConfig;
|
|
36
43
|
this.gitUser = config.gitUser;
|
|
44
|
+
this.recentMemory = config.recentMemory;
|
|
45
|
+
this.sessionsDir = join(homedir(), '.studiograph', 'sessions');
|
|
37
46
|
// Priority (highest → lowest): user > workspace > bundled > app
|
|
38
47
|
// First-seen name wins in the loader, so earlier dirs override later ones.
|
|
39
48
|
const userSkillsDir = join(homedir(), '.studiograph', 'skills');
|
|
@@ -66,13 +75,14 @@ export class AgentOrchestrator {
|
|
|
66
75
|
const skillIndex = loadSkillIndex(this.skillsDirs);
|
|
67
76
|
// Build tools first so we can auto-generate the tool reference for the prompt
|
|
68
77
|
const tools = [
|
|
69
|
-
...createGraphTools(this.workspaceManager, this.gitUser, this.workspacePath),
|
|
70
|
-
...createSyncTools(this.workspacePath, this.config),
|
|
78
|
+
...createGraphTools(this.workspaceManager, this.gitUser, this.workspacePath, this.emitHighlight.bind(this), this.emitMutation.bind(this)),
|
|
79
|
+
...createSyncTools(this.workspacePath, this.config, this.registryRef),
|
|
80
|
+
...createOpsTools(this.workspacePath, this.config),
|
|
71
81
|
...createFsTools(),
|
|
72
82
|
createLoadSkillTool(skillIndex),
|
|
73
83
|
];
|
|
74
|
-
// Build system prompt — base + auto-generated tool reference + eager skills + skill index
|
|
75
|
-
const systemPrompt = this.buildSystemPrompt(skillIndex, tools);
|
|
84
|
+
// Build system prompt — base + auto-generated tool reference + memory + eager skills + skill index
|
|
85
|
+
const systemPrompt = this.buildSystemPrompt(skillIndex, tools, this.recentMemory);
|
|
76
86
|
// Log registered tools at startup
|
|
77
87
|
console.log(`🔧 ${tools.length} tools registered: ${tools.map((t) => t.name).join(', ')}`);
|
|
78
88
|
const agent = new Agent({ getApiKey: () => apiKey });
|
|
@@ -99,6 +109,7 @@ export class AgentOrchestrator {
|
|
|
99
109
|
if (connectorTools.length > 0) {
|
|
100
110
|
const registry = buildConnectorRegistry(connectorTools);
|
|
101
111
|
extra.push(...createConnectorTools(registry));
|
|
112
|
+
this.registryRef.registry = registry;
|
|
102
113
|
}
|
|
103
114
|
if (extra.length > 0) {
|
|
104
115
|
const existing = agent.state.tools;
|
|
@@ -111,7 +122,7 @@ export class AgentOrchestrator {
|
|
|
111
122
|
/**
|
|
112
123
|
* Build the full system prompt: base prompt + eager skill content + skill index.
|
|
113
124
|
*/
|
|
114
|
-
buildSystemPrompt(skillIndex, tools) {
|
|
125
|
+
buildSystemPrompt(skillIndex, tools, recentMemory) {
|
|
115
126
|
const promptPath = join(__dirname, 'prompts', 'system.md');
|
|
116
127
|
let base = existsSync(promptPath)
|
|
117
128
|
? readFileSync(promptPath, 'utf-8')
|
|
@@ -123,6 +134,7 @@ export class AgentOrchestrator {
|
|
|
123
134
|
'Enrichment': [],
|
|
124
135
|
'Workspace Git': [],
|
|
125
136
|
'External Connectors': [],
|
|
137
|
+
'Operations': [],
|
|
126
138
|
'Skills': [],
|
|
127
139
|
'Other': [],
|
|
128
140
|
};
|
|
@@ -138,6 +150,8 @@ export class AgentOrchestrator {
|
|
|
138
150
|
categories['Workspace Git'].push(t);
|
|
139
151
|
else if (name.startsWith('connector_'))
|
|
140
152
|
categories['External Connectors'].push(t);
|
|
153
|
+
else if (name.startsWith('app_') || name.startsWith('deploy_'))
|
|
154
|
+
categories['Operations'].push(t);
|
|
141
155
|
else if (name === 'load_skill')
|
|
142
156
|
categories['Skills'].push(t);
|
|
143
157
|
else if (['create_entity', 'get_entity', 'update_entity', 'delete_entity', 'search_entities', 'list_entities', 'get_related', 'get_backlinks', 'validate_wikilinks', 'get_workspace_summary', 'list_repos', 'query_dataset', 'append_rows', 'get_entity_schema', 'lint_entities'].includes(name))
|
|
@@ -156,6 +170,10 @@ export class AgentOrchestrator {
|
|
|
156
170
|
if (schemaSection) {
|
|
157
171
|
parts.push(schemaSection);
|
|
158
172
|
}
|
|
173
|
+
// Inject recent memory context (today + yesterday daily memory)
|
|
174
|
+
if (recentMemory) {
|
|
175
|
+
parts.push(`## Memory Context\n\n${recentMemory}`);
|
|
176
|
+
}
|
|
159
177
|
// Inline eager skills directly into the system prompt
|
|
160
178
|
const eagerContent = loadEagerSkills(skillIndex);
|
|
161
179
|
if (eagerContent) {
|
|
@@ -252,5 +270,127 @@ ${repoList}`;
|
|
|
252
270
|
getRepoNames() {
|
|
253
271
|
return this.workspaceManager.getRepoNames();
|
|
254
272
|
}
|
|
273
|
+
/**
|
|
274
|
+
* Set a callback for highlight_entities tool events (used by SSE streaming).
|
|
275
|
+
*/
|
|
276
|
+
setHighlightCallback(cb) {
|
|
277
|
+
this._highlightCallback = cb;
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Emit a highlight event (called by graph-tools highlight_entities).
|
|
281
|
+
*/
|
|
282
|
+
emitHighlight(ids) {
|
|
283
|
+
this._highlightCallback?.(ids);
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Set a callback for entity mutation events (used by SSE streaming).
|
|
287
|
+
*/
|
|
288
|
+
setMutationCallback(cb) {
|
|
289
|
+
this._mutationCallback = cb;
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Emit a mutation event (called by graph-tools create/update/delete).
|
|
293
|
+
*/
|
|
294
|
+
emitMutation(m) {
|
|
295
|
+
this._mutationCallback?.(m);
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Expose the raw pi-agent-core Agent instance.
|
|
299
|
+
*/
|
|
300
|
+
getAgent() {
|
|
301
|
+
return this.agent;
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Get the current session ID (null if none active).
|
|
305
|
+
*/
|
|
306
|
+
getCurrentSessionId() {
|
|
307
|
+
return this.currentSessionId;
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Switch the agent to a different session.
|
|
311
|
+
* - Same session → no-op
|
|
312
|
+
* - Existing session file → restore messages from disk
|
|
313
|
+
* - No file but fallback history → inject as context message
|
|
314
|
+
* - Nothing → clear messages for a fresh start
|
|
315
|
+
*/
|
|
316
|
+
async switchSession(sessionId, fallbackHistory) {
|
|
317
|
+
if (this.currentSessionId === sessionId)
|
|
318
|
+
return;
|
|
319
|
+
// Save current session before switching
|
|
320
|
+
if (this.currentSessionId) {
|
|
321
|
+
this.saveSession();
|
|
322
|
+
}
|
|
323
|
+
this.currentSessionId = sessionId;
|
|
324
|
+
this.agent.sessionId = sessionId;
|
|
325
|
+
// Try loading from disk
|
|
326
|
+
const sessionPath = join(this.sessionsDir, `${sessionId}.json`);
|
|
327
|
+
if (existsSync(sessionPath)) {
|
|
328
|
+
try {
|
|
329
|
+
const data = JSON.parse(readFileSync(sessionPath, 'utf-8'));
|
|
330
|
+
if (Array.isArray(data.messages) && data.messages.length > 0) {
|
|
331
|
+
this.agent.replaceMessages(data.messages);
|
|
332
|
+
return;
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
catch {
|
|
336
|
+
// Corrupted file — fall through
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
// Fallback: inject frontend history as a context message
|
|
340
|
+
if (fallbackHistory && fallbackHistory.length > 0) {
|
|
341
|
+
const transcript = fallbackHistory
|
|
342
|
+
.map(m => `${m.role === 'assistant' ? 'Assistant' : 'User'}: ${m.content}`)
|
|
343
|
+
.join('\n\n');
|
|
344
|
+
const contextMsg = {
|
|
345
|
+
role: 'user',
|
|
346
|
+
content: [{ type: 'text', text: `[Prior conversation context]\n\n${transcript}` }],
|
|
347
|
+
timestamp: Date.now(),
|
|
348
|
+
};
|
|
349
|
+
this.agent.replaceMessages([contextMsg]);
|
|
350
|
+
return;
|
|
351
|
+
}
|
|
352
|
+
// Fresh start
|
|
353
|
+
this.agent.clearMessages();
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Save the current session's messages to disk.
|
|
357
|
+
*/
|
|
358
|
+
saveSession() {
|
|
359
|
+
if (!this.currentSessionId)
|
|
360
|
+
return;
|
|
361
|
+
const messages = this.agent.state.messages;
|
|
362
|
+
if (messages.length === 0)
|
|
363
|
+
return;
|
|
364
|
+
if (!existsSync(this.sessionsDir)) {
|
|
365
|
+
mkdirSync(this.sessionsDir, { recursive: true });
|
|
366
|
+
}
|
|
367
|
+
const sessionPath = join(this.sessionsDir, `${this.currentSessionId}.json`);
|
|
368
|
+
writeFileSync(sessionPath, JSON.stringify({
|
|
369
|
+
sessionId: this.currentSessionId,
|
|
370
|
+
updatedAt: new Date().toISOString(),
|
|
371
|
+
messages,
|
|
372
|
+
}), 'utf-8');
|
|
373
|
+
this.pruneSessions(20);
|
|
374
|
+
}
|
|
375
|
+
/**
|
|
376
|
+
* Keep only the N most recent session files by mtime.
|
|
377
|
+
*/
|
|
378
|
+
pruneSessions(keep) {
|
|
379
|
+
if (!existsSync(this.sessionsDir))
|
|
380
|
+
return;
|
|
381
|
+
const files = readdirSync(this.sessionsDir)
|
|
382
|
+
.filter(f => f.endsWith('.json'))
|
|
383
|
+
.map(f => {
|
|
384
|
+
const p = join(this.sessionsDir, f);
|
|
385
|
+
return { name: f, path: p, mtime: statSync(p).mtimeMs };
|
|
386
|
+
})
|
|
387
|
+
.sort((a, b) => b.mtime - a.mtime);
|
|
388
|
+
for (const file of files.slice(keep)) {
|
|
389
|
+
try {
|
|
390
|
+
unlinkSync(file.path);
|
|
391
|
+
}
|
|
392
|
+
catch { /* ignore */ }
|
|
393
|
+
}
|
|
394
|
+
}
|
|
255
395
|
}
|
|
256
396
|
//# sourceMappingURL=orchestrator.js.map
|
|
@@ -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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"}
|
|
@@ -47,6 +47,11 @@ You can help users with:
|
|
|
47
47
|
- Recommend useful searches or queries
|
|
48
48
|
- Help users discover patterns in their knowledge graph
|
|
49
49
|
|
|
50
|
+
**Communication Style:**
|
|
51
|
+
- NEVER use emojis or emoticons in any response — no exceptions
|
|
52
|
+
- Use plain text only: dashes, bullets, and bold for emphasis
|
|
53
|
+
- Keep language clear, direct, and professional
|
|
54
|
+
|
|
50
55
|
**Respect Structure:**
|
|
51
56
|
- Follow the established entity schemas
|
|
52
57
|
- Maintain consistent naming conventions (kebab-case IDs)
|
|
@@ -85,7 +90,7 @@ You have access to the following entity types:
|
|
|
85
90
|
- `practice-area`: Firm capabilities and disciplines (e.g. Data Visualization, UX Design)
|
|
86
91
|
- `case-study`: Portfolio narratives for completed projects (objective, solution, outcome, team, press, awards)
|
|
87
92
|
|
|
88
|
-
**App Types
|
|
93
|
+
**App Types** (repo auto-resolved — no need to specify `repo` for these):
|
|
89
94
|
- `dataset`: Tabular data with a declared column schema (name, type, required). Body is raw CSV. Use for time tracking, budgets, rosters, inventories.
|
|
90
95
|
- `deck`: Presentation deck entity (rendered by the Schema Slides app)
|
|
91
96
|
|
|
@@ -177,6 +182,15 @@ You have access to tools in the following categories:
|
|
|
177
182
|
|
|
178
183
|
Use these tools to help users build, navigate, and synchronize their knowledge graph effectively.
|
|
179
184
|
|
|
185
|
+
## Deployment
|
|
186
|
+
|
|
187
|
+
The workspace may be deployed to Railway as a hosted server. Key facts:
|
|
188
|
+
|
|
189
|
+
- **Pushing does not auto-deploy.** `workspace_push` sends commits to GitHub, but Railway does NOT automatically pull or redeploy. You must call `redeploy_railway` after pushing to update the deployed server.
|
|
190
|
+
- **The deploy flow is: commit → push → redeploy.** Always follow this sequence when the user wants changes live on the server.
|
|
191
|
+
- **Credentials are stored locally.** Railway token lives in `~/.studiograph/user.json`, GitHub PAT in `~/.studiograph/auth.json`. The deploy and redeploy tools read these automatically — do not ask the user for tokens unless they are genuinely missing.
|
|
192
|
+
- **First-time setup** uses `deploy_railway`. **Subsequent updates** use `redeploy_railway` (zero parameters).
|
|
193
|
+
|
|
180
194
|
## Remember
|
|
181
195
|
|
|
182
196
|
- You're here to help teams work better, not just to manage data
|
|
@@ -15,12 +15,28 @@ You can sync data from external sources (Linear, Pipedrive, Granola, Obsidian, e
|
|
|
15
15
|
> "You'll need to set up the connector first. Run `studiograph connector add <name>` in your terminal."
|
|
16
16
|
3. **Add the source:** `sync_setup_source({ name: "linear" })` — uses default mappings from built-in definitions when available
|
|
17
17
|
4. **Customize if needed:** Built-in definitions (Pipedrive, Granola, Linear, Asana) provide ready-to-use defaults. To customize, pass `entity_mappings` to `sync_setup_source` to override field maps, add co-location, change target repos, or add status maps. See the `sync-configuration` skill for field map syntax and options.
|
|
18
|
-
5. **No built-in definition?**
|
|
18
|
+
5. **No built-in definition?** Use `sync_inspect_connector` to discover the connector's tools and syncable entity types, then `sync_sample_data` to fetch a sample record and see field shapes. Build `entity_mappings` from the field analysis. See below and the `sync-configuration` skill for the full mapping schema.
|
|
19
19
|
6. **Run the sync:** `sync_run({ sources: ["linear"] })`
|
|
20
20
|
7. **Review staging:** `sync_status` — show the user what will be committed
|
|
21
21
|
8. **Apply on confirmation:** Only call `sync_apply` after the user approves
|
|
22
22
|
9. **Review & commit:** `studiograph review` (interactive diff review with approve/reject per entity), then `studiograph commit` (git commit across all repos)
|
|
23
23
|
|
|
24
|
+
## Building a Config from Scratch (no built-in definition)
|
|
25
|
+
|
|
26
|
+
When a connector has no built-in source definition, use introspection to auto-discover the data model:
|
|
27
|
+
|
|
28
|
+
1. `sync_inspect_connector({ connector: "myservice" })` — lists all tools categorized by purpose, detects syncable entity types with list/get tool pairs
|
|
29
|
+
2. Pick which entity types to sync from the `syncableTypes` results
|
|
30
|
+
3. `sync_sample_data({ connector: "myservice", tool: "list_records" })` — fetches one record and analyzes field shapes. Returns field paths, types, sample values, and suggested field_map entries
|
|
31
|
+
4. Build `entity_mappings` using the field analysis — map source fields to entity schema fields using dot notation for nested fields
|
|
32
|
+
5. `sync_setup_source({ name: "myservice", entity_mappings: [...] })` — save the config
|
|
33
|
+
|
|
34
|
+
**Tips:**
|
|
35
|
+
- `sync_sample_data` auto-sets `limit: 1` — you don't need to pass it
|
|
36
|
+
- Use the `suggestedFieldMap` from the response as a starting point
|
|
37
|
+
- Nested fields use dot notation in field_map keys (e.g. `"org_id.name": "organization"`)
|
|
38
|
+
- Call `sync_sample_data` for each entity type you plan to sync
|
|
39
|
+
|
|
24
40
|
## Modifying an Existing Source
|
|
25
41
|
|
|
26
42
|
When a user asks to adjust, change, or view a source config, **immediately call `sync_list_sources`** to read the current configuration. Do not ask the user to paste the config — you can read it yourself.
|
|
@@ -21,11 +21,17 @@ export declare function wrapToolResult(result: any): {
|
|
|
21
21
|
/**
|
|
22
22
|
* Create graph tools for the agent
|
|
23
23
|
*/
|
|
24
|
+
export interface MutationEvent {
|
|
25
|
+
action: 'created' | 'updated' | 'deleted';
|
|
26
|
+
repo: string;
|
|
27
|
+
entityType: string;
|
|
28
|
+
entityId: string;
|
|
29
|
+
}
|
|
24
30
|
export declare function createGraphTools(workspaceManager: WorkspaceManager, gitUser: {
|
|
25
31
|
id: string;
|
|
26
32
|
name: string;
|
|
27
33
|
email: string;
|
|
28
|
-
}, workspacePath?: string): ({
|
|
34
|
+
}, workspacePath?: string, onHighlight?: (ids: string[]) => void, onMutation?: (m: MutationEvent) => void): ({
|
|
29
35
|
name: string;
|
|
30
36
|
label: string;
|
|
31
37
|
description: string;
|
|
@@ -55,4 +61,20 @@ export declare function createGraphTools(workspaceManager: WorkspaceManager, git
|
|
|
55
61
|
}[];
|
|
56
62
|
details: any;
|
|
57
63
|
}>;
|
|
64
|
+
} | {
|
|
65
|
+
name: string;
|
|
66
|
+
label: string;
|
|
67
|
+
description: string;
|
|
68
|
+
parameters: import("@sinclair/typebox").TObject<{
|
|
69
|
+
entityIds: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
|
|
70
|
+
}>;
|
|
71
|
+
execute: (_toolCallId: string, params: {
|
|
72
|
+
entityIds: string[];
|
|
73
|
+
}) => Promise<{
|
|
74
|
+
content: {
|
|
75
|
+
type: "text";
|
|
76
|
+
text: string;
|
|
77
|
+
}[];
|
|
78
|
+
details: any;
|
|
79
|
+
}>;
|
|
58
80
|
})[];
|