@wayai/cli 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/dist/commands/init.d.ts +7 -0
  2. package/dist/commands/init.js +88 -0
  3. package/dist/commands/init.js.map +1 -0
  4. package/dist/commands/login.d.ts +1 -0
  5. package/dist/commands/login.js +54 -13
  6. package/dist/commands/login.js.map +1 -1
  7. package/dist/commands/pull.d.ts +7 -1
  8. package/dist/commands/pull.js +134 -42
  9. package/dist/commands/pull.js.map +1 -1
  10. package/dist/commands/push.d.ts +6 -1
  11. package/dist/commands/push.js +248 -54
  12. package/dist/commands/push.js.map +1 -1
  13. package/dist/commands/status.d.ts +1 -1
  14. package/dist/commands/status.js +17 -8
  15. package/dist/commands/status.js.map +1 -1
  16. package/dist/index.d.ts +1 -0
  17. package/dist/index.js +24 -2
  18. package/dist/index.js.map +1 -1
  19. package/dist/lib/api-client.d.ts +3 -1
  20. package/dist/lib/api-client.js +9 -0
  21. package/dist/lib/api-client.js.map +1 -1
  22. package/dist/lib/auth.d.ts +13 -4
  23. package/dist/lib/auth.js +52 -12
  24. package/dist/lib/auth.js.map +1 -1
  25. package/dist/lib/config.d.ts +2 -0
  26. package/dist/lib/config.js.map +1 -1
  27. package/dist/lib/parser.js +13 -3
  28. package/dist/lib/parser.js.map +1 -1
  29. package/dist/lib/repo-config.d.ts +16 -0
  30. package/dist/lib/repo-config.js +49 -0
  31. package/dist/lib/repo-config.js.map +1 -0
  32. package/dist/lib/types.d.ts +13 -0
  33. package/dist/lib/utils.d.ts +4 -0
  34. package/dist/lib/utils.js +13 -0
  35. package/dist/lib/utils.js.map +1 -1
  36. package/dist/lib/workspace.d.ts +75 -0
  37. package/dist/lib/workspace.js +244 -0
  38. package/dist/lib/workspace.js.map +1 -0
  39. package/dist/lib/workspace.test.d.ts +5 -0
  40. package/dist/lib/workspace.test.js +329 -0
  41. package/dist/lib/workspace.test.js.map +1 -0
  42. package/dist/lib/yaml-writer.js +10 -6
  43. package/dist/lib/yaml-writer.js.map +1 -1
  44. package/package.json +1 -1
@@ -1,65 +1,35 @@
1
1
  /**
2
- * wayai push [hub-path] — parse local files, diff remote, sync to preview
2
+ * wayai push [hub-path] [--yes] — parse local files, diff remote, sync to preview
3
+ *
4
+ * Modes:
5
+ * wayai push project/hub — resolve workspace folder, push that hub
6
+ * wayai push — from hub folder: push current hub
7
+ * wayai push — from repo root: auto-detect changed hubs via git
3
8
  */
4
- import * as readline from 'node:readline';
9
+ import * as fs from 'node:fs';
10
+ import * as path from 'node:path';
11
+ import * as yaml from 'js-yaml';
5
12
  import { requireAuth } from '../lib/auth.js';
6
13
  import { ApiClient } from '../lib/api-client.js';
7
14
  import { parseHubFolder } from '../lib/parser.js';
8
15
  import { printDiff } from '../lib/diff-display.js';
