@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.
- package/dist/index.js +16893 -310
- package/dist/index.js.map +1 -1
- package/package.json +6 -4
- package/dist/commands/admin.d.ts +0 -1
- package/dist/commands/admin.js +0 -800
- package/dist/commands/admin.js.map +0 -1
- package/dist/commands/analytics.d.ts +0 -34
- package/dist/commands/analytics.js +0 -605
- package/dist/commands/analytics.js.map +0 -1
- package/dist/commands/conversations.d.ts +0 -14
- package/dist/commands/conversations.js +0 -292
- package/dist/commands/conversations.js.map +0 -1
- package/dist/commands/create-credential.d.ts +0 -20
- package/dist/commands/create-credential.js +0 -146
- package/dist/commands/create-credential.js.map +0 -1
- package/dist/commands/delete-history.d.ts +0 -15
- package/dist/commands/delete-history.js +0 -56
- package/dist/commands/delete-history.js.map +0 -1
- package/dist/commands/eval-capture.d.ts +0 -1
- package/dist/commands/eval-capture.js +0 -135
- package/dist/commands/eval-capture.js.map +0 -1
- package/dist/commands/eval-results.d.ts +0 -10
- package/dist/commands/eval-results.js +0 -168
- package/dist/commands/eval-results.js.map +0 -1
- package/dist/commands/eval.d.ts +0 -1
- package/dist/commands/eval.js +0 -49
- package/dist/commands/eval.js.map +0 -1
- package/dist/commands/evals.d.ts +0 -21
- package/dist/commands/evals.js +0 -120
- package/dist/commands/evals.js.map +0 -1
- package/dist/commands/init.d.ts +0 -16
- package/dist/commands/init.js +0 -191
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/list.d.ts +0 -13
- package/dist/commands/list.js +0 -70
- package/dist/commands/list.js.map +0 -1
- package/dist/commands/login.d.ts +0 -8
- package/dist/commands/login.js +0 -145
- package/dist/commands/login.js.map +0 -1
- package/dist/commands/logout.d.ts +0 -1
- package/dist/commands/logout.js +0 -19
- package/dist/commands/logout.js.map +0 -1
- package/dist/commands/migrate.d.ts +0 -12
- package/dist/commands/migrate.js +0 -106
- package/dist/commands/migrate.js.map +0 -1
- package/dist/commands/observability.d.ts +0 -14
- package/dist/commands/observability.js +0 -124
- package/dist/commands/observability.js.map +0 -1
- package/dist/commands/org.d.ts +0 -19
- package/dist/commands/org.js +0 -186
- package/dist/commands/org.js.map +0 -1
- package/dist/commands/pull.d.ts +0 -31
- package/dist/commands/pull.js +0 -210
- package/dist/commands/pull.js.map +0 -1
- package/dist/commands/push.d.ts +0 -25
- package/dist/commands/push.js +0 -472
- package/dist/commands/push.js.map +0 -1
- package/dist/commands/report-create.d.ts +0 -18
- package/dist/commands/report-create.js +0 -143
- package/dist/commands/report-create.js.map +0 -1
- package/dist/commands/report.d.ts +0 -16
- package/dist/commands/report.js +0 -252
- package/dist/commands/report.js.map +0 -1
- package/dist/commands/run-eval.d.ts +0 -15
- package/dist/commands/run-eval.js +0 -187
- package/dist/commands/run-eval.js.map +0 -1
- package/dist/commands/send-message.d.ts +0 -11
- package/dist/commands/send-message.js +0 -63
- package/dist/commands/send-message.js.map +0 -1
- package/dist/commands/status.d.ts +0 -17
- package/dist/commands/status.js +0 -205
- package/dist/commands/status.js.map +0 -1
- package/dist/commands/sync-mcp.d.ts +0 -16
- package/dist/commands/sync-mcp.js +0 -51
- package/dist/commands/sync-mcp.js.map +0 -1
- package/dist/commands/sync-skills.d.ts +0 -10
- package/dist/commands/sync-skills.js +0 -49
- package/dist/commands/sync-skills.js.map +0 -1
- package/dist/commands/unlock.d.ts +0 -1
- package/dist/commands/unlock.js +0 -13
- package/dist/commands/unlock.js.map +0 -1
- package/dist/commands/update-credential.d.ts +0 -29
- package/dist/commands/update-credential.js +0 -156
- package/dist/commands/update-credential.js.map +0 -1
- package/dist/commands/update.d.ts +0 -6
- package/dist/commands/update.js +0 -36
- package/dist/commands/update.js.map +0 -1
- package/dist/commands/use.d.ts +0 -1
- package/dist/commands/use.js +0 -56
- package/dist/commands/use.js.map +0 -1
- package/dist/commands/whoami.d.ts +0 -11
- package/dist/commands/whoami.js +0 -30
- package/dist/commands/whoami.js.map +0 -1
- package/dist/index.d.ts +0 -28
- package/dist/lib/analytics-constants.d.ts +0 -6
- package/dist/lib/analytics-constants.js +0 -14
- package/dist/lib/analytics-constants.js.map +0 -1
- package/dist/lib/api-client.d.ts +0 -561
- package/dist/lib/api-client.js +0 -421
- package/dist/lib/api-client.js.map +0 -1
- package/dist/lib/auth.d.ts +0 -50
- package/dist/lib/auth.js +0 -230
- package/dist/lib/auth.js.map +0 -1
- package/dist/lib/config.d.ts +0 -34
- package/dist/lib/config.js +0 -69
- package/dist/lib/config.js.map +0 -1
- package/dist/lib/credential-utils.d.ts +0 -36
- package/dist/lib/credential-utils.js +0 -88
- package/dist/lib/credential-utils.js.map +0 -1
- package/dist/lib/diff-display.d.ts +0 -8
- package/dist/lib/diff-display.js +0 -37
- package/dist/lib/diff-display.js.map +0 -1
- package/dist/lib/eval-format.d.ts +0 -29
- package/dist/lib/eval-format.js +0 -44
- package/dist/lib/eval-format.js.map +0 -1
- package/dist/lib/hub-lock.d.ts +0 -7
- package/dist/lib/hub-lock.js +0 -116
- package/dist/lib/hub-lock.js.map +0 -1
- package/dist/lib/layout.d.ts +0 -79
- package/dist/lib/layout.js +0 -133
- package/dist/lib/layout.js.map +0 -1
- package/dist/lib/org-workspace.d.ts +0 -22
- package/dist/lib/org-workspace.js +0 -106
- package/dist/lib/org-workspace.js.map +0 -1
- package/dist/lib/parser.d.ts +0 -16
- package/dist/lib/parser.js +0 -306
- package/dist/lib/parser.js.map +0 -1
- package/dist/lib/repo-config.d.ts +0 -23
- package/dist/lib/repo-config.js +0 -91
- package/dist/lib/repo-config.js.map +0 -1
- package/dist/lib/report-edit-args.d.ts +0 -27
- package/dist/lib/report-edit-args.js +0 -56
- package/dist/lib/report-edit-args.js.map +0 -1
- package/dist/lib/report-inbox.d.ts +0 -19
- package/dist/lib/report-inbox.js +0 -73
- package/dist/lib/report-inbox.js.map +0 -1
- package/dist/lib/resource-files.d.ts +0 -29
- package/dist/lib/resource-files.js +0 -156
- package/dist/lib/resource-files.js.map +0 -1
- package/dist/lib/sentry.d.ts +0 -38
- package/dist/lib/sentry.js +0 -168
- package/dist/lib/sentry.js.map +0 -1
- package/dist/lib/skill-version.d.ts +0 -9
- package/dist/lib/skill-version.js +0 -53
- package/dist/lib/skill-version.js.map +0 -1
- package/dist/lib/sql-output.d.ts +0 -17
- package/dist/lib/sql-output.js +0 -48
- package/dist/lib/sql-output.js.map +0 -1
- package/dist/lib/token-store.d.ts +0 -37
- package/dist/lib/token-store.js +0 -354
- package/dist/lib/token-store.js.map +0 -1
- package/dist/lib/types.d.ts +0 -18
- package/dist/lib/types.js +0 -5
- package/dist/lib/types.js.map +0 -1
- package/dist/lib/utils.d.ts +0 -97
- package/dist/lib/utils.js +0 -288
- package/dist/lib/utils.js.map +0 -1
- package/dist/lib/version-cache.d.ts +0 -10
- package/dist/lib/version-cache.js +0 -34
- package/dist/lib/version-cache.js.map +0 -1
- package/dist/lib/workspace.d.ts +0 -112
- package/dist/lib/workspace.js +0 -387
- package/dist/lib/workspace.js.map +0 -1
- package/dist/lib/yaml-writer.d.ts +0 -18
- package/dist/lib/yaml-writer.js +0 -283
- package/dist/lib/yaml-writer.js.map +0 -1
package/dist/lib/workspace.js
DELETED
|
@@ -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;
|