studiograph 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/README.md +18 -0
  2. package/dist/agent/orchestrator.d.ts +69 -0
  3. package/dist/agent/orchestrator.js +211 -0
  4. package/dist/agent/orchestrator.js.map +1 -0
  5. package/dist/agent/tools/graph-tools.d.ts +30 -0
  6. package/dist/agent/tools/graph-tools.js +536 -0
  7. package/dist/agent/tools/graph-tools.js.map +1 -0
  8. package/dist/auth/github.d.ts +53 -0
  9. package/dist/auth/github.js +180 -0
  10. package/dist/auth/github.js.map +1 -0
  11. package/dist/cli/commands/auth.d.ts +10 -0
  12. package/dist/cli/commands/auth.js +63 -0
  13. package/dist/cli/commands/auth.js.map +1 -0
  14. package/dist/cli/commands/init.d.ts +7 -0
  15. package/dist/cli/commands/init.js +299 -0
  16. package/dist/cli/commands/init.js.map +1 -0
  17. package/dist/cli/commands/join.d.ts +14 -0
  18. package/dist/cli/commands/join.js +230 -0
  19. package/dist/cli/commands/join.js.map +1 -0
  20. package/dist/cli/commands/members.d.ts +11 -0
  21. package/dist/cli/commands/members.js +230 -0
  22. package/dist/cli/commands/members.js.map +1 -0
  23. package/dist/cli/commands/serve.d.ts +17 -0
  24. package/dist/cli/commands/serve.js +90 -0
  25. package/dist/cli/commands/serve.js.map +1 -0
  26. package/dist/cli/commands/start.d.ts +7 -0
  27. package/dist/cli/commands/start.js +381 -0
  28. package/dist/cli/commands/start.js.map +1 -0
  29. package/dist/cli/commands/sync.d.ts +10 -0
  30. package/dist/cli/commands/sync.js +121 -0
  31. package/dist/cli/commands/sync.js.map +1 -0
  32. package/dist/cli/index.d.ts +7 -0
  33. package/dist/cli/index.js +31 -0
  34. package/dist/cli/index.js.map +1 -0
  35. package/dist/core/graph.d.ts +169 -0
  36. package/dist/core/graph.js +558 -0
  37. package/dist/core/graph.js.map +1 -0
  38. package/dist/core/types.d.ts +216 -0
  39. package/dist/core/types.js +71 -0
  40. package/dist/core/types.js.map +1 -0
  41. package/dist/core/user-config.d.ts +31 -0
  42. package/dist/core/user-config.js +50 -0
  43. package/dist/core/user-config.js.map +1 -0
  44. package/dist/core/validation.d.ts +2371 -0
  45. package/dist/core/validation.js +432 -0
  46. package/dist/core/validation.js.map +1 -0
  47. package/dist/core/workspace-manager.d.ts +104 -0
  48. package/dist/core/workspace-manager.js +432 -0
  49. package/dist/core/workspace-manager.js.map +1 -0
  50. package/dist/core/workspace.d.ts +103 -0
  51. package/dist/core/workspace.js +306 -0
  52. package/dist/core/workspace.js.map +1 -0
  53. package/dist/server/index.d.ts +25 -0
  54. package/dist/server/index.js +84 -0
  55. package/dist/server/index.js.map +1 -0
  56. package/dist/server/plugin-loader.d.ts +31 -0
  57. package/dist/server/plugin-loader.js +81 -0
  58. package/dist/server/plugin-loader.js.map +1 -0
  59. package/dist/server/routes/chat.d.ts +11 -0
  60. package/dist/server/routes/chat.js +66 -0
  61. package/dist/server/routes/chat.js.map +1 -0
  62. package/dist/server/routes/graph-api.d.ts +9 -0
  63. package/dist/server/routes/graph-api.js +72 -0
  64. package/dist/server/routes/graph-api.js.map +1 -0
  65. package/dist/server/routes/webhook.d.ts +14 -0
  66. package/dist/server/routes/webhook.js +69 -0
  67. package/dist/server/routes/webhook.js.map +1 -0
  68. package/dist/services/assets/base.d.ts +69 -0
  69. package/dist/services/assets/base.js +113 -0
  70. package/dist/services/assets/base.js.map +1 -0
  71. package/dist/services/assets/index.d.ts +36 -0
  72. package/dist/services/assets/index.js +89 -0
  73. package/dist/services/assets/index.js.map +1 -0
  74. package/dist/services/assets/local.d.ts +42 -0
  75. package/dist/services/assets/local.js +161 -0
  76. package/dist/services/assets/local.js.map +1 -0
  77. package/dist/services/assets/r2.d.ts +36 -0
  78. package/dist/services/assets/r2.js +182 -0
  79. package/dist/services/assets/r2.js.map +1 -0
  80. package/dist/services/csv-service.d.ts +36 -0
  81. package/dist/services/csv-service.js +143 -0
  82. package/dist/services/csv-service.js.map +1 -0
  83. package/dist/services/git.d.ts +99 -0
  84. package/dist/services/git.js +306 -0
  85. package/dist/services/git.js.map +1 -0
  86. package/dist/services/github-provisioner.d.ts +30 -0
  87. package/dist/services/github-provisioner.js +89 -0
  88. package/dist/services/github-provisioner.js.map +1 -0
  89. package/dist/services/markdown.d.ts +82 -0
  90. package/dist/services/markdown.js +338 -0
  91. package/dist/services/markdown.js.map +1 -0
  92. package/dist/services/memory-service.d.ts +74 -0
  93. package/dist/services/memory-service.js +183 -0
  94. package/dist/services/memory-service.js.map +1 -0
  95. package/dist/utils/git.d.ts +28 -0
  96. package/dist/utils/git.js +55 -0
  97. package/dist/utils/git.js.map +1 -0
  98. package/dist/utils/preflight.d.ts +44 -0
  99. package/dist/utils/preflight.js +95 -0
  100. package/dist/utils/preflight.js.map +1 -0
  101. package/package.json +55 -0