9
- import { detectHubFromCwd } from '../lib/utils.js';
10
- function confirm(question) {
11
- const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
12
- return new Promise((resolve) => {
13
- rl.question(`${question} [y/N]: `, (answer) => {
14
- rl.close();
15
- resolve(answer.trim().toLowerCase() === 'y');
16
- });
17
- });
18
- }
19
- export async function pushCommand(args) {
20
- const { config, accessToken } = await requireAuth();
21
- const client = new ApiClient({ apiUrl: config.api_url, accessToken });
22
- const hubPath = args[0];
23
- let hubId;
24
- let hubFolder;
25
- if (hubPath) {
26
- console.log(`Looking up ${hubPath}...`);
27
- const lookup = await client.lookup(hubPath);
28
- hubId = lookup.hub_id;
29
- hubFolder = process.cwd();
30
- console.log(`Found hub: ${lookup.hub_name} (${lookup.hub_environment}) in ${lookup.organization_name}/${lookup.project_name}`);
31
- }
32
- else {
33
- const detected = await detectHubFromCwd();
34
- if (!detected) {
35
- console.error('No hub path provided and no wayai.yaml found in current directory.');
36
- console.error('Usage: wayai push <org/project/hub>');
37
- process.exit(1);
16
+ import { confirm, detectHubFromCwd, slugify } from '../lib/utils.js';
17
+ import { detectWorkspace, getChangedHubs, resolveHubFolder, resolveExplicitHubPath } from '../lib/workspace.js';
18
+ import { readRepoConfig } from '../lib/repo-config.js';
19
+ function parseArgs(args) {
20
+ let hubPath;
21
+ let autoConfirm = false;
22
+ for (const arg of args) {
23
+ if (arg === '--yes' || arg === '-y') {
24
+ autoConfirm = true;
25
+ }
26
+ else if (!arg.startsWith('-')) {
27
+ hubPath = arg;
38
28
  }
39
- hubId = detected.hubId;
40
- hubFolder = detected.hubFolder;
41
- console.log(`Using hub from wayai.yaml: ${hubId}`);
42
- }
43
- // Parse local files
44
- console.log('Parsing local configuration...');
45
- const localConfig = parseHubFolder(hubFolder);
46
- // Get diff preview
47
- console.log('Computing diff...');
48
- const diffResult = await client.diff(hubId, localConfig, 'push');
49
- if (!diffResult.has_changes) {
50
- console.log('No changes to push.');
51
- return;
52
- }
53
- console.log('\nChanges to push:');
54
- printDiff(diffResult.summary);
55
- const ok = await confirm('Push these changes?');
56
- if (!ok) {
57
- console.log('Cancelled.');
58
- return;
59
29
  }
60
- // Sync to a CLI branch preview
61
- console.log('Syncing changes...');
62
- const result = await client.sync(hubId, 'cli', localConfig);
30
+ return { hubPath, autoConfirm };
31
+ }
32
+ function printSyncResult(result) {
63
33
  console.log(`\nSync complete. Preview hub: ${result.preview_hub_id}`);
64
34
  const c = result.changes;
65
35
  const parts = [];
@@ -87,4 +57,228 @@ export async function pushCommand(args) {
87
57
  console.log(`Changes: ${parts.join(', ')}`);
88
58
  }
89
59
  }
60
+ /**
61
+ * Auto-rename agent .md files when agents have been renamed (matched by ID).
62
+ * Compares local YAML agent names against remote agent names via pull,
63
+ * then renames old-slug.md → new-slug.md. Handles slug swaps via temp files.
64
+ */
65
+ async function autoRenameAgentFiles(client, hubId, hubFolder) {
66
+ const yamlPath = path.join(hubFolder, 'wayai.yaml');
67
+ if (!fs.existsSync(yamlPath))
68
+ return;
69
+ const yamlContent = fs.readFileSync(yamlPath, 'utf-8');
70
+ const config = yaml.load(yamlContent);
71
+ // Only proceed if at least one agent has an id
72
+ const agentsWithIds = (config.agents || []).filter((a) => a.id && a.name);
73
+ if (agentsWithIds.length === 0)
74
+ return;
75
+ // Fetch remote state to detect renames (extra round-trip, only when agents have IDs)
76
+ console.log('Checking for agent renames...');
77
+ let remote;
78
+ try {
79
+ remote = await client.pull(hubId);
80
+ }
81
+ catch (err) {
82
+ console.warn(` Warning: could not fetch remote state for auto-rename (${err instanceof Error ? err.message : String(err)}). File renames skipped.`);
83
+ return;
84
+ }
85
+ // Build remote agent id → name map
86
+ const remoteAgentNames = new Map();
87
+ for (const agent of remote.agents || []) {
88
+ if (agent.id) {
89
+ remoteAgentNames.set(agent.id, agent.name);
90
+ }
91
+ }
92
+ // Collect renames needed (old slug → new slug)
93
+ const renames = [];
94
+ for (const agent of agentsWithIds) {
95
+ const remoteName = remoteAgentNames.get(agent.id);
96
+ if (!remoteName || remoteName === agent.name)
97
+ continue;
98
+ const oldSlug = slugify(remoteName);
99
+ const newSlug = slugify(agent.name);
100
+ if (oldSlug !== newSlug) {
101
+ renames.push({ oldSlug, newSlug });
102
+ }
103
+ }
104
+ if (renames.length === 0)
105
+ return;
106
+ const agentsDir = path.join(hubFolder, 'agents');
107
+ if (!fs.existsSync(agentsDir))
108
+ return;
109
+ // Clean up orphaned temp files from a previous interrupted rename
110
+ for (const file of fs.readdirSync(agentsDir)) {
111
+ if (file.startsWith('__rename_temp_') && file.endsWith('.md')) {
112
+ console.warn(` Warning: removing orphaned temp file agents/${file}`);
113
+ fs.unlinkSync(path.join(agentsDir, file));
114
+ }
115
+ }
116
+ // Detect slug swaps: if newSlug matches another rename's oldSlug
117
+ const oldSlugs = new Set(renames.map((r) => r.oldSlug));
118
+ const newSlugs = new Set(renames.map((r) => r.newSlug));
119
+ const hasConflicts = renames.some((r) => oldSlugs.has(r.newSlug)) || newSlugs.size !== renames.length;
120
+ if (hasConflicts) {
121
+ // Rename through temp files to avoid collisions
122
+ const tempRenames = [];
123
+ for (const { oldSlug, newSlug } of renames) {
124
+ const tempName = `__rename_temp_${oldSlug}_${Date.now()}`;
125
+ tempRenames.push({ oldSlug, tempName, newSlug });
126
+ }
127
+ // Step 1: old → temp
128
+ for (const { oldSlug, tempName } of tempRenames) {
129
+ const oldPath = path.join(agentsDir, `${oldSlug}.md`);
130
+ const tempPath = path.join(agentsDir, `${tempName}.md`);
131
+ if (fs.existsSync(oldPath)) {
132
+ fs.renameSync(oldPath, tempPath);
133
+ }
134
+ }
135
+ // Step 2: temp → new
136
+ for (const { tempName, newSlug } of tempRenames) {
137
+ const tempPath = path.join(agentsDir, `${tempName}.md`);
138
+ const newPath = path.join(agentsDir, `${newSlug}.md`);
139
+ if (fs.existsSync(tempPath)) {
140
+ fs.renameSync(tempPath, newPath);
141
+ console.log(` Renamed agents/${tempRenames.find((r) => r.tempName === tempName).oldSlug}.md → agents/${newSlug}.md`);
142
+ }
143
+ }
144
+ }
145
+ else {
146
+ // No conflicts — direct renames
147
+ for (const { oldSlug, newSlug } of renames) {
148
+ const oldPath = path.join(agentsDir, `${oldSlug}.md`);
149
+ const newPath = path.join(agentsDir, `${newSlug}.md`);
150
+ if (!fs.existsSync(oldPath))
151
+ continue;
152
+ if (fs.existsSync(newPath)) {
153
+ console.warn(` Warning: skipping rename agents/${oldSlug}.md → agents/${newSlug}.md (target already exists)`);
154
+ continue;
155
+ }
156
+ fs.renameSync(oldPath, newPath);
157
+ console.log(` Renamed agents/${oldSlug}.md → agents/${newSlug}.md`);
158
+ }
159
+ }
160
+ }
161
+ async function pushSingleHub(client, hubId, hubFolder, autoConfirm) {
162
+ // Auto-rename agent .md files if agents were renamed (before parsing)
163
+ await autoRenameAgentFiles(client, hubId, hubFolder);
164
+ console.log('Parsing local configuration...');
165
+ const localConfig = parseHubFolder(hubFolder);
166
+ console.log('Computing diff...');
167
+ const diffResult = await client.diff(hubId, localConfig, 'push');
168
+ if (!diffResult.has_changes) {
169
+ console.log('No changes to push.');
170
+ return true;
171
+ }
172
+ console.log('\nChanges to push:');
173
+ printDiff(diffResult.summary);
174
+ if (!autoConfirm) {
175
+ const ok = await confirm('Push these changes?');
176
+ if (!ok) {
177
+ console.log('Cancelled.');
178
+ return false;
179
+ }
180
+ }
181
+ console.log('Pushing changes...');
182
+ const result = await client.push(hubId, localConfig);
183
+ printSyncResult(result);
184
+ return true;
185
+ }
186
+ async function pushChangedHubs(client, workspaceDir, autoConfirm) {
187
+ console.log('Detecting changed hubs...');
188
+ const changed = getChangedHubs(workspaceDir);
189
+ if (changed.length === 0) {
190
+ console.log('No changed hub files detected.');
191
+ return;
192
+ }
193
+ console.log(`Found ${changed.length} hub(s) with changes:\n`);
194
+ for (const hub of changed) {
195
+ console.log(` ${hub.hubFolder}`);
196
+ }
197
+ console.log();
198
+ if (!autoConfirm) {
199
+ const ok = await confirm(`Push ${changed.length} hub(s)?`);
200
+ if (!ok) {
201
+ console.log('Cancelled.');
202
+ return;
203
+ }
204
+ }
205
+ const errors = [];
206
+ for (const hub of changed) {
207
+ console.log(`\n--- ${hub.hubFolder} ---`);
208
+ try {
209
+ await pushSingleHub(client, hub.hubId, hub.hubFolder, true);
210
+ }
211
+ catch (err) {
212
+ const msg = err instanceof Error ? err.message : String(err);
213
+ console.error(`Error: ${msg}`);
214
+ errors.push({ hubFolder: hub.hubFolder, error: msg });
215
+ }
216
+ }
217
+ if (errors.length > 0) {
218
+ console.error(`\n${errors.length} hub(s) failed:`);
219
+ for (const e of errors) {
220
+ console.error(` ${e.hubFolder}: ${e.error}`);
221
+ }
222
+ process.exit(1);
223
+ }
224
+ }
225
+ async function pushExplicitPath(client, hubPath, autoConfirm) {
226
+ const result = resolveExplicitHubPath(hubPath);
227
+ if ('resolved' in result) {
228
+ console.log(`Found hub locally: ${result.resolved.hubId} (${result.resolved.hubEnvironment})`);
229
+ await pushSingleHub(client, result.resolved.hubId, result.resolved.hubFolder, autoConfirm);
230
+ return;
231
+ }
232
+ // Fall back to API lookup (handles original names and remote-only hubs)
233
+ const { segments } = result;
234
+ let lookupPath;
235
+ if (segments.orgPrefix) {
236
+ lookupPath = hubPath;
237
+ }
238
+ else {
239
+ const repoConfig = readRepoConfig();
240
+ if (!repoConfig) {
241
+ console.error('Hub not found in workspace and 2-part path requires .wayai.yaml for API lookup.');
242
+ console.error('Run `wayai init` first, or use 3-part: org/project/hub');
243
+ process.exit(1);
244
+ }
245
+ lookupPath = `${repoConfig.organization}/${hubPath}`;
246
+ }
247
+ console.log(`Looking up ${hubPath}...`);
248
+ const lookup = await client.lookup(lookupPath);
249
+ console.log(`Found hub: ${lookup.hub_name} (${lookup.hub_environment}) in ${lookup.project_name}`);
250
+ const workspace = detectWorkspace();
251
+ const hubFolder = workspace
252
+ ? resolveHubFolder(workspace.workspaceDir, lookup.hub_id, lookup.project_name, lookup.hub_name, lookup.hub_environment, lookup.preview_label, lookup.branch_name)
253
+ : process.cwd();
254
+ await pushSingleHub(client, lookup.hub_id, hubFolder, autoConfirm);
255
+ }
256
+ export async function pushCommand(args) {
257
+ const { hubPath, autoConfirm } = parseArgs(args);
258
+ const { config, accessToken } = await requireAuth();
259
+ const client = new ApiClient({ apiUrl: config.api_url, accessToken });
260
+ // 1. Explicit hub path argument
261
+ if (hubPath) {
262
+ await pushExplicitPath(client, hubPath, autoConfirm);
263
+ return;
264
+ }
265
+ // 2. Current directory has wayai.yaml
266
+ const detected = await detectHubFromCwd();
267
+ if (detected) {
268
+ console.log(`Using hub from wayai.yaml: ${detected.hubId}`);
269
+ await pushSingleHub(client, detected.hubId, detected.hubFolder, autoConfirm);
270
+ return;
271
+ }
272
+ // 3. Workspace detected — auto-detect changed hubs
273
+ const workspace = detectWorkspace();
274
+ if (workspace) {
275
+ await pushChangedHubs(client, workspace.workspaceDir, autoConfirm);
276
+ return;
277
+ }
278
+ // 4. None of the above
279
+ console.error('No hub found. Run from a hub folder with wayai.yaml, or provide a path:');
280
+ console.error(' wayai push <project/hub>');
281
+ console.error('\nOr run from a repo root with a workspace/ directory to auto-detect changes.');
282
+ process.exit(1);
283
+ }
90
284
  //# sourceMappingURL=push.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  /**
2
- * wayai status — show current auth/config status
2
+ * wayai status — show current auth/config status and repo scope
3
3
  */
4
4
  export declare function statusCommand(): Promise<void>;
@@ -1,26 +1,35 @@
1
1
  /**
2
- * wayai status — show current auth/config status
2
+ * wayai status — show current auth/config status and repo scope
3
3
  */
4
4
  import { readConfig } from '../lib/config.js';
5
5
  import { getAccessToken } from '../lib/auth.js';
6
+ import { readRepoConfig } from '../lib/repo-config.js';
6
7
  export async function statusCommand() {
7
8
  const config = readConfig();
8
9
  if (!config) {
9
10
  console.log('Not logged in. Run `wayai login`.');
10
11
  return;
11
12
  }
12
- console.log(`Auth method: ${config.auth_method}`);
13
- console.log(`API URL: ${config.api_url}`);
14
- if (config.supabase_url) {
15
- console.log(`Supabase URL: ${config.supabase_url}`);
16
- }
17
13
  // Test token validity
14
+ let tokenStatus;
18
15
  try {
19
16
  await getAccessToken(config);
20
- console.log(`Token: valid`);
17
+ tokenStatus = 'token valid';
21
18
  }
22
19
  catch {
23
- console.log(`Token: expired (run \`wayai login\` to re-authenticate)`);
20
+ tokenStatus = 'token expired (run `wayai login` to re-authenticate)';
21
+ }
22
+ console.log(`Logged in via ${config.auth_method} — ${tokenStatus}`);
23
+ if (config.api_url !== 'https://api.wayai.pro') {
24
+ console.log(`API: ${config.api_url}`);
25
+ }
26
+ // Show repo scope
27
+ const repoConfig = readRepoConfig();
28
+ if (repoConfig) {
29
+ console.log(`Repository scope: ${repoConfig.organization}`);
30
+ }
31
+ else {
32
+ console.log('No .wayai.yaml found — run `wayai init` to link to an organization.');
24
33
  }
25
34
  }
26
35
  //# sourceMappingURL=status.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAE5B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QACjD,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/C,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,sBAAsB;IACtB,IAAI,CAAC;QACH,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;IAChF,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAE5B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QACjD,OAAO;IACT,CAAC;IAED,sBAAsB;IACtB,IAAI,WAAmB,CAAC;IACxB,IAAI,CAAC;QACH,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;QAC7B,WAAW,GAAG,aAAa,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,WAAW,GAAG,sDAAsD,CAAC;IACvE,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,WAAW,MAAM,WAAW,EAAE,CAAC,CAAC;IAEpE,IAAI,MAAM,CAAC,OAAO,KAAK,uBAAuB,EAAE,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,QAAQ,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IACxC,CAAC;IAED,kBAAkB;IAClB,MAAM,UAAU,GAAG,cAAc,EAAE,CAAC;IACpC,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,qBAAqB,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;IAC9D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC;IACrF,CAAC;AACH,CAAC"}
package/dist/index.d.ts CHANGED
@@ -6,6 +6,7 @@
6
6
  * wayai login — authenticate via OAuth (browser)
7
7
  * wayai login --token — authenticate via MCP token (headless)
8
8
  * wayai logout — clear stored credentials
9
+ * wayai init [org] — link repo to a WayAI organization
9
10
  * wayai status — show current auth/config status
10
11
  * wayai pull [path] — fetch hub config and write local files
11
12
  * wayai push [path] — parse local files, diff, and sync to preview
package/dist/index.js CHANGED
@@ -6,6 +6,7 @@
6
6
  * wayai login — authenticate via OAuth (browser)
7
7
  * wayai login --token — authenticate via MCP token (headless)
8
8
  * wayai logout — clear stored credentials
9
+ * wayai init [org] — link repo to a WayAI organization
9
10
  * wayai status — show current auth/config status
10
11
  * wayai pull [path] — fetch hub config and write local files
11
12
  * wayai push [path] — parse local files, diff, and sync to preview
@@ -28,6 +29,11 @@ async function main() {
28
29
  await logoutCommand();
29
30
  break;
30
31
  }
32
+ case 'init': {
33
+ const { initCommand } = await import('./commands/init.js');
34
+ await initCommand(args);
35
+ break;
36
+ }
31
37
  case 'status': {
32
38
  const { statusCommand } = await import('./commands/status.js');
33
39
  await statusCommand();
@@ -70,17 +76,33 @@ Commands:
70
76
  login Authenticate via OAuth (opens browser)
71
77
  login --token Authenticate via MCP token (for headless/CI)
72
78
  logout Clear stored credentials
79
+ init [org] Link repo to a WayAI organization (creates .wayai.yaml)
73
80
  status Show current auth and config status
74
81
  pull [path] Fetch hub config and write local files
75
82
  push [path] Parse local files, show diff, sync to preview
76
83
 
77
84
  Arguments:
78
- path Hub path as org/project/hub (optional if wayai.yaml exists in cwd)
85
+ path Hub path as project/hub (resolves to workspace/ folder)
86
+
87
+ Flags:
88
+ --yes, -y Skip confirmation prompts (useful for CI and scripting)
89
+ --all Pull all hubs in workspace (pull only)
90
+
91
+ Workspace mode:
92
+ Run 'wayai init' to link this repo to an organization. This creates
93
+ .wayai.yaml at the repo root and a workspace/ directory.
94
+
95
+ From a hub folder (has wayai.yaml), push/pull operate on that hub.
96
+ From a repo root (has workspace/), push auto-detects changed hubs
97
+ via git status, and pull requires --all or a hub path.
79
98
 
80
99
  Examples:
81
100
  wayai login
82
- wayai pull acme/support/customer-hub
101
+ wayai init "My Organization"
102
+ wayai pull support/customer-hub
103
+ wayai pull --all
83
104
  wayai push
105
+ wayai push support/customer-hub --yes
84
106
  `.trim());
85
107
  }
86
108
  main().catch((err) => {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AAErF,MAAM,CAAC,EAAC,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;AAE3C,KAAK,UAAU,IAAI;IACjB,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;YAC7D,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;YACzB,MAAM;QACR,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;YAC/D,MAAM,aAAa,EAAE,CAAC;YACtB,MAAM;QACR,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;YAC/D,MAAM,aAAa,EAAE,CAAC;YACtB,MAAM;QACR,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;YAC3D,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;YACxB,MAAM;QACR,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;YAC3D,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;YACxB,MAAM;QACR,CAAC;QACD,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI,CAAC;QACV,KAAK,SAAS;YACZ,SAAS,EAAE,CAAC;YACZ,MAAM;QACR,KAAK,WAAW,CAAC;QACjB,KAAK,IAAI;YACP,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACzB,MAAM;QACR;YACE,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;YAC7C,SAAS,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;GAqBX,CAAC,IAAI,EAAE,CAAC,CAAC;AACZ,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * API client — authenticated requests to the WayAI backend
3
3
  */
4
- import type { HubAsCodePayload, CiDiffResponse, CiLookupResponse, CiSyncResponse } from './types.js';
4
+ import type { HubAsCodePayload, CiDiffResponse, CiLookupResponse, CiSyncResponse, CiOrganizationsResponse } from './types.js';
5
5
  export interface ApiClientOptions {
6
6
  apiUrl: string;
7
7
  accessToken: string;
@@ -12,7 +12,9 @@ export declare class ApiClient {
12
12
  constructor(options: ApiClientOptions);
13
13
  pull(hubId: string): Promise<HubAsCodePayload>;
14
14
  diff(hubId: string, config: HubAsCodePayload, direction?: 'push' | 'pull'): Promise<CiDiffResponse>;
15
+ push(hubId: string, config: HubAsCodePayload): Promise<CiSyncResponse>;
15
16
  sync(hubId: string, branchName: string, config: HubAsCodePayload, commitSha?: string): Promise<CiSyncResponse>;
16
17
  lookup(path: string): Promise<CiLookupResponse>;
18
+ organizations(): Promise<CiOrganizationsResponse>;
17
19
  private request;
18
20
  }
@@ -18,6 +18,12 @@ export class ApiClient {
18
18
  direction,
19
19
  });
20
20
  }
21
+ async push(hubId, config) {
22
+ return this.request('POST', '/api/ci/push', {
23
+ hub_id: hubId,
24
+ config,
25
+ });
26
+ }
21
27
  async sync(hubId, branchName, config, commitSha) {
22
28
  return this.request('POST', '/api/ci/sync', {
23
29
  hub_id: hubId,
@@ -29,6 +35,9 @@ export class ApiClient {
29
35
  async lookup(path) {
30
36
  return this.request('GET', `/api/ci/lookup?path=${encodeURIComponent(path)}`);
31
37
  }
38
+ async organizations() {
39
+ return this.request('GET', '/api/ci/organizations');
40
+ }
32
41
  async request(method, path, body) {
33
42
  const url = `${this.apiUrl}${path}`;
34
43
  const headers = {
@@ -1 +1 @@
1
- {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAcH,MAAM,OAAO,SAAS;IACZ,MAAM,CAAS;IACf,WAAW,CAAS;IAE5B,YAAY,OAAyB;QACnC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAa;QACtB,OAAO,IAAI,CAAC,OAAO,CAAmB,KAAK,EAAE,gBAAgB,KAAK,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAa,EAAE,MAAwB,EAAE,YAA6B,MAAM;QACrF,OAAO,IAAI,CAAC,OAAO,CAAiB,MAAM,EAAE,cAAc,EAAE;YAC1D,MAAM,EAAE,KAAK;YACb,MAAM;YACN,SAAS;SACV,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAa,EAAE,UAAkB,EAAE,MAAwB,EAAE,SAAkB;QACxF,OAAO,IAAI,CAAC,OAAO,CAAiB,MAAM,EAAE,cAAc,EAAE;YAC1D,MAAM,EAAE,KAAK;YACb,WAAW,EAAE,UAAU;YACvB,MAAM;YACN,UAAU,EAAE,SAAS;SACtB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY;QACvB,OAAO,IAAI,CAAC,OAAO,CAAmB,KAAK,EAAE,uBAAuB,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClG,CAAC;IAEO,KAAK,CAAC,OAAO,CAAI,MAAc,EAAE,IAAY,EAAE,IAAc;QACnE,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;QACpC,MAAM,OAAO,GAA2B;YACtC,aAAa,EAAE,UAAU,IAAI,CAAC,WAAW,EAAE;YAC3C,cAAc,EAAE,kBAAkB;SACnC,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM;YACN,OAAO;YACP,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;SAC9C,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,uBAAuB,MAAM,IAAI,IAAI,KAAK,QAAQ,CAAC,MAAM,MAAM,SAAS,EAAE,CAAC,CAAC;QAC9F,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,EAAgB,CAAC;IACvC,CAAC;CACF"}
1
+ {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAeH,MAAM,OAAO,SAAS;IACZ,MAAM,CAAS;IACf,WAAW,CAAS;IAE5B,YAAY,OAAyB;QACnC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAa;QACtB,OAAO,IAAI,CAAC,OAAO,CAAmB,KAAK,EAAE,gBAAgB,KAAK,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAa,EAAE,MAAwB,EAAE,YAA6B,MAAM;QACrF,OAAO,IAAI,CAAC,OAAO,CAAiB,MAAM,EAAE,cAAc,EAAE;YAC1D,MAAM,EAAE,KAAK;YACb,MAAM;YACN,SAAS;SACV,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAa,EAAE,MAAwB;QAChD,OAAO,IAAI,CAAC,OAAO,CAAiB,MAAM,EAAE,cAAc,EAAE;YAC1D,MAAM,EAAE,KAAK;YACb,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAa,EAAE,UAAkB,EAAE,MAAwB,EAAE,SAAkB;QACxF,OAAO,IAAI,CAAC,OAAO,CAAiB,MAAM,EAAE,cAAc,EAAE;YAC1D,MAAM,EAAE,KAAK;YACb,WAAW,EAAE,UAAU;YACvB,MAAM;YACN,UAAU,EAAE,SAAS;SACtB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY;QACvB,OAAO,IAAI,CAAC,OAAO,CAAmB,KAAK,EAAE,uBAAuB,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClG,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,OAAO,IAAI,CAAC,OAAO,CAA0B,KAAK,EAAE,uBAAuB,CAAC,CAAC;IAC/E,CAAC;IAEO,KAAK,CAAC,OAAO,CAAI,MAAc,EAAE,IAAY,EAAE,IAAc;QACnE,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;QACpC,MAAM,OAAO,GAA2B;YACtC,aAAa,EAAE,UAAU,IAAI,CAAC,WAAW,EAAE;YAC3C,cAAc,EAAE,kBAAkB;SACnC,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM;YACN,OAAO;YACP,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;SAC9C,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,uBAAuB,MAAM,IAAI,IAAI,KAAK,QAAQ,CAAC,MAAM,MAAM,SAAS,EAAE,CAAC,CAAC;QAC9F,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,EAAgB,CAAC;IACvC,CAAC;CACF"}
@@ -23,21 +23,30 @@ export declare function startCallbackServer(port: number, timeoutMs?: number): P
23
23
  code: string;
24
24
  port: number;
25
25
  }>;
26
+ /**
27
+ * Check if a specific port is available by trying to bind then immediately closing.
28
+ */
29
+ export declare function isPortAvailable(port: number): Promise<boolean>;
26
30
  /**
27
31
  * Find an available port by trying to listen on port 0
28
32
  */
29
33
  export declare function findAvailablePort(): Promise<number>;
30
34
  /**
31
- * Exchange PKCE authorization code for tokens
35
+ * Register the CLI as an OAuth client via Dynamic Client Registration (RFC 7591).
36
+ * Returns the client_id for subsequent authorize/token requests.
37
+ */
38
+ export declare function registerOAuthClient(supabaseUrl: string, redirectUri: string): Promise<string>;
39
+ /**
40
+ * Exchange OAuth 2.1 authorization code for tokens (PKCE)
32
41
  */
33
- export declare function exchangeCodeForTokens(supabaseUrl: string, code: string, codeVerifier: string): Promise<{
42
+ export declare function exchangeCodeForTokens(supabaseUrl: string, code: string, codeVerifier: string, clientId: string, redirectUri: string): Promise<{
34
43
  accessToken: string;
35
44
  refreshToken: string;
36
45
  }>;
37
46
  /**
38
- * Refresh an OAuth access token using a refresh token
47
+ * Refresh an OAuth access token using a refresh token (OAuth 2.1)
39
48
  */
40
- export declare function refreshAccessToken(supabaseUrl: string, refreshToken: string): Promise<{
49
+ export declare function refreshAccessToken(supabaseUrl: string, refreshToken: string, clientId: string): Promise<{
41
50
  accessToken: string;
42
51
  refreshToken: string;
43
52
  }>;