studiograph 1.3.2 → 1.3.3-next.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent/orchestrator.d.ts +8 -0
- package/dist/agent/orchestrator.js +13 -2
- package/dist/agent/orchestrator.js.map +1 -1
- package/dist/agent/tools/graph-tools.d.ts +5 -1
- package/dist/agent/tools/graph-tools.js +161 -9
- package/dist/agent/tools/graph-tools.js.map +1 -1
- package/dist/agent/tools/permission-tools.d.ts +15 -14
- package/dist/agent/tools/permission-tools.js +65 -128
- package/dist/agent/tools/permission-tools.js.map +1 -1
- package/dist/cli/commands/join.d.ts +3 -2
- package/dist/cli/commands/join.js +93 -98
- package/dist/cli/commands/join.js.map +1 -1
- package/dist/cli/commands/redeploy.js +14 -22
- package/dist/cli/commands/redeploy.js.map +1 -1
- package/dist/cli/commands/serve.js +3 -3
- package/dist/cli/commands/serve.js.map +1 -1
- package/dist/cli/commands/sync.d.ts +4 -2
- package/dist/cli/commands/sync.js +21 -22
- package/dist/cli/commands/sync.js.map +1 -1
- package/dist/cli/commands/user.d.ts +7 -0
- package/dist/cli/commands/user.js +153 -0
- package/dist/cli/commands/user.js.map +1 -0
- package/dist/cli/index.js +3 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/core/graph.d.ts +8 -2
- package/dist/core/graph.js +11 -7
- package/dist/core/graph.js.map +1 -1
- package/dist/core/types.d.ts +9 -0
- package/dist/core/types.js +1 -0
- package/dist/core/types.js.map +1 -1
- package/dist/core/workspace-manager.js +1 -5
- package/dist/core/workspace-manager.js.map +1 -1
- package/dist/core/workspace.js +1 -1
- package/dist/core/workspace.js.map +1 -1
- package/dist/server/chrome/chrome.js +12 -212
- package/dist/server/commit-scheduler.d.ts +39 -0
- package/dist/server/commit-scheduler.js +99 -0
- package/dist/server/commit-scheduler.js.map +1 -0
- package/dist/server/index.js +86 -46
- package/dist/server/index.js.map +1 -1
- package/dist/server/routes/auth-api.d.ts +8 -0
- package/dist/server/routes/auth-api.js +163 -0
- package/dist/server/routes/auth-api.js.map +1 -0
- package/dist/server/routes/chat.js +4 -0
- package/dist/server/routes/chat.js.map +1 -1
- package/dist/server/routes/git-http.d.ts +23 -0
- package/dist/server/routes/git-http.js +213 -0
- package/dist/server/routes/git-http.js.map +1 -0
- package/dist/server/routes/graph-api.d.ts +6 -2
- package/dist/server/routes/graph-api.js +230 -50
- package/dist/server/routes/graph-api.js.map +1 -1
- package/dist/server/routes/permissions-api.d.ts +5 -4
- package/dist/server/routes/permissions-api.js +39 -167
- package/dist/server/routes/permissions-api.js.map +1 -1
- package/dist/server/routes/ws.d.ts +7 -0
- package/dist/server/routes/ws.js +35 -0
- package/dist/server/routes/ws.js.map +1 -0
- package/dist/server/ws-hub.d.ts +36 -0
- package/dist/server/ws-hub.js +63 -0
- package/dist/server/ws-hub.js.map +1 -0
- package/dist/services/auth-service.d.ts +77 -0
- package/dist/services/auth-service.js +302 -0
- package/dist/services/auth-service.js.map +1 -0
- package/dist/utils/git.d.ts +21 -1
- package/dist/utils/git.js +69 -3
- package/dist/utils/git.js.map +1 -1
- package/dist/web/_app/immutable/assets/{0.CDbX4Cwz.css → 0.CL-hNrKE.css} +1 -1
- package/dist/web/_app/immutable/assets/7.Cn2DG-J6.css +1 -0
- package/dist/web/_app/immutable/assets/8.Sm6jB3a0.css +1 -0
- package/dist/web/_app/immutable/assets/AppShell.RYbgfVr0.css +1 -0
- package/dist/web/_app/immutable/chunks/-lhxaNNQ.js +1 -0
- package/dist/web/_app/immutable/chunks/BFD-PG4k.js +2 -0
- package/dist/web/_app/immutable/chunks/BKhAbhZ4.js +1 -0
- package/dist/web/_app/immutable/chunks/BUuoVpOJ.js +1 -0
- package/dist/web/_app/immutable/chunks/BuHHk4nP.js +1 -0
- package/dist/web/_app/immutable/chunks/Bv8xNJQh.js +1 -0
- package/dist/web/_app/immutable/chunks/C0iyiXwO.js +1 -0
- package/dist/web/_app/immutable/chunks/CH-raHh7.js +1 -0
- package/dist/web/_app/immutable/chunks/{DTUXhwEY.js → CQo_whF8.js} +1 -1
- package/dist/web/_app/immutable/chunks/CiIF45lL.js +1 -0
- package/dist/web/_app/immutable/chunks/{DEJSHbC3.js → Cs6vwwZC.js} +1 -1
- package/dist/web/_app/immutable/chunks/{C1SF7XfX.js → DJO0wVMY.js} +4 -4
- package/dist/web/_app/immutable/chunks/DeY0oOW3.js +2 -0
- package/dist/web/_app/immutable/chunks/{BHedmkKI.js → Dj2efhG6.js} +18 -18
- package/dist/web/_app/immutable/chunks/ew-IdGn0.js +1 -0
- package/dist/web/_app/immutable/chunks/yEjjrv_c.js +23 -0
- package/dist/web/_app/immutable/entry/app.BNN66g6y.js +2 -0
- package/dist/web/_app/immutable/entry/start.CbKqTiwM.js +1 -0
- package/dist/web/_app/immutable/nodes/0.DthLeuCh.js +2 -0
- package/dist/web/_app/immutable/nodes/1.ZBkeuxO_.js +1 -0
- package/dist/web/_app/immutable/nodes/2.CioLRnGy.js +1 -0
- package/dist/web/_app/immutable/nodes/3.Df3ut4ji.js +1 -0
- package/dist/web/_app/immutable/nodes/4.HFzA-u2O.js +16 -0
- package/dist/web/_app/immutable/nodes/5.h31NMedP.js +4 -0
- package/dist/web/_app/immutable/nodes/6.MktCIoXa.js +2 -0
- package/dist/web/_app/immutable/nodes/7.CZ7lC_rb.js +1 -0
- package/dist/web/_app/immutable/nodes/8.CRf2WFmY.js +1 -0
- package/dist/web/_app/version.json +1 -1
- package/dist/web/index.html +12 -12
- package/package.json +11 -2
- package/dist/web/_app/immutable/assets/AppShell.D0rmbdqF.css +0 -1
- package/dist/web/_app/immutable/chunks/Bopa-Ask.js +0 -1
- package/dist/web/_app/immutable/chunks/CEkx7wvp.js +0 -1
- package/dist/web/_app/immutable/chunks/COwytaCP.js +0 -1
- package/dist/web/_app/immutable/chunks/Dml-u95b.js +0 -2
- package/dist/web/_app/immutable/chunks/DvKVaE7M.js +0 -1
- package/dist/web/_app/immutable/chunks/J4wxg_sP.js +0 -23
- package/dist/web/_app/immutable/chunks/MbiSz-iW.js +0 -2
- package/dist/web/_app/immutable/chunks/bSAC733J.js +0 -1
- package/dist/web/_app/immutable/entry/app.B0KkA_jR.js +0 -2
- package/dist/web/_app/immutable/entry/start.DFSNI2p-.js +0 -1
- package/dist/web/_app/immutable/nodes/0.DfbCOBhn.js +0 -2
- package/dist/web/_app/immutable/nodes/1.DMtWWiM4.js +0 -1
- package/dist/web/_app/immutable/nodes/2.CgKSJOen.js +0 -1
- package/dist/web/_app/immutable/nodes/3.CVYHBZE3.js +0 -1
- package/dist/web/_app/immutable/nodes/4.CHN1uWec.js +0 -16
- package/dist/web/_app/immutable/nodes/5.B4_87Wva.js +0 -4
- package/dist/web/_app/immutable/nodes/6.CGZ970f8.js +0 -2
|
@@ -1,77 +1,100 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* studiograph join command
|
|
3
3
|
*
|
|
4
|
-
* Joins an existing Studiograph workspace by
|
|
5
|
-
*
|
|
4
|
+
* Joins an existing Studiograph workspace by connecting to a running
|
|
5
|
+
* Studiograph server, authenticating with email/password, and cloning
|
|
6
|
+
* all accessible collections via the embedded git server.
|
|
6
7
|
*/
|
|
7
8
|
import { Command } from 'commander';
|
|
8
|
-
import { intro, confirm, outro, spinner, log } from '@clack/prompts';
|
|
9
|
-
import { existsSync, mkdirSync } from 'fs';
|
|
9
|
+
import { intro, confirm, outro, spinner, log, text, password as promptPassword, isCancel } from '@clack/prompts';
|
|
10
|
+
import { existsSync, mkdirSync, writeFileSync } from 'fs';
|
|
10
11
|
import { join, resolve } from 'path';
|
|
11
|
-
import { Workspace } from '../../core/workspace.js';
|
|
12
12
|
import { gitClone } from '../../utils/git.js';
|
|
13
|
-
import { loadToken, getAuthenticatedOctokit } from '../../auth/github.js';
|
|
14
13
|
import { runPreflight } from '../../utils/preflight.js';
|
|
15
14
|
import { reindexWorkspace } from '../../services/vector-service.js';
|
|
16
|
-
import {
|
|
17
|
-
|
|
15
|
+
import { promptLLMSetupIfNeeded } from '../setup-wizard.js';
|
|
16
|
+
/**
|
|
17
|
+
* Fetch JSON from the server with Basic Auth.
|
|
18
|
+
*/
|
|
19
|
+
async function serverFetch(serverUrl, path, email, password) {
|
|
20
|
+
const headers = {
|
|
21
|
+
'Authorization': 'Basic ' + Buffer.from(`${email}:${password}`).toString('base64'),
|
|
22
|
+
'Accept': 'application/json',
|
|
23
|
+
};
|
|
24
|
+
const res = await fetch(`${serverUrl}${path}`, { headers });
|
|
25
|
+
if (!res.ok) {
|
|
26
|
+
if (res.status === 401)
|
|
27
|
+
throw new Error('Invalid credentials');
|
|
28
|
+
throw new Error(`Server returned ${res.status}: ${res.statusText}`);
|
|
29
|
+
}
|
|
30
|
+
return res.json();
|
|
31
|
+
}
|
|
18
32
|
export const joinCommand = new Command('join')
|
|
19
33
|
.description('Join an existing Studiograph workspace')
|
|
20
|
-
.argument('<
|
|
34
|
+
.argument('<server-url>', 'URL of the Studiograph server (e.g. https://studio.example.com)')
|
|
21
35
|
.argument('[directory]', 'Directory to create workspace in (default: derived from workspace name, use "." for current directory)')
|
|
22
|
-
.action(async (
|
|
36
|
+
.action(async (serverUrl, directory) => {
|
|
23
37
|
intro('Join Studiograph Workspace');
|
|
24
38
|
const ready = runPreflight();
|
|
25
39
|
if (!ready) {
|
|
26
40
|
process.exit(1);
|
|
27
41
|
return;
|
|
28
42
|
}
|
|
43
|
+
// Normalize URL — strip trailing slash
|
|
44
|
+
serverUrl = serverUrl.replace(/\/+$/, '');
|
|
29
45
|
try {
|
|
30
|
-
// Step
|
|
31
|
-
await
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
46
|
+
// Step 1: Prompt for credentials
|
|
47
|
+
const email = await text({ message: 'Email:', validate: (v) => v.includes('@') ? undefined : 'Enter a valid email' });
|
|
48
|
+
if (isCancel(email)) {
|
|
49
|
+
outro('Cancelled');
|
|
50
|
+
process.exit(0);
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
const pass = await promptPassword({ message: 'Password:' });
|
|
54
|
+
if (isCancel(pass)) {
|
|
55
|
+
outro('Cancelled');
|
|
56
|
+
process.exit(0);
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
// Step 2: Connect to server and fetch workspace info
|
|
60
|
+
const connectSpinner = spinner();
|
|
61
|
+
connectSpinner.start('Connecting to server...');
|
|
62
|
+
let workspaceName;
|
|
63
|
+
let repos;
|
|
37
64
|
try {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
outro(`❌ Could not clone ${workspaceUrl}. Check the URL and your access permissions.`);
|
|
65
|
+
const wsInfo = await serverFetch(serverUrl, '/api/workspace', email, pass);
|
|
66
|
+
workspaceName = wsInfo.name;
|
|
67
|
+
repos = await serverFetch(serverUrl, '/api/repos', email, pass);
|
|
68
|
+
connectSpinner.stop(`Connected to ${workspaceName}`);
|
|
69
|
+
}
|
|
70
|
+
catch (err) {
|
|
71
|
+
connectSpinner.stop('Connection failed');
|
|
72
|
+
outro(`Could not connect: ${err instanceof Error ? err.message : 'Unknown error'}`);
|
|
47
73
|
process.exit(1);
|
|
48
74
|
return;
|
|
49
75
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
76
|
+
log.info(`${repos.length} collection${repos.length === 1 ? '' : 's'} accessible`);
|
|
77
|
+
if (repos.length === 0) {
|
|
78
|
+
outro('No accessible collections. Ask a workspace admin to grant you access.');
|
|
79
|
+
process.exit(0);
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
// Step 3: Determine target directory
|
|
54
83
|
let targetDir;
|
|
55
84
|
if (directory === '.') {
|
|
56
|
-
// Use current directory
|
|
57
85
|
targetDir = process.cwd();
|
|
58
86
|
}
|
|
59
87
|
else if (directory) {
|
|
60
|
-
// Use specified directory
|
|
61
88
|
targetDir = resolve(directory);
|
|
62
89
|
}
|
|
63
90
|
else {
|
|
64
|
-
|
|
65
|
-
const slug = tempConfig.team_name.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '');
|
|
91
|
+
const slug = workspaceName.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '');
|
|
66
92
|
targetDir = resolve(slug);
|
|
67
93
|
}
|
|
68
94
|
// Check if target directory has .studiograph
|
|
69
95
|
const studiographDir = join(targetDir, '.studiograph');
|
|
70
96
|
if (existsSync(studiographDir)) {
|
|
71
|
-
|
|
72
|
-
const { rmSync } = await import('fs');
|
|
73
|
-
rmSync(tempDir, { recursive: true, force: true });
|
|
74
|
-
outro(`❌ A .studiograph directory already exists at ${targetDir}`);
|
|
97
|
+
outro(`A .studiograph directory already exists at ${targetDir}`);
|
|
75
98
|
process.exit(1);
|
|
76
99
|
return;
|
|
77
100
|
}
|
|
@@ -81,8 +104,7 @@ export const joinCommand = new Command('join')
|
|
|
81
104
|
log.info(`Created directory: ${targetDir}`);
|
|
82
105
|
}
|
|
83
106
|
else if (directory !== '.') {
|
|
84
|
-
|
|
85
|
-
const { readdirSync, rmSync } = await import('fs');
|
|
107
|
+
const { readdirSync } = await import('fs');
|
|
86
108
|
const files = readdirSync(targetDir);
|
|
87
109
|
if (files.length > 0) {
|
|
88
110
|
const proceed = await confirm({
|
|
@@ -90,92 +112,67 @@ export const joinCommand = new Command('join')
|
|
|
90
112
|
initialValue: false,
|
|
91
113
|
});
|
|
92
114
|
if (!proceed || typeof proceed === 'symbol') {
|
|
93
|
-
rmSync(tempDir, { recursive: true, force: true });
|
|
94
115
|
outro('Cancelled');
|
|
95
116
|
process.exit(0);
|
|
96
117
|
return;
|
|
97
118
|
}
|
|
98
119
|
}
|
|
99
120
|
}
|
|
100
|
-
// Move temp .studiograph to target directory
|
|
101
|
-
const { renameSync, rmSync } = await import('fs');
|
|
102
|
-
renameSync(join(tempDir, '.studiograph'), studiographDir);
|
|
103
|
-
rmSync(tempDir, { recursive: true, force: true });
|
|
104
|
-
// Step 2: Load workspace config
|
|
105
|
-
const workspace = new Workspace(targetDir);
|
|
106
|
-
const config = await workspace.loadConfig();
|
|
107
|
-
log.info(`Workspace: ${config.team_name}`);
|
|
108
|
-
log.info(`${config.repos.length} collection${config.repos.length === 1 ? '' : 's'} in workspace`);
|
|
109
|
-
// Step 3: Discover repos accessible via GitHub
|
|
110
|
-
const stored = loadToken();
|
|
111
|
-
let accessibleRepoNames = null;
|
|
112
|
-
if (stored && config.github?.org) {
|
|
113
|
-
try {
|
|
114
|
-
const octokit = getAuthenticatedOctokit(stored.token);
|
|
115
|
-
const service = new GitHubService(octokit, config.github.org);
|
|
116
|
-
const ghRepos = await service.listAccessibleRepos();
|
|
117
|
-
accessibleRepoNames = new Set(ghRepos.map(r => r.name));
|
|
118
|
-
}
|
|
119
|
-
catch {
|
|
120
|
-
// Fall through — clone all repos and let git handle auth
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
// Filter workspace repos to those accessible on GitHub
|
|
124
|
-
const accessibleRepos = accessibleRepoNames
|
|
125
|
-
? config.repos.filter(r => accessibleRepoNames.has(r.name))
|
|
126
|
-
: config.repos;
|
|
127
|
-
log.info(`${accessibleRepos.length} collection${accessibleRepos.length === 1 ? '' : 's'} accessible`);
|
|
128
|
-
if (accessibleRepos.length === 0) {
|
|
129
|
-
outro('No accessible collections to clone. Ask a workspace admin to grant you access on GitHub.');
|
|
130
|
-
process.exit(0);
|
|
131
|
-
return;
|
|
132
|
-
}
|
|
133
121
|
// Confirm before cloning
|
|
134
|
-
const repoList =
|
|
122
|
+
const repoList = repos.map(r => ` \u2022 ${r.name}`).join('\n');
|
|
135
123
|
const shouldProceed = await confirm({
|
|
136
|
-
message: `Clone these
|
|
124
|
+
message: `Clone these collections into ${targetDir}?\n${repoList}`,
|
|
137
125
|
});
|
|
138
126
|
if (!shouldProceed || typeof shouldProceed === 'symbol') {
|
|
139
127
|
outro('Cancelled');
|
|
140
128
|
process.exit(0);
|
|
141
129
|
return;
|
|
142
130
|
}
|
|
143
|
-
// Step
|
|
131
|
+
// Step 4: Create local .studiograph/workspace.json
|
|
132
|
+
mkdirSync(studiographDir, { recursive: true });
|
|
133
|
+
const workspaceConfig = {
|
|
134
|
+
version: '1.0.0',
|
|
135
|
+
team_name: workspaceName,
|
|
136
|
+
created_at: new Date().toISOString(),
|
|
137
|
+
server_url: serverUrl,
|
|
138
|
+
repos: repos.map(r => ({
|
|
139
|
+
name: r.name,
|
|
140
|
+
path: r.name,
|
|
141
|
+
description: r.description,
|
|
142
|
+
})),
|
|
143
|
+
};
|
|
144
|
+
writeFileSync(join(studiographDir, 'workspace.json'), JSON.stringify(workspaceConfig, null, 2), 'utf-8');
|
|
145
|
+
// Create .gitignore for .studiograph
|
|
146
|
+
writeFileSync(join(studiographDir, '.gitignore'), ['auth.db', 'auth-seed.json', 'populate-cache/', 'memory/', '*.log'].join('\n') + '\n', 'utf-8');
|
|
147
|
+
// Step 5: Clone accessible repos
|
|
144
148
|
let cloned = 0;
|
|
145
|
-
let skipped = 0;
|
|
146
149
|
let failed = 0;
|
|
147
|
-
for (const repo of
|
|
148
|
-
|
|
149
|
-
log.warn(`Skipping ${repo.name}: no GitHub URL configured in workspace.json`);
|
|
150
|
-
skipped++;
|
|
151
|
-
continue;
|
|
152
|
-
}
|
|
153
|
-
const repoPath = join(targetDir, repo.path);
|
|
150
|
+
for (const repo of repos) {
|
|
151
|
+
const repoPath = join(targetDir, repo.name);
|
|
154
152
|
if (existsSync(repoPath)) {
|
|
155
|
-
log.warn(`Skipping ${repo.name}: directory already exists
|
|
156
|
-
skipped++;
|
|
153
|
+
log.warn(`Skipping ${repo.name}: directory already exists`);
|
|
157
154
|
continue;
|
|
158
155
|
}
|
|
159
156
|
const repoSpinner = spinner();
|
|
160
157
|
repoSpinner.start(`Cloning ${repo.name}...`);
|
|
161
158
|
try {
|
|
162
|
-
|
|
159
|
+
const gitUrl = `${serverUrl}/git/${repo.name}`;
|
|
160
|
+
gitClone(gitUrl, repoPath, { credentials: { username: email, password: pass } });
|
|
163
161
|
repoSpinner.stop(`Cloned ${repo.name}`);
|
|
164
162
|
cloned++;
|
|
165
163
|
}
|
|
166
164
|
catch {
|
|
167
165
|
repoSpinner.stop(`Failed to clone ${repo.name}`);
|
|
168
|
-
log.warn(`Could not clone ${repo.name}: check your
|
|
166
|
+
log.warn(`Could not clone ${repo.name}: check your access permissions`);
|
|
169
167
|
failed++;
|
|
170
168
|
}
|
|
171
169
|
}
|
|
172
|
-
// Step
|
|
170
|
+
// Step 6: Index entities for search
|
|
173
171
|
if (cloned > 0) {
|
|
174
172
|
const indexSpinner = spinner();
|
|
175
173
|
indexSpinner.start('Building search index...');
|
|
176
174
|
try {
|
|
177
|
-
const indexedRepos =
|
|
178
|
-
.filter(r => r.github_url && existsSync(join(targetDir, r.path)));
|
|
175
|
+
const indexedRepos = repos.filter(r => existsSync(join(targetDir, r.name)));
|
|
179
176
|
const total = await reindexWorkspace(targetDir, indexedRepos);
|
|
180
177
|
indexSpinner.stop(`Search index ready (${total} entities)`);
|
|
181
178
|
}
|
|
@@ -183,12 +180,10 @@ export const joinCommand = new Command('join')
|
|
|
183
180
|
indexSpinner.stop('Search index skipped (non-fatal)');
|
|
184
181
|
}
|
|
185
182
|
}
|
|
186
|
-
// Step
|
|
183
|
+
// Step 7: Summary
|
|
187
184
|
const parts = [];
|
|
188
185
|
if (cloned > 0)
|
|
189
186
|
parts.push(`${cloned} cloned`);
|
|
190
|
-
if (skipped > 0)
|
|
191
|
-
parts.push(`${skipped} skipped`);
|
|
192
187
|
if (failed > 0)
|
|
193
188
|
parts.push(`${failed} failed`);
|
|
194
189
|
const summary = parts.join(', ');
|
|
@@ -196,14 +191,14 @@ export const joinCommand = new Command('join')
|
|
|
196
191
|
await promptLLMSetupIfNeeded();
|
|
197
192
|
const nextStep = directory === '.' ? '' : `\n\nNext: cd ${targetDir} && studiograph start`;
|
|
198
193
|
if (failed > 0) {
|
|
199
|
-
outro(`Joined ${
|
|
194
|
+
outro(`Joined ${workspaceName} with issues (${summary}). Ask a workspace admin to verify your access.${nextStep}`);
|
|
200
195
|
}
|
|
201
196
|
else {
|
|
202
|
-
outro(`Joined ${
|
|
197
|
+
outro(`Joined ${workspaceName} workspace (${summary})${nextStep}`);
|
|
203
198
|
}
|
|
204
199
|
}
|
|
205
200
|
catch (error) {
|
|
206
|
-
outro(
|
|
201
|
+
outro(`Error: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
207
202
|
process.exit(1);
|
|
208
203
|
}
|
|
209
204
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"join.js","sourceRoot":"","sources":["../../../src/cli/commands/join.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"join.js","sourceRoot":"","sources":["../../../src/cli/commands/join.ts"],"names":[],"mappings":"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"}
|
|
@@ -151,7 +151,7 @@ export const redeployCommand = new Command('redeploy')
|
|
|
151
151
|
const pkgPath = new URL('../../../package.json', import.meta.url);
|
|
152
152
|
const { readFileSync } = await import('fs');
|
|
153
153
|
const pkgVersion = JSON.parse(readFileSync(pkgPath, 'utf-8')).version;
|
|
154
|
-
const startCommand = `npx studiograph@${pkgVersion} serve`;
|
|
154
|
+
const startCommand = `npx --yes studiograph@${pkgVersion} serve`;
|
|
155
155
|
await railwayQuery(token, `
|
|
156
156
|
mutation($serviceId: String!, $environmentId: String!, $input: ServiceInstanceUpdateInput!) {
|
|
157
157
|
serviceInstanceUpdate(serviceId: $serviceId, environmentId: $environmentId, input: $input)
|
|
@@ -162,32 +162,24 @@ export const redeployCommand = new Command('redeploy')
|
|
|
162
162
|
catch (err) {
|
|
163
163
|
s.stop('Could not update start command — continuing with redeploy');
|
|
164
164
|
}
|
|
165
|
-
//
|
|
165
|
+
// Force a fresh deployment by updating DEPLOY_TS env var.
|
|
166
|
+
// Using deploymentRedeploy reuses cached build layers (stale npx packages).
|
|
167
|
+
// Changing an env var triggers a completely new build + deploy cycle.
|
|
166
168
|
const s2 = spinner();
|
|
167
169
|
s2.start('Triggering redeploy...');
|
|
168
170
|
try {
|
|
169
|
-
const deployData = await railwayQuery(token, `
|
|
170
|
-
query($projectId: String!, $serviceId: String!, $environmentId: String!) {
|
|
171
|
-
deployments(
|
|
172
|
-
input: { projectId: $projectId, serviceId: $serviceId, environmentId: $environmentId }
|
|
173
|
-
first: 1
|
|
174
|
-
) {
|
|
175
|
-
edges { node { id status } }
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
`, { projectId, serviceId, environmentId });
|
|
179
|
-
const latestDeploy = deployData.deployments.edges[0]?.node;
|
|
180
|
-
if (!latestDeploy) {
|
|
181
|
-
s2.stop('No previous deployment found');
|
|
182
|
-
outro('No deployment to redeploy. Run `studiograph deploy railway` first.');
|
|
183
|
-
process.exit(1);
|
|
184
|
-
return;
|
|
185
|
-
}
|
|
186
171
|
await railwayQuery(token, `
|
|
187
|
-
mutation($
|
|
188
|
-
|
|
172
|
+
mutation($input: VariableCollectionUpsertInput!) {
|
|
173
|
+
variableCollectionUpsert(input: $input)
|
|
189
174
|
}
|
|
190
|
-
`, {
|
|
175
|
+
`, {
|
|
176
|
+
input: {
|
|
177
|
+
projectId,
|
|
178
|
+
environmentId,
|
|
179
|
+
serviceId,
|
|
180
|
+
variables: { DEPLOY_TS: String(Date.now()) },
|
|
181
|
+
},
|
|
182
|
+
});
|
|
191
183
|
s2.stop('Redeploy triggered');
|
|
192
184
|
}
|
|
193
185
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redeploy.js","sourceRoot":"","sources":["../../../src/cli/commands/redeploy.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"redeploy.js","sourceRoot":"","sources":["../../../src/cli/commands/redeploy.ts"],"names":[],"mappings":"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"}
|
|
@@ -78,7 +78,7 @@ async function bootstrapWorkspace(workspacePath) {
|
|
|
78
78
|
// Repo added since last boot — clone it
|
|
79
79
|
console.log(` ${repo.name}: cloning...`);
|
|
80
80
|
try {
|
|
81
|
-
gitClone(authedUrl(repo.github_url), repoPath);
|
|
81
|
+
gitClone(authedUrl(repo.github_url), repoPath, { silent: true });
|
|
82
82
|
}
|
|
83
83
|
catch (err) {
|
|
84
84
|
console.warn(` ${repo.name}: clone failed — ${err?.message ?? err}`);
|
|
@@ -91,7 +91,7 @@ async function bootstrapWorkspace(workspacePath) {
|
|
|
91
91
|
}
|
|
92
92
|
// First boot — clone everything
|
|
93
93
|
console.log('Bootstrap: cloning config repo...');
|
|
94
|
-
gitClone(authedUrl(configRepoUrl), studiographDir);
|
|
94
|
+
gitClone(authedUrl(configRepoUrl), studiographDir, { silent: true });
|
|
95
95
|
const workspace = new Workspace(workspacePath);
|
|
96
96
|
if (!workspace.isWorkspace()) {
|
|
97
97
|
throw new Error('Bootstrap failed: cloned config repo does not contain workspace.json');
|
|
@@ -105,7 +105,7 @@ async function bootstrapWorkspace(workspacePath) {
|
|
|
105
105
|
continue;
|
|
106
106
|
console.log(`Bootstrap: cloning ${repo.name}...`);
|
|
107
107
|
try {
|
|
108
|
-
gitClone(authedUrl(repo.github_url), repoPath);
|
|
108
|
+
gitClone(authedUrl(repo.github_url), repoPath, { silent: true });
|
|
109
109
|
}
|
|
110
110
|
catch (err) {
|
|
111
111
|
console.warn(`Bootstrap: could not clone ${repo.name} — ${err?.message ?? err}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../src/cli/commands/serve.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../src/cli/commands/serve.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,10 @@
|
|
|
2
2
|
* studiograph pull / push commands
|
|
3
3
|
*
|
|
4
4
|
* Pull and push changes across the workspace:
|
|
5
|
-
* - the .studiograph config repo
|
|
6
|
-
* - each entity
|
|
5
|
+
* - the .studiograph config repo (if it has a git remote)
|
|
6
|
+
* - each entity collection that is a git repo with a remote
|
|
7
|
+
*
|
|
8
|
+
* Works with both GitHub remotes and the embedded git server.
|
|
7
9
|
*/
|
|
8
10
|
import { Command } from 'commander';
|
|
9
11
|
export declare const pullCommand: Command;
|
|
@@ -2,25 +2,32 @@
|
|
|
2
2
|
* studiograph pull / push commands
|
|
3
3
|
*
|
|
4
4
|
* Pull and push changes across the workspace:
|
|
5
|
-
* - the .studiograph config repo
|
|
6
|
-
* - each entity
|
|
5
|
+
* - the .studiograph config repo (if it has a git remote)
|
|
6
|
+
* - each entity collection that is a git repo with a remote
|
|
7
|
+
*
|
|
8
|
+
* Works with both GitHub remotes and the embedded git server.
|
|
7
9
|
*/
|
|
8
10
|
import { Command } from 'commander';
|
|
9
11
|
import { log, outro } from '@clack/prompts';
|
|
10
12
|
import { existsSync } from 'fs';
|
|
11
13
|
import { join } from 'path';
|
|
12
14
|
import { Workspace } from '../../core/workspace.js';
|
|
13
|
-
import { gitPull, gitPush, gitStashPop } from '../../utils/git.js';
|
|
15
|
+
import { gitPull, gitPush, gitStashPop, gitHasRemote } from '../../utils/git.js';
|
|
14
16
|
import { resolveConflicts } from '../../utils/merge-resolver.js';
|
|
15
17
|
async function getRepoEntries(workspace, workspaceRoot) {
|
|
16
18
|
const entries = [];
|
|
17
19
|
// The .studiograph config directory is itself a git repo (when GitHub-provisioned)
|
|
18
|
-
|
|
20
|
+
const configPath = join(workspaceRoot, '.studiograph');
|
|
21
|
+
if (isGitRepo(configPath) && gitHasRemote(configPath)) {
|
|
22
|
+
entries.push({ name: '.studiograph', path: configPath });
|
|
23
|
+
}
|
|
19
24
|
const config = await workspace.loadConfig();
|
|
20
25
|
for (const repo of config.repos) {
|
|
21
|
-
if (
|
|
22
|
-
continue; //
|
|
26
|
+
if (repo.private)
|
|
27
|
+
continue; // private repos are local-only
|
|
23
28
|
const repoPath = join(workspaceRoot, repo.path);
|
|
29
|
+
if (!isGitRepo(repoPath) || !gitHasRemote(repoPath))
|
|
30
|
+
continue;
|
|
24
31
|
entries.push({ name: repo.name, path: repoPath });
|
|
25
32
|
}
|
|
26
33
|
return entries;
|
|
@@ -78,17 +85,13 @@ export const pullCommand = new Command('pull')
|
|
|
78
85
|
}
|
|
79
86
|
const workspaceRoot = workspace.getWorkspacePath();
|
|
80
87
|
const entries = await getRepoEntries(workspace, workspaceRoot);
|
|
88
|
+
if (entries.length === 0) {
|
|
89
|
+
log.info('No collections with remotes to pull from.');
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
81
92
|
let hasConflict = false;
|
|
82
93
|
let hasError = false;
|
|
83
94
|
for (const entry of entries) {
|
|
84
|
-
if (!existsSync(entry.path)) {
|
|
85
|
-
log.info(`${entry.name}: skipped (not cloned locally)`);
|
|
86
|
-
continue;
|
|
87
|
-
}
|
|
88
|
-
if (!isGitRepo(entry.path)) {
|
|
89
|
-
log.info(`${entry.name}: skipped (not a git collection)`);
|
|
90
|
-
continue;
|
|
91
|
-
}
|
|
92
95
|
try {
|
|
93
96
|
const result = gitPull(entry.path, { abortOnConflict: false });
|
|
94
97
|
if (result === 'updated') {
|
|
@@ -142,16 +145,12 @@ export const pushCommand = new Command('push')
|
|
|
142
145
|
}
|
|
143
146
|
const workspaceRoot = workspace.getWorkspacePath();
|
|
144
147
|
const entries = await getRepoEntries(workspace, workspaceRoot);
|
|
148
|
+
if (entries.length === 0) {
|
|
149
|
+
log.info('No collections with remotes to push to.');
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
145
152
|
let hasError = false;
|
|
146
153
|
for (const entry of entries) {
|
|
147
|
-
if (!existsSync(entry.path)) {
|
|
148
|
-
log.info(`${entry.name}: skipped (not cloned locally)`);
|
|
149
|
-
continue;
|
|
150
|
-
}
|
|
151
|
-
if (!isGitRepo(entry.path)) {
|
|
152
|
-
log.info(`${entry.name}: skipped (not a git collection)`);
|
|
153
|
-
continue;
|
|
154
|
-
}
|
|
155
154
|
try {
|
|
156
155
|
let result = gitPush(entry.path);
|
|
157
156
|
// Auto pull-rebase and retry if remote has newer commits
|