@wayai/cli 0.3.40 → 0.3.41

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 (166) hide show
  1. package/dist/index.js +16893 -310
  2. package/dist/index.js.map +1 -1
  3. package/package.json +6 -4
  4. package/dist/commands/admin.d.ts +0 -1
  5. package/dist/commands/admin.js +0 -913
  6. package/dist/commands/admin.js.map +0 -1
  7. package/dist/commands/analytics.d.ts +0 -34
  8. package/dist/commands/analytics.js +0 -605
  9. package/dist/commands/analytics.js.map +0 -1
  10. package/dist/commands/conversations.d.ts +0 -14
  11. package/dist/commands/conversations.js +0 -292
  12. package/dist/commands/conversations.js.map +0 -1
  13. package/dist/commands/create-credential.d.ts +0 -20
  14. package/dist/commands/create-credential.js +0 -146
  15. package/dist/commands/create-credential.js.map +0 -1
  16. package/dist/commands/delete-history.d.ts +0 -15
  17. package/dist/commands/delete-history.js +0 -56
  18. package/dist/commands/delete-history.js.map +0 -1
  19. package/dist/commands/eval-capture.d.ts +0 -1
  20. package/dist/commands/eval-capture.js +0 -135
  21. package/dist/commands/eval-capture.js.map +0 -1
  22. package/dist/commands/eval-results.d.ts +0 -10
  23. package/dist/commands/eval-results.js +0 -168
  24. package/dist/commands/eval-results.js.map +0 -1
  25. package/dist/commands/eval.d.ts +0 -1
  26. package/dist/commands/eval.js +0 -49
  27. package/dist/commands/eval.js.map +0 -1
  28. package/dist/commands/evals.d.ts +0 -21
  29. package/dist/commands/evals.js +0 -120
  30. package/dist/commands/evals.js.map +0 -1
  31. package/dist/commands/init.d.ts +0 -16
  32. package/dist/commands/init.js +0 -191
  33. package/dist/commands/init.js.map +0 -1
  34. package/dist/commands/list.d.ts +0 -13
  35. package/dist/commands/list.js +0 -70
  36. package/dist/commands/list.js.map +0 -1
  37. package/dist/commands/login.d.ts +0 -8
  38. package/dist/commands/login.js +0 -145
  39. package/dist/commands/login.js.map +0 -1
  40. package/dist/commands/logout.d.ts +0 -1
  41. package/dist/commands/logout.js +0 -19
  42. package/dist/commands/logout.js.map +0 -1
  43. package/dist/commands/migrate.d.ts +0 -12
  44. package/dist/commands/migrate.js +0 -106
  45. package/dist/commands/migrate.js.map +0 -1
  46. package/dist/commands/observability.d.ts +0 -14
  47. package/dist/commands/observability.js +0 -124
  48. package/dist/commands/observability.js.map +0 -1
  49. package/dist/commands/org.d.ts +0 -19
  50. package/dist/commands/org.js +0 -186
  51. package/dist/commands/org.js.map +0 -1
  52. package/dist/commands/pull.d.ts +0 -31
  53. package/dist/commands/pull.js +0 -210
  54. package/dist/commands/pull.js.map +0 -1
  55. package/dist/commands/push.d.ts +0 -25
  56. package/dist/commands/push.js +0 -472
  57. package/dist/commands/push.js.map +0 -1
  58. package/dist/commands/report-create.d.ts +0 -18
  59. package/dist/commands/report-create.js +0 -143
  60. package/dist/commands/report-create.js.map +0 -1
  61. package/dist/commands/report.d.ts +0 -16
  62. package/dist/commands/report.js +0 -252
  63. package/dist/commands/report.js.map +0 -1
  64. package/dist/commands/run-eval.d.ts +0 -15
  65. package/dist/commands/run-eval.js +0 -187
  66. package/dist/commands/run-eval.js.map +0 -1
  67. package/dist/commands/send-message.d.ts +0 -11
  68. package/dist/commands/send-message.js +0 -63
  69. package/dist/commands/send-message.js.map +0 -1
  70. package/dist/commands/status.d.ts +0 -17
  71. package/dist/commands/status.js +0 -205
  72. package/dist/commands/status.js.map +0 -1
  73. package/dist/commands/sync-mcp.d.ts +0 -16
  74. package/dist/commands/sync-mcp.js +0 -51
  75. package/dist/commands/sync-mcp.js.map +0 -1
  76. package/dist/commands/sync-skills.d.ts +0 -10
  77. package/dist/commands/sync-skills.js +0 -49
  78. package/dist/commands/sync-skills.js.map +0 -1
  79. package/dist/commands/unlock.d.ts +0 -1
  80. package/dist/commands/unlock.js +0 -13
  81. package/dist/commands/unlock.js.map +0 -1
  82. package/dist/commands/update-credential.d.ts +0 -29
  83. package/dist/commands/update-credential.js +0 -156
  84. package/dist/commands/update-credential.js.map +0 -1
  85. package/dist/commands/update.d.ts +0 -6
  86. package/dist/commands/update.js +0 -36
  87. package/dist/commands/update.js.map +0 -1
  88. package/dist/commands/use.d.ts +0 -1
  89. package/dist/commands/use.js +0 -56
  90. package/dist/commands/use.js.map +0 -1
  91. package/dist/commands/whoami.d.ts +0 -11
  92. package/dist/commands/whoami.js +0 -30
  93. package/dist/commands/whoami.js.map +0 -1
  94. package/dist/index.d.ts +0 -28
  95. package/dist/lib/analytics-constants.d.ts +0 -6
  96. package/dist/lib/analytics-constants.js +0 -14
  97. package/dist/lib/analytics-constants.js.map +0 -1
  98. package/dist/lib/api-client.d.ts +0 -568
  99. package/dist/lib/api-client.js +0 -445
  100. package/dist/lib/api-client.js.map +0 -1
  101. package/dist/lib/auth.d.ts +0 -50
  102. package/dist/lib/auth.js +0 -230
  103. package/dist/lib/auth.js.map +0 -1
  104. package/dist/lib/config.d.ts +0 -34
  105. package/dist/lib/config.js +0 -69
  106. package/dist/lib/config.js.map +0 -1
  107. package/dist/lib/credential-utils.d.ts +0 -36
  108. package/dist/lib/credential-utils.js +0 -88
  109. package/dist/lib/credential-utils.js.map +0 -1
  110. package/dist/lib/diff-display.d.ts +0 -8
  111. package/dist/lib/diff-display.js +0 -37
  112. package/dist/lib/diff-display.js.map +0 -1
  113. package/dist/lib/eval-format.d.ts +0 -29
  114. package/dist/lib/eval-format.js +0 -44
  115. package/dist/lib/eval-format.js.map +0 -1
  116. package/dist/lib/hub-lock.d.ts +0 -7
  117. package/dist/lib/hub-lock.js +0 -116
  118. package/dist/lib/hub-lock.js.map +0 -1
  119. package/dist/lib/layout.d.ts +0 -79
  120. package/dist/lib/layout.js +0 -133
  121. package/dist/lib/layout.js.map +0 -1
  122. package/dist/lib/org-workspace.d.ts +0 -22
  123. package/dist/lib/org-workspace.js +0 -106
  124. package/dist/lib/org-workspace.js.map +0 -1
  125. package/dist/lib/parser.d.ts +0 -16
  126. package/dist/lib/parser.js +0 -306
  127. package/dist/lib/parser.js.map +0 -1
  128. package/dist/lib/repo-config.d.ts +0 -23
  129. package/dist/lib/repo-config.js +0 -91
  130. package/dist/lib/repo-config.js.map +0 -1
  131. package/dist/lib/report-edit-args.d.ts +0 -27
  132. package/dist/lib/report-edit-args.js +0 -56
  133. package/dist/lib/report-edit-args.js.map +0 -1
  134. package/dist/lib/report-inbox.d.ts +0 -19
  135. package/dist/lib/report-inbox.js +0 -73
  136. package/dist/lib/report-inbox.js.map +0 -1
  137. package/dist/lib/resource-files.d.ts +0 -29
  138. package/dist/lib/resource-files.js +0 -156
  139. package/dist/lib/resource-files.js.map +0 -1
  140. package/dist/lib/sentry.d.ts +0 -38
  141. package/dist/lib/sentry.js +0 -168
  142. package/dist/lib/sentry.js.map +0 -1
  143. package/dist/lib/skill-version.d.ts +0 -9
  144. package/dist/lib/skill-version.js +0 -53
  145. package/dist/lib/skill-version.js.map +0 -1
  146. package/dist/lib/sql-output.d.ts +0 -17
  147. package/dist/lib/sql-output.js +0 -48
  148. package/dist/lib/sql-output.js.map +0 -1
  149. package/dist/lib/token-store.d.ts +0 -37
  150. package/dist/lib/token-store.js +0 -354
  151. package/dist/lib/token-store.js.map +0 -1
  152. package/dist/lib/types.d.ts +0 -18
  153. package/dist/lib/types.js +0 -5
  154. package/dist/lib/types.js.map +0 -1
  155. package/dist/lib/utils.d.ts +0 -97
  156. package/dist/lib/utils.js +0 -288
  157. package/dist/lib/utils.js.map +0 -1
  158. package/dist/lib/version-cache.d.ts +0 -10
  159. package/dist/lib/version-cache.js +0 -34
  160. package/dist/lib/version-cache.js.map +0 -1
  161. package/dist/lib/workspace.d.ts +0 -112
  162. package/dist/lib/workspace.js +0 -387
  163. package/dist/lib/workspace.js.map +0 -1
  164. package/dist/lib/yaml-writer.d.ts +0 -18
  165. package/dist/lib/yaml-writer.js +0 -283
  166. package/dist/lib/yaml-writer.js.map +0 -1
