studiograph 1.1.1 → 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 +186 -4
- 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,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* studiograph provision
|
|
3
|
+
*
|
|
4
|
+
* Provisions an existing local workspace to GitHub, creating repos for all
|
|
5
|
+
* content directories and the .studiograph config directory.
|
|
6
|
+
*/
|
|
7
|
+
import { Command } from 'commander';
|
|
8
|
+
import { intro, outro, spinner, log, confirm } from '@clack/prompts';
|
|
9
|
+
import { execSync } from 'child_process';
|
|
10
|
+
import { Workspace } from '../../core/workspace.js';
|
|
11
|
+
import { loadToken, runDeviceFlow, storeToken, getGitHubUser, getAuthenticatedOctokit } from '../../auth/github.js';
|
|
12
|
+
import { provisionWorkspace } from '../../services/github-provisioner.js';
|
|
13
|
+
import { runPreflight } from '../../utils/preflight.js';
|
|
14
|
+
export const provisionCommand = new Command('provision')
|
|
15
|
+
.description('Push an existing workspace to GitHub')
|
|
16
|
+
.option('--org <github-org>', 'GitHub organization to create repos in')
|
|
17
|
+
.option('--force', 'Re-provision even if already provisioned')
|
|
18
|
+
.action(async (options) => {
|
|
19
|
+
intro('Provision Workspace to GitHub');
|
|
20
|
+
const ready = runPreflight();
|
|
21
|
+
if (!ready) {
|
|
22
|
+
process.exit(1);
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
try {
|
|
26
|
+
// Check if we're in a workspace
|
|
27
|
+
const workspace = new Workspace();
|
|
28
|
+
if (!workspace.isWorkspace()) {
|
|
29
|
+
outro('❌ Not a Studiograph workspace. Run `studiograph init` first.');
|
|
30
|
+
process.exit(1);
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
const config = await workspace.loadConfig();
|
|
34
|
+
// Check if already provisioned (any repo has github_url)
|
|
35
|
+
const alreadyProvisioned = config.repos.some(r => r.github_url);
|
|
36
|
+
if (alreadyProvisioned && !options.force) {
|
|
37
|
+
const hasGithubOrg = config.github?.org;
|
|
38
|
+
const orgInfo = hasGithubOrg ? ` (org: ${hasGithubOrg})` : '';
|
|
39
|
+
log.warn(`Workspace already provisioned to GitHub${orgInfo}`);
|
|
40
|
+
log.info('Use --force to re-provision');
|
|
41
|
+
const shouldContinue = await confirm({
|
|
42
|
+
message: 'Continue anyway?',
|
|
43
|
+
initialValue: false,
|
|
44
|
+
});
|
|
45
|
+
if (!shouldContinue || typeof shouldContinue === 'symbol') {
|
|
46
|
+
outro('Cancelled');
|
|
47
|
+
process.exit(0);
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
// Get GitHub org
|
|
52
|
+
let githubOrg = options.org;
|
|
53
|
+
if (!githubOrg && config.github?.org) {
|
|
54
|
+
// Use existing org from config
|
|
55
|
+
githubOrg = config.github.org;
|
|
56
|
+
log.info(`Using GitHub org from config: ${githubOrg}`);
|
|
57
|
+
}
|
|
58
|
+
if (!githubOrg) {
|
|
59
|
+
outro('❌ GitHub org required. Use --org <github-org>');
|
|
60
|
+
process.exit(1);
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
// Ensure we have a token
|
|
64
|
+
let stored = loadToken();
|
|
65
|
+
if (!stored) {
|
|
66
|
+
log.info('No GitHub token found. Starting authentication...');
|
|
67
|
+
const token = await runDeviceFlow();
|
|
68
|
+
const user = await getGitHubUser(token);
|
|
69
|
+
storeToken(token, user);
|
|
70
|
+
stored = { token, user };
|
|
71
|
+
log.success(`Authenticated as ${user.login}`);
|
|
72
|
+
}
|
|
73
|
+
const octokit = getAuthenticatedOctokit(stored.token);
|
|
74
|
+
// Provision!
|
|
75
|
+
const provisionSpinner = spinner();
|
|
76
|
+
provisionSpinner.start('Creating GitHub repos...');
|
|
77
|
+
const updatedConfig = await provisionWorkspace({
|
|
78
|
+
octokit,
|
|
79
|
+
org: githubOrg,
|
|
80
|
+
workspacePath: workspace.getWorkspacePath(),
|
|
81
|
+
config,
|
|
82
|
+
onProgress: (msg) => provisionSpinner.message(msg),
|
|
83
|
+
});
|
|
84
|
+
// Write back updated config with github_urls + org
|
|
85
|
+
updatedConfig.github = { org: githubOrg };
|
|
86
|
+
workspace.writeConfig(updatedConfig);
|
|
87
|
+
// Push updated workspace.json back to config repo
|
|
88
|
+
provisionSpinner.message('Updating config repo with GitHub URLs...');
|
|
89
|
+
const configPath = workspace.getWorkspacePath() + '/.studiograph';
|
|
90
|
+
try {
|
|
91
|
+
execSync('git add workspace.json', { cwd: configPath, stdio: 'pipe' });
|
|
92
|
+
execSync('git commit -m "Add GitHub URLs to workspace config"', { cwd: configPath, stdio: 'pipe' });
|
|
93
|
+
execSync('git push origin main', { cwd: configPath, stdio: 'pipe' });
|
|
94
|
+
}
|
|
95
|
+
catch (err) {
|
|
96
|
+
// If nothing to commit or push fails, continue anyway
|
|
97
|
+
}
|
|
98
|
+
provisionSpinner.stop('GitHub repos created');
|
|
99
|
+
// Show join URL
|
|
100
|
+
const configRepoName = `${config.team_name.toLowerCase().replace(/[^a-z0-9]+/g, '-')}-config`;
|
|
101
|
+
const configRepoUrl = `https://github.com/${githubOrg}/${configRepoName}.git`;
|
|
102
|
+
log.success('All repos pushed to GitHub!');
|
|
103
|
+
log.info('\nTo join this workspace from another machine:');
|
|
104
|
+
log.info(` studiograph join ${configRepoUrl}`);
|
|
105
|
+
outro('✨ Workspace provisioned to GitHub!');
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
outro(`❌ Error: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
109
|
+
process.exit(1);
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
//# sourceMappingURL=provision.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provision.js","sourceRoot":"","sources":["../../../src/cli/commands/provision.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
* studiograph r2 setup Set up R2 bucket and credentials
|
|
5
5
|
* studiograph r2 upload <dir> Upload a local directory to R2
|
|
6
6
|
* --prefix <path> Key prefix in bucket (e.g. fonts/)
|
|
7
|
+
* studiograph r2 sync Upload local assets from tokens.json and
|
|
8
|
+
* markdown files to R2, rewriting URLs in place
|
|
7
9
|
*/
|
|
8
10
|
import { Command } from 'commander';
|
|
9
11
|
export declare const r2Command: Command;
|
package/dist/cli/commands/r2.js
CHANGED
|
@@ -4,11 +4,13 @@
|
|
|
4
4
|
* studiograph r2 setup Set up R2 bucket and credentials
|
|
5
5
|
* studiograph r2 upload <dir> Upload a local directory to R2
|
|
6
6
|
* --prefix <path> Key prefix in bucket (e.g. fonts/)
|
|
7
|
+
* studiograph r2 sync Upload local assets from tokens.json and
|
|
8
|
+
* markdown files to R2, rewriting URLs in place
|
|
7
9
|
*/
|
|
8
10
|
import { Command } from 'commander';
|
|
9
11
|
import { intro, outro, text, spinner, log } from '@clack/prompts';
|
|
10
|
-
import { readdirSync, statSync, readFileSync } from 'fs';
|
|
11
|
-
import { join, relative, extname } from 'path';
|
|
12
|
+
import { readdirSync, statSync, readFileSync, writeFileSync, existsSync } from 'fs';
|
|
13
|
+
import { join, relative, resolve, extname, dirname } from 'path';
|
|
12
14
|
import { spawnSync } from 'child_process';
|
|
13
15
|
import { S3Client, CreateBucketCommand, PutObjectCommand } from '@aws-sdk/client-s3';
|
|
14
16
|
import { Workspace } from '../../core/workspace.js';
|
|
@@ -39,6 +41,21 @@ const CONTENT_TYPES = {
|
|
|
39
41
|
function contentType(filePath) {
|
|
40
42
|
return CONTENT_TYPES[extname(filePath).toLowerCase()] ?? 'application/octet-stream';
|
|
41
43
|
}
|
|
44
|
+
// ── Local asset detection ─────────────────────────────────────────────────
|
|
45
|
+
const ASSET_EXTS = new Set([
|
|
46
|
+
'.png', '.jpg', '.jpeg', '.webp', '.gif', '.svg',
|
|
47
|
+
'.mp4', '.webm', '.mov',
|
|
48
|
+
'.pdf',
|
|
49
|
+
]);
|
|
50
|
+
function isLocalAssetRef(ref) {
|
|
51
|
+
if (ref.startsWith('http://') ||
|
|
52
|
+
ref.startsWith('https://') ||
|
|
53
|
+
ref.startsWith('data:') ||
|
|
54
|
+
ref.startsWith('#'))
|
|
55
|
+
return false;
|
|
56
|
+
const ext = extname(ref.split('?')[0]).toLowerCase();
|
|
57
|
+
return ASSET_EXTS.has(ext);
|
|
58
|
+
}
|
|
42
59
|
// ── Walk a directory recursively ─────────────────────────────────────────
|
|
43
60
|
function walkDir(dir) {
|
|
44
61
|
const files = [];
|
|
@@ -53,6 +70,63 @@ function walkDir(dir) {
|
|
|
53
70
|
}
|
|
54
71
|
return files;
|
|
55
72
|
}
|
|
73
|
+
async function syncMarkdownAssets(cwd, repoPaths, client, r2, s) {
|
|
74
|
+
let uploaded = 0;
|
|
75
|
+
let rewrites = 0;
|
|
76
|
+
for (const repoPath of repoPaths) {
|
|
77
|
+
if (!existsSync(repoPath))
|
|
78
|
+
continue;
|
|
79
|
+
const mdFiles = walkDir(repoPath).filter(f => f.endsWith('.md'));
|
|
80
|
+
for (const mdFile of mdFiles) {
|
|
81
|
+
const original = readFileSync(mdFile, 'utf8');
|
|
82
|
+
const refs = new Set();
|
|
83
|
+
// Markdown images and links:  or [text](ref)
|
|
84
|
+
for (const m of original.matchAll(/!?\[[^\]]*\]\(([^)\s]+)[^)]*\)/g)) {
|
|
85
|
+
if (isLocalAssetRef(m[1]))
|
|
86
|
+
refs.add(m[1]);
|
|
87
|
+
}
|
|
88
|
+
// HTML src attributes: <img src="ref">, <video src="ref">, <source src="ref">
|
|
89
|
+
for (const m of original.matchAll(/\bsrc=["']([^"']+)["']/g)) {
|
|
90
|
+
if (isLocalAssetRef(m[1]))
|
|
91
|
+
refs.add(m[1]);
|
|
92
|
+
}
|
|
93
|
+
if (refs.size === 0)
|
|
94
|
+
continue;
|
|
95
|
+
const replacements = new Map(); // ref → R2 URL
|
|
96
|
+
const uploads = [];
|
|
97
|
+
for (const ref of refs) {
|
|
98
|
+
const absPath = resolve(dirname(mdFile), ref);
|
|
99
|
+
if (!existsSync(absPath)) {
|
|
100
|
+
log.warn(`Asset not found, skipping: ${absPath}`);
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
const key = relative(cwd, absPath);
|
|
104
|
+
const r2Url = `${r2.public_url}/${key}`;
|
|
105
|
+
replacements.set(ref, r2Url);
|
|
106
|
+
s.message(`Uploading ${key}`);
|
|
107
|
+
uploads.push(client.send(new PutObjectCommand({
|
|
108
|
+
Bucket: r2.bucket,
|
|
109
|
+
Key: key,
|
|
110
|
+
Body: readFileSync(absPath),
|
|
111
|
+
ContentType: contentType(absPath),
|
|
112
|
+
CacheControl: 'public, max-age=31536000, immutable',
|
|
113
|
+
})));
|
|
114
|
+
uploaded++;
|
|
115
|
+
}
|
|
116
|
+
if (replacements.size === 0)
|
|
117
|
+
continue;
|
|
118
|
+
await Promise.all(uploads);
|
|
119
|
+
let updated = original;
|
|
120
|
+
for (const [ref, r2Url] of replacements) {
|
|
121
|
+
const escaped = ref.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
122
|
+
updated = updated.replace(new RegExp(escaped, 'g'), r2Url);
|
|
123
|
+
}
|
|
124
|
+
writeFileSync(mdFile, updated);
|
|
125
|
+
rewrites++;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return { uploaded, rewrites };
|
|
129
|
+
}
|
|
56
130
|
// ── r2 command group ──────────────────────────────────────────────────────
|
|
57
131
|
export const r2Command = new Command('r2')
|
|
58
132
|
.description('Manage Cloudflare R2 asset storage');
|
|
@@ -66,7 +140,7 @@ r2Command
|
|
|
66
140
|
console.error('Not a Studiograph workspace. Run `studiograph init` first.');
|
|
67
141
|
process.exit(1);
|
|
68
142
|
}
|
|
69
|
-
const config = workspace.loadConfig();
|
|
143
|
+
const config = await workspace.loadConfig();
|
|
70
144
|
intro('Set up Cloudflare R2 — 2 steps');
|
|
71
145
|
// ── Step 1: Account ID + credentials ───────────────────────────────
|
|
72
146
|
log.step('Step 1 of 2 — Connect your Cloudflare account');
|
|
@@ -153,7 +227,7 @@ r2Command
|
|
|
153
227
|
console.error('Not a Studiograph workspace. Run `studiograph init` first.');
|
|
154
228
|
process.exit(1);
|
|
155
229
|
}
|
|
156
|
-
const config = workspace.loadConfig();
|
|
230
|
+
const config = await workspace.loadConfig();
|
|
157
231
|
const userConfig = loadUserConfig();
|
|
158
232
|
const r2 = config.r2_config;
|
|
159
233
|
const creds = userConfig.r2;
|
|
@@ -197,4 +271,112 @@ r2Command
|
|
|
197
271
|
log.success(`Files available at ${r2.public_url}/${prefix}`);
|
|
198
272
|
}
|
|
199
273
|
});
|
|
274
|
+
// ── studiograph r2 sync ───────────────────────────────────────────────────
|
|
275
|
+
r2Command
|
|
276
|
+
.command('sync')
|
|
277
|
+
.description('Upload local assets from tokens.json and markdown files to R2, rewriting URLs in place')
|
|
278
|
+
.action(async () => {
|
|
279
|
+
const workspace = new Workspace();
|
|
280
|
+
if (!workspace.isWorkspace()) {
|
|
281
|
+
console.error('Not a Studiograph workspace. Run `studiograph init` first.');
|
|
282
|
+
process.exit(1);
|
|
283
|
+
}
|
|
284
|
+
const config = await workspace.loadConfig();
|
|
285
|
+
const userConfig = loadUserConfig();
|
|
286
|
+
const r2 = config.r2_config;
|
|
287
|
+
const creds = userConfig.r2;
|
|
288
|
+
if (!r2?.account_id || !r2.bucket || !r2.public_url) {
|
|
289
|
+
console.error('R2 not configured. Run `studiograph r2 setup` first.');
|
|
290
|
+
process.exit(1);
|
|
291
|
+
}
|
|
292
|
+
if (!creds?.access_key_id || !creds.secret_access_key) {
|
|
293
|
+
console.error('R2 credentials not found. Run `studiograph r2 setup` first.');
|
|
294
|
+
process.exit(1);
|
|
295
|
+
}
|
|
296
|
+
// Find all tokens.json files across all apps
|
|
297
|
+
const cwd = process.cwd();
|
|
298
|
+
const appsDir = join(cwd, '.studiograph', 'apps');
|
|
299
|
+
const tokensFiles = [];
|
|
300
|
+
if (existsSync(appsDir)) {
|
|
301
|
+
for (const app of readdirSync(appsDir)) {
|
|
302
|
+
const tokensPath = join(appsDir, app, 'theme', 'tokens.json');
|
|
303
|
+
if (existsSync(tokensPath))
|
|
304
|
+
tokensFiles.push(tokensPath);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
if (tokensFiles.length === 0) {
|
|
308
|
+
log.warn('No tokens.json files found in .studiograph/apps/*/theme/');
|
|
309
|
+
return;
|
|
310
|
+
}
|
|
311
|
+
const client = new S3Client({
|
|
312
|
+
region: 'auto',
|
|
313
|
+
endpoint: `https://${r2.account_id}.r2.cloudflarestorage.com`,
|
|
314
|
+
credentials: {
|
|
315
|
+
accessKeyId: creds.access_key_id,
|
|
316
|
+
secretAccessKey: creds.secret_access_key,
|
|
317
|
+
},
|
|
318
|
+
});
|
|
319
|
+
const s = spinner();
|
|
320
|
+
let totalUploaded = 0;
|
|
321
|
+
let totalRewrites = 0;
|
|
322
|
+
for (const tokensPath of tokensFiles) {
|
|
323
|
+
const appName = tokensPath.split('/').slice(-3)[0];
|
|
324
|
+
const tokensRaw = readFileSync(tokensPath, 'utf8');
|
|
325
|
+
const tokens = JSON.parse(tokensRaw);
|
|
326
|
+
let modified = false;
|
|
327
|
+
const uploads = [];
|
|
328
|
+
// Walk all string values, replace file: references
|
|
329
|
+
const rewrite = (obj, basePath) => {
|
|
330
|
+
if (typeof obj === 'string' && obj.startsWith('file:')) {
|
|
331
|
+
const localPath = join(basePath, obj.slice(5));
|
|
332
|
+
if (!existsSync(localPath)) {
|
|
333
|
+
log.warn(`File not found, skipping: ${localPath}`);
|
|
334
|
+
return obj;
|
|
335
|
+
}
|
|
336
|
+
const key = relative(cwd, localPath);
|
|
337
|
+
const body = readFileSync(localPath);
|
|
338
|
+
s.message(`Uploading ${key}`);
|
|
339
|
+
uploads.push(client.send(new PutObjectCommand({
|
|
340
|
+
Bucket: r2.bucket,
|
|
341
|
+
Key: key,
|
|
342
|
+
Body: body,
|
|
343
|
+
ContentType: contentType(localPath),
|
|
344
|
+
CacheControl: 'public, max-age=31536000, immutable',
|
|
345
|
+
})));
|
|
346
|
+
totalUploaded++;
|
|
347
|
+
modified = true;
|
|
348
|
+
return `${r2.public_url}/${key}`;
|
|
349
|
+
}
|
|
350
|
+
if (obj && typeof obj === 'object') {
|
|
351
|
+
const out = Array.isArray(obj) ? [] : {};
|
|
352
|
+
for (const k of Object.keys(obj))
|
|
353
|
+
out[k] = rewrite(obj[k], basePath);
|
|
354
|
+
return out;
|
|
355
|
+
}
|
|
356
|
+
return obj;
|
|
357
|
+
};
|
|
358
|
+
s.start(`Syncing ${appName} tokens...`);
|
|
359
|
+
const updated = rewrite(tokens, cwd);
|
|
360
|
+
await Promise.all(uploads);
|
|
361
|
+
if (modified) {
|
|
362
|
+
writeFileSync(tokensPath, JSON.stringify(updated, null, 2) + '\n');
|
|
363
|
+
totalRewrites++;
|
|
364
|
+
s.stop(`${appName}: updated tokens.json`);
|
|
365
|
+
}
|
|
366
|
+
else {
|
|
367
|
+
s.stop(`${appName}: no file: references found`);
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
// ── Pass 2: markdown files across all workspace repos ─────────────────
|
|
371
|
+
const repoPaths = config.repos.map((r) => join(cwd, r.path));
|
|
372
|
+
s.start('Scanning markdown files for local asset references...');
|
|
373
|
+
const mdResult = await syncMarkdownAssets(cwd, repoPaths, client, r2, s);
|
|
374
|
+
totalUploaded += mdResult.uploaded;
|
|
375
|
+
s.stop(mdResult.rewrites > 0
|
|
376
|
+
? `Markdown: ${mdResult.uploaded} asset(s) uploaded, ${mdResult.rewrites} file(s) rewritten`
|
|
377
|
+
: 'Markdown: no local asset references found');
|
|
378
|
+
if (totalUploaded > 0) {
|
|
379
|
+
log.success(`Assets available at ${r2.public_url}/`);
|
|
380
|
+
}
|
|
381
|
+
});
|
|
200
382
|
//# sourceMappingURL=r2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"r2.js","sourceRoot":"","sources":["../../../src/cli/commands/r2.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"r2.js","sourceRoot":"","sources":["../../../src/cli/commands/r2.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,19 +15,64 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import { Command } from 'commander';
|
|
17
17
|
import { join } from 'path';
|
|
18
|
+
import { existsSync } from 'fs';
|
|
18
19
|
import { Workspace } from '../../core/workspace.js';
|
|
19
20
|
import { WorkspaceManager } from '../../core/workspace-manager.js';
|
|
20
21
|
import { loadUserConfig } from '../../core/user-config.js';
|
|
21
22
|
import { runPreflight } from '../../utils/preflight.js';
|
|
22
23
|
import { createServer } from '../../server/index.js';
|
|
24
|
+
import { gitClone } from '../../utils/git.js';
|
|
25
|
+
/**
|
|
26
|
+
* Bootstrap a Railway (or any remote) deployment on first boot.
|
|
27
|
+
*
|
|
28
|
+
* If STUDIOGRAPH_CONFIG_REPO is set and .studiograph/ does not yet exist,
|
|
29
|
+
* clone the config repo then clone all content repos listed in workspace.json.
|
|
30
|
+
* Uses GITHUB_TOKEN for authentication when cloning from GitHub.
|
|
31
|
+
*/
|
|
32
|
+
async function bootstrapWorkspace(workspacePath) {
|
|
33
|
+
const configRepoUrl = process.env.STUDIOGRAPH_CONFIG_REPO;
|
|
34
|
+
const githubToken = process.env.GITHUB_TOKEN;
|
|
35
|
+
if (!configRepoUrl)
|
|
36
|
+
return; // Not a bootstrap environment
|
|
37
|
+
const studiographDir = join(workspacePath, '.studiograph');
|
|
38
|
+
if (existsSync(studiographDir))
|
|
39
|
+
return; // Already bootstrapped
|
|
40
|
+
const authedUrl = (url) => githubToken ? url.replace('https://', `https://${githubToken}@`) : url;
|
|
41
|
+
// Step 1: clone config repo
|
|
42
|
+
console.log('Bootstrap: cloning config repo...');
|
|
43
|
+
gitClone(authedUrl(configRepoUrl), studiographDir);
|
|
44
|
+
// Step 2: read workspace.json and clone each content repo
|
|
45
|
+
const workspace = new Workspace(workspacePath);
|
|
46
|
+
if (!workspace.isWorkspace()) {
|
|
47
|
+
throw new Error('Bootstrap failed: cloned config repo does not contain workspace.json');
|
|
48
|
+
}
|
|
49
|
+
const config = await workspace.loadConfig();
|
|
50
|
+
for (const repo of config.repos) {
|
|
51
|
+
if (!repo.github_url)
|
|
52
|
+
continue;
|
|
53
|
+
const repoPath = join(workspacePath, repo.path);
|
|
54
|
+
if (existsSync(repoPath))
|
|
55
|
+
continue;
|
|
56
|
+
console.log(`Bootstrap: cloning ${repo.name}...`);
|
|
57
|
+
try {
|
|
58
|
+
gitClone(authedUrl(repo.github_url), repoPath);
|
|
59
|
+
}
|
|
60
|
+
catch (err) {
|
|
61
|
+
console.warn(`Bootstrap: could not clone ${repo.name} — ${err?.message ?? err}`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
console.log('Bootstrap: workspace ready\n');
|
|
65
|
+
}
|
|
23
66
|
export const serveCommand = new Command('serve')
|
|
24
67
|
.description('Start the Studiograph HTTP server')
|
|
25
68
|
.option('-p, --port <port>', 'Port to listen on', '3000')
|
|
26
69
|
.option('-H, --host <host>', 'Host to bind to', '0.0.0.0')
|
|
27
70
|
.action(async (opts) => {
|
|
71
|
+
// Bootstrap from STUDIOGRAPH_CONFIG_REPO if repos are not present (e.g. Railway first boot)
|
|
72
|
+
await bootstrapWorkspace(process.cwd());
|
|
28
73
|
const workspace = new Workspace();
|
|
29
74
|
if (!workspace.isWorkspace()) {
|
|
30
|
-
console.error('Not a Studiograph workspace. Run `studiograph init` first.');
|
|
75
|
+
console.error('Not a Studiograph workspace. Run `studiograph init` first, or set STUDIOGRAPH_CONFIG_REPO for automatic bootstrap.');
|
|
31
76
|
process.exit(1);
|
|
32
77
|
}
|
|
33
78
|
const ready = runPreflight();
|
|
@@ -35,7 +80,7 @@ export const serveCommand = new Command('serve')
|
|
|
35
80
|
process.exit(1);
|
|
36
81
|
return;
|
|
37
82
|
}
|
|
38
|
-
const config = workspace.loadConfig();
|
|
83
|
+
const config = await workspace.loadConfig();
|
|
39
84
|
// Propagate API key from user config to env (orchestrator reads ANTHROPIC_API_KEY)
|
|
40
85
|
const userConfig = loadUserConfig();
|
|
41
86
|
if (userConfig.api_key && !process.env.ANTHROPIC_API_KEY) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../src/cli/commands/serve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../src/cli/commands/serve.ts"],"names":[],"mappings":"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"}
|