studiograph 1.1.2 → 1.1.3
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/LICENSE +191 -0
- package/README.md +307 -10
- package/dist/agent/orchestrator.d.ts +17 -9
- package/dist/agent/orchestrator.js +95 -95
- package/dist/agent/orchestrator.js.map +1 -1
- package/dist/agent/prompts/system.md +168 -0
- package/dist/agent/skills/bundled/enrich-entities.md +124 -0
- package/dist/agent/skills/bundled/gather-context.md +46 -0
- package/dist/agent/skills/skill-loader.d.ts +48 -0
- package/dist/agent/skills/skill-loader.js +166 -0
- package/dist/agent/skills/skill-loader.js.map +1 -0
- package/dist/agent/tools/graph-tools.d.ts +20 -2
- package/dist/agent/tools/graph-tools.js +64 -8
- package/dist/agent/tools/graph-tools.js.map +1 -1
- package/dist/agent/tools/load-skill.d.ts +42 -0
- package/dist/agent/tools/load-skill.js +45 -0
- package/dist/agent/tools/load-skill.js.map +1 -0
- package/dist/agent/tools/tool-loader.d.ts +25 -0
- package/dist/agent/tools/tool-loader.js +73 -0
- package/dist/agent/tools/tool-loader.js.map +1 -0
- package/dist/cli/commands/app.d.ts +7 -0
- package/dist/cli/commands/app.js +167 -0
- package/dist/cli/commands/app.js.map +1 -0
- package/dist/cli/commands/config.d.ts +13 -0
- package/dist/cli/commands/config.js +276 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/connector.d.ts +33 -0
- package/dist/cli/commands/connector.js +170 -0
- package/dist/cli/commands/connector.js.map +1 -0
- package/dist/cli/commands/deploy.d.ts +11 -0
- package/dist/cli/commands/deploy.js +153 -0
- package/dist/cli/commands/deploy.js.map +1 -0
- package/dist/cli/commands/index.d.ts +15 -0
- package/dist/cli/commands/index.js +117 -0
- package/dist/cli/commands/index.js.map +1 -0
- package/dist/cli/commands/init.js +110 -28
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/join.js +67 -22
- package/dist/cli/commands/join.js.map +1 -1
- package/dist/cli/commands/lint.d.ts +8 -0
- package/dist/cli/commands/lint.js +70 -0
- package/dist/cli/commands/lint.js.map +1 -0
- package/dist/cli/commands/mcp.d.ts +27 -0
- package/dist/cli/commands/mcp.js +56 -0
- package/dist/cli/commands/mcp.js.map +1 -0
- package/dist/cli/commands/provision.d.ts +8 -0
- package/dist/cli/commands/provision.js +112 -0
- package/dist/cli/commands/provision.js.map +1 -0
- package/dist/cli/commands/r2.d.ts +2 -0
- package/dist/cli/commands/r2.js +87 -6
- package/dist/cli/commands/r2.js.map +1 -1
- package/dist/cli/commands/serve.js +47 -2
- package/dist/cli/commands/serve.js.map +1 -1
- package/dist/cli/commands/start.js +210 -71
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/commands/sync.js +4 -4
- package/dist/cli/commands/sync.js.map +1 -1
- package/dist/cli/commands/update.d.ts +8 -0
- package/dist/cli/commands/update.js +155 -0
- package/dist/cli/commands/update.js.map +1 -0
- package/dist/cli/index.js +83 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/scaffolding.d.ts +9 -0
- package/dist/cli/scaffolding.js +288 -0
- package/dist/cli/scaffolding.js.map +1 -0
- package/dist/core/graph.d.ts +12 -1
- package/dist/core/graph.js +147 -78
- package/dist/core/graph.js.map +1 -1
- package/dist/core/migration-runner.d.ts +39 -0
- package/dist/core/migration-runner.js +221 -0
- package/dist/core/migration-runner.js.map +1 -0
- package/dist/core/migration-types.d.ts +101 -0
- package/dist/core/migration-types.js +21 -0
- package/dist/core/migration-types.js.map +1 -0
- package/dist/core/migrations/20260219-formalize-memory-location.d.ts +2 -0
- package/dist/core/migrations/20260219-formalize-memory-location.js +35 -0
- package/dist/core/migrations/20260219-formalize-memory-location.js.map +1 -0
- package/dist/core/migrations/20260220-add-workspace-metadata.d.ts +12 -0
- package/dist/core/migrations/20260220-add-workspace-metadata.js +65 -0
- package/dist/core/migrations/20260220-add-workspace-metadata.js.map +1 -0
- package/dist/core/migrations/20260220-add-workspace-readme.d.ts +11 -0
- package/dist/core/migrations/20260220-add-workspace-readme.js +82 -0
- package/dist/core/migrations/20260220-add-workspace-readme.js.map +1 -0
- package/dist/core/migrations/20260220-migrate-yaml-to-json.d.ts +9 -0
- package/dist/core/migrations/20260220-migrate-yaml-to-json.js +64 -0
- package/dist/core/migrations/20260220-migrate-yaml-to-json.js.map +1 -0
- package/dist/core/migrations/index.d.ts +11 -0
- package/dist/core/migrations/index.js +23 -0
- package/dist/core/migrations/index.js.map +1 -0
- package/dist/core/schema-registry.d.ts +36 -0
- package/dist/core/schema-registry.js +161 -0
- package/dist/core/schema-registry.js.map +1 -0
- package/dist/core/types.d.ts +242 -0
- package/dist/core/types.js +21 -0
- package/dist/core/types.js.map +1 -1
- package/dist/core/user-config.d.ts +10 -0
- package/dist/core/user-config.js +8 -0
- package/dist/core/user-config.js.map +1 -1
- package/dist/core/validation.d.ts +973 -32
- package/dist/core/validation.js +163 -4
- package/dist/core/validation.js.map +1 -1
- package/dist/core/workspace-manager.d.ts +26 -2
- package/dist/core/workspace-manager.js +113 -15
- package/dist/core/workspace-manager.js.map +1 -1
- package/dist/core/workspace.d.ts +8 -7
- package/dist/core/workspace.js +25 -13
- package/dist/core/workspace.js.map +1 -1
- package/dist/mcp/connector-manager.d.ts +61 -0
- package/dist/mcp/connector-manager.js +178 -0
- package/dist/mcp/connector-manager.js.map +1 -0
- package/dist/mcp/connectors/definitions.d.ts +43 -0
- package/dist/mcp/connectors/definitions.js +140 -0
- package/dist/mcp/connectors/definitions.js.map +1 -0
- package/dist/mcp/server.d.ts +11 -0
- package/dist/mcp/server.js +28 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools.d.ts +14 -0
- package/dist/mcp/tools.js +172 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/server/index.js +17 -4
- package/dist/server/index.js.map +1 -1
- package/dist/server/plugin-loader.d.ts +8 -0
- package/dist/server/plugin-loader.js +14 -0
- package/dist/server/plugin-loader.js.map +1 -1
- package/dist/server/routes/graph-api.js +1 -1
- package/dist/server/routes/graph-api.js.map +1 -1
- package/dist/server/routes/webhook.js +33 -0
- package/dist/server/routes/webhook.js.map +1 -1
- package/dist/services/github-provisioner.d.ts +1 -0
- package/dist/services/github-provisioner.js +11 -0
- package/dist/services/github-provisioner.js.map +1 -1
- package/dist/services/lint-service.d.ts +27 -0
- package/dist/services/lint-service.js +76 -0
- package/dist/services/lint-service.js.map +1 -0
- package/dist/services/markdown.d.ts +9 -0
- package/dist/services/markdown.js +23 -2
- package/dist/services/markdown.js.map +1 -1
- package/dist/services/memory-service.d.ts +1 -2
- package/dist/services/memory-service.js +6 -4
- package/dist/services/memory-service.js.map +1 -1
- package/dist/services/vector-service.d.ts +77 -0
- package/dist/services/vector-service.js +280 -0
- package/dist/services/vector-service.js.map +1 -0
- package/dist/utils/version-checker.d.ts +23 -0
- package/dist/utils/version-checker.js +116 -0
- package/dist/utils/version-checker.js.map +1 -0
- package/package.json +10 -6
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* studiograph update
|
|
3
|
+
*
|
|
4
|
+
* Self-update command that checks for and installs the latest version
|
|
5
|
+
* from GitHub releases or npm registry.
|
|
6
|
+
*/
|
|
7
|
+
import { Command } from 'commander';
|
|
8
|
+
import { intro, outro, spinner, confirm, log } from '@clack/prompts';
|
|
9
|
+
import { execSync, spawnSync } from 'child_process';
|
|
10
|
+
import { readFileSync } from 'fs';
|
|
11
|
+
import { join } from 'path';
|
|
12
|
+
import { fileURLToPath } from 'url';
|
|
13
|
+
import { dirname } from 'path';
|
|
14
|
+
// Get current CLI version
|
|
15
|
+
function getCurrentVersion() {
|
|
16
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
17
|
+
const __dirname = dirname(__filename);
|
|
18
|
+
const pkgPath = join(__dirname, '../../../package.json');
|
|
19
|
+
const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
|
|
20
|
+
return pkg.version;
|
|
21
|
+
}
|
|
22
|
+
// Check npm for latest version
|
|
23
|
+
async function getLatestNpmVersion() {
|
|
24
|
+
try {
|
|
25
|
+
const result = execSync('npm view studiograph version', {
|
|
26
|
+
encoding: 'utf-8',
|
|
27
|
+
stdio: 'pipe',
|
|
28
|
+
});
|
|
29
|
+
return result.trim();
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
// Compare semantic versions
|
|
36
|
+
function compareVersions(v1, v2) {
|
|
37
|
+
const parts1 = v1.split('.').map(Number);
|
|
38
|
+
const parts2 = v2.split('.').map(Number);
|
|
39
|
+
for (let i = 0; i < 3; i++) {
|
|
40
|
+
if (parts1[i] > parts2[i])
|
|
41
|
+
return 1;
|
|
42
|
+
if (parts1[i] < parts2[i])
|
|
43
|
+
return -1;
|
|
44
|
+
}
|
|
45
|
+
return 0;
|
|
46
|
+
}
|
|
47
|
+
// Detect package manager
|
|
48
|
+
function detectPackageManager() {
|
|
49
|
+
// Check if we're installed globally
|
|
50
|
+
try {
|
|
51
|
+
const globalPath = execSync('which studiograph', { encoding: 'utf-8' }).trim();
|
|
52
|
+
if (globalPath.includes('/.yarn/'))
|
|
53
|
+
return 'yarn';
|
|
54
|
+
if (globalPath.includes('/.pnpm/'))
|
|
55
|
+
return 'pnpm';
|
|
56
|
+
return 'npm';
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return 'npm';
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
// Update via package manager
|
|
63
|
+
function updateViaPM(pm) {
|
|
64
|
+
const commands = {
|
|
65
|
+
npm: ['npm', 'install', '-g', 'studiograph@latest'],
|
|
66
|
+
yarn: ['yarn', 'global', 'add', 'studiograph@latest'],
|
|
67
|
+
pnpm: ['pnpm', 'add', '-g', 'studiograph@latest'],
|
|
68
|
+
};
|
|
69
|
+
try {
|
|
70
|
+
const result = spawnSync(commands[pm][0], commands[pm].slice(1), {
|
|
71
|
+
stdio: 'inherit',
|
|
72
|
+
shell: true,
|
|
73
|
+
});
|
|
74
|
+
return result.status === 0;
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
export const updateCommand = new Command('update')
|
|
81
|
+
.description('Check for and install the latest version of Studiograph')
|
|
82
|
+
.option('--check', 'Check for updates without installing')
|
|
83
|
+
.option('--force', 'Force reinstall current version')
|
|
84
|
+
.action(async (options) => {
|
|
85
|
+
intro('Studiograph Update');
|
|
86
|
+
const s = spinner();
|
|
87
|
+
s.start('Checking for updates...');
|
|
88
|
+
const currentVersion = getCurrentVersion();
|
|
89
|
+
const latestVersion = await getLatestNpmVersion();
|
|
90
|
+
if (!latestVersion) {
|
|
91
|
+
s.stop('Could not check for updates');
|
|
92
|
+
log.error('Failed to fetch latest version from npm registry');
|
|
93
|
+
outro('Update check failed. Try again later or update manually with:');
|
|
94
|
+
console.log(' npm install -g studiograph@latest');
|
|
95
|
+
process.exit(1);
|
|
96
|
+
}
|
|
97
|
+
s.stop();
|
|
98
|
+
const comparison = compareVersions(latestVersion, currentVersion);
|
|
99
|
+
if (comparison === 0 && !options.force) {
|
|
100
|
+
log.success(`You're already on the latest version (v${currentVersion})`);
|
|
101
|
+
outro('No update needed');
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
if (comparison < 0) {
|
|
105
|
+
log.warn(`You're on v${currentVersion}, which is newer than npm (v${latestVersion})`);
|
|
106
|
+
log.info('You may be using a development version');
|
|
107
|
+
outro('No update needed');
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
// Update available
|
|
111
|
+
log.info(`Current version: v${currentVersion}`);
|
|
112
|
+
log.success(`Latest version: v${latestVersion}`);
|
|
113
|
+
if (options.check) {
|
|
114
|
+
outro('Update available. Run `studiograph update` to install');
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
// Confirm update
|
|
118
|
+
const shouldUpdate = await confirm({
|
|
119
|
+
message: `Update to v${latestVersion}?`,
|
|
120
|
+
initialValue: true,
|
|
121
|
+
});
|
|
122
|
+
if (typeof shouldUpdate === 'symbol' || !shouldUpdate) {
|
|
123
|
+
outro('Update cancelled');
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
// Detect package manager
|
|
127
|
+
const pm = detectPackageManager();
|
|
128
|
+
log.info(`Detected package manager: ${pm}`);
|
|
129
|
+
// Perform update
|
|
130
|
+
const updateSpinner = spinner();
|
|
131
|
+
updateSpinner.start(`Installing v${latestVersion} via ${pm}...`);
|
|
132
|
+
const success = updateViaPM(pm);
|
|
133
|
+
if (success) {
|
|
134
|
+
updateSpinner.stop(`✓ Updated to v${latestVersion}`);
|
|
135
|
+
// Verify new version
|
|
136
|
+
const newVersion = getCurrentVersion();
|
|
137
|
+
if (newVersion === latestVersion) {
|
|
138
|
+
log.success('Update completed successfully!');
|
|
139
|
+
outro(`Studiograph is now at v${newVersion}`);
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
log.warn('Update may have succeeded, but version check shows unexpected result');
|
|
143
|
+
log.info('Try running `studiograph --version` to verify');
|
|
144
|
+
outro('Update completed');
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
updateSpinner.stop('Update failed');
|
|
149
|
+
log.error('Failed to install update via package manager');
|
|
150
|
+
outro('You can try updating manually with:');
|
|
151
|
+
console.log(` ${pm} ${pm === 'npm' ? 'install -g' : 'global add'} studiograph@latest`);
|
|
152
|
+
process.exit(1);
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/cli/commands/update.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -13,21 +13,101 @@ import { membersCommand } from './commands/members.js';
|
|
|
13
13
|
import { pullCommand, pushCommand } from './commands/sync.js';
|
|
14
14
|
import { serveCommand } from './commands/serve.js';
|
|
15
15
|
import { r2Command } from './commands/r2.js';
|
|
16
|
+
import { appCommand } from './commands/app.js';
|
|
17
|
+
import { deployCommand } from './commands/deploy.js';
|
|
18
|
+
import { mcpCommand } from './commands/mcp.js';
|
|
19
|
+
import { connectorCommand } from './commands/connector.js';
|
|
20
|
+
import { indexCommand } from './commands/index.js';
|
|
21
|
+
import { configCommand } from './commands/config.js';
|
|
22
|
+
import { lintCommand } from './commands/lint.js';
|
|
23
|
+
import { updateCommand } from './commands/update.js';
|
|
24
|
+
import { provisionCommand } from './commands/provision.js';
|
|
16
25
|
const program = new Command();
|
|
17
26
|
program
|
|
18
27
|
.name('studiograph')
|
|
19
28
|
.description('Team-based AI agent platform with Git-backed knowledge graphs')
|
|
20
29
|
.version('1.0.0');
|
|
21
|
-
//
|
|
30
|
+
// Configure custom help to show grouped commands
|
|
31
|
+
program.configureHelp({
|
|
32
|
+
sortSubcommands: false,
|
|
33
|
+
// Override the command list formatter to show grouped commands
|
|
34
|
+
formatHelp: (cmd, helper) => {
|
|
35
|
+
const termWidth = helper.padWidth(cmd, helper);
|
|
36
|
+
const helpWidth = helper.helpWidth || 80;
|
|
37
|
+
const itemIndentWidth = 2;
|
|
38
|
+
const itemSeparatorWidth = 2;
|
|
39
|
+
const formatItem = (term, description) => {
|
|
40
|
+
const pad = ' '.repeat(Math.max(0, termWidth - term.length + itemSeparatorWidth));
|
|
41
|
+
return `${' '.repeat(itemIndentWidth)}${term}${pad}${description}`;
|
|
42
|
+
};
|
|
43
|
+
const sections = [
|
|
44
|
+
`Usage: ${helper.commandUsage(cmd)}`,
|
|
45
|
+
'',
|
|
46
|
+
helper.commandDescription(cmd),
|
|
47
|
+
'',
|
|
48
|
+
'Options:',
|
|
49
|
+
...cmd.options.map(opt => formatItem(helper.optionTerm(opt), helper.optionDescription(opt))),
|
|
50
|
+
formatItem('-h, --help', 'display help for command'),
|
|
51
|
+
'',
|
|
52
|
+
'Getting Started:',
|
|
53
|
+
formatItem('init <team-name> [dir]', 'Initialize a new workspace'),
|
|
54
|
+
formatItem('join <url> [dir]', 'Join an existing workspace'),
|
|
55
|
+
formatItem('auth', 'Manage GitHub authentication'),
|
|
56
|
+
'',
|
|
57
|
+
'Daily Workflow:',
|
|
58
|
+
formatItem('start', 'Start the AI agent'),
|
|
59
|
+
formatItem('pull', 'Pull latest changes'),
|
|
60
|
+
formatItem('push', 'Push local commits'),
|
|
61
|
+
'',
|
|
62
|
+
'Workspace Management:',
|
|
63
|
+
formatItem('provision', 'Push workspace to GitHub'),
|
|
64
|
+
formatItem('members', 'Manage team members'),
|
|
65
|
+
formatItem('index', 'Index for search'),
|
|
66
|
+
formatItem('lint', 'Check entity completeness'),
|
|
67
|
+
formatItem('config', 'Manage configuration'),
|
|
68
|
+
'',
|
|
69
|
+
'Server & Deployment:',
|
|
70
|
+
formatItem('serve', 'Start HTTP server'),
|
|
71
|
+
formatItem('deploy', 'Deploy to hosting platform'),
|
|
72
|
+
'',
|
|
73
|
+
'Integrations & Extensions:',
|
|
74
|
+
formatItem('mcp', 'Claude Desktop integration'),
|
|
75
|
+
formatItem('connector', 'Third-party integrations'),
|
|
76
|
+
formatItem('app', 'Manage app plugins'),
|
|
77
|
+
formatItem('r2', 'Cloudflare R2 assets'),
|
|
78
|
+
'',
|
|
79
|
+
'Maintenance:',
|
|
80
|
+
formatItem('update', 'Update Studiograph CLI'),
|
|
81
|
+
formatItem('help [command]', 'Display help for command'),
|
|
82
|
+
];
|
|
83
|
+
return sections.join('\n');
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
// Register commands in grouped order
|
|
87
|
+
// Getting Started
|
|
22
88
|
program.addCommand(initCommand);
|
|
23
|
-
program.addCommand(startCommand);
|
|
24
89
|
program.addCommand(joinCommand);
|
|
25
90
|
program.addCommand(authCommand);
|
|
26
|
-
|
|
91
|
+
// Daily Workflow
|
|
92
|
+
program.addCommand(startCommand);
|
|
27
93
|
program.addCommand(pullCommand);
|
|
28
94
|
program.addCommand(pushCommand);
|
|
95
|
+
// Workspace Management
|
|
96
|
+
program.addCommand(provisionCommand);
|
|
97
|
+
program.addCommand(membersCommand);
|
|
98
|
+
program.addCommand(indexCommand);
|
|
99
|
+
program.addCommand(lintCommand);
|
|
100
|
+
program.addCommand(configCommand);
|
|
101
|
+
// Server & Deployment
|
|
29
102
|
program.addCommand(serveCommand);
|
|
103
|
+
program.addCommand(deployCommand);
|
|
104
|
+
// Integrations & Extensions
|
|
105
|
+
program.addCommand(mcpCommand);
|
|
106
|
+
program.addCommand(connectorCommand);
|
|
107
|
+
program.addCommand(appCommand);
|
|
30
108
|
program.addCommand(r2Command);
|
|
109
|
+
// Maintenance
|
|
110
|
+
program.addCommand(updateCommand);
|
|
31
111
|
// Parse arguments
|
|
32
112
|
program.parse();
|
|
33
113
|
//# sourceMappingURL=index.js.map
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Example entity scaffolding for new workspaces
|
|
3
|
+
*
|
|
4
|
+
* Creates a connected set of example entities during `studiograph init`
|
|
5
|
+
* to demonstrate the knowledge graph pattern — a client, project, person,
|
|
6
|
+
* meeting, and decision all wikilinked together.
|
|
7
|
+
*/
|
|
8
|
+
import { Workspace } from '../core/workspace.js';
|
|
9
|
+
export declare function scaffoldExampleEntities(workspace: Workspace, teamName: string): Promise<void>;
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Example entity scaffolding for new workspaces
|
|
3
|
+
*
|
|
4
|
+
* Creates a connected set of example entities during `studiograph init`
|
|
5
|
+
* to demonstrate the knowledge graph pattern — a client, project, person,
|
|
6
|
+
* meeting, and decision all wikilinked together.
|
|
7
|
+
*/
|
|
8
|
+
import { join } from 'path';
|
|
9
|
+
import { writeFileSync } from 'fs';
|
|
10
|
+
import { RepoType } from '../core/types.js';
|
|
11
|
+
import { MarkdownService } from '../services/markdown.js';
|
|
12
|
+
const REPO_NAME = 'example-project';
|
|
13
|
+
function buildEntities(now) {
|
|
14
|
+
const shared = {
|
|
15
|
+
created_by: 'studiograph',
|
|
16
|
+
updated_by: 'studiograph',
|
|
17
|
+
created_at: now,
|
|
18
|
+
updated_at: now,
|
|
19
|
+
tags: ['example'],
|
|
20
|
+
};
|
|
21
|
+
return [
|
|
22
|
+
{
|
|
23
|
+
entityType: 'client',
|
|
24
|
+
entityId: 'meridian-health',
|
|
25
|
+
frontmatter: {
|
|
26
|
+
entity_type: 'client',
|
|
27
|
+
entity_id: 'meridian-health',
|
|
28
|
+
...shared,
|
|
29
|
+
name: 'Meridian Health',
|
|
30
|
+
type: 'corporate',
|
|
31
|
+
status: 'active',
|
|
32
|
+
industry: 'Healthcare',
|
|
33
|
+
contacts: ['[[sarah-chen]]'],
|
|
34
|
+
projects: ['[[meridian-rebrand]]'],
|
|
35
|
+
},
|
|
36
|
+
content: `# Meridian Health
|
|
37
|
+
|
|
38
|
+
Regional healthcare network with 12 hospitals across the Midwest. Engaged us for a comprehensive brand refresh following their merger with Lakeside Medical Group.
|
|
39
|
+
|
|
40
|
+
## Relationship History
|
|
41
|
+
|
|
42
|
+
- **2025-Q4** — Initial outreach via referral from [[sarah-chen]]
|
|
43
|
+
- **2026-Q1** — Discovery workshops and brand audit
|
|
44
|
+
- **2026-Q1** — Kicked off [[meridian-rebrand]]
|
|
45
|
+
|
|
46
|
+
## Key Contacts
|
|
47
|
+
|
|
48
|
+
- [[sarah-chen]] — VP of Marketing, primary stakeholder
|
|
49
|
+
`,
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
entityType: 'person',
|
|
53
|
+
entityId: 'sarah-chen',
|
|
54
|
+
frontmatter: {
|
|
55
|
+
entity_type: 'person',
|
|
56
|
+
entity_id: 'sarah-chen',
|
|
57
|
+
...shared,
|
|
58
|
+
name: 'Sarah Chen',
|
|
59
|
+
role: 'VP of Marketing',
|
|
60
|
+
status: 'client',
|
|
61
|
+
organization: '[[meridian-health]]',
|
|
62
|
+
projects: ['[[meridian-rebrand]]'],
|
|
63
|
+
},
|
|
64
|
+
content: `# Sarah Chen
|
|
65
|
+
|
|
66
|
+
VP of Marketing at [[meridian-health]]. Primary stakeholder for the [[meridian-rebrand]] engagement.
|
|
67
|
+
|
|
68
|
+
## Notes
|
|
69
|
+
|
|
70
|
+
- Prefers async communication (email/Slack over calls)
|
|
71
|
+
- Strong opinions on accessibility — ensure all deliverables meet WCAG 2.1 AA
|
|
72
|
+
- Previously led rebrand at Cedar Health (2023)
|
|
73
|
+
`,
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
entityType: 'project',
|
|
77
|
+
entityId: 'meridian-rebrand',
|
|
78
|
+
frontmatter: {
|
|
79
|
+
entity_type: 'project',
|
|
80
|
+
entity_id: 'meridian-rebrand',
|
|
81
|
+
...shared,
|
|
82
|
+
name: 'Meridian Health Brand Refresh',
|
|
83
|
+
client: '[[meridian-health]]',
|
|
84
|
+
status: 'active',
|
|
85
|
+
start_date: '2026-02-10',
|
|
86
|
+
team: ['[[sarah-chen]]'],
|
|
87
|
+
},
|
|
88
|
+
content: `# Meridian Health Brand Refresh
|
|
89
|
+
|
|
90
|
+
Comprehensive brand identity refresh for [[meridian-health]] following their merger with Lakeside Medical Group. The goal is to create a unified brand that honors both organizations' heritage while signaling a forward-looking, patient-centered vision.
|
|
91
|
+
|
|
92
|
+
## Objectives
|
|
93
|
+
|
|
94
|
+
1. Unified visual identity across all 12 hospital locations
|
|
95
|
+
2. Updated brand guidelines and asset library
|
|
96
|
+
3. Digital-first brand system (web, app, social)
|
|
97
|
+
|
|
98
|
+
## Key Decisions
|
|
99
|
+
|
|
100
|
+
- [[dec-2026-001]] — Adopt evolutionary brand refresh (not revolutionary)
|
|
101
|
+
|
|
102
|
+
## Timeline
|
|
103
|
+
|
|
104
|
+
- **Feb 2026** — Discovery & audit (see [[2026-02-10-kickoff]])
|
|
105
|
+
- **Mar 2026** — Concept development
|
|
106
|
+
- **Apr 2026** — Refinement & testing
|
|
107
|
+
- **May 2026** — Final delivery & rollout planning
|
|
108
|
+
`,
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
entityType: 'meeting',
|
|
112
|
+
entityId: '2026-02-10-kickoff',
|
|
113
|
+
frontmatter: {
|
|
114
|
+
entity_type: 'meeting',
|
|
115
|
+
entity_id: '2026-02-10-kickoff',
|
|
116
|
+
...shared,
|
|
117
|
+
name: 'Meridian Rebrand Kickoff',
|
|
118
|
+
date: '2026-02-10',
|
|
119
|
+
attendees: ['[[sarah-chen]]'],
|
|
120
|
+
related_projects: ['[[meridian-rebrand]]'],
|
|
121
|
+
},
|
|
122
|
+
content: `# Meridian Rebrand Kickoff
|
|
123
|
+
|
|
124
|
+
Kickoff meeting for the [[meridian-rebrand]] project with [[sarah-chen]] and the Meridian marketing team.
|
|
125
|
+
|
|
126
|
+
## Agenda
|
|
127
|
+
|
|
128
|
+
1. Introductions and project overview
|
|
129
|
+
2. Brand audit findings review
|
|
130
|
+
3. Timeline and milestones
|
|
131
|
+
4. Decision on brand refresh approach
|
|
132
|
+
|
|
133
|
+
## Discussion Notes
|
|
134
|
+
|
|
135
|
+
- Meridian team emphasized the importance of retaining trust signals from both legacy brands
|
|
136
|
+
- Patient research shows strong emotional attachment to the Lakeside "caring hands" motif
|
|
137
|
+
- Board has approved budget for full rollout by Q3 2026
|
|
138
|
+
|
|
139
|
+
## Decisions Made
|
|
140
|
+
|
|
141
|
+
- [[dec-2026-001]] — Agreed to pursue an evolutionary refresh rather than a complete rebrand
|
|
142
|
+
|
|
143
|
+
## Action Items
|
|
144
|
+
|
|
145
|
+
- [ ] Share brand audit deck with Meridian team
|
|
146
|
+
- [ ] Schedule stakeholder interviews (week of Feb 17)
|
|
147
|
+
- [ ] Draft creative brief by Feb 14
|
|
148
|
+
`,
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
entityType: 'decision',
|
|
152
|
+
entityId: 'dec-2026-001',
|
|
153
|
+
frontmatter: {
|
|
154
|
+
entity_type: 'decision',
|
|
155
|
+
entity_id: 'dec-2026-001',
|
|
156
|
+
...shared,
|
|
157
|
+
id: 'DEC-2026-001',
|
|
158
|
+
title: 'Adopt evolutionary brand refresh',
|
|
159
|
+
date: '2026-02-10',
|
|
160
|
+
status: 'accepted',
|
|
161
|
+
decision_makers: ['[[sarah-chen]]'],
|
|
162
|
+
stakeholders: ['[[meridian-health]]'],
|
|
163
|
+
},
|
|
164
|
+
content: `# DEC-2026-001: Adopt Evolutionary Brand Refresh
|
|
165
|
+
|
|
166
|
+
## Context
|
|
167
|
+
|
|
168
|
+
Following the merger of [[meridian-health]] and Lakeside Medical Group, the combined organization needs a unified brand identity. The core question: should we build an entirely new brand from scratch, or evolve the existing Meridian identity?
|
|
169
|
+
|
|
170
|
+
## Alternatives Considered
|
|
171
|
+
|
|
172
|
+
1. **Revolutionary rebrand** — entirely new name, logo, and visual system
|
|
173
|
+
2. **Evolutionary refresh** — retain Meridian name and core equity, modernize visual system, incorporate Lakeside heritage elements
|
|
174
|
+
3. **Dual-brand** — maintain both brands with a shared parent identity
|
|
175
|
+
|
|
176
|
+
## Decision
|
|
177
|
+
|
|
178
|
+
Option 2: Evolutionary refresh. Retain the Meridian Health name and update the visual identity to reflect the merged organization's expanded scope and values.
|
|
179
|
+
|
|
180
|
+
## Rationale
|
|
181
|
+
|
|
182
|
+
- Patient research shows 78% brand recognition for "Meridian" in core markets
|
|
183
|
+
- Revolutionary rebrand estimated at 2x the budget and timeline
|
|
184
|
+
- Lakeside heritage can be honored through visual motifs without a name change
|
|
185
|
+
|
|
186
|
+
## Consequences
|
|
187
|
+
|
|
188
|
+
- **Positive:** Preserves brand equity, faster rollout, lower risk
|
|
189
|
+
- **Negative:** Some Lakeside staff may feel underrepresented; requires careful internal communications
|
|
190
|
+
`,
|
|
191
|
+
},
|
|
192
|
+
];
|
|
193
|
+
}
|
|
194
|
+
function buildOnboardingGuide(teamName) {
|
|
195
|
+
return `# Welcome to ${teamName}
|
|
196
|
+
|
|
197
|
+
This workspace is powered by **Studiograph** — a knowledge graph for creative teams. Your team's knowledge is stored as Markdown files with YAML frontmatter, connected by \`[[wikilinks]]\`.
|
|
198
|
+
|
|
199
|
+
## How It Works
|
|
200
|
+
|
|
201
|
+
Every piece of knowledge is an **entity** — a Markdown file with structured metadata:
|
|
202
|
+
|
|
203
|
+
\`\`\`markdown
|
|
204
|
+
---
|
|
205
|
+
entity_type: project
|
|
206
|
+
entity_id: my-project
|
|
207
|
+
name: "My Project"
|
|
208
|
+
status: active
|
|
209
|
+
created_at: 2026-02-20T00:00:00.000Z
|
|
210
|
+
updated_at: 2026-02-20T00:00:00.000Z
|
|
211
|
+
created_by: your-name
|
|
212
|
+
updated_by: your-name
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
# My Project
|
|
216
|
+
|
|
217
|
+
Project details here. Link to other entities with [[wikilinks]].
|
|
218
|
+
\`\`\`
|
|
219
|
+
|
|
220
|
+
## Entity Types
|
|
221
|
+
|
|
222
|
+
| Type | Purpose | Example |
|
|
223
|
+
|------|---------|---------|
|
|
224
|
+
| \`client\` | Client organizations | Meridian Health |
|
|
225
|
+
| \`project\` | Engagements & initiatives | Brand refresh |
|
|
226
|
+
| \`person\` | Contacts & team members | Sarah Chen |
|
|
227
|
+
| \`meeting\` | Meeting notes & action items | Kickoff meeting |
|
|
228
|
+
| \`decision\` | Structured decision records | DEC-2026-001 |
|
|
229
|
+
| \`proposal\` | Client proposals & SOWs | — |
|
|
230
|
+
| \`deliverable\` | Scoped outputs & artifacts | — |
|
|
231
|
+
| \`brief\` | Project briefs | — |
|
|
232
|
+
|
|
233
|
+
## Common Commands
|
|
234
|
+
|
|
235
|
+
\`\`\`bash
|
|
236
|
+
studiograph start # Start an interactive AI session
|
|
237
|
+
studiograph search "query" # Search across all repos
|
|
238
|
+
studiograph list # List entities in a repo
|
|
239
|
+
studiograph get <entity-id> # View a specific entity
|
|
240
|
+
\`\`\`
|
|
241
|
+
|
|
242
|
+
## Explore the Examples
|
|
243
|
+
|
|
244
|
+
Check out the \`example-project/\` repo to see how entities connect:
|
|
245
|
+
|
|
246
|
+
- \`example-project/client/meridian-health.md\` — a client organization
|
|
247
|
+
- \`example-project/person/sarah-chen.md\` — a contact linked to the client
|
|
248
|
+
- \`example-project/project/meridian-rebrand.md\` — a project linking client, person, and decisions
|
|
249
|
+
- \`example-project/meeting/2026-02-10-kickoff.md\` — a meeting with notes and action items
|
|
250
|
+
- \`example-project/decision/dec-2026-001.md\` — a structured decision record
|
|
251
|
+
|
|
252
|
+
Notice how \`[[wikilinks]]\` connect everything into a navigable graph.
|
|
253
|
+
|
|
254
|
+
## Cleaning Up Examples
|
|
255
|
+
|
|
256
|
+
When you're ready to remove the example entities:
|
|
257
|
+
|
|
258
|
+
\`\`\`bash
|
|
259
|
+
studiograph config repo remove example-project
|
|
260
|
+
rm -rf example-project/
|
|
261
|
+
\`\`\`
|
|
262
|
+
`;
|
|
263
|
+
}
|
|
264
|
+
export async function scaffoldExampleEntities(workspace, teamName) {
|
|
265
|
+
const repoPath = join(workspace.getWorkspacePath(), REPO_NAME);
|
|
266
|
+
// Register the example-project repo
|
|
267
|
+
await workspace.registerRepo({
|
|
268
|
+
name: REPO_NAME,
|
|
269
|
+
type: RepoType.PROJECT,
|
|
270
|
+
description: 'Example entities demonstrating the knowledge graph pattern (safe to delete)',
|
|
271
|
+
});
|
|
272
|
+
// Write example entities
|
|
273
|
+
const md = new MarkdownService();
|
|
274
|
+
const now = new Date().toISOString();
|
|
275
|
+
const entities = buildEntities(now);
|
|
276
|
+
for (const entity of entities) {
|
|
277
|
+
const filePath = join(repoPath, entity.entityType, `${entity.entityId}.md`);
|
|
278
|
+
md.writeFile(filePath, {
|
|
279
|
+
frontmatter: entity.frontmatter,
|
|
280
|
+
content: entity.content,
|
|
281
|
+
wikilinks: [],
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
// Write STUDIOGRAPH.md to workspace root
|
|
285
|
+
const guidePath = join(workspace.getWorkspacePath(), 'STUDIOGRAPH.md');
|
|
286
|
+
writeFileSync(guidePath, buildOnboardingGuide(teamName), 'utf-8');
|
|
287
|
+
}
|
|
288
|
+
//# sourceMappingURL=scaffolding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scaffolding.js","sourceRoot":"","sources":["../../src/cli/scaffolding.ts"],"names":[],"mappings":"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"}
|
package/dist/core/graph.d.ts
CHANGED
|
@@ -8,11 +8,18 @@ import { GitUser } from '../services/git.js';
|
|
|
8
8
|
import { MarkdownDocument } from '../services/markdown.js';
|
|
9
9
|
import { AssetInfo, AssetConfig } from '../services/assets/index.js';
|
|
10
10
|
import { EntityType, type EntityData, type DatasetRow } from './validation.js';
|
|
11
|
+
import { SchemaRegistry } from './schema-registry.js';
|
|
11
12
|
import { type DatasetFilter } from '../services/csv-service.js';
|
|
13
|
+
import { type VectorService } from '../services/vector-service.js';
|
|
12
14
|
export interface GraphConfig {
|
|
13
15
|
repoPath: string;
|
|
16
|
+
repoName: string;
|
|
14
17
|
assetConfig?: AssetConfig;
|
|
15
18
|
gitUser: GitUser;
|
|
19
|
+
vectorService?: VectorService;
|
|
20
|
+
schemaRegistry?: SchemaRegistry;
|
|
21
|
+
/** When true, all git operations are skipped. Used for the private/ graph. */
|
|
22
|
+
noGit?: boolean;
|
|
16
23
|
}
|
|
17
24
|
export interface EntityFile {
|
|
18
25
|
id: string;
|
|
@@ -50,11 +57,15 @@ export interface UpdateEntityOptions {
|
|
|
50
57
|
}
|
|
51
58
|
export declare class BaseGraphManager {
|
|
52
59
|
private repoPath;
|
|
53
|
-
|
|
60
|
+
readonly repoName: string;
|
|
61
|
+
private gitService?;
|
|
62
|
+
private noGit;
|
|
54
63
|
private markdownService;
|
|
55
64
|
private assetService?;
|
|
56
65
|
private gitUser;
|
|
57
66
|
private csvService;
|
|
67
|
+
private vectorService?;
|
|
68
|
+
private schemaRegistry?;
|
|
58
69
|
constructor(config: GraphConfig);
|
|
59
70
|
/**
|
|
60
71
|
* Ensure repository exists
|