@@ -1,191 +0,0 @@
1
- /**
2
- * wayai init [--org <uuid>] — set up .wayai.yaml to scope this repo to an organization
3
- *
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.
9
- */
10
- import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
11
- import path from 'node:path';
12
- import { requireAuth } from '../lib/auth.js';
13
- import { ApiClient } from '../lib/api-client.js';
14
- import { readRepoConfig, writeRepoConfig } from '../lib/repo-config.js';
15
- import { findGitRoot } from '../lib/workspace.js';
16
- import { resolveLayout } from '../lib/layout.js';
17
- import { UUID_RE, prompt } from '../lib/utils.js';
18
- export const SKILL_INSTALL_CMD = 'npx skills add wayai-pro/wayai-skill -y';
19
- const AGENTS_MD = `# WayAI Workspace
20
-
21
- This is a WayAI hub-as-code workspace. Hub configuration is stored as files (\`hub.yaml\`, \`agents/*.yaml\`, \`agents/*.md\`) and synced bidirectionally with the WayAI platform via the \`wayai\` CLI.
22
-
23
- **Always start by reading the WayAI skill.** Install it with \`${SKILL_INSTALL_CMD}\` if you haven't already; the skill covers:
24
- - Platform entities, hub types, AI modes, agent roles, connection types
25
- - Workflow (\`wayai update\` → \`wayai pull\` → edit → \`wayai push\`)
26
- - Common CLI commands and the decision matrix (CLI vs UI)
27
- - Repository structure and YAML shapes (\`hub.yaml\`, \`agents/<slug>.yaml\`)
28
- - Pointers to per-domain references (Connections, Agents, Resources, States, Outbound, Evals, Analytics, Templates)
29
-
30
- Project-specific overrides live in \`AGENTS.local.md\` — read it after the skill if it exists.
31
-
32
- This file is created once on \`wayai init\` and never overwritten — edit freely.
33
- `;
34
- const CLAUDE_MD = `@AGENTS.md
35
- @AGENTS.local.md
36
- `;
37
- const AGENTS_LOCAL_MD = `# Project-specific instructions
38
-
39
- This file holds project-specific overrides and additional instructions for AI coding agents working on this hub. It is **never overwritten by \`wayai\` commands** — edit freely.
40
-
41
- Use it for things like:
42
-
43
- - Domain glossary and terminology specific to this hub
44
- - Business rules the AI should always apply
45
- - Conventions or constraints that override defaults in \`AGENTS.md\`
46
- - Notes about external systems, integrations, or quirks
47
- - Pointers to other repo files the agent should read first
48
-
49
- Leave this file empty (or delete its body) if you have nothing to add — \`AGENTS.md\` is sufficient on its own.
50
- `;
51
- const SHIM_FILES = [
52
- { name: 'AGENTS.md', content: AGENTS_MD },
53
- { name: 'CLAUDE.md', content: CLAUDE_MD },
54
- { name: 'AGENTS.local.md', content: AGENTS_LOCAL_MD },
55
- ];
56
- export function writeWorkspaceFiles(gitRoot) {
57
- const created = [];
58
- for (const { name, content } of SHIM_FILES) {
59
- const filePath = path.join(gitRoot, name);
60
- if (!existsSync(filePath)) {
61
- writeFileSync(filePath, content);
62
- created.push(name);
63
- }
64
- }
65
- // Create the hubs dir for the active layout (`wayai-ws/hubs/` on a fresh repo;
66
- // the legacy `workspace/` if this repo predates migration).
67
- const hubsDir = resolveLayout(gitRoot).hubsDir;
68
- if (!existsSync(hubsDir)) {
69
- mkdirSync(hubsDir, { recursive: true });
70
- created.push(`${path.relative(gitRoot, hubsDir)}/`);
71
- }
72
- return created;
73
- }
74
- export function parseArgs(args) {
75
- let orgId;
76
- let autoConfirm = false;
77
- const orgIdx = args.indexOf('--org');
78
- if (orgIdx !== -1 && args[orgIdx + 1]) {
79
- orgId = args[orgIdx + 1];
80
- }
81
- for (const arg of args) {
82
- if (arg === '--yes' || arg === '-y') {
83
- autoConfirm = true;
84
- }
85
- }
86
- return { orgId, autoConfirm };
87
- }
88
- export async function initCommand(args) {
89
- const { orgId: directOrgId, autoConfirm } = parseArgs(args);
90
- // Warn if .wayai.yaml already exists
91
- const existing = readRepoConfig();
92
- if (existing) {
93
- const scopeLabel = existing.organization_name
94
- ? `${existing.organization_name} (${existing.organization_id})`
95
- : existing.organization_id;
96
- console.log(`Current scope: ${scopeLabel}`);
97
- if (!autoConfirm) {
98
- const answer = await prompt('Overwrite? [y/N]: ');
99
- if (answer.toLowerCase() !== 'y') {
100
- console.log('Cancelled.');
101
- return;
102
- }
103
- }
104
- }
105
- const { config, accessToken } = await requireAuth();
106
- const client = new ApiClient({ apiUrl: config.api_url, accessToken });
107
- if (directOrgId) {
108
- await initDirect(client, directOrgId);
109
- }
110
- else {
111
- await initInteractive(client, autoConfirm);
112
- }
113
- // Write workspace shim files (AGENTS.md, CLAUDE.md, AGENTS.local.md) and create the hubs dir.
114
- // Files are only written if absent — never overwritten on subsequent inits.
115
- const gitRoot = findGitRoot();
116
- if (gitRoot) {
117
- const created = writeWorkspaceFiles(gitRoot);
118
- if (created.length > 0) {
119
- console.log(`Created ${created.join(', ')}`);
120
- }
121
- }
122
- console.log(`Run \`${SKILL_INSTALL_CMD}\` to install the WayAI skill in your AI harness, then \`wayai pull\` to fetch hub configuration.`);
123
- }
124
- async function initDirect(client, orgId) {
125
- if (!UUID_RE.test(orgId)) {
126
- console.error('Invalid organization ID. Expected a UUID.');
127
- process.exit(1);
128
- }
129
- console.log('Looking up organization...');
130
- const { organizations } = await client.organizations();
131
- const match = organizations.find((o) => o.id === orgId);
132
- if (!match) {
133
- console.error(`Organization ${orgId} not found among the orgs you can access.`);
134
- process.exit(1);
135
- }
136
- const configPath = writeRepoConfig({
137
- organization_id: match.id,
138
- organization_name: match.name,
139
- });
140
- console.log(`Found: ${match.name}`);
141
- console.log(`\nWrote ${configPath}`);
142
- }
143
- async function initInteractive(client, autoConfirm) {
144
- console.log('Fetching organizations...');
145
- let organizations = (await client.organizations()).organizations;
146
- if (organizations.length === 0) {
147
- // No org yet — create one inline rather than bouncing to the web UI. In
148
- // non-interactive mode (-y / CI) there's no one to prompt, so direct the
149
- // caller to the scriptable primitive instead of hanging on stdin.
150
- if (autoConfirm) {
151
- console.error('No organizations found. Create one with `wayai org create "<name>"`, then re-run `wayai init`.');
152
- process.exit(1);
153
- }
154
- console.log('\nNo organizations found.');
155
- const name = (await prompt('Name your first organization (blank to cancel): ')).trim();
156
- if (!name) {
157
- console.error('Cancelled. Create one later with `wayai org create "<name>"`.');
158
- process.exit(1);
159
- }
160
- const { organization } = await client.createOrganization(name);
161
- console.log(`Created organization: ${organization.name} (${organization.id})`);
162
- if (organization.region && !organization.region_explicit) {
163
- console.log(` Region: ${organization.region} (closest to you — re-create with \`wayai org create --region\` to change)`);
164
- }
165
- organizations = [{ id: organization.id, name: organization.name }];
166
- }
167
- let selectedOrg;
168
- if (organizations.length === 1) {
169
- selectedOrg = organizations[0];
170
- console.log(`Organization: ${selectedOrg.name}`);
171
- }
172
- else {
173
- console.log('\nOrganizations:');
174
- for (let i = 0; i < organizations.length; i++) {
175
- console.log(` ${i + 1}. ${organizations[i].name}`);
176
- }
177
- const orgAnswer = await prompt(`\nSelect organization [1-${organizations.length}]: `);
178
- const orgIdx = parseInt(orgAnswer, 10) - 1;
179
- if (isNaN(orgIdx) || orgIdx < 0 || orgIdx >= organizations.length) {
180
- console.error('Invalid selection.');
181
- process.exit(1);
182
- }
183
- selectedOrg = organizations[orgIdx];
184
- }
185
- const configPath = writeRepoConfig({
186
- organization_id: selectedOrg.id,
187
- organization_name: selectedOrg.name,
188
- });
189
- console.log(`\nWrote ${configPath}`);
190
- }
191
- //# sourceMappingURL=init.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- /**
2
- * wayai list — list organizations and hubs
3
- *
4
- * Usage:
5
- * wayai list # all orgs → hubs
6
- * wayai list --org <id> # filter to one org
7
- * wayai list --json # structured output for agents/scripts
8
- */
9
- export declare function parseArgs(args: string[]): {
10
- orgId: string | undefined;
11
- json: boolean;
12
- };
13
- export declare function listCommand(args: string[]): Promise<void>;
@@ -1,70 +0,0 @@
1
- /**
2
- * wayai list — list organizations and hubs
3
- *
4
- * Usage:
5
- * wayai list # all orgs → hubs
6
- * wayai list --org <id> # filter to one org
7
- * wayai list --json # structured output for agents/scripts
8
- */
9
- import { requireAuth } from '../lib/auth.js';
10
- import { ApiClient } from '../lib/api-client.js';
11
- export function parseArgs(args) {
12
- let orgId;
13
- let json = false;
14
- for (let i = 0; i < args.length; i++) {
15
- if (args[i] === '--org' && args[i + 1]) {
16
- orgId = args[++i];
17
- }
18
- else if (args[i] === '--json') {
19
- json = true;
20
- }
21
- }
22
- return { orgId, json };
23
- }
24
- export async function listCommand(args) {
25
- const { orgId, json } = parseArgs(args);
26
- const { config, accessToken } = await requireAuth();
27
- const client = new ApiClient({ apiUrl: config.api_url, accessToken });
28
- const { organizations } = await client.organizations();
29
- const orgsToList = orgId
30
- ? organizations.filter((o) => o.id === orgId)
31
- : organizations;
32
- if (orgsToList.length === 0) {
33
- if (json) {
34
- console.log(JSON.stringify({ organizations: [] }, null, 2));
35
- }
36
- else {
37
- console.log(orgId ? `Organization ${orgId} not found.` : 'No organizations found.');
38
- }
39
- return;
40
- }
41
- // Fetch hubs for all orgs in parallel
42
- const results = await Promise.all(orgsToList.map((org) => client.listHubs(org.id).then((r) => ({ org, hubs: r.hubs }))));
43
- if (json) {
44
- const payload = {
45
- organizations: results.map(({ org, hubs }) => ({
46
- organization_id: org.id,
47
- organization_name: org.name,
48
- hubs: hubs.map((h) => ({
49
- hub_id: h.hub_id,
50
- hub_name: h.hub_name,
51
- preview_label: h.preview_label ?? null,
52
- })),
53
- })),
54
- };
55
- console.log(JSON.stringify(payload, null, 2));
56
- return;
57
- }
58
- for (const { org, hubs } of results) {
59
- console.log(`\n${org.name} (${org.id})`);
60
- if (hubs.length === 0) {
61
- console.log(' (no hubs)');
62
- continue;
63
- }
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}`);
67
- }
68
- }
69
- }
70
- //# sourceMappingURL=list.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- /**
2
- * wayai login — OAuth 2.1 + PKCE browser flow (default) or --token fallback
3
- *
4
- * Browser login: Opens AuthKit authorize → PKCE flow → JWT + refresh token
5
- * Token login: User pastes a way_ scoped token directly
6
- */
7
- export declare function parseApiUrl(args: string[]): string;
8
- export declare function loginCommand(args: string[]): Promise<void>;
@@ -1,145 +0,0 @@
1
- /**
2
- * wayai login — OAuth 2.1 + PKCE browser flow (default) or --token fallback
3
- *
4
- * Browser login: Opens AuthKit authorize → PKCE flow → JWT + refresh token
5
- * Token login: User pastes a way_ scoped token directly
6
- */
7
- import * as readline from 'node:readline';
8
- import { generateState, generateCodeVerifier, generateCodeChallenge, startCallbackServer, exchangeCodeForTokens, expiresInToIso, validateToken, getAuthKitDomain, getAuthKitClientId, OAUTH_CALLBACK_PORT, } from '../lib/auth.js';
9
- import { writeConfig } from '../lib/config.js';
10
- import { setOAuthTokens, setWayToken, identifyTokenType } from '../lib/token-store.js';
11
- import { nudgeReportActions } from '../lib/report-inbox.js';
12
- function prompt(question, defaultValue) {
13
- const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
14
- const display = defaultValue ? `${question} [${defaultValue}]: ` : `${question}: `;
15
- return new Promise((resolve) => {
16
- rl.question(display, (answer) => {
17
- rl.close();
18
- resolve(answer.trim() || defaultValue || '');
19
- });
20
- });
21
- }
22
- const DEFAULT_API_URL = 'https://api.wayai.pro';
23
- export function parseApiUrl(args) {
24
- const idx = args.indexOf('--api-url');
25
- if (idx !== -1 && args[idx + 1]) {
26
- return args[idx + 1];
27
- }
28
- return DEFAULT_API_URL;
29
- }
30
- export async function loginCommand(args) {
31
- const useToken = args.includes('--token');
32
- const apiUrl = parseApiUrl(args);
33
- if (useToken) {
34
- await loginWithToken(apiUrl);
35
- }
36
- else {
37
- await loginWithBrowser(apiUrl);
38
- }
39
- }
40
- async function loginWithBrowser(apiUrl) {
41
- console.log('\nConnecting to WayAI...');
42
- const authkitDomain = getAuthKitDomain();
43
- const clientId = getAuthKitClientId();
44
- // Generate PKCE parameters
45
- const codeVerifier = generateCodeVerifier();
46
- const codeChallenge = await generateCodeChallenge(codeVerifier);
47
- const state = generateState();
48
- // Fixed port so the redirect URI matches what's registered in WorkOS
49
- const port = OAUTH_CALLBACK_PORT;
50
- const redirectUri = `http://127.0.0.1:${port}/callback`;
51
- // Build AuthKit authorization URL with PKCE
52
- const authorizeUrl = new URL(`${authkitDomain}/oauth2/authorize`);
53
- authorizeUrl.searchParams.set('client_id', clientId);
54
- authorizeUrl.searchParams.set('redirect_uri', redirectUri);
55
- authorizeUrl.searchParams.set('response_type', 'code');
56
- authorizeUrl.searchParams.set('code_challenge', codeChallenge);
57
- authorizeUrl.searchParams.set('code_challenge_method', 'S256');
58
- authorizeUrl.searchParams.set('state', state);
59
- // offline_access is required for AuthKit to issue a refresh_token alongside the JWT;
60
- // without it, the CLI would re-prompt login every time the access token expires (~1h).
61
- authorizeUrl.searchParams.set('scope', 'openid profile email offline_access');
62
- try {
63
- // Start callback server before opening browser
64
- const callbackPromise = startCallbackServer(port, state);
65
- // Try to open browser
66
- const openedBrowser = await tryOpenBrowser(authorizeUrl.toString());
67
- if (!openedBrowser) {
68
- console.log(`\nOpen this URL in your browser to log in:\n\n ${authorizeUrl.toString()}\n`);
69
- }
70
- else {
71
- console.log('Opening browser for login...');
72
- }
73
- const { code } = await callbackPromise;
74
- console.log('Exchanging authorization code...');
75
- const tokens = await exchangeCodeForTokens(authkitDomain, clientId, code, codeVerifier, redirectUri);
76
- // Match the defensive pattern in getAccessToken's refresh path: only persist
77
- // refresh_token when AuthKit returned one (it's gated on the `offline_access`
78
- // scope, so a missing value would mean scope config regressed).
79
- const expiresAt = expiresInToIso(tokens.expires_in);
80
- await setOAuthTokens(tokens.access_token, tokens.refresh_token, expiresAt);
81
- writeConfig({ api_url: apiUrl, token_expires_at: expiresAt });
82
- console.log('\nLogin successful!');
83
- console.log('Token stored in OS keyring; metadata at ~/.wayai/config.json');
84
- // Best-effort: remind the reporter of any reports awaiting their accept/contest.
85
- await nudgeReportActions(apiUrl, tokens.access_token);
86
- }
87
- catch (err) {
88
- console.error(`\nLogin failed: ${err instanceof Error ? err.message : String(err)}`);
89
- process.exit(1);
90
- }
91
- }
92
- async function loginWithToken(apiUrl) {
93
- const token = await prompt('API Token (way_...)');
94
- if (!token) {
95
- console.error('Token is required.');
96
- process.exit(1);
97
- }
98
- if (identifyTokenType(token) !== 'way_token') {
99
- console.error('Invalid token format. Tokens start with "way_".');
100
- process.exit(1);
101
- }
102
- console.log('\nValidating token...');
103
- try {
104
- await validateToken(apiUrl, token);
105
- }
106
- catch (err) {
107
- console.error(`Token validation failed: ${err instanceof Error ? err.message : String(err)}`);
108
- process.exit(1);
109
- }
110
- await setWayToken(token);
111
- writeConfig({ api_url: apiUrl });
112
- console.log('\nLogin successful! Token stored in OS keyring; metadata at ~/.wayai/config.json');
113
- // Best-effort: remind the reporter of any reports awaiting their accept/contest.
114
- await nudgeReportActions(apiUrl, token);
115
- }
116
- async function tryOpenBrowser(url) {
117
- if (process.env.SSH_CONNECTION || process.env.SSH_TTY) {
118
- return false;
119
- }
120
- try {
121
- const { execFile } = await import('node:child_process');
122
- const platform = process.platform;
123
- let cmd;
124
- let args;
125
- if (platform === 'darwin') {
126
- cmd = 'open';
127
- args = [url];
128
- }
129
- else if (platform === 'win32') {
130
- cmd = 'cmd';
131
- args = ['/c', 'start', '', url];
132
- }
133
- else {
134
- cmd = 'xdg-open';
135
- args = [url];
136
- }
137
- return new Promise((resolve) => {
138
- execFile(cmd, args, (err) => resolve(!err));
139
- });
140
- }
141
- catch {
142
- return false;
143
- }
144
- }
145
- //# sourceMappingURL=login.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,SAAS,MAAM,CAAC,QAAgB,EAAE,YAAqB;IACrD,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACtF,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,QAAQ,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,CAAC;IACnF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE;YAC9B,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,YAAY,IAAI,EAAE,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,eAAe,GAAG,uBAAuB,CAAC;AAEhD,MAAM,UAAU,WAAW,CAAC,IAAc;IACxC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACtC,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAc;IAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAEjC,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,MAAc;IAC5C,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IAExC,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;IACzC,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;IAEtC,2BAA2B;IAC3B,MAAM,YAAY,GAAG,oBAAoB,EAAE,CAAC;IAC5C,MAAM,aAAa,GAAG,MAAM,qBAAqB,CAAC,YAAY,CAAC,CAAC;IAChE,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;IAE9B,qEAAqE;IACrE,MAAM,IAAI,GAAG,mBAAmB,CAAC;IACjC,MAAM,WAAW,GAAG,oBAAoB,IAAI,WAAW,CAAC;IAExD,4CAA4C;IAC5C,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,GAAG,aAAa,mBAAmB,CAAC,CAAC;IAClE,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACrD,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;IAC3D,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IACvD,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;IAC/D,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;IAC/D,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC9C,qFAAqF;IACrF,uFAAuF;IACvF,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,qCAAqC,CAAC,CAAC;IAE9E,IAAI,CAAC;QACH,+CAA+C;QAC/C,MAAM,eAAe,GAAG,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAEzD,sBAAsB;QACtB,MAAM,aAAa,GAAG,MAAM,cAAc,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;QACpE,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,mDAAmD,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC9F,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC9C,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,eAAe,CAAC;QAEvC,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,MAAM,qBAAqB,CACxC,aAAa,EACb,QAAQ,EACR,IAAI,EACJ,YAAY,EACZ,WAAW,CACZ,CAAC;QAEF,6EAA6E;QAC7E,8EAA8E;QAC9E,gEAAgE;QAChE,MAAM,SAAS,GAAG,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACpD,MAAM,cAAc,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QAC3E,WAAW,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC,CAAC;QAE9D,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;QAE5E,iFAAiF;QACjF,MAAM,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,mBAAmB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACrF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,MAAc;IAC1C,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAElD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,iBAAiB,CAAC,KAAK,CAAC,KAAK,WAAW,EAAE,CAAC;QAC7C,OAAO,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IAErC,IAAI,CAAC;QACH,MAAM,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,4BAA4B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC9F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,WAAW,CAAC,KAAK,CAAC,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAEjC,OAAO,CAAC,GAAG,CAAC,kFAAkF,CAAC,CAAC;IAEhG,iFAAiF;IACjF,MAAM,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC1C,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,GAAW;IACvC,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACtD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC;QACH,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACxD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAElC,IAAI,GAAW,CAAC;QAChB,IAAI,IAAc,CAAC;QACnB,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC1B,GAAG,GAAG,MAAM,CAAC;YACb,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QACf,CAAC;aAAM,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;YAChC,GAAG,GAAG,KAAK,CAAC;YACZ,IAAI,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,GAAG,GAAG,UAAU,CAAC;YACjB,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QACf,CAAC;QAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -1 +0,0 @@
1
- export declare function logoutCommand(): Promise<void>;
@@ -1,19 +0,0 @@
1
- import { clearTokens, getToken } from '../lib/token-store.js';
2
- export async function logoutCommand() {
3
- const token = await getToken();
4
- if (!token) {
5
- console.log('Not logged in.');
6
- return;
7
- }
8
- // WAYAI_TOKEN env override survives clearTokens — surface that so the user
9
- // knows the current shell is still authenticated.
10
- const envOverrideActive = !!process.env.WAYAI_TOKEN;
11
- await clearTokens();
12
- if (envOverrideActive) {
13
- console.log('Tokens cleared from keyring and file. Note: WAYAI_TOKEN env var is still set in this shell — unset it to fully log out.');
14
- }
15
- else {
16
- console.log('Logged out. Tokens cleared.');
17
- }
18
- }
19
- //# sourceMappingURL=logout.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAE9D,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,KAAK,GAAG,MAAM,QAAQ,EAAE,CAAC;IAE/B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC9B,OAAO;IACT,CAAC;IAED,2EAA2E;IAC3E,kDAAkD;IAClD,MAAM,iBAAiB,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;IAEpD,MAAM,WAAW,EAAE,CAAC;IAEpB,IAAI,iBAAiB,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,yHAAyH,CAAC,CAAC;IACzI,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC"}
@@ -1,12 +0,0 @@
1
- /**
2
- * wayai migrate — relocate a legacy repo to the `wayai-ws/{hubs,org}` layout.
3
- *
4
- * workspace/<hub>/ → wayai-ws/hubs/<hub>/
5
- * org/ → wayai-ws/org/
6
- *
7
- * Idempotent: a no-op when there's nothing legacy left to move. Uses `git mv`
8
- * (preserving history) for tracked dirs, falling back to a filesystem rename for
9
- * untracked / partially-tracked dirs or non-git repos. `.wayai.yaml` and the
10
- * init shim files (AGENTS.md, …) stay at the root and are untouched.
11
- */
12
- export declare function migrateCommand(_args: string[]): Promise<void>;
@@ -1,106 +0,0 @@
1
- /**
2
- * wayai migrate — relocate a legacy repo to the `wayai-ws/{hubs,org}` layout.
3
- *
4
- * workspace/<hub>/ → wayai-ws/hubs/<hub>/
5
- * org/ → wayai-ws/org/
6
- *
7
- * Idempotent: a no-op when there's nothing legacy left to move. Uses `git mv`
8
- * (preserving history) for tracked dirs, falling back to a filesystem rename for
9
- * untracked / partially-tracked dirs or non-git repos. `.wayai.yaml` and the
10
- * init shim files (AGENTS.md, …) stay at the root and are untouched.
11
- */
12
- import { execFileSync } from 'node:child_process';
13
- import * as fs from 'node:fs';
14
- import * as path from 'node:path';
15
- import { findGitRoot } from '../lib/workspace.js';
16
- import { WAYAI_LAYOUT, isDirectory } from '../lib/layout.js';
17
- /** True when at least one tracked file lives at/under `p`. */
18
- function isTracked(gitRoot, p) {
19
- try {
20
- execFileSync('git', ['ls-files', '--error-unmatch', '--', path.relative(gitRoot, p)], {
21
- cwd: gitRoot,
22
- stdio: ['pipe', 'pipe', 'pipe'],
23
- });
24
- return true;
25
- }
26
- catch {
27
- return false;
28
- }
29
- }
30
- /**
31
- * Move `from` → `to`, creating `to`'s parent. Prefers `git mv` for tracked
32
- * sources (history-preserving, staged); falls back to `fs.rename` when the
33
- * source is untracked or `git mv` errors (e.g. mixed tracked/untracked
34
- * contents). Returns which mechanism was used.
35
- */
36
- function moveDir(gitRoot, from, to) {
37
- fs.mkdirSync(path.dirname(to), { recursive: true });
38
- if (isTracked(gitRoot, from)) {
39
- try {
40
- execFileSync('git', ['mv', path.relative(gitRoot, from), path.relative(gitRoot, to)], {
41
- cwd: gitRoot,
42
- stdio: ['pipe', 'pipe', 'pipe'],
43
- });
44
- return 'git';
45
- }
46
- catch {
47
- // Fall through — e.g. the dir mixes tracked and untracked children.
48
- }
49
- }
50
- fs.renameSync(from, to);
51
- return 'fs';
52
- }
53
- export async function migrateCommand(_args) {
54
- const gitRoot = findGitRoot();
55
- if (!gitRoot) {
56
- console.error('Not inside a git repository.');
57
- process.exit(1);
58
- }
59
- const rel = (p) => path.relative(gitRoot, p);
60
- const newWs = path.join(gitRoot, WAYAI_LAYOUT.wsDir);
61
- const legacyWs = path.join(gitRoot, WAYAI_LAYOUT.legacy.wsDir);
62
- const legacyOrg = path.join(gitRoot, WAYAI_LAYOUT.legacy.orgAtRoot);
63
- const newHubs = path.join(newWs, WAYAI_LAYOUT.hubsSubdir);
64
- const newOrg = path.join(newWs, WAYAI_LAYOUT.orgSubdir);
65
- const hasLegacyWs = isDirectory(legacyWs);
66
- const hasLegacyOrg = isDirectory(legacyOrg);
67
- if (!hasLegacyWs && !hasLegacyOrg) {
68
- console.log(`Already migrated — no legacy ${WAYAI_LAYOUT.legacy.wsDir}/ or ${WAYAI_LAYOUT.legacy.orgAtRoot}/ to move.`);
69
- return;
70
- }
71
- // Validate ALL targets before moving ANYTHING. Checking per-dir inline would
72
- // let the workspace move succeed and then abort on an org-target collision,
73
- // leaving a half-migrated repo that a re-run can't cleanly recover.
74
- if (hasLegacyWs && isDirectory(newHubs)) {
75
- console.error(`Cannot migrate: target ${rel(newHubs)}/ already exists alongside legacy ${WAYAI_LAYOUT.legacy.wsDir}/. ` +
76
- `Merge them manually, then re-run \`wayai migrate\`.`);
77
- process.exit(1);
78
- }
79
- if (hasLegacyOrg && isDirectory(newOrg)) {
80
- console.error(`Cannot migrate: target ${rel(newOrg)}/ already exists alongside legacy ${WAYAI_LAYOUT.legacy.orgAtRoot}/. ` +
81
- `Merge them manually, then re-run \`wayai migrate\`.`);
82
- process.exit(1);
83
- }
84
- const moved = [];
85
- let usedFsFallback = false;
86
- if (hasLegacyWs) {
87
- const how = moveDir(gitRoot, legacyWs, newHubs);
88
- usedFsFallback ||= how === 'fs';
89
- moved.push(`${WAYAI_LAYOUT.legacy.wsDir}/ → ${rel(newHubs)}/`);
90
- }
91
- if (hasLegacyOrg) {
92
- const how = moveDir(gitRoot, legacyOrg, newOrg);
93
- usedFsFallback ||= how === 'fs';
94
- moved.push(`${WAYAI_LAYOUT.legacy.orgAtRoot}/ → ${rel(newOrg)}/`);
95
- }
96
- console.log(`Migrated to the ${WAYAI_LAYOUT.wsDir}/ layout:`);
97
- for (const m of moved)
98
- console.log(` ${m}`);
99
- if (usedFsFallback) {
100
- console.log('\n(Some dirs were moved on disk, not via git — they will show as untracked.)');
101
- }
102
- console.log('\nNext steps:');
103
- console.log(' git add -A && git commit -m "chore: migrate to wayai-ws layout"');
104
- console.log(' If your CI runs `wayai push`, commit this migration in the same change that updates CI.');
105
- }
106
- //# sourceMappingURL=migrate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- /**
2
- * Shared output helpers for `wayai conversations <id> observability` (hub-scoped)
3
- * and `wayai admin observability <hub> <conv>` (platform-admin). Output shape is
4
- * identical so an operator switching between the two commands sees the same
5
- * format — only the data source (and the API path) differs.
6
- */
7
- import type { ApiClient } from '../lib/api-client.js';
8
- interface RenderOptions {
9
- messageId?: string;
10
- jsonOutput: boolean;
11
- }
12
- export declare function runConversationObservability(client: ApiClient, hubId: string, conversationId: string, opts: RenderOptions): Promise<void>;
13
- export declare function runDebugObservability(client: ApiClient, hubId: string, conversationId: string, opts: RenderOptions): Promise<void>;
14
- export {};