package/README.md ADDED
@@ -0,0 +1,18 @@
1
+ # Studiograph
2
+
3
+ Team-based AI agent platform with Git-backed knowledge graphs.
4
+
5
+ ## Architecture
6
+
7
+ **Granular Repos** (one per project/function/resource):
8
+ - **Project repos**: cooper-hewitt/, globalance/, etc.
9
+ - **Function repos**: new-business/, accounting/, hr/, etc.
10
+ - **Shared resources**: templates/, research/, resources/, etc.
11
+
12
+ **Flexible entity types** - not hardcoded schemas.
13
+
14
+ ## Status
15
+
16
+ 🚧 **Phase 1: MVP Build (In Progress)**
17
+
18
+ See [Build Plan](../Vaults/Schema/Projects/Studiograph/Build%20Plan.md) for details.
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Agent Orchestrator
3
+ *
4
+ * Manages the Pi-Mono agent instance and coordinates with workspace managers.
5
+ * Loads skills, handles system prompts, and manages conversation flow.
6
+ */
7
+ import { WorkspaceManager } from '../core/workspace-manager.js';
8
+ import { WorkspaceConfig } from '../core/types.js';
9
+ import { GitUser } from '../services/git.js';
10
+ export interface AgentConfig {
11
+ workspacePath: string;
12
+ workspaceConfig: WorkspaceConfig;
13
+ gitUser: GitUser;
14
+ skillsPath?: string;
15
+ }
16
+ export interface AgentResponse {
17
+ content: string;
18
+ toolCalls?: Array<{
19
+ tool: string;
20
+ input: any;
21
+ output: any;
22
+ }>;
23
+ }
24
+ export declare class AgentOrchestrator {
25
+ private workspacePath;
26
+ private workspaceManager;
27
+ private agent;
28
+ private config;
29
+ private gitUser;
30
+ private skillsPath;
31
+ constructor(config: AgentConfig);
32
+ /**
33
+ * Create Pi-Mono agent with tools and system prompt
34
+ */
35
+ private createAgent;
36
+ /**
37
+ * Load system prompt from file
38
+ */
39
+ private loadSystemPrompt;
40
+ /**
41
+ * Get default system prompt
42
+ */
43
+ private getDefaultSystemPrompt;
44
+ /**
45
+ * Load tools from skills directory
46
+ */
47
+ private loadTools;
48
+ /**
49
+ * Send a message to the agent
50
+ */
51
+ chat(userMessage: string): Promise<AgentResponse>;
52
+ /**
53
+ * Get workspace manager (for tools)
54
+ */
55
+ getWorkspaceManager(): WorkspaceManager;
56
+ /**
57
+ * Get workspace summary
58
+ */
59
+ getSummary(): {
60
+ totalRepos: number;
61
+ totalEntities: number;
62
+ entitiesByType: Record<string, number>;
63
+ entitiesByRepo: Record<string, number>;
64
+ };
65
+ /**
66
+ * Get repository names
67
+ */
68
+ getRepoNames(): string[];
69
+ }
@@ -0,0 +1,211 @@
1
+ /**
2
+ * Agent Orchestrator
3
+ *
4
+ * Manages the Pi-Mono agent instance and coordinates with workspace managers.
5
+ * Loads skills, handles system prompts, and manages conversation flow.
6
+ */
7
+ import { readFileSync, existsSync, readdirSync } from 'fs';
8
+ import { join, dirname } from 'path';
9
+ import { fileURLToPath } from 'url';
10
+ const __filename = fileURLToPath(import.meta.url);
11
+ const __dirname = dirname(__filename);
12
+ import { getModel } from '@mariozechner/pi-ai';
13
+ import { Agent } from '@mariozechner/pi-agent-core';
14
+ import { WorkspaceManager } from '../core/workspace-manager.js';
15
+ import { createGraphTools } from './tools/graph-tools.js';
16
+ export class AgentOrchestrator {
17
+ workspacePath;
18
+ workspaceManager;
19
+ agent;
20
+ config;
21
+ gitUser;
22
+ skillsPath;
23
+ constructor(config) {
24
+ this.workspacePath = config.workspacePath;
25
+ this.config = config.workspaceConfig;
26
+ this.gitUser = config.gitUser;
27
+ this.skillsPath = config.skillsPath || join(this.workspacePath, 'skills');
28
+ // Initialize workspace manager
29
+ const orchestratorUser = { ...this.gitUser, role: 'admin' };
30
+ this.workspaceManager = new WorkspaceManager(this.workspacePath, this.config, this.gitUser, orchestratorUser);
31
+ // Initialize Pi-Mono agent
32
+ this.agent = this.createAgent();
33
+ }
34
+ /**
35
+ * Create Pi-Mono agent with tools and system prompt
36
+ */
37
+ createAgent() {
38
+ // Get model from config
39
+ const provider = this.config.model_provider || 'anthropic';
40
+ const modelId = this.config.model_id || 'claude-sonnet-4-5-20250929';
41
+ const apiKey = this.config.api_key || process.env.ANTHROPIC_API_KEY || '';
42
+ if (!apiKey) {
43
+ throw new Error('API key not found in config or environment');
44
+ }
45
+ const model = getModel(provider, modelId);
46
+ // Load system prompt
47
+ const systemPrompt = this.loadSystemPrompt();
48
+ // Load tools
49
+ const tools = this.loadTools();
50
+ // Create agent with API key getter
51
+ const agent = new Agent({
52
+ getApiKey: () => apiKey,
53
+ });
54
+ // Set model, system prompt, and tools
55
+ agent.setModel(model);
56
+ agent.setSystemPrompt(systemPrompt);
57
+ agent.setTools(tools);
58
+ return agent;
59
+ }
60
+ /**
61
+ * Load system prompt from file
62
+ */
63
+ loadSystemPrompt() {
64
+ const promptPath = join(__dirname, 'prompts', 'system.md');
65
+ if (!existsSync(promptPath)) {
66
+ // Fallback to basic prompt
67
+ return this.getDefaultSystemPrompt();
68
+ }
69
+ return readFileSync(promptPath, 'utf-8');
70
+ }
71
+ /**
72
+ * Get default system prompt
73
+ */
74
+ getDefaultSystemPrompt() {
75
+ const workspaceSummary = this.workspaceManager.getSummary();
76
+ const repoList = this.workspaceManager
77
+ .getAllRepoConfigs()
78
+ .map(r => ` - ${r.name} (${r.type}): ${r.description}`)
79
+ .join('\n');
80
+ return `# Studiograph AI Assistant
81
+
82
+ You are Studiograph, an AI assistant helping creative teams manage their knowledge graphs.
83
+
84
+ ## Workspace Summary
85
+
86
+ **Team:** ${this.config.team_name}
87
+ **Repositories:** ${workspaceSummary.totalRepos}
88
+ **Total Entities:** ${workspaceSummary.totalEntities}
89
+
90
+ **Available Repositories:**
91
+ ${repoList}
92
+
93
+ ## Your Capabilities
94
+
95
+ You can help with:
96
+ - Creating and managing entities (projects, clients, decisions, references, etc.)
97
+ - Searching across repositories
98
+ - Validating wikilinks and relationships
99
+ - Uploading and managing assets
100
+ - Generating insights from the knowledge graph
101
+
102
+ ## Guidelines
103
+
104
+ - Always ask clarifying questions before creating entities
105
+ - Validate wikilinks to ensure data integrity
106
+ - Suggest related entities based on context
107
+ - Be proactive in maintaining the knowledge graph
108
+ - Use the tools available to you effectively
109
+
110
+ ## Available Tools
111
+
112
+ You have access to graph management tools that allow you to:
113
+ - Create, read, update, and delete entities
114
+ - Search and filter entities
115
+ - Manage wikilinks and relationships
116
+ - Upload and manage assets
117
+
118
+ Use these tools to help users build and navigate their knowledge graph.
119
+ `;
120
+ }
121
+ /**
122
+ * Load tools from skills directory
123
+ */
124
+ loadTools() {
125
+ const tools = [];
126
+ // Load built-in graph tools
127
+ const graphTools = createGraphTools(this.workspaceManager, this.gitUser);
128
+ tools.push(...graphTools);
129
+ // Load custom skills from skills directory
130
+ if (existsSync(this.skillsPath)) {
131
+ try {
132
+ const skillFiles = readdirSync(this.skillsPath).filter(f => f.endsWith('.js'));
133
+ for (const skillFile of skillFiles) {
134
+ try {
135
+ const skillPath = join(this.skillsPath, skillFile);
136
+ const skill = require(skillPath);
137
+ if (skill.default && typeof skill.default === 'object') {
138
+ tools.push(skill.default);
139
+ }
140
+ }
141
+ catch (error) {
142
+ console.warn(`Failed to load skill ${skillFile}:`, error);
143
+ }
144
+ }
145
+ }
146
+ catch (error) {
147
+ console.warn('Failed to load skills:', error);
148
+ }
149
+ }
150
+ return tools;
151
+ }
152
+ /**
153
+ * Send a message to the agent
154
+ */
155
+ async chat(userMessage) {
156
+ return new Promise((resolve, reject) => {
157
+ let content = '';
158
+ const toolCalls = [];
159
+ // Subscribe to agent events
160
+ const unsubscribe = this.agent.subscribe((event) => {
161
+ if (event.type === 'message_update') {
162
+ const msgEvent = event.assistantMessageEvent;
163
+ if (msgEvent.type === 'text_delta') {
164
+ content += msgEvent.delta;
165
+ }
166
+ }
167
+ else if (event.type === 'message_end') {
168
+ // Extract tool calls from message content
169
+ const msg = event.message;
170
+ if (msg.role === 'assistant') {
171
+ for (const block of msg.content) {
172
+ if (block.type === 'toolCall') {
173
+ toolCalls.push({
174
+ tool: block.name,
175
+ input: block.input,
176
+ output: null, // Will be populated by tool execution
177
+ });
178
+ }
179
+ }
180
+ }
181
+ unsubscribe();
182
+ resolve({ content, toolCalls });
183
+ }
184
+ });
185
+ // Send message and handle errors
186
+ this.agent.prompt(userMessage).catch((error) => {
187
+ unsubscribe();
188
+ reject(error);
189
+ });
190
+ });
191
+ }
192
+ /**
193
+ * Get workspace manager (for tools)
194
+ */
195
+ getWorkspaceManager() {
196
+ return this.workspaceManager;
197
+ }
198
+ /**
199
+ * Get workspace summary
200
+ */
201
+ getSummary() {
202
+ return this.workspaceManager.getSummary();
203
+ }
204
+ /**
205
+ * Get repository names
206
+ */
207
+ getRepoNames() {
208
+ return this.workspaceManager.getRepoNames();
209
+ }
210
+ }
211
+ //# sourceMappingURL=orchestrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/agent/orchestrator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Graph Management Tools for Pi-Mono Agent
3
+ *
4
+ * These tools allow the agent to interact with the knowledge graph:
5
+ * - Create, read, update, delete entities
6
+ * - Search and filter
7
+ * - Manage wikilinks
8
+ * - Upload assets
9
+ */
10
+ import { WorkspaceManager } from '../../core/workspace-manager.js';
11
+ /**
12
+ * Create graph tools for the agent
13
+ */
14
+ export declare function createGraphTools(workspaceManager: WorkspaceManager, gitUser: {
15
+ id: string;
16
+ name: string;
17
+ email: string;
18
+ }): {
19
+ name: string;
20
+ label: string;
21
+ description: string;
22
+ parameters: import("@sinclair/typebox").TObject<{}>;
23
+ execute: (toolCallId: string, params: any) => Promise<{
24
+ content: {
25
+ type: "text";
26
+ text: string;
27
+ }[];
28
+ details: any;
29
+ }>;
30
+ }[];