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.
- package/README.md +18 -0
- package/dist/agent/orchestrator.d.ts +69 -0
- package/dist/agent/orchestrator.js +211 -0
- package/dist/agent/orchestrator.js.map +1 -0
- package/dist/agent/tools/graph-tools.d.ts +30 -0
- package/dist/agent/tools/graph-tools.js +536 -0
- package/dist/agent/tools/graph-tools.js.map +1 -0
- package/dist/auth/github.d.ts +53 -0
- package/dist/auth/github.js +180 -0
- package/dist/auth/github.js.map +1 -0
- package/dist/cli/commands/auth.d.ts +10 -0
- package/dist/cli/commands/auth.js +63 -0
- package/dist/cli/commands/auth.js.map +1 -0
- package/dist/cli/commands/init.d.ts +7 -0
- package/dist/cli/commands/init.js +299 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/join.d.ts +14 -0
- package/dist/cli/commands/join.js +230 -0
- package/dist/cli/commands/join.js.map +1 -0
- package/dist/cli/commands/members.d.ts +11 -0
- package/dist/cli/commands/members.js +230 -0
- package/dist/cli/commands/members.js.map +1 -0
- package/dist/cli/commands/serve.d.ts +17 -0
- package/dist/cli/commands/serve.js +90 -0
- package/dist/cli/commands/serve.js.map +1 -0
- package/dist/cli/commands/start.d.ts +7 -0
- package/dist/cli/commands/start.js +381 -0
- package/dist/cli/commands/start.js.map +1 -0
- package/dist/cli/commands/sync.d.ts +10 -0
- package/dist/cli/commands/sync.js +121 -0
- package/dist/cli/commands/sync.js.map +1 -0
- package/dist/cli/index.d.ts +7 -0
- package/dist/cli/index.js +31 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/core/graph.d.ts +169 -0
- package/dist/core/graph.js +558 -0
- package/dist/core/graph.js.map +1 -0
- package/dist/core/types.d.ts +216 -0
- package/dist/core/types.js +71 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/user-config.d.ts +31 -0
- package/dist/core/user-config.js +50 -0
- package/dist/core/user-config.js.map +1 -0
- package/dist/core/validation.d.ts +2371 -0
- package/dist/core/validation.js +432 -0
- package/dist/core/validation.js.map +1 -0
- package/dist/core/workspace-manager.d.ts +104 -0
- package/dist/core/workspace-manager.js +432 -0
- package/dist/core/workspace-manager.js.map +1 -0
- package/dist/core/workspace.d.ts +103 -0
- package/dist/core/workspace.js +306 -0
- package/dist/core/workspace.js.map +1 -0
- package/dist/server/index.d.ts +25 -0
- package/dist/server/index.js +84 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/plugin-loader.d.ts +31 -0
- package/dist/server/plugin-loader.js +81 -0
- package/dist/server/plugin-loader.js.map +1 -0
- package/dist/server/routes/chat.d.ts +11 -0
- package/dist/server/routes/chat.js +66 -0
- package/dist/server/routes/chat.js.map +1 -0
- package/dist/server/routes/graph-api.d.ts +9 -0
- package/dist/server/routes/graph-api.js +72 -0
- package/dist/server/routes/graph-api.js.map +1 -0
- package/dist/server/routes/webhook.d.ts +14 -0
- package/dist/server/routes/webhook.js +69 -0
- package/dist/server/routes/webhook.js.map +1 -0
- package/dist/services/assets/base.d.ts +69 -0
- package/dist/services/assets/base.js +113 -0
- package/dist/services/assets/base.js.map +1 -0
- package/dist/services/assets/index.d.ts +36 -0
- package/dist/services/assets/index.js +89 -0
- package/dist/services/assets/index.js.map +1 -0
- package/dist/services/assets/local.d.ts +42 -0
- package/dist/services/assets/local.js +161 -0
- package/dist/services/assets/local.js.map +1 -0
- package/dist/services/assets/r2.d.ts +36 -0
- package/dist/services/assets/r2.js +182 -0
- package/dist/services/assets/r2.js.map +1 -0
- package/dist/services/csv-service.d.ts +36 -0
- package/dist/services/csv-service.js +143 -0
- package/dist/services/csv-service.js.map +1 -0
- package/dist/services/git.d.ts +99 -0
- package/dist/services/git.js +306 -0
- package/dist/services/git.js.map +1 -0
- package/dist/services/github-provisioner.d.ts +30 -0
- package/dist/services/github-provisioner.js +89 -0
- package/dist/services/github-provisioner.js.map +1 -0
- package/dist/services/markdown.d.ts +82 -0
- package/dist/services/markdown.js +338 -0
- package/dist/services/markdown.js.map +1 -0
- package/dist/services/memory-service.d.ts +74 -0
- package/dist/services/memory-service.js +183 -0
- package/dist/services/memory-service.js.map +1 -0
- package/dist/utils/git.d.ts +28 -0
- package/dist/utils/git.js +55 -0
- package/dist/utils/git.js.map +1 -0
- package/dist/utils/preflight.d.ts +44 -0
- package/dist/utils/preflight.js +95 -0
- package/dist/utils/preflight.js.map +1 -0
- package/package.json +55 -0
|
@@ -0,0 +1,536 @@
|
|
|
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 { Type as T } from '@sinclair/typebox';
|
|
11
|
+
import { ENTITY_SCHEMAS } from '../../core/validation.js';
|
|
12
|
+
/**
|
|
13
|
+
* Helper to wrap tool results in AgentToolResult format
|
|
14
|
+
*/
|
|
15
|
+
function wrapToolResult(result) {
|
|
16
|
+
const text = JSON.stringify(result, null, 2);
|
|
17
|
+
return {
|
|
18
|
+
content: [{ type: 'text', text }],
|
|
19
|
+
details: result,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Create graph tools for the agent
|
|
24
|
+
*/
|
|
25
|
+
export function createGraphTools(workspaceManager, gitUser) {
|
|
26
|
+
return [
|
|
27
|
+
// Create entity
|
|
28
|
+
{
|
|
29
|
+
name: 'create_entity',
|
|
30
|
+
label: 'Create Entity',
|
|
31
|
+
description: 'Create a new entity in a repository. Always validate required fields before calling.',
|
|
32
|
+
parameters: T.Object({
|
|
33
|
+
repo: T.String({ description: 'Repository name' }),
|
|
34
|
+
entityType: T.String({ description: 'Entity type (project, client, decision, etc.)' }),
|
|
35
|
+
entityId: T.String({ description: 'Unique entity ID in kebab-case' }),
|
|
36
|
+
data: T.Object({}, { description: 'Entity data (YAML frontmatter)', additionalProperties: true }),
|
|
37
|
+
content: T.Optional(T.String({ description: 'Markdown content (optional)' })),
|
|
38
|
+
commitMessage: T.Optional(T.String({ description: 'Custom commit message (optional)' })),
|
|
39
|
+
}),
|
|
40
|
+
execute: async (toolCallId, params) => {
|
|
41
|
+
try {
|
|
42
|
+
const graph = workspaceManager.getGraph(params.repo);
|
|
43
|
+
// Add timestamps and user info
|
|
44
|
+
const now = new Date().toISOString();
|
|
45
|
+
const dataWithMeta = {
|
|
46
|
+
...params.data,
|
|
47
|
+
entity_id: params.entityId,
|
|
48
|
+
created_at: now,
|
|
49
|
+
updated_at: now,
|
|
50
|
+
created_by: gitUser.id,
|
|
51
|
+
updated_by: gitUser.id,
|
|
52
|
+
};
|
|
53
|
+
const entity = await graph.create({
|
|
54
|
+
entityType: params.entityType,
|
|
55
|
+
entityId: params.entityId,
|
|
56
|
+
data: dataWithMeta,
|
|
57
|
+
content: params.content || '',
|
|
58
|
+
commitMessage: params.commitMessage,
|
|
59
|
+
});
|
|
60
|
+
return wrapToolResult({
|
|
61
|
+
success: true,
|
|
62
|
+
entity: {
|
|
63
|
+
id: entity.id,
|
|
64
|
+
type: entity.entityType,
|
|
65
|
+
path: entity.path,
|
|
66
|
+
data: entity.data,
|
|
67
|
+
},
|
|
68
|
+
message: `Created ${params.entityType}: ${params.entityId}`,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
return wrapToolResult({
|
|
73
|
+
success: false,
|
|
74
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
// Get entity
|
|
80
|
+
{
|
|
81
|
+
name: 'get_entity',
|
|
82
|
+
label: 'Get Entity',
|
|
83
|
+
description: 'Retrieve an entity by type and ID',
|
|
84
|
+
parameters: T.Object({
|
|
85
|
+
repo: T.String({ description: 'Repository name' }),
|
|
86
|
+
entityType: T.String({ description: 'Entity type' }),
|
|
87
|
+
entityId: T.String({ description: 'Entity ID' }),
|
|
88
|
+
}),
|
|
89
|
+
execute: async (toolCallId, params) => {
|
|
90
|
+
try {
|
|
91
|
+
const graph = workspaceManager.getGraph(params.repo);
|
|
92
|
+
const entity = graph.get(params.entityType, params.entityId);
|
|
93
|
+
return wrapToolResult({
|
|
94
|
+
success: true,
|
|
95
|
+
entity: {
|
|
96
|
+
id: entity.id,
|
|
97
|
+
type: entity.entityType,
|
|
98
|
+
path: entity.path,
|
|
99
|
+
data: entity.data,
|
|
100
|
+
content: entity.document.content,
|
|
101
|
+
wikilinks: entity.document.wikilinks,
|
|
102
|
+
},
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
return wrapToolResult({
|
|
107
|
+
success: false,
|
|
108
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
},
|
|
113
|
+
// Update entity
|
|
114
|
+
{
|
|
115
|
+
name: 'update_entity',
|
|
116
|
+
label: 'Update Entity',
|
|
117
|
+
description: 'Update an existing entity',
|
|
118
|
+
parameters: T.Object({
|
|
119
|
+
repo: T.String({ description: 'Repository name' }),
|
|
120
|
+
entityType: T.String({ description: 'Entity type' }),
|
|
121
|
+
entityId: T.String({ description: 'Entity ID' }),
|
|
122
|
+
data: T.Optional(T.Object({}, { description: 'Updated data fields', additionalProperties: true })),
|
|
123
|
+
content: T.Optional(T.String({ description: 'Updated markdown content' })),
|
|
124
|
+
commitMessage: T.Optional(T.String({ description: 'Custom commit message' })),
|
|
125
|
+
}),
|
|
126
|
+
execute: async (toolCallId, params) => {
|
|
127
|
+
try {
|
|
128
|
+
const graph = workspaceManager.getGraph(params.repo);
|
|
129
|
+
// Add update metadata
|
|
130
|
+
const dataWithMeta = params.data
|
|
131
|
+
? {
|
|
132
|
+
...params.data,
|
|
133
|
+
updated_at: new Date().toISOString(),
|
|
134
|
+
updated_by: gitUser.id,
|
|
135
|
+
}
|
|
136
|
+
: undefined;
|
|
137
|
+
const entity = await graph.update({
|
|
138
|
+
entityType: params.entityType,
|
|
139
|
+
entityId: params.entityId,
|
|
140
|
+
data: dataWithMeta,
|
|
141
|
+
content: params.content,
|
|
142
|
+
commitMessage: params.commitMessage,
|
|
143
|
+
});
|
|
144
|
+
return wrapToolResult({
|
|
145
|
+
success: true,
|
|
146
|
+
entity: {
|
|
147
|
+
id: entity.id,
|
|
148
|
+
type: entity.entityType,
|
|
149
|
+
data: entity.data,
|
|
150
|
+
},
|
|
151
|
+
message: `Updated ${params.entityType}: ${params.entityId}`,
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
return wrapToolResult({
|
|
156
|
+
success: false,
|
|
157
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
},
|
|
161
|
+
},
|
|
162
|
+
// Delete entity
|
|
163
|
+
{
|
|
164
|
+
name: 'delete_entity',
|
|
165
|
+
label: 'Delete Entity',
|
|
166
|
+
description: 'Delete an entity. Use with caution!',
|
|
167
|
+
parameters: T.Object({
|
|
168
|
+
repo: T.String({ description: 'Repository name' }),
|
|
169
|
+
entityType: T.String({ description: 'Entity type' }),
|
|
170
|
+
entityId: T.String({ description: 'Entity ID' }),
|
|
171
|
+
commitMessage: T.Optional(T.String({ description: 'Custom commit message' })),
|
|
172
|
+
}),
|
|
173
|
+
execute: async (toolCallId, params) => {
|
|
174
|
+
try {
|
|
175
|
+
const graph = workspaceManager.getGraph(params.repo);
|
|
176
|
+
await graph.delete(params.entityType, params.entityId, params.commitMessage);
|
|
177
|
+
return wrapToolResult({
|
|
178
|
+
success: true,
|
|
179
|
+
message: `Deleted ${params.entityType}: ${params.entityId}`,
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
catch (error) {
|
|
183
|
+
return wrapToolResult({
|
|
184
|
+
success: false,
|
|
185
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
},
|
|
189
|
+
},
|
|
190
|
+
// Search entities
|
|
191
|
+
{
|
|
192
|
+
name: 'search_entities',
|
|
193
|
+
label: 'Search Entities',
|
|
194
|
+
description: 'Search for entities across repositories with filters',
|
|
195
|
+
parameters: T.Object({
|
|
196
|
+
query: T.Optional(T.String({ description: 'Search query (full-text)' })),
|
|
197
|
+
entityType: T.Optional(T.String({ description: 'Filter by entity type' })),
|
|
198
|
+
repoNames: T.Optional(T.Array(T.String(), { description: 'Limit to specific repos' })),
|
|
199
|
+
visibility: T.Optional(T.Array(T.String(), { description: 'Filter by visibility (public, team, admin, restricted)' })),
|
|
200
|
+
tags: T.Optional(T.Array(T.String(), { description: 'Filter by tags' })),
|
|
201
|
+
dateRange: T.Optional(T.Object({
|
|
202
|
+
from: T.String({ description: 'Start date (ISO 8601)' }),
|
|
203
|
+
to: T.String({ description: 'End date (ISO 8601)' }),
|
|
204
|
+
})),
|
|
205
|
+
sortBy: T.Optional(T.String({ description: 'Sort by: created_at, updated_at, relevance' })),
|
|
206
|
+
limit: T.Optional(T.Number({ description: 'Max results (default 10)' })),
|
|
207
|
+
}),
|
|
208
|
+
execute: async (toolCallId, params) => {
|
|
209
|
+
try {
|
|
210
|
+
const results = workspaceManager.search({
|
|
211
|
+
query: params.query,
|
|
212
|
+
entityType: params.entityType,
|
|
213
|
+
repoNames: params.repoNames,
|
|
214
|
+
visibility: params.visibility,
|
|
215
|
+
tags: params.tags,
|
|
216
|
+
dateRange: params.dateRange,
|
|
217
|
+
sortBy: params.sortBy,
|
|
218
|
+
limit: params.limit || 10,
|
|
219
|
+
});
|
|
220
|
+
return wrapToolResult({
|
|
221
|
+
success: true,
|
|
222
|
+
count: results.length,
|
|
223
|
+
results: results.map(r => ({
|
|
224
|
+
repo: r.repoName,
|
|
225
|
+
id: r.id,
|
|
226
|
+
type: r.entityType,
|
|
227
|
+
data: r.data,
|
|
228
|
+
})),
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
catch (error) {
|
|
232
|
+
return wrapToolResult({
|
|
233
|
+
success: false,
|
|
234
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
},
|
|
238
|
+
},
|
|
239
|
+
// List entities
|
|
240
|
+
{
|
|
241
|
+
name: 'list_entities',
|
|
242
|
+
label: 'List Entities',
|
|
243
|
+
description: 'List all entities of a given type (or all types)',
|
|
244
|
+
parameters: T.Object({
|
|
245
|
+
entityType: T.Optional(T.String({ description: 'Entity type to list (omit for all)' })),
|
|
246
|
+
limit: T.Optional(T.Number({ description: 'Max results' })),
|
|
247
|
+
}),
|
|
248
|
+
execute: async (toolCallId, params) => {
|
|
249
|
+
try {
|
|
250
|
+
const results = workspaceManager.list(params.entityType, params.limit);
|
|
251
|
+
return wrapToolResult({
|
|
252
|
+
success: true,
|
|
253
|
+
count: results.length,
|
|
254
|
+
results: results.map(r => ({
|
|
255
|
+
repo: r.repoName,
|
|
256
|
+
id: r.id,
|
|
257
|
+
type: r.entityType,
|
|
258
|
+
data: r.data,
|
|
259
|
+
})),
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
catch (error) {
|
|
263
|
+
return wrapToolResult({
|
|
264
|
+
success: false,
|
|
265
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
},
|
|
269
|
+
},
|
|
270
|
+
// Get related entities
|
|
271
|
+
{
|
|
272
|
+
name: 'get_related',
|
|
273
|
+
label: 'Get Related Entities',
|
|
274
|
+
description: 'Get entities related to a given entity via wikilinks (cross-repo supported)',
|
|
275
|
+
parameters: T.Object({
|
|
276
|
+
repo: T.String({ description: 'Repository name' }),
|
|
277
|
+
entityType: T.String({ description: 'Entity type' }),
|
|
278
|
+
entityId: T.String({ description: 'Entity ID' }),
|
|
279
|
+
}),
|
|
280
|
+
execute: async (toolCallId, params) => {
|
|
281
|
+
try {
|
|
282
|
+
const related = workspaceManager.getRelated(params.repo, params.entityType, params.entityId);
|
|
283
|
+
return wrapToolResult({
|
|
284
|
+
success: true,
|
|
285
|
+
count: related.length,
|
|
286
|
+
related: related.map(r => ({
|
|
287
|
+
repo: r.repoName,
|
|
288
|
+
id: r.id,
|
|
289
|
+
type: r.entityType,
|
|
290
|
+
data: r.data,
|
|
291
|
+
})),
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
catch (error) {
|
|
295
|
+
return wrapToolResult({
|
|
296
|
+
success: false,
|
|
297
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
},
|
|
301
|
+
},
|
|
302
|
+
// Get backlinks
|
|
303
|
+
{
|
|
304
|
+
name: 'get_backlinks',
|
|
305
|
+
label: 'Get Backlinks',
|
|
306
|
+
description: 'Get entities that link to a given entity (cross-repo supported)',
|
|
307
|
+
parameters: T.Object({
|
|
308
|
+
repo: T.String({ description: 'Repository name' }),
|
|
309
|
+
entityType: T.String({ description: 'Entity type' }),
|
|
310
|
+
entityId: T.String({ description: 'Entity ID' }),
|
|
311
|
+
}),
|
|
312
|
+
execute: async (toolCallId, params) => {
|
|
313
|
+
try {
|
|
314
|
+
const backlinks = workspaceManager.getBacklinks(params.repo, params.entityType, params.entityId);
|
|
315
|
+
return wrapToolResult({
|
|
316
|
+
success: true,
|
|
317
|
+
count: backlinks.length,
|
|
318
|
+
backlinks: backlinks.map(r => ({
|
|
319
|
+
repo: r.repoName,
|
|
320
|
+
id: r.id,
|
|
321
|
+
type: r.entityType,
|
|
322
|
+
data: r.data,
|
|
323
|
+
})),
|
|
324
|
+
});
|
|
325
|
+
}
|
|
326
|
+
catch (error) {
|
|
327
|
+
return wrapToolResult({
|
|
328
|
+
success: false,
|
|
329
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
330
|
+
});
|
|
331
|
+
}
|
|
332
|
+
},
|
|
333
|
+
},
|
|
334
|
+
// Validate wikilinks
|
|
335
|
+
{
|
|
336
|
+
name: 'validate_wikilinks',
|
|
337
|
+
label: 'Validate Wikilinks',
|
|
338
|
+
description: 'Validate all wikilinks in an entity (checks same repo and cross-repo)',
|
|
339
|
+
parameters: T.Object({
|
|
340
|
+
repo: T.String({ description: 'Repository name' }),
|
|
341
|
+
entityType: T.String({ description: 'Entity type' }),
|
|
342
|
+
entityId: T.String({ description: 'Entity ID' }),
|
|
343
|
+
}),
|
|
344
|
+
execute: async (toolCallId, params) => {
|
|
345
|
+
try {
|
|
346
|
+
const validation = workspaceManager.validateWikilinks(params.repo, params.entityType, params.entityId);
|
|
347
|
+
return wrapToolResult({
|
|
348
|
+
success: true,
|
|
349
|
+
valid: validation.valid,
|
|
350
|
+
crossRepo: validation.crossRepo,
|
|
351
|
+
broken: validation.broken,
|
|
352
|
+
summary: {
|
|
353
|
+
total: validation.valid.length + validation.crossRepo.length + validation.broken.length,
|
|
354
|
+
valid: validation.valid.length,
|
|
355
|
+
crossRepo: validation.crossRepo.length,
|
|
356
|
+
broken: validation.broken.length,
|
|
357
|
+
},
|
|
358
|
+
});
|
|
359
|
+
}
|
|
360
|
+
catch (error) {
|
|
361
|
+
return wrapToolResult({
|
|
362
|
+
success: false,
|
|
363
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
364
|
+
});
|
|
365
|
+
}
|
|
366
|
+
},
|
|
367
|
+
},
|
|
368
|
+
// Get workspace summary
|
|
369
|
+
{
|
|
370
|
+
name: 'get_workspace_summary',
|
|
371
|
+
label: 'Get Workspace Summary',
|
|
372
|
+
description: 'Get summary statistics for the workspace',
|
|
373
|
+
parameters: T.Object({}),
|
|
374
|
+
execute: async (toolCallId, params) => {
|
|
375
|
+
try {
|
|
376
|
+
const summary = workspaceManager.getSummary();
|
|
377
|
+
return wrapToolResult({
|
|
378
|
+
success: true,
|
|
379
|
+
summary: {
|
|
380
|
+
totalRepos: summary.totalRepos,
|
|
381
|
+
totalEntities: summary.totalEntities,
|
|
382
|
+
entitiesByType: summary.entitiesByType,
|
|
383
|
+
entitiesByRepo: summary.entitiesByRepo,
|
|
384
|
+
},
|
|
385
|
+
});
|
|
386
|
+
}
|
|
387
|
+
catch (error) {
|
|
388
|
+
return wrapToolResult({
|
|
389
|
+
success: false,
|
|
390
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
391
|
+
});
|
|
392
|
+
}
|
|
393
|
+
},
|
|
394
|
+
},
|
|
395
|
+
// List repositories
|
|
396
|
+
{
|
|
397
|
+
name: 'list_repos',
|
|
398
|
+
label: 'List Repositories',
|
|
399
|
+
description: 'List all available repositories in the workspace',
|
|
400
|
+
parameters: T.Object({}),
|
|
401
|
+
execute: async (toolCallId, params) => {
|
|
402
|
+
try {
|
|
403
|
+
const repos = workspaceManager.getAllRepoConfigs();
|
|
404
|
+
return wrapToolResult({
|
|
405
|
+
success: true,
|
|
406
|
+
count: repos.length,
|
|
407
|
+
repos: repos.map(r => ({
|
|
408
|
+
name: r.name,
|
|
409
|
+
type: r.type,
|
|
410
|
+
description: r.description,
|
|
411
|
+
path: r.path,
|
|
412
|
+
})),
|
|
413
|
+
});
|
|
414
|
+
}
|
|
415
|
+
catch (error) {
|
|
416
|
+
return wrapToolResult({
|
|
417
|
+
success: false,
|
|
418
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
419
|
+
});
|
|
420
|
+
}
|
|
421
|
+
},
|
|
422
|
+
},
|
|
423
|
+
// Query dataset rows
|
|
424
|
+
{
|
|
425
|
+
name: 'query_dataset',
|
|
426
|
+
label: 'Query Dataset',
|
|
427
|
+
description: 'Query rows from a dataset entity with optional filtering',
|
|
428
|
+
parameters: T.Object({
|
|
429
|
+
repo: T.String({ description: 'Repository name' }),
|
|
430
|
+
entityId: T.String({ description: 'Dataset entity ID' }),
|
|
431
|
+
filter: T.Optional(T.Object({}, { description: 'Filter conditions (column: value or { gte, lte, contains })', additionalProperties: true })),
|
|
432
|
+
limit: T.Optional(T.Number({ description: 'Max rows to return' })),
|
|
433
|
+
}),
|
|
434
|
+
execute: async (toolCallId, params) => {
|
|
435
|
+
try {
|
|
436
|
+
const graph = workspaceManager.getGraph(params.repo);
|
|
437
|
+
const entity = graph.get('dataset', params.entityId);
|
|
438
|
+
const schema = entity.data.schema;
|
|
439
|
+
let rows = graph.getDatasetRows(params.entityId, params.filter);
|
|
440
|
+
const total = rows.length;
|
|
441
|
+
if (params.limit && params.limit > 0) {
|
|
442
|
+
rows = rows.slice(0, params.limit);
|
|
443
|
+
}
|
|
444
|
+
return wrapToolResult({
|
|
445
|
+
success: true,
|
|
446
|
+
rows,
|
|
447
|
+
total,
|
|
448
|
+
schema,
|
|
449
|
+
});
|
|
450
|
+
}
|
|
451
|
+
catch (error) {
|
|
452
|
+
return wrapToolResult({
|
|
453
|
+
success: false,
|
|
454
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
455
|
+
});
|
|
456
|
+
}
|
|
457
|
+
},
|
|
458
|
+
},
|
|
459
|
+
// Append rows to dataset
|
|
460
|
+
{
|
|
461
|
+
name: 'append_rows',
|
|
462
|
+
label: 'Append Rows',
|
|
463
|
+
description: 'Append rows to a dataset entity',
|
|
464
|
+
parameters: T.Object({
|
|
465
|
+
repo: T.String({ description: 'Repository name' }),
|
|
466
|
+
entityId: T.String({ description: 'Dataset entity ID' }),
|
|
467
|
+
rows: T.Array(T.Object({}, { additionalProperties: true }), { description: 'Rows to append' }),
|
|
468
|
+
commitMessage: T.Optional(T.String({ description: 'Custom commit message' })),
|
|
469
|
+
}),
|
|
470
|
+
execute: async (toolCallId, params) => {
|
|
471
|
+
try {
|
|
472
|
+
const graph = workspaceManager.getGraph(params.repo);
|
|
473
|
+
// Get current row count before appending
|
|
474
|
+
const beforeRows = graph.getDatasetRows(params.entityId);
|
|
475
|
+
await graph.appendDatasetRows(params.entityId, params.rows, params.commitMessage);
|
|
476
|
+
const afterRows = graph.getDatasetRows(params.entityId);
|
|
477
|
+
return wrapToolResult({
|
|
478
|
+
success: true,
|
|
479
|
+
rowsAdded: afterRows.length - beforeRows.length,
|
|
480
|
+
totalRows: afterRows.length,
|
|
481
|
+
message: `Appended ${afterRows.length - beforeRows.length} row(s) to dataset: ${params.entityId}`,
|
|
482
|
+
});
|
|
483
|
+
}
|
|
484
|
+
catch (error) {
|
|
485
|
+
return wrapToolResult({
|
|
486
|
+
success: false,
|
|
487
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
488
|
+
});
|
|
489
|
+
}
|
|
490
|
+
},
|
|
491
|
+
},
|
|
492
|
+
// Get entity schema
|
|
493
|
+
{
|
|
494
|
+
name: 'get_entity_schema',
|
|
495
|
+
label: 'Get Entity Schema',
|
|
496
|
+
description: 'Get the schema definition for an entity type (useful for understanding required fields)',
|
|
497
|
+
parameters: T.Object({
|
|
498
|
+
entityType: T.String({ description: 'Entity type' }),
|
|
499
|
+
}),
|
|
500
|
+
execute: async (toolCallId, params) => {
|
|
501
|
+
try {
|
|
502
|
+
const schema = ENTITY_SCHEMAS[params.entityType];
|
|
503
|
+
if (!schema) {
|
|
504
|
+
return wrapToolResult({
|
|
505
|
+
success: false,
|
|
506
|
+
error: `Unknown entity type: ${params.entityType}`,
|
|
507
|
+
});
|
|
508
|
+
}
|
|
509
|
+
// Extract schema shape (simplified)
|
|
510
|
+
const shape = schema.shape || {};
|
|
511
|
+
const fields = {};
|
|
512
|
+
for (const [key, value] of Object.entries(shape)) {
|
|
513
|
+
const field = value;
|
|
514
|
+
fields[key] = {
|
|
515
|
+
type: field._def.typeName || 'unknown',
|
|
516
|
+
optional: field.isOptional() || false,
|
|
517
|
+
description: field._def.description || '',
|
|
518
|
+
};
|
|
519
|
+
}
|
|
520
|
+
return wrapToolResult({
|
|
521
|
+
success: true,
|
|
522
|
+
entityType: params.entityType,
|
|
523
|
+
fields,
|
|
524
|
+
});
|
|
525
|
+
}
|
|
526
|
+
catch (error) {
|
|
527
|
+
return wrapToolResult({
|
|
528
|
+
success: false,
|
|
529
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
530
|
+
});
|
|
531
|
+
}
|
|
532
|
+
},
|
|
533
|
+
},
|
|
534
|
+
];
|
|
535
|
+
}
|
|
536
|
+
//# sourceMappingURL=graph-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph-tools.js","sourceRoot":"","sources":["../../../src/agent/tools/graph-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GitHub authentication for Studiograph
|
|
3
|
+
*
|
|
4
|
+
* Uses GitHub Device Flow — designed for CLI tools.
|
|
5
|
+
* No redirect URI or local HTTP server required.
|
|
6
|
+
* Token stored globally at ~/.studiograph/auth.json
|
|
7
|
+
*/
|
|
8
|
+
import { Octokit } from '@octokit/rest';
|
|
9
|
+
export declare const GITHUB_CLIENT_ID: string;
|
|
10
|
+
export interface GitHubUser {
|
|
11
|
+
login: string;
|
|
12
|
+
name: string;
|
|
13
|
+
email: string;
|
|
14
|
+
}
|
|
15
|
+
interface StoredAuth {
|
|
16
|
+
token: string;
|
|
17
|
+
user: GitHubUser;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Run GitHub Device Flow to get an access token.
|
|
21
|
+
* Displays a user_code and verification URL, polls until user completes auth.
|
|
22
|
+
*/
|
|
23
|
+
export declare function runDeviceFlow(): Promise<string>;
|
|
24
|
+
/**
|
|
25
|
+
* Store token and user info at ~/.studiograph/auth.json
|
|
26
|
+
*/
|
|
27
|
+
export declare function storeToken(token: string, user: GitHubUser): void;
|
|
28
|
+
/**
|
|
29
|
+
* Load stored token and user from ~/.studiograph/auth.json
|
|
30
|
+
* Returns null if not found or invalid.
|
|
31
|
+
*/
|
|
32
|
+
export declare function loadToken(): StoredAuth | null;
|
|
33
|
+
/**
|
|
34
|
+
* Remove stored token from ~/.studiograph/auth.json
|
|
35
|
+
*/
|
|
36
|
+
export declare function clearToken(): void;
|
|
37
|
+
/**
|
|
38
|
+
* Create an authenticated Octokit instance
|
|
39
|
+
*/
|
|
40
|
+
export declare function getAuthenticatedOctokit(token: string): Octokit;
|
|
41
|
+
/**
|
|
42
|
+
* Fetch the authenticated GitHub user's profile
|
|
43
|
+
*/
|
|
44
|
+
export declare function getGitHubUser(token: string): Promise<GitHubUser>;
|
|
45
|
+
/**
|
|
46
|
+
* Check if the authenticated user is a member of the given GitHub org
|
|
47
|
+
*/
|
|
48
|
+
export declare function verifyOrgMembership(octokit: Octokit, org: string): Promise<boolean>;
|
|
49
|
+
/**
|
|
50
|
+
* Get the names of teams the authenticated user belongs to within an org
|
|
51
|
+
*/
|
|
52
|
+
export declare function getUserOrgTeams(octokit: Octokit, org: string): Promise<string[]>;
|
|
53
|
+
export {};
|