@wayai/cli 0.3.39 → 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 -800
  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 -561
  99. package/dist/lib/api-client.js +0 -421
  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,387 +0,0 @@
1
- /**
2
- * Workspace detection and hub resolution for workspace-aware CLI commands.
3
- *
4
- * Hub folders live directly under the resolved "hubs dir" — `wayai-ws/hubs/`
5
- * on the current layout, or the legacy `workspace/` for un-migrated repos (see
6
- * `layout.ts` / `resolveLayout`). Each hub folder has a `hub.yaml` (or legacy
7
- * `wayai.yaml`) file. `WorkspaceInfo.workspaceDir` IS that hubs dir.
8
- */
9
- import { execFileSync } from 'node:child_process';
10
- import * as fs from 'node:fs';
11
- import * as path from 'node:path';
12
- import * as yaml from 'js-yaml';
13
- import { slugify, UUID_RE } from './utils.js';
14
- import { resolveLayout, hubsDirLabel, isDirectory } from './layout.js';
15
- /**
16
- * Find the git repository root. Returns null if not inside a git repo.
17
- */
18
- export function findGitRoot() {
19
- try {
20
- return execFileSync('git', ['rev-parse', '--show-toplevel'], {
21
- encoding: 'utf-8',
22
- stdio: ['pipe', 'pipe', 'pipe'],
23
- }).trim();
24
- }
25
- catch {
26
- return null;
27
- }
28
- }
29
- /**
30
- * Detect the hubs directory for the active layout (`wayai-ws/hubs/`, or the
31
- * legacy `workspace/`). Returns null if not in a git repo or the dir doesn't
32
- * exist yet (fresh repo before the first pull/init).
33
- */
34
- export function detectWorkspace() {
35
- const gitRoot = findGitRoot();
36
- if (!gitRoot)
37
- return null;
38
- const { hubsDir } = resolveLayout(gitRoot);
39
- if (!fs.existsSync(hubsDir) || !fs.statSync(hubsDir).isDirectory()) {
40
- return null;
41
- }
42
- return { gitRoot, workspaceDir: hubsDir };
43
- }
44
- /**
45
- * Read hub metadata from a hub.yaml (or wayai.yaml) file.
46
- * Returns null if the file doesn't exist or lacks required fields.
47
- */
48
- function readHubYaml(yamlPath) {
49
- if (!fs.existsSync(yamlPath))
50
- return null;
51
- try {
52
- const content = fs.readFileSync(yamlPath, 'utf-8');
53
- const config = yaml.load(content);
54
- if (!config?.hub_id || !config.hub_environment)
55
- return null;
56
- return { hubId: config.hub_id, hubEnvironment: config.hub_environment };
57
- }
58
- catch {
59
- return null;
60
- }
61
- }
62
- /** Scan `workspace/<hub>/hub.yaml` for hubs already created on the platform. */
63
- export function scanWorkspaceHubs(workspaceDir) {
64
- const hubs = [];
65
- for (const top of safeReaddir(workspaceDir)) {
66
- const topDir = path.join(workspaceDir, top);
67
- if (!isDirectory(topDir))
68
- continue;
69
- const meta = readHubYaml(path.join(topDir, 'hub.yaml'))
70
- || readHubYaml(path.join(topDir, 'wayai.yaml'));
71
- if (meta) {
72
- hubs.push({ hubFolder: topDir, hubId: meta.hubId, hubEnvironment: meta.hubEnvironment });
73
- }
74
- }
75
- return hubs;
76
- }
77
- /**
78
- * Read hub metadata from a hub.yaml that has NO hub_id yet (new hub).
79
- * Returns the hub name and optional hub_type. Returns null if hub_id is present or hub.name is missing.
80
- */
81
- function readNewHubYaml(yamlPath) {
82
- if (!fs.existsSync(yamlPath))
83
- return null;
84
- try {
85
- const content = fs.readFileSync(yamlPath, 'utf-8');
86
- const config = yaml.load(content);
87
- // Skip if hub_id is present (already created on platform)
88
- if (config?.hub_id)
89
- return null;
90
- // Must have hub.name to be a valid new hub
91
- if (!config?.hub?.name)
92
- return null;
93
- return { hubName: config.hub.name, hubType: config.hub.hub_type };
94
- }
95
- catch {
96
- return null;
97
- }
98
- }
99
- /** Scan `workspace/<hub>/hub.yaml` for hubs not yet created on the platform (no `hub_id`). */
100
- export function scanNewHubs(workspaceDir) {
101
- const hubs = [];
102
- for (const top of safeReaddir(workspaceDir)) {
103
- const topDir = path.join(workspaceDir, top);
104
- if (!isDirectory(topDir))
105
- continue;
106
- const meta = readNewHubYaml(path.join(topDir, 'hub.yaml'))
107
- || readNewHubYaml(path.join(topDir, 'wayai.yaml'));
108
- if (meta) {
109
- hubs.push({ hubFolder: topDir, hubName: meta.hubName, hubType: meta.hubType });
110
- }
111
- }
112
- return hubs;
113
- }
114
- /**
115
- * Compute the hub folder slug with preview disambiguation.
116
- * Production: slugify(hubName)
117
- * Preview: slugify(hubName) + "-" + slugify(previewLabel || branchName || hubId[0:8])
118
- *
119
- * IMPORTANT: This must produce identical output to the backend's computeHubSlug
120
- * (workers/backend/src/routes/api/ci/lookup.ts) and getHubFolderSlug
121
- * (routes/api/files/index.ts). All three delegate to the canonical kebab slug
122
- * with a 64-char cap (CLI mirrors it via `slugify`; backend imports
123
- * `slugifyKebab`). Keep the cap in lockstep or folder resolution diverges.
124
- */
125
- export function getHubFolderSlug(hubName, hubEnvironment, hubId, previewLabel, branchName) {
126
- const base = slugify(hubName);
127
- if (hubEnvironment !== 'preview')
128
- return base;
129
- const suffix = previewLabel || branchName || hubId.slice(0, 8);
130
- return `${base}-${slugify(suffix)}`;
131
- }
132
- /**
133
- * Resolve a hub folder in the workspace by hub_id match (handles folder renames),
134
- * falling back to a flat slugified hub path with preview disambiguation.
135
- */
136
- export function resolveHubFolder(workspaceDir, hubId, hubName, hubEnvironment, previewLabel, branchName) {
137
- // First: try to find by hub_id match (handles folder renames)
138
- if (hubId) {
139
- const allHubs = scanWorkspaceHubs(workspaceDir);
140
- const match = allHubs.find((h) => h.hubId === hubId);
141
- if (match)
142
- return match.hubFolder;
143
- }
144
- // Fallback: flat slugified path with preview disambiguation
145
- const hubFolderSlug = getHubFolderSlug(hubName, hubEnvironment, hubId || '', previewLabel, branchName);
146
- return path.join(workspaceDir, hubFolderSlug);
147
- }
148
- /**
149
- * Resolve the on-disk folder for a known hub_id by scanning the workspace.
150
- * Returns null when no workspace exists or the hub isn't materialized locally.
151
- */
152
- export function findLocalHubFolder(hubId) {
153
- const workspace = detectWorkspace();
154
- const gitRoot = findGitRoot();
155
- const workspaceDir = workspace?.workspaceDir ?? (gitRoot ? resolveLayout(gitRoot).hubsDir : null);
156
- if (!workspaceDir || !fs.existsSync(workspaceDir))
157
- return null;
158
- const match = scanWorkspaceHubs(workspaceDir).find((h) => h.hubId === hubId);
159
- return match ? match.hubFolder : null;
160
- }
161
- /**
162
- * Get hub folders with uncommitted changes via `git status`.
163
- * Filters to hub.yaml, wayai.yaml, and agents/*.yaml/md files under workspace/.
164
- * Unlike the GitHub Action, does NOT filter by hub_environment.
165
- */
166
- export function getChangedHubs(workspaceDir) {
167
- const gitRoot = findGitRoot();
168
- if (!gitRoot)
169
- return [];
170
- // Get workspace path relative to git root for the git status query
171
- const relWorkspace = path.relative(gitRoot, workspaceDir);
172
- // Ensure the workspace is inside the git root (no path traversal)
173
- const normalizedRel = path.normalize(relWorkspace);
174
- if (normalizedRel.startsWith('..') || path.isAbsolute(normalizedRel)) {
175
- return [];
176
- }
177
- let statusOutput;
178
- try {
179
- statusOutput = execFileSync('git', ['status', '--porcelain', '-u', '--', `${relWorkspace}/`], {
180
- encoding: 'utf-8',
181
- cwd: gitRoot,
182
- stdio: ['pipe', 'pipe', 'pipe'],
183
- });
184
- }
185
- catch {
186
- return [];
187
- }
188
- // Split into lines, preserving leading spaces (porcelain status prefix uses them)
189
- const lines = statusOutput.split('\n').filter((l) => l.length > 0);
190
- // Extract file paths from porcelain output (skip the 2-char status + space prefix)
191
- const changedFiles = lines.map((line) => {
192
- // Porcelain format: "XY file" or "XY orig -> file" (for renames)
193
- const filePart = line.slice(3);
194
- // Handle renames: "orig -> dest"
195
- const arrowIdx = filePart.indexOf(' -> ');
196
- return arrowIdx >= 0 ? filePart.slice(arrowIdx + 4) : filePart;
197
- });
198
- // Filter to hub config files (hub.yaml, wayai.yaml, agents/*.yaml, agents/*.md)
199
- const hubFiles = changedFiles.filter((file) => {
200
- return file.endsWith('/hub.yaml') || file.endsWith('hub.yaml')
201
- || file.endsWith('/wayai.yaml') || file.endsWith('wayai.yaml')
202
- || /\/agents\/[^/]+\.(md|yaml)$/.test(file);
203
- });
204
- if (hubFiles.length === 0)
205
- return [];
206
- // Extract unique hub folder paths (absolute)
207
- const hubFolders = new Set();
208
- for (const file of hubFiles) {
209
- const absFile = path.resolve(gitRoot, file);
210
- if (file.endsWith('hub.yaml') || file.endsWith('wayai.yaml')) {
211
- hubFolders.add(path.dirname(absFile));
212
- }
213
- else if (file.includes('/agents/')) {
214
- const agentsIndex = absFile.lastIndexOf('/agents/');
215
- hubFolders.add(absFile.substring(0, agentsIndex));
216
- }
217
- }
218
- // Read each hub folder's hub.yaml (or wayai.yaml)
219
- const hubs = [];
220
- for (const hubFolder of hubFolders) {
221
- const meta = readHubYaml(path.join(hubFolder, 'hub.yaml'))
222
- || readHubYaml(path.join(hubFolder, 'wayai.yaml'));
223
- if (meta) {
224
- hubs.push({ hubFolder, hubId: meta.hubId, hubEnvironment: meta.hubEnvironment });
225
- }
226
- }
227
- return hubs;
228
- }
229
- /**
230
- * Parse a hub path (hub, or org/hub), resolve it locally if possible, and
231
- * return the parsed segments for API fallback if local resolution fails.
232
- *
233
- * Returns `{ resolved }` if found locally, or `{ segments }` for API lookup.
234
- */
235
- export function resolveExplicitHubPath(hubPath) {
236
- const parts = hubPath.split('/');
237
- let hubSegment;
238
- let orgPrefix;
239
- if (parts.length === 1) {
240
- hubSegment = parts[0];
241
- }
242
- else if (parts.length === 2) {
243
- [orgPrefix, hubSegment] = parts;
244
- }
245
- else {
246
- throw new Error('Hub path must be hub or org/hub');
247
- }
248
- // Try local workspace resolution first (avoids API call, handles slugified folder names)
249
- const workspace = detectWorkspace();
250
- if (workspace) {
251
- const local = findHubByFolderName(workspace.workspaceDir, hubSegment);
252
- if (local) {
253
- return {
254
- resolved: {
255
- hubId: local.hubId,
256
- hubFolder: local.hubFolder,
257
- hubEnvironment: local.hubEnvironment,
258
- },
259
- };
260
- }
261
- }
262
- return { segments: { orgPrefix, hub: hubSegment } };
263
- }
264
- /** Find a hub in `workspace/<hub>/` whose folder basename matches the given name. */
265
- export function findHubByFolderName(workspaceDir, hubFolderName) {
266
- const all = scanWorkspaceHubs(workspaceDir);
267
- return all.find((h) => path.basename(h.hubFolder) === hubFolderName) ?? null;
268
- }
269
- /**
270
- * Auto-rename a hub folder when the hub name has changed.
271
- * Compares current folder name against the expected slug and renames if different.
272
- * Returns the new folder path (or same path if no rename occurred).
273
- */
274
- export function autoRenameHubFolder(currentFolder, hubName, hubEnvironment, hubId, previewLabel, branchName) {
275
- const expectedSlug = getHubFolderSlug(hubName, hubEnvironment, hubId, previewLabel, branchName);
276
- const currentSlug = path.basename(currentFolder);
277
- if (currentSlug === expectedSlug)
278
- return currentFolder;
279
- const targetFolder = path.join(path.dirname(currentFolder), expectedSlug);
280
- if (fs.existsSync(targetFolder)) {
281
- console.warn(` Warning: skipping hub folder rename ${currentSlug} → ${expectedSlug} (target already exists)`);
282
- return currentFolder;
283
- }
284
- try {
285
- fs.renameSync(currentFolder, targetFolder);
286
- }
287
- catch (err) {
288
- console.warn(` Warning: could not rename ${currentSlug} → ${expectedSlug}: ${err instanceof Error ? err.message : String(err)}`);
289
- return currentFolder;
290
- }
291
- console.log(` Renamed hub folder ${currentSlug} → ${expectedSlug}`);
292
- console.log(` Note: stage this rename in git before committing (e.g. git add -A)`);
293
- return targetFolder;
294
- }
295
- /**
296
- * Walk from `process.cwd()` up to (and including) `workspaceDir`, returning
297
- * the first directory whose `hub.yaml` (or legacy `wayai.yaml`) carries a
298
- * valid `hub_id`/`hub_environment`. Returns null if no enclosing hub folder
299
- * is found before reaching the workspace root.
300
- */
301
- export function findEnclosingHubFolder(workspaceDir) {
302
- let current = process.cwd();
303
- const stop = path.resolve(workspaceDir);
304
- while (true) {
305
- const meta = readHubYaml(path.join(current, 'hub.yaml'))
306
- || readHubYaml(path.join(current, 'wayai.yaml'));
307
- if (meta) {
308
- return { hubFolder: current, hubId: meta.hubId, hubEnvironment: meta.hubEnvironment };
309
- }
310
- if (current === stop)
311
- return null;
312
- const parent = path.dirname(current);
313
- if (parent === current)
314
- return null;
315
- current = parent;
316
- }
317
- }
318
- /**
319
- * Resolve the active hub for a workspace-scoped command.
320
- *
321
- * Resolution order:
322
- * 1. `--hub <uuid|folder-name>` flag in args (and consumed from args[])
323
- * 2. cwd is inside a hub folder
324
- * 3. exactly one hub in workspace/
325
- * 4. otherwise: error and exit
326
- *
327
- * Returns the hub's `hub_id`. Mutates `args` to remove the consumed `--hub` pair.
328
- */
329
- export function resolveActiveHubId(args) {
330
- // Parse and remove --hub <value> from args
331
- let selector;
332
- const hubIdx = args.indexOf('--hub');
333
- if (hubIdx !== -1) {
334
- const next = args[hubIdx + 1];
335
- if (!next || next.startsWith('--')) {
336
- console.error('--hub requires a value (uuid or workspace folder name).');
337
- process.exit(1);
338
- }
339
- selector = next;
340
- args.splice(hubIdx, 2);
341
- }
342
- const workspace = detectWorkspace();
343
- const gitRoot = findGitRoot();
344
- const workspaceDir = workspace?.workspaceDir ?? (gitRoot ? resolveLayout(gitRoot).hubsDir : null);
345
- // Display label for messages: e.g. "wayai-ws/hubs" (new) or "workspace" (legacy).
346
- const wsLabel = hubsDirLabel(gitRoot);
347
- if (!workspaceDir || !fs.existsSync(workspaceDir)) {
348
- if (selector && UUID_RE.test(selector))
349
- return selector;
350
- console.error(`No ${wsLabel}/ directory found. Run \`wayai pull --hub <uuid>\` to fetch a hub, or pass --hub <uuid>.`);
351
- process.exit(1);
352
- }
353
- const allHubs = scanWorkspaceHubs(workspaceDir);
354
- if (selector) {
355
- const match = allHubs.find((h) => h.hubId === selector || path.basename(h.hubFolder) === selector);
356
- if (match)
357
- return match.hubId;
358
- // Allow raw UUID even when not materialized locally — useful for read-only commands.
359
- if (UUID_RE.test(selector))
360
- return selector;
361
- console.error(`No hub matching --hub ${selector} found in ${wsLabel}/.`);
362
- process.exit(1);
363
- }
364
- const enclosing = findEnclosingHubFolder(workspaceDir);
365
- if (enclosing)
366
- return enclosing.hubId;
367
- if (allHubs.length === 1)
368
- return allHubs[0].hubId;
369
- if (allHubs.length === 0) {
370
- console.error(`No hub folders found in ${wsLabel}/. Run \`wayai pull --hub <uuid>\` to fetch a hub for the first time, or pass --hub <uuid>.`);
371
- process.exit(1);
372
- }
373
- console.error(`Multiple hubs in ${wsLabel}/. Pass --hub <uuid|folder-name> or run from inside a hub folder:`);
374
- for (const h of allHubs) {
375
- console.error(` ${path.basename(h.hubFolder)} (${h.hubId})`);
376
- }
377
- process.exit(1);
378
- }
379
- function safeReaddir(dir) {
380
- try {
381
- return fs.readdirSync(dir).filter((entry) => !entry.startsWith('.'));
382
- }
383
- catch {
384
- return [];
385
- }
386
- }
387
- //# sourceMappingURL=workspace.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/lib/workspace.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- /**
2
- * YAML writer — converts HubAsCodePayload to hub.yaml + agents/<slug>.yaml + agents/<slug>.md files
3
- * Reverse of parser.ts
4
- */
5
- import * as yaml from 'js-yaml';
6
- import type { HubAsCodePayload, HubAsCodeEval } from './types.js';
7
- export declare const YAML_DUMP_OPTIONS: yaml.DumpOptions;
8
- export declare function buildEvalYamlObject(evalEntry: HubAsCodeEval, slug: string): Record<string, unknown>;
9
- /**
10
- * Write a HubAsCodePayload to disk as hub.yaml + agents/<slug>.yaml + agents/<slug>.md files.
11
- *
12
- * - Creates `hub.yaml` with hub config (no agents section)
13
- * - Creates `agents/<slug>.yaml` for each agent (all config except instructions)
14
- * - Creates `agents/<slug>.md` for each agent with instructions
15
- * - Removes orphan .yaml and .md files in agents/ that don't match any current agent
16
- * - Deletes old `wayai.yaml` if present (migration)
17
- */
18
- export declare function writeHubFolder(hubFolder: string, payload: HubAsCodePayload): void;