@wayai/cli 0.2.68 → 0.2.69
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/commands/analytics.js +13 -9
- package/dist/commands/analytics.js.map +1 -1
- package/dist/commands/conversations.js +7 -5
- package/dist/commands/conversations.js.map +1 -1
- package/dist/commands/delete-history.js +4 -2
- package/dist/commands/delete-history.js.map +1 -1
- package/dist/commands/eval-capture.js +8 -6
- package/dist/commands/eval-capture.js.map +1 -1
- package/dist/commands/eval-results.js +4 -2
- package/dist/commands/eval-results.js.map +1 -1
- package/dist/commands/evals.js +8 -5
- package/dist/commands/evals.js.map +1 -1
- package/dist/commands/init.d.ts +7 -4
- package/dist/commands/init.js +34 -134
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/list.d.ts +2 -2
- package/dist/commands/list.js +6 -21
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/pull.d.ts +8 -2
- package/dist/commands/pull.js +50 -21
- package/dist/commands/pull.js.map +1 -1
- package/dist/commands/push.d.ts +8 -3
- package/dist/commands/push.js +71 -62
- package/dist/commands/push.js.map +1 -1
- package/dist/commands/report-bug.js +2 -5
- package/dist/commands/report-bug.js.map +1 -1
- package/dist/commands/run-eval.js +5 -3
- package/dist/commands/run-eval.js.map +1 -1
- package/dist/commands/send-message.js +4 -2
- package/dist/commands/send-message.js.map +1 -1
- package/dist/commands/status.js +1 -13
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/sync-skills.js +3 -2
- package/dist/commands/sync-skills.js.map +1 -1
- package/dist/index.d.ts +2 -3
- package/dist/index.js +14 -20
- package/dist/index.js.map +1 -1
- package/dist/lib/api-client.d.ts +2 -21
- package/dist/lib/api-client.js +3 -18
- package/dist/lib/api-client.js.map +1 -1
- package/dist/lib/repo-config.d.ts +4 -23
- package/dist/lib/repo-config.js +17 -103
- package/dist/lib/repo-config.js.map +1 -1
- package/dist/lib/utils.js +2 -2
- package/dist/lib/utils.js.map +1 -1
- package/dist/lib/workspace.d.ts +38 -15
- package/dist/lib/workspace.js +147 -57
- package/dist/lib/workspace.js.map +1 -1
- package/package.json +1 -1
- package/dist/commands/create-project.d.ts +0 -14
- package/dist/commands/create-project.js +0 -50
- package/dist/commands/create-project.js.map +0 -1
package/dist/commands/init.js
CHANGED
|
@@ -1,37 +1,40 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* wayai init [--
|
|
2
|
+
* wayai init [--org <uuid>] — set up .wayai.yaml to scope this repo to an organization
|
|
3
3
|
*
|
|
4
|
-
* Interactive mode: prompts user to pick org
|
|
5
|
-
* Direct mode: --
|
|
4
|
+
* Interactive mode: prompts user to pick an org (or auto-selects if only one).
|
|
5
|
+
* Direct mode: --org <uuid> sets the org without prompting.
|
|
6
|
+
*
|
|
7
|
+
* Hubs self-identify via `hub.yaml` inside their folder; this file only carries
|
|
8
|
+
* org context so that push/pull know which org to talk to.
|
|
6
9
|
*/
|
|
7
10
|
import { requireAuth } from '../lib/auth.js';
|
|
8
11
|
import { ApiClient } from '../lib/api-client.js';
|
|
9
|
-
import { readRepoConfig,
|
|
12
|
+
import { readRepoConfig, writeRepoConfig } from '../lib/repo-config.js';
|
|
10
13
|
import { refreshScaffold } from '../lib/scaffold.js';
|
|
11
14
|
import { findGitRoot } from '../lib/workspace.js';
|
|
12
15
|
import { UUID_RE, prompt } from '../lib/utils.js';
|
|
13
16
|
export function parseArgs(args) {
|
|
14
|
-
let
|
|
17
|
+
let orgId;
|
|
15
18
|
let autoConfirm = false;
|
|
16
|
-
const
|
|
17
|
-
if (
|
|
18
|
-
|
|
19
|
+
const orgIdx = args.indexOf('--org');
|
|
20
|
+
if (orgIdx !== -1 && args[orgIdx + 1]) {
|
|
21
|
+
orgId = args[orgIdx + 1];
|
|
19
22
|
}
|
|
20
23
|
for (const arg of args) {
|
|
21
24
|
if (arg === '--yes' || arg === '-y') {
|
|
22
25
|
autoConfirm = true;
|
|
23
26
|
}
|
|
24
27
|
}
|
|
25
|
-
return {
|
|
28
|
+
return { orgId, autoConfirm };
|
|
26
29
|
}
|
|
27
30
|
export async function initCommand(args) {
|
|
28
|
-
const {
|
|
31
|
+
const { orgId: directOrgId, autoConfirm } = parseArgs(args);
|
|
29
32
|
// Warn if .wayai.yaml already exists
|
|
30
|
-
const existing = readRepoConfig()
|
|
33
|
+
const existing = readRepoConfig();
|
|
31
34
|
if (existing) {
|
|
32
|
-
const scopeLabel = existing.
|
|
33
|
-
? `${existing.
|
|
34
|
-
:
|
|
35
|
+
const scopeLabel = existing.organization_name
|
|
36
|
+
? `${existing.organization_name} (${existing.organization_id})`
|
|
37
|
+
: existing.organization_id;
|
|
35
38
|
console.log(`Current scope: ${scopeLabel}`);
|
|
36
39
|
if (!autoConfirm) {
|
|
37
40
|
const answer = await prompt('Overwrite? [y/N]: ');
|
|
@@ -43,8 +46,8 @@ export async function initCommand(args) {
|
|
|
43
46
|
}
|
|
44
47
|
const { config, accessToken } = await requireAuth();
|
|
45
48
|
const client = new ApiClient({ apiUrl: config.api_url, accessToken });
|
|
46
|
-
if (
|
|
47
|
-
await initDirect(client,
|
|
49
|
+
if (directOrgId) {
|
|
50
|
+
await initDirect(client, directOrgId);
|
|
48
51
|
}
|
|
49
52
|
else {
|
|
50
53
|
await initInteractive(client);
|
|
@@ -67,49 +70,28 @@ export async function initCommand(args) {
|
|
|
67
70
|
console.warn(`Warning: failed to download scaffold files: ${err instanceof Error ? err.message : String(err)}`);
|
|
68
71
|
}
|
|
69
72
|
}
|
|
70
|
-
|
|
71
|
-
const finalConfig = readRepoConfig();
|
|
72
|
-
if (finalConfig) {
|
|
73
|
-
console.log('Run `wayai pull` to fetch hub configuration.');
|
|
74
|
-
}
|
|
73
|
+
console.log('Run `wayai pull` to fetch hub configuration, or create hub files in workspace/<hub>/hub.yaml and run `wayai push`.');
|
|
75
74
|
}
|
|
76
|
-
async function initDirect(client,
|
|
77
|
-
if (!UUID_RE.test(
|
|
78
|
-
console.error('Invalid
|
|
75
|
+
async function initDirect(client, orgId) {
|
|
76
|
+
if (!UUID_RE.test(orgId)) {
|
|
77
|
+
console.error('Invalid organization ID. Expected a UUID.');
|
|
79
78
|
process.exit(1);
|
|
80
79
|
}
|
|
81
|
-
|
|
82
|
-
console.log('Looking up hub...');
|
|
80
|
+
console.log('Looking up organization...');
|
|
83
81
|
const { organizations } = await client.organizations();
|
|
84
|
-
const
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
if (hubMatch.hub_environment === 'production') {
|
|
89
|
-
console.error(`Hub "${hubMatch.hub_name}" is a production hub. Production hubs are read-only — use the linked preview hub instead.`);
|
|
90
|
-
process.exit(1);
|
|
91
|
-
}
|
|
92
|
-
if (hubMatch.branch_name) {
|
|
93
|
-
console.log(`Warning: "${hubMatch.hub_name}" is a CI branch preview (${hubMatch.branch_name}) and may be auto-deleted after 7 days of inactivity.`);
|
|
94
|
-
}
|
|
95
|
-
console.log(`Found: ${hubMatch.hub_name} in ${hubMatch.project_name} (${org.name})`);
|
|
96
|
-
const configPath = writeRepoConfig({
|
|
97
|
-
organization_id: org.id,
|
|
98
|
-
organization_name: org.name,
|
|
99
|
-
project_id: hubMatch.project_id,
|
|
100
|
-
project_name: hubMatch.project_name,
|
|
101
|
-
hub_id: hubId,
|
|
102
|
-
hub_name: hubMatch.hub_name,
|
|
103
|
-
});
|
|
104
|
-
console.log(`\nWrote ${configPath}`);
|
|
105
|
-
return;
|
|
106
|
-
}
|
|
82
|
+
const match = organizations.find((o) => o.id === orgId);
|
|
83
|
+
if (!match) {
|
|
84
|
+
console.error(`Organization ${orgId} not found among the orgs you can access.`);
|
|
85
|
+
process.exit(1);
|
|
107
86
|
}
|
|
108
|
-
|
|
109
|
-
|
|
87
|
+
const configPath = writeRepoConfig({
|
|
88
|
+
organization_id: match.id,
|
|
89
|
+
organization_name: match.name,
|
|
90
|
+
});
|
|
91
|
+
console.log(`Found: ${match.name}`);
|
|
92
|
+
console.log(`\nWrote ${configPath}`);
|
|
110
93
|
}
|
|
111
94
|
async function initInteractive(client) {
|
|
112
|
-
// Step 1: Pick organization
|
|
113
95
|
console.log('Fetching organizations...');
|
|
114
96
|
const { organizations } = await client.organizations();
|
|
115
97
|
if (organizations.length === 0) {
|
|
@@ -134,91 +116,9 @@ async function initInteractive(client) {
|
|
|
134
116
|
}
|
|
135
117
|
selectedOrg = organizations[orgIdx];
|
|
136
118
|
}
|
|
137
|
-
// Step 2: Fetch projects directly (not derived from hubs — supports empty projects)
|
|
138
|
-
console.log('Fetching projects...');
|
|
139
|
-
const { data: projectList } = await client.listProjects(selectedOrg.id);
|
|
140
|
-
if (projectList.length === 0) {
|
|
141
|
-
console.error('No projects found. Create one with `wayai create-project --name "..."` first.');
|
|
142
|
-
process.exit(1);
|
|
143
|
-
}
|
|
144
|
-
let selectedProject;
|
|
145
|
-
if (projectList.length === 1) {
|
|
146
|
-
selectedProject = { id: projectList[0].project_id, name: projectList[0].project_name };
|
|
147
|
-
console.log(`Project: ${selectedProject.name}`);
|
|
148
|
-
}
|
|
149
|
-
else {
|
|
150
|
-
console.log('\nProjects:');
|
|
151
|
-
for (let i = 0; i < projectList.length; i++) {
|
|
152
|
-
console.log(` ${i + 1}. ${projectList[i].project_name}`);
|
|
153
|
-
}
|
|
154
|
-
const projAnswer = await prompt(`\nSelect project [1-${projectList.length}]: `);
|
|
155
|
-
const projIdx = parseInt(projAnswer, 10) - 1;
|
|
156
|
-
if (isNaN(projIdx) || projIdx < 0 || projIdx >= projectList.length) {
|
|
157
|
-
console.error('Invalid selection.');
|
|
158
|
-
process.exit(1);
|
|
159
|
-
}
|
|
160
|
-
selectedProject = { id: projectList[projIdx].project_id, name: projectList[projIdx].project_name };
|
|
161
|
-
}
|
|
162
|
-
// Step 3: Fetch hubs for the selected project
|
|
163
|
-
console.log('Fetching hubs...');
|
|
164
|
-
const { hubs } = await client.listHubs(selectedOrg.id, selectedProject.id);
|
|
165
|
-
const previewHubs = hubs.filter((h) => h.hub_environment === 'preview');
|
|
166
|
-
// Step 4: Pick hub (or skip to create later via push)
|
|
167
|
-
if (previewHubs.length === 0) {
|
|
168
|
-
// No hubs — write partial config (org + project only)
|
|
169
|
-
const configPath = writePartialRepoConfig({
|
|
170
|
-
organization_id: selectedOrg.id,
|
|
171
|
-
organization_name: selectedOrg.name,
|
|
172
|
-
project_id: selectedProject.id,
|
|
173
|
-
project_name: selectedProject.name,
|
|
174
|
-
});
|
|
175
|
-
console.log(`\nWrote ${configPath} (no hub selected)`);
|
|
176
|
-
console.log('Create hub files in workspace/<project>/<hub>/hub.yaml and run `wayai push` to create the hub.');
|
|
177
|
-
return;
|
|
178
|
-
}
|
|
179
|
-
let selectedHub;
|
|
180
|
-
if (previewHubs.length === 1) {
|
|
181
|
-
// Auto-select single hub
|
|
182
|
-
selectedHub = previewHubs[0];
|
|
183
|
-
console.log(`Hub: ${selectedHub.hub_name}`);
|
|
184
|
-
}
|
|
185
|
-
else {
|
|
186
|
-
// Show hubs with option 0 to skip
|
|
187
|
-
console.log('\nHubs:');
|
|
188
|
-
console.log(' 0. (new hub — create via push later)');
|
|
189
|
-
for (let i = 0; i < previewHubs.length; i++) {
|
|
190
|
-
const h = previewHubs[i];
|
|
191
|
-
const label = h.preview_label ? ` (${h.preview_label})` : h.branch_name ? ` [${h.branch_name}]` : '';
|
|
192
|
-
console.log(` ${i + 1}. ${h.hub_name}${label}`);
|
|
193
|
-
}
|
|
194
|
-
const hubAnswer = await prompt(`\nSelect hub [0-${previewHubs.length}]: `);
|
|
195
|
-
const hubIdx = parseInt(hubAnswer, 10);
|
|
196
|
-
if (isNaN(hubIdx) || hubIdx < 0 || hubIdx > previewHubs.length) {
|
|
197
|
-
console.error('Invalid selection.');
|
|
198
|
-
process.exit(1);
|
|
199
|
-
}
|
|
200
|
-
if (hubIdx === 0) {
|
|
201
|
-
// Skip hub — write partial config
|
|
202
|
-
const configPath = writePartialRepoConfig({
|
|
203
|
-
organization_id: selectedOrg.id,
|
|
204
|
-
organization_name: selectedOrg.name,
|
|
205
|
-
project_id: selectedProject.id,
|
|
206
|
-
project_name: selectedProject.name,
|
|
207
|
-
});
|
|
208
|
-
console.log(`\nWrote ${configPath} (no hub selected)`);
|
|
209
|
-
console.log('Create hub files in workspace/<project>/<hub>/hub.yaml and run `wayai push` to create the hub.');
|
|
210
|
-
return;
|
|
211
|
-
}
|
|
212
|
-
selectedHub = previewHubs[hubIdx - 1];
|
|
213
|
-
}
|
|
214
|
-
// Step 5: Write .wayai.yaml with full config
|
|
215
119
|
const configPath = writeRepoConfig({
|
|
216
120
|
organization_id: selectedOrg.id,
|
|
217
121
|
organization_name: selectedOrg.name,
|
|
218
|
-
project_id: selectedProject.id,
|
|
219
|
-
project_name: selectedProject.name,
|
|
220
|
-
hub_id: selectedHub.hub_id,
|
|
221
|
-
hub_name: selectedHub.hub_name,
|
|
222
122
|
});
|
|
223
123
|
console.log(`\nWrote ${configPath}`);
|
|
224
124
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/list.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* wayai list — list organizations
|
|
2
|
+
* wayai list — list organizations and hubs
|
|
3
3
|
*
|
|
4
4
|
* Usage:
|
|
5
|
-
* wayai list # all orgs →
|
|
5
|
+
* wayai list # all orgs → hubs
|
|
6
6
|
* wayai list --org <id> # filter to one org
|
|
7
7
|
* wayai list --json # structured output for agents/scripts
|
|
8
8
|
*/
|
package/dist/commands/list.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* wayai list — list organizations
|
|
2
|
+
* wayai list — list organizations and hubs
|
|
3
3
|
*
|
|
4
4
|
* Usage:
|
|
5
|
-
* wayai list # all orgs →
|
|
5
|
+
* wayai list # all orgs → hubs
|
|
6
6
|
* wayai list --org <id> # filter to one org
|
|
7
7
|
* wayai list --json # structured output for agents/scripts
|
|
8
8
|
*/
|
|
@@ -48,8 +48,6 @@ export async function listCommand(args) {
|
|
|
48
48
|
hubs: hubs.map((h) => ({
|
|
49
49
|
hub_id: h.hub_id,
|
|
50
50
|
hub_name: h.hub_name,
|
|
51
|
-
project_id: h.project_id,
|
|
52
|
-
project_name: h.project_name,
|
|
53
51
|
preview_label: h.preview_label ?? null,
|
|
54
52
|
})),
|
|
55
53
|
})),
|
|
@@ -59,26 +57,13 @@ export async function listCommand(args) {
|
|
|
59
57
|
}
|
|
60
58
|
for (const { org, hubs } of results) {
|
|
61
59
|
console.log(`\n${org.name} (${org.id})`);
|
|
62
|
-
|
|
63
|
-
const projectMap = new Map();
|
|
64
|
-
for (const hub of hubs) {
|
|
65
|
-
let project = projectMap.get(hub.project_id);
|
|
66
|
-
if (!project) {
|
|
67
|
-
project = { name: hub.project_name, hubs: [] };
|
|
68
|
-
projectMap.set(hub.project_id, project);
|
|
69
|
-
}
|
|
70
|
-
project.hubs.push(hub);
|
|
71
|
-
}
|
|
72
|
-
if (projectMap.size === 0) {
|
|
60
|
+
if (hubs.length === 0) {
|
|
73
61
|
console.log(' (no hubs)');
|
|
74
62
|
continue;
|
|
75
63
|
}
|
|
76
|
-
for (const
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
const label = hub.preview_label ? ` (${hub.preview_label})` : '';
|
|
80
|
-
console.log(` ${hub.hub_name}${label} ${hub.hub_id}`);
|
|
81
|
-
}
|
|
64
|
+
for (const hub of hubs) {
|
|
65
|
+
const label = hub.preview_label ? ` (${hub.preview_label})` : '';
|
|
66
|
+
console.log(` ${hub.hub_name}${label} ${hub.hub_id}`);
|
|
82
67
|
}
|
|
83
68
|
}
|
|
84
69
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,UAAU,SAAS,CAAC,IAAc;IACtC,IAAI,KAAyB,CAAC;IAC9B,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACvC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACpB,CAAC;aAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;YAChC,IAAI,GAAG,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACzB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAc;IAC9C,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,WAAW,EAAE,CAAC;IACpD,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;IAEtE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;IAEvD,MAAM,UAAU,GAAG,KAAK;QACtB,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC;QAC7C,CAAC,CAAC,aAAa,CAAC;IAElB,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAgB,KAAK,aAAa,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC;QACtF,CAAC;QACD,OAAO;IACT,CAAC;IAED,sCAAsC;IACtC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CACtF,CAAC;IAEF,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,OAAO,GAAG;YACd,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC7C,eAAe,EAAE,GAAG,CAAC,EAAE;gBACvB,iBAAiB,EAAE,GAAG,CAAC,IAAI;gBAC3B,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACrB,MAAM,EAAE,CAAC,CAAC,MAAM;oBAChB,QAAQ,EAAE,CAAC,CAAC,QAAQ;oBACpB,
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/pull.d.ts
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* wayai pull [-y] — fetch hub config from the platform and write local files
|
|
2
|
+
* wayai pull [--hub <id|name>] [-y] — fetch hub config from the platform and write local files
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* The hub is derived from the workspace:
|
|
5
|
+
* - cwd is inside a hub folder → use that hub
|
|
6
|
+
* - exactly one hub in `workspace/` → use it
|
|
7
|
+
* - multiple hubs → require `--hub <uuid|folder-name>` to disambiguate
|
|
8
|
+
*
|
|
9
|
+
* For first-time pulls in an empty workspace, pass `--hub <uuid>` to fetch and
|
|
10
|
+
* materialize the hub at `workspace/<hub-slug>/`.
|
|
5
11
|
*/
|
|
6
12
|
import type { HubAsCodePayload } from '../lib/types.js';
|
|
7
13
|
export declare function pullCommand(args: string[]): Promise<void>;
|
package/dist/commands/pull.js
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* wayai pull [-y] — fetch hub config from the platform and write local files
|
|
2
|
+
* wayai pull [--hub <id|name>] [-y] — fetch hub config from the platform and write local files
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* The hub is derived from the workspace:
|
|
5
|
+
* - cwd is inside a hub folder → use that hub
|
|
6
|
+
* - exactly one hub in `workspace/` → use it
|
|
7
|
+
* - multiple hubs → require `--hub <uuid|folder-name>` to disambiguate
|
|
8
|
+
*
|
|
9
|
+
* For first-time pulls in an empty workspace, pass `--hub <uuid>` to fetch and
|
|
10
|
+
* materialize the hub at `workspace/<hub-slug>/`.
|
|
5
11
|
*/
|
|
6
12
|
import * as fs from 'node:fs';
|
|
7
13
|
import * as path from 'node:path';
|
|
@@ -10,36 +16,59 @@ import { ApiClient } from '../lib/api-client.js';
|
|
|
10
16
|
import { writeHubFolder } from '../lib/yaml-writer.js';
|
|
11
17
|
import { parseHubFolder } from '../lib/parser.js';
|
|
12
18
|
import { printDiff } from '../lib/diff-display.js';
|
|
13
|
-
import { confirm, slugify } from '../lib/utils.js';
|
|
14
|
-
import { autoRenameHubFolder, detectWorkspace, findGitRoot, resolveHubFolder, scanWorkspaceHubs } from '../lib/workspace.js';
|
|
19
|
+
import { confirm, slugify, UUID_RE } from '../lib/utils.js';
|
|
20
|
+
import { autoRenameHubFolder, detectWorkspace, findGitRoot, findEnclosingHubFolder, resolveHubFolder, scanWorkspaceHubs, } from '../lib/workspace.js';
|
|
15
21
|
import { requireRepoConfig } from '../lib/repo-config.js';
|
|
16
22
|
import { refreshScaffold } from '../lib/scaffold.js';
|
|
17
23
|
function parseArgs(args) {
|
|
18
24
|
let autoConfirm = false;
|
|
19
|
-
|
|
25
|
+
let hubSelector;
|
|
26
|
+
for (let i = 0; i < args.length; i++) {
|
|
27
|
+
const arg = args[i];
|
|
20
28
|
if (arg === '--yes' || arg === '-y') {
|
|
21
29
|
autoConfirm = true;
|
|
22
30
|
}
|
|
31
|
+
else if (arg === '--hub' && args[i + 1]) {
|
|
32
|
+
hubSelector = args[++i];
|
|
33
|
+
}
|
|
23
34
|
}
|
|
24
|
-
return { autoConfirm };
|
|
35
|
+
return { autoConfirm, hubSelector };
|
|
25
36
|
}
|
|
26
|
-
/**
|
|
27
|
-
|
|
28
|
-
* Scans workspace first; falls back to creating a new path using remote hub info.
|
|
29
|
-
*/
|
|
30
|
-
function findHubFolder(workspaceDir, hubId) {
|
|
31
|
-
if (!fs.existsSync(workspaceDir))
|
|
32
|
-
return null;
|
|
37
|
+
/** Resolve the target hub for the pull. May return a not-yet-materialized hub_id. */
|
|
38
|
+
function resolveHubTarget(workspaceDir, selector) {
|
|
33
39
|
const allHubs = scanWorkspaceHubs(workspaceDir);
|
|
34
|
-
|
|
35
|
-
|
|
40
|
+
if (selector) {
|
|
41
|
+
// Match against existing folders by hubId or basename
|
|
42
|
+
const match = allHubs.find((h) => h.hubId === selector || path.basename(h.hubFolder) === selector);
|
|
43
|
+
if (match)
|
|
44
|
+
return { hubId: match.hubId, hubFolder: match.hubFolder };
|
|
45
|
+
// Selector might be a UUID for a hub that hasn't been materialized yet.
|
|
46
|
+
if (UUID_RE.test(selector))
|
|
47
|
+
return { hubId: selector, hubFolder: null };
|
|
48
|
+
console.error(`No hub matching --hub ${selector} found in workspace/. Pass a UUID for first-time pulls.`);
|
|
49
|
+
process.exit(1);
|
|
50
|
+
}
|
|
51
|
+
const enclosing = findEnclosingHubFolder(workspaceDir);
|
|
52
|
+
if (enclosing)
|
|
53
|
+
return { hubId: enclosing.hubId, hubFolder: enclosing.hubFolder };
|
|
54
|
+
if (allHubs.length === 1)
|
|
55
|
+
return { hubId: allHubs[0].hubId, hubFolder: allHubs[0].hubFolder };
|
|
56
|
+
if (allHubs.length === 0) {
|
|
57
|
+
console.error('No hub folders found in workspace/. Pass --hub <uuid> to fetch a hub for the first time.');
|
|
58
|
+
process.exit(1);
|
|
59
|
+
}
|
|
60
|
+
console.error('Multiple hubs found in workspace/. Pass --hub <uuid|folder-name> to choose, or run from inside a hub folder:');
|
|
61
|
+
for (const h of allHubs) {
|
|
62
|
+
console.error(` ${path.basename(h.hubFolder)} (${h.hubId})`);
|
|
63
|
+
}
|
|
64
|
+
process.exit(1);
|
|
36
65
|
}
|
|
37
66
|
export async function pullCommand(args) {
|
|
38
|
-
const { autoConfirm } = parseArgs(args);
|
|
67
|
+
const { autoConfirm, hubSelector } = parseArgs(args);
|
|
68
|
+
const repoConfig = requireRepoConfig();
|
|
69
|
+
const { organization_id: organizationId } = repoConfig;
|
|
39
70
|
const { config, accessToken } = await requireAuth();
|
|
40
71
|
const client = new ApiClient({ apiUrl: config.api_url, accessToken });
|
|
41
|
-
const repoConfig = requireRepoConfig();
|
|
42
|
-
const { organization_id: organizationId, hub_id: hubId } = repoConfig;
|
|
43
72
|
// Determine workspace directory
|
|
44
73
|
let workspaceDir;
|
|
45
74
|
const workspace = detectWorkspace();
|
|
@@ -54,8 +83,7 @@ export async function pullCommand(args) {
|
|
|
54
83
|
}
|
|
55
84
|
workspaceDir = path.join(gitRoot, 'workspace');
|
|
56
85
|
}
|
|
57
|
-
|
|
58
|
-
let hubFolder = findHubFolder(workspaceDir, hubId);
|
|
86
|
+
const { hubId, hubFolder: existingFolder } = resolveHubTarget(workspaceDir, hubSelector);
|
|
59
87
|
// Fetch remote hub config
|
|
60
88
|
console.log('Fetching hub configuration...');
|
|
61
89
|
const payload = await client.pull(hubId, organizationId);
|
|
@@ -63,9 +91,10 @@ export async function pullCommand(args) {
|
|
|
63
91
|
console.log('Skipping production hub — production hubs are not tracked in the repository. Edit the linked preview hub instead.');
|
|
64
92
|
return;
|
|
65
93
|
}
|
|
94
|
+
let hubFolder = existingFolder;
|
|
66
95
|
// If no existing folder, create path for first pull
|
|
67
96
|
if (!hubFolder) {
|
|
68
|
-
hubFolder = resolveHubFolder(workspaceDir, hubId,
|
|
97
|
+
hubFolder = resolveHubFolder(workspaceDir, hubId, payload.hub.name, payload.hub_environment, payload.preview_label, payload.branch_name);
|
|
69
98
|
// Ensure parent directories exist
|
|
70
99
|
fs.mkdirSync(path.dirname(hubFolder), { recursive: true });
|
|
71
100
|
console.log('Writing hub configuration...');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pull.js","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"pull.js","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/push.d.ts
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* wayai push [-y] — parse local files, diff remote, sync to preview
|
|
2
|
+
* wayai push [--hub <id|name>] [-y] — parse local files, diff remote, sync to preview
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* The hub is derived from the workspace:
|
|
5
|
+
* - cwd is inside a hub folder → use that hub
|
|
6
|
+
* - exactly one hub in `workspace/` → use it
|
|
7
|
+
* - multiple hubs → require `--hub <uuid|folder-name>` to disambiguate
|
|
8
|
+
*
|
|
9
|
+
* If a hub folder has hub.yaml without a `hub_id`, push creates the hub on the
|
|
10
|
+
* platform first, then pushes its config.
|
|
6
11
|
*/
|
|
7
12
|
import { ApiClient } from '../lib/api-client.js';
|
|
8
13
|
/** Render a yellow-highlighted "Warnings (N)" block. Shared by push + sync output. */
|