@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.
- 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 -913
- 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 -568
- package/dist/lib/api-client.js +0 -445
- 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/utils.js
DELETED
|
@@ -1,288 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared utility functions
|
|
3
|
-
*/
|
|
4
|
-
import * as fs from 'node:fs';
|
|
5
|
-
import * as path from 'node:path';
|
|
6
|
-
import * as readline from 'node:readline';
|
|
7
|
-
export const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
8
|
-
/**
|
|
9
|
-
* Prompt the user for free-text input.
|
|
10
|
-
*/
|
|
11
|
-
export function prompt(question) {
|
|
12
|
-
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
13
|
-
return new Promise((resolve) => {
|
|
14
|
-
rl.question(question, (answer) => {
|
|
15
|
-
rl.close();
|
|
16
|
-
resolve(answer.trim());
|
|
17
|
-
});
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Prompt the user for yes/no confirmation. Returns true if they answer 'y'.
|
|
22
|
-
*/
|
|
23
|
-
export function confirm(question) {
|
|
24
|
-
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
25
|
-
return new Promise((resolve) => {
|
|
26
|
-
rl.question(`${question} [y/N]: `, (answer) => {
|
|
27
|
-
rl.close();
|
|
28
|
-
resolve(answer.trim().toLowerCase() === 'y');
|
|
29
|
-
});
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
/** Prompt for a secret, masking typed characters with `*`. */
|
|
33
|
-
export function promptSecret(question) {
|
|
34
|
-
return new Promise((resolve) => {
|
|
35
|
-
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
36
|
-
// Mute output by replacing _writeToOutput
|
|
37
|
-
const originalWrite = rl._writeToOutput;
|
|
38
|
-
let firstWrite = true;
|
|
39
|
-
rl._writeToOutput = function (s) {
|
|
40
|
-
if (firstWrite) {
|
|
41
|
-
// Let the prompt question through
|
|
42
|
-
originalWrite.call(rl, s);
|
|
43
|
-
firstWrite = false;
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
// Replace typed characters with *
|
|
47
|
-
originalWrite.call(rl, '*'.repeat(s.replace(/[\r\n]/g, '').length));
|
|
48
|
-
}
|
|
49
|
-
};
|
|
50
|
-
rl.question(question, (answer) => {
|
|
51
|
-
// Restore and print newline
|
|
52
|
-
rl._writeToOutput = originalWrite;
|
|
53
|
-
process.stdout.write('\n');
|
|
54
|
-
rl.close();
|
|
55
|
-
resolve(answer);
|
|
56
|
-
});
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
/** Read all of stdin as a single trimmed string (for piped input). */
|
|
60
|
-
export function readStdin() {
|
|
61
|
-
return new Promise((resolve, reject) => {
|
|
62
|
-
let data = '';
|
|
63
|
-
process.stdin.setEncoding('utf-8');
|
|
64
|
-
process.stdin.on('data', (chunk) => { data += chunk; });
|
|
65
|
-
process.stdin.on('end', () => resolve(data.trim()));
|
|
66
|
-
process.stdin.on('error', reject);
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Kebab-case slug for hub folders and skill names.
|
|
71
|
-
*
|
|
72
|
-
* MIRROR of the canonical `@wayai/shared` `slugifyKebab(input, 64)`. The CLI
|
|
73
|
-
* can't import the shared runtime (it's never published — see the drift-guard
|
|
74
|
-
* test no-shared-runtime-import.test.ts), so this is duplicated and pinned by
|
|
75
|
-
* that test against `slugifySkillName`. Uses NFKD (not NFD) so ligatures and
|
|
76
|
-
* full-width chars fold toward ASCII identically to the platform — keep these
|
|
77
|
-
* exact steps in lockstep with slugifyKebab or pushed slugs diverge from the UI.
|
|
78
|
-
*/
|
|
79
|
-
export function slugify(input) {
|
|
80
|
-
return input
|
|
81
|
-
.normalize('NFKD')
|
|
82
|
-
.replace(/[\u0300-\u036f]/g, '') // strip diacritics (combining marks)
|
|
83
|
-
.toLowerCase()
|
|
84
|
-
.replace(/[^a-z0-9]+/g, '-') // non-alphanumeric → hyphens
|
|
85
|
-
.replace(/-+/g, '-') // collapse consecutive
|
|
86
|
-
.slice(0, 64) // limit length
|
|
87
|
-
.replace(/^-|-$/g, ''); // trim AFTER slicing — a mid-separator cut must not leave an edge hyphen
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Resolve the hub YAML path in a folder: tries hub.yaml first, falls back to wayai.yaml.
|
|
91
|
-
* Returns the full path if found, null otherwise.
|
|
92
|
-
*/
|
|
93
|
-
export function resolveHubYamlPath(hubFolder) {
|
|
94
|
-
for (const filename of ['hub.yaml', 'wayai.yaml']) {
|
|
95
|
-
const yamlPath = path.join(hubFolder, filename);
|
|
96
|
-
if (fs.existsSync(yamlPath))
|
|
97
|
-
return yamlPath;
|
|
98
|
-
}
|
|
99
|
-
return null;
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Try to detect hub_id from hub.yaml (or wayai.yaml) in the current working directory.
|
|
103
|
-
* Returns null if no config file exists or it lacks hub_id.
|
|
104
|
-
*/
|
|
105
|
-
export async function detectHubFromCwd() {
|
|
106
|
-
const yaml = await import('js-yaml');
|
|
107
|
-
const cwd = process.cwd();
|
|
108
|
-
const yamlPath = resolveHubYamlPath(cwd);
|
|
109
|
-
if (!yamlPath)
|
|
110
|
-
return null;
|
|
111
|
-
const content = fs.readFileSync(yamlPath, 'utf-8');
|
|
112
|
-
const config = yaml.load(content);
|
|
113
|
-
if (config?.hub_id && typeof config.hub_id === 'string') {
|
|
114
|
-
return { hubId: config.hub_id, hubFolder: cwd };
|
|
115
|
-
}
|
|
116
|
-
return null;
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Parse a shorthand period string (e.g. "7d", "4w", "3m", "1y") into
|
|
120
|
-
* { start, end, periodicity } for analytics queries.
|
|
121
|
-
*/
|
|
122
|
-
export function parsePeriod(period) {
|
|
123
|
-
const match = period.match(/^(\d+)([hdwmy])$/);
|
|
124
|
-
if (!match) {
|
|
125
|
-
throw new Error(`Invalid period "${period}". Use format like 24h, 7d, 4w, 3m, 1y.`);
|
|
126
|
-
}
|
|
127
|
-
const amount = parseInt(match[1], 10);
|
|
128
|
-
const unit = match[2];
|
|
129
|
-
if (amount <= 0) {
|
|
130
|
-
throw new Error(`Invalid period "${period}". Amount must be greater than 0.`);
|
|
131
|
-
}
|
|
132
|
-
const now = new Date();
|
|
133
|
-
const start = new Date(now);
|
|
134
|
-
switch (unit) {
|
|
135
|
-
case 'h':
|
|
136
|
-
start.setHours(start.getHours() - amount);
|
|
137
|
-
break;
|
|
138
|
-
case 'd':
|
|
139
|
-
start.setDate(start.getDate() - amount);
|
|
140
|
-
break;
|
|
141
|
-
case 'w':
|
|
142
|
-
start.setDate(start.getDate() - amount * 7);
|
|
143
|
-
break;
|
|
144
|
-
case 'm':
|
|
145
|
-
start.setMonth(start.getMonth() - amount);
|
|
146
|
-
break;
|
|
147
|
-
case 'y':
|
|
148
|
-
start.setFullYear(start.getFullYear() - amount);
|
|
149
|
-
break;
|
|
150
|
-
}
|
|
151
|
-
const periodicityMap = {
|
|
152
|
-
h: 'daily',
|
|
153
|
-
d: 'daily',
|
|
154
|
-
w: 'weekly',
|
|
155
|
-
m: 'monthly',
|
|
156
|
-
y: 'yearly',
|
|
157
|
-
};
|
|
158
|
-
return {
|
|
159
|
-
start: start.toISOString(),
|
|
160
|
-
end: now.toISOString(),
|
|
161
|
-
periodicity: periodicityMap[unit],
|
|
162
|
-
};
|
|
163
|
-
}
|
|
164
|
-
/**
|
|
165
|
-
* Parse --from/--to date strings into ISO format.
|
|
166
|
-
* Accepts YYYY-MM-DD or full ISO datetime. Appends time suffix if needed.
|
|
167
|
-
*/
|
|
168
|
-
export function parseDateArg(date, position) {
|
|
169
|
-
if (date.includes('T')) {
|
|
170
|
-
if (!/^\d{4}-\d{2}-\d{2}T/.test(date) || isNaN(new Date(date).getTime())) {
|
|
171
|
-
throw new Error(`Invalid date format "${date}". Use YYYY-MM-DD or full ISO datetime.`);
|
|
172
|
-
}
|
|
173
|
-
// Verify the date portion doesn't overflow (e.g., Feb 31 → Mar 3)
|
|
174
|
-
const datePart = date.slice(0, 10);
|
|
175
|
-
const [year, month, day] = datePart.split('-').map(Number);
|
|
176
|
-
const parsed = new Date(Date.UTC(year, month - 1, day));
|
|
177
|
-
if (parsed.getUTCFullYear() !== year || parsed.getUTCMonth() !== month - 1 || parsed.getUTCDate() !== day) {
|
|
178
|
-
throw new Error(`Invalid date "${date}". Not a valid calendar date.`);
|
|
179
|
-
}
|
|
180
|
-
return date;
|
|
181
|
-
}
|
|
182
|
-
if (!/^\d{4}-\d{2}-\d{2}$/.test(date)) {
|
|
183
|
-
throw new Error(`Invalid date format "${date}". Use YYYY-MM-DD (e.g., 2026-01-01).`);
|
|
184
|
-
}
|
|
185
|
-
// Verify the date components are valid (JS Date silently overflows, e.g., Feb 31 → Mar 3)
|
|
186
|
-
const [year, month, day] = date.split('-').map(Number);
|
|
187
|
-
const parsed = new Date(Date.UTC(year, month - 1, day));
|
|
188
|
-
if (parsed.getUTCFullYear() !== year || parsed.getUTCMonth() !== month - 1 || parsed.getUTCDate() !== day) {
|
|
189
|
-
throw new Error(`Invalid date "${date}". Not a valid calendar date.`);
|
|
190
|
-
}
|
|
191
|
-
return position === 'from' ? `${date}T00:00:00Z` : `${date}T23:59:59Z`;
|
|
192
|
-
}
|
|
193
|
-
/**
|
|
194
|
-
* Resolve organization_id from: --org flag → .wayai.yaml → single-org auto-select.
|
|
195
|
-
* Returns { organizationId, organizationName } or exits with an error.
|
|
196
|
-
*/
|
|
197
|
-
export async function resolveOrganizationId(client, orgIdFlag) {
|
|
198
|
-
if (orgIdFlag) {
|
|
199
|
-
if (!UUID_RE.test(orgIdFlag)) {
|
|
200
|
-
console.error('Invalid --org value. Expected a UUID.');
|
|
201
|
-
process.exit(1);
|
|
202
|
-
}
|
|
203
|
-
return { organizationId: orgIdFlag };
|
|
204
|
-
}
|
|
205
|
-
// Try .wayai.yaml
|
|
206
|
-
// Lazy import to avoid circular dependency
|
|
207
|
-
const { readRepoConfig } = await import('./repo-config.js');
|
|
208
|
-
const repoConfig = readRepoConfig();
|
|
209
|
-
if (repoConfig) {
|
|
210
|
-
return { organizationId: repoConfig.organization_id, organizationName: repoConfig.organization_name };
|
|
211
|
-
}
|
|
212
|
-
// Fetch orgs and auto-select if single
|
|
213
|
-
const { organizations } = await client.organizations();
|
|
214
|
-
if (organizations.length === 0) {
|
|
215
|
-
console.error('No organizations found. Create one in the WayAI platform first.');
|
|
216
|
-
process.exit(1);
|
|
217
|
-
}
|
|
218
|
-
if (organizations.length === 1) {
|
|
219
|
-
console.log(`Organization: ${organizations[0].name}`);
|
|
220
|
-
return { organizationId: organizations[0].id, organizationName: organizations[0].name };
|
|
221
|
-
}
|
|
222
|
-
console.error('Multiple organizations found. Specify one with --org <uuid>:');
|
|
223
|
-
for (const org of organizations) {
|
|
224
|
-
console.error(` ${org.id} ${org.name}`);
|
|
225
|
-
}
|
|
226
|
-
process.exit(1);
|
|
227
|
-
}
|
|
228
|
-
export function parsePositiveIntFlag(name, raw) {
|
|
229
|
-
if (raw === undefined) {
|
|
230
|
-
console.error(`${name} requires a value`);
|
|
231
|
-
process.exit(1);
|
|
232
|
-
}
|
|
233
|
-
const n = Number(raw);
|
|
234
|
-
if (!Number.isFinite(n) || n <= 0 || !Number.isInteger(n)) {
|
|
235
|
-
console.error(`${name} must be a positive integer.`);
|
|
236
|
-
process.exit(1);
|
|
237
|
-
}
|
|
238
|
-
return n;
|
|
239
|
-
}
|
|
240
|
-
/**
|
|
241
|
-
* Low-level predicate: true when `--help`/`-h` appears anywhere in args.
|
|
242
|
-
*
|
|
243
|
-
* The match is deliberately broad (and so fail-safe — printing help is
|
|
244
|
-
* non-destructive). The one realistic command that takes a free-text value that
|
|
245
|
-
* could *equal* `--help` is `report` (`report create --description "--help"`),
|
|
246
|
-
* and that command owns its help handling so it's excluded from interception by
|
|
247
|
-
* `shouldInterceptHelp` — its own parser sees the value verbatim. Used both to
|
|
248
|
-
* gate that interception and to skip the update check on any help invocation.
|
|
249
|
-
*/
|
|
250
|
-
export function wantsHelp(args) {
|
|
251
|
-
return args.includes('--help') || args.includes('-h');
|
|
252
|
-
}
|
|
253
|
-
/**
|
|
254
|
-
* Whether the top-level entry should short-circuit to the GLOBAL help BEFORE
|
|
255
|
-
* dispatching `command`. This stops side-effecting subcommands (e.g.
|
|
256
|
-
* `run-eval`, which would otherwise create + run a billable eval session) from
|
|
257
|
-
* executing on a `--help`/`-h` request.
|
|
258
|
-
*
|
|
259
|
-
* Returns false — i.e. falls through to the command's own handler — for:
|
|
260
|
-
* - the top-level `help` slot (handled by the dispatch switch itself),
|
|
261
|
-
* - an absent command, and
|
|
262
|
-
* - commands in `ownHelpCommands` (e.g. `eval`, `admin`, `report`), which
|
|
263
|
-
* render their own richer command-specific help; intercepting them here would
|
|
264
|
-
* downgrade that to the global help.
|
|
265
|
-
*/
|
|
266
|
-
export function shouldInterceptHelp(command, args, ownHelpCommands) {
|
|
267
|
-
if (!command || command === 'help')
|
|
268
|
-
return false;
|
|
269
|
-
if (ownHelpCommands.has(command))
|
|
270
|
-
return false;
|
|
271
|
-
return wantsHelp(args);
|
|
272
|
-
}
|
|
273
|
-
/** Returns true if `latest` is a newer semver than `current` */
|
|
274
|
-
export function isNewerVersion(latest, current) {
|
|
275
|
-
const strip = (v) => v.replace(/[-+].*$/, '');
|
|
276
|
-
const l = strip(latest).split('.').map(Number);
|
|
277
|
-
const c = strip(current).split('.').map(Number);
|
|
278
|
-
for (let i = 0; i < Math.max(l.length, c.length); i++) {
|
|
279
|
-
const lv = l[i] ?? 0;
|
|
280
|
-
const cv = c[i] ?? 0;
|
|
281
|
-
if (lv > cv)
|
|
282
|
-
return true;
|
|
283
|
-
if (lv < cv)
|
|
284
|
-
return false;
|
|
285
|
-
}
|
|
286
|
-
return false;
|
|
287
|
-
}
|
|
288
|
-
//# sourceMappingURL=utils.js.map
|
package/dist/lib/utils.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAE1C,MAAM,CAAC,MAAM,OAAO,GAAG,iEAAiE,CAAC;AAEzF;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,QAAgB;IACrC,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACtF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;YAC/B,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,QAAgB;IACtC,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACtF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,EAAE,CAAC,QAAQ,CAAC,GAAG,QAAQ,UAAU,EAAE,CAAC,MAAM,EAAE,EAAE;YAC5C,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAEtF,0CAA0C;QAC1C,MAAM,aAAa,GAAI,EAAyD,CAAC,cAAc,CAAC;QAChG,IAAI,UAAU,GAAG,IAAI,CAAC;QACrB,EAAyD,CAAC,cAAc,GAAG,UAAU,CAAS;YAC7F,IAAI,UAAU,EAAE,CAAC;gBACf,kCAAkC;gBAClC,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC1B,UAAU,GAAG,KAAK,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,kCAAkC;gBAClC,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YACtE,CAAC;QACH,CAAC,CAAC;QAEF,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;YAC/B,4BAA4B;YAC3B,EAAyD,CAAC,cAAc,GAAG,aAAa,CAAC;YAC1F,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3B,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,SAAS;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACnC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,OAAO,CAAC,KAAa;IACnC,OAAO,KAAK;SACT,SAAS,CAAC,MAAM,CAAC;SACjB,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,qCAAqC;SACrE,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAI,6BAA6B;SAC5D,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAY,uBAAuB;SACtD,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAmB,eAAe;SAC9C,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAS,yEAAyE;AAC7G,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAAiB;IAClD,KAAK,MAAM,QAAQ,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,CAAC;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAChD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO,QAAQ,CAAC;IAC/C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;IAErC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE3B,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAwC,CAAC;IACzE,IAAI,MAAM,EAAE,MAAM,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxD,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;IAClD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,yCAAyC,CAAC,CAAC;IACtF,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAEtB,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,mCAAmC,CAAC,CAAC;IAChF,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;IAE5B,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,GAAG;YACN,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC,CAAC;YAC1C,MAAM;QACR,KAAK,GAAG;YACN,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC;YACxC,MAAM;QACR,KAAK,GAAG;YACN,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC;YAC5C,MAAM;QACR,KAAK,GAAG;YACN,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC,CAAC;YAC1C,MAAM;QACR,KAAK,GAAG;YACN,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,CAAC;YAChD,MAAM;IACV,CAAC;IAED,MAAM,cAAc,GAA2B;QAC7C,CAAC,EAAE,OAAO;QACV,CAAC,EAAE,OAAO;QACV,CAAC,EAAE,QAAQ;QACX,CAAC,EAAE,SAAS;QACZ,CAAC,EAAE,QAAQ;KACZ,CAAC;IAEF,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE;QAC1B,GAAG,EAAE,GAAG,CAAC,WAAW,EAAE;QACtB,WAAW,EAAE,cAAc,CAAC,IAAI,CAAC;KAClC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,QAAuB;IAChE,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;YACzE,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,yCAAyC,CAAC,CAAC;QACzF,CAAC;QACD,kEAAkE;QAClE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACnC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACxD,IAAI,MAAM,CAAC,cAAc,EAAE,KAAK,IAAI,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,KAAK,GAAG,CAAC,IAAI,MAAM,CAAC,UAAU,EAAE,KAAK,GAAG,EAAE,CAAC;YAC1G,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,+BAA+B,CAAC,CAAC;QACxE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,uCAAuC,CAAC,CAAC;IACvF,CAAC;IACD,0FAA0F;IAC1F,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACxD,IAAI,MAAM,CAAC,cAAc,EAAE,KAAK,IAAI,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,KAAK,GAAG,CAAC,IAAI,MAAM,CAAC,UAAU,EAAE,KAAK,GAAG,EAAE,CAAC;QAC1G,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,+BAA+B,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,YAAY,CAAC;AACzE,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,MAA4F,EAC5F,SAAkB;IAElB,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;YACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC;IACvC,CAAC;IAED,kBAAkB;IAClB,2CAA2C;IAC3C,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,cAAc,EAAE,CAAC;IACpC,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,EAAE,cAAc,EAAE,UAAU,CAAC,eAAe,EAAE,gBAAgB,EAAE,UAAU,CAAC,iBAAiB,EAAE,CAAC;IACxG,CAAC;IAED,uCAAuC;IACvC,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;IACvD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,iBAAiB,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACtD,OAAO,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1F,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,8DAA8D,CAAC,CAAC;IAC9E,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAY,EAAE,GAAuB;IACxE,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,mBAAmB,CAAC,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACtB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1D,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,8BAA8B,CAAC,CAAC;QACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,SAAS,CAAC,IAAc;IACtC,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACxD,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAA2B,EAC3B,IAAc,EACd,eAAoC;IAEpC,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IACjD,IAAI,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/C,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,cAAc,CAAC,MAAc,EAAE,OAAe;IAC5D,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACtD,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACtD,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACrB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACrB,IAAI,EAAE,GAAG,EAAE;YAAE,OAAO,IAAI,CAAC;QACzB,IAAI,EAAE,GAAG,EAAE;YAAE,OAAO,KAAK,CAAC;IAC5B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export declare const MAX_AGE_24H_MS: number;
|
|
2
|
-
export declare const CLI_CACHE_FILE = "update-check.json";
|
|
3
|
-
export declare const SKILL_CACHE_FILE = "skill-update-check.json";
|
|
4
|
-
export interface VersionCache {
|
|
5
|
-
lastCheck: number;
|
|
6
|
-
latest: string | null;
|
|
7
|
-
}
|
|
8
|
-
export declare function getVersionCachePath(filename?: string): string;
|
|
9
|
-
export declare function readVersionCache(filename?: string): VersionCache | null;
|
|
10
|
-
export declare function readCachedLatest(filename?: string, maxAgeMs?: number): string | null;
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { existsSync, readFileSync } from 'node:fs';
|
|
2
|
-
import { join } from 'node:path';
|
|
3
|
-
import { homedir } from 'node:os';
|
|
4
|
-
export const MAX_AGE_24H_MS = 24 * 60 * 60 * 1000;
|
|
5
|
-
export const CLI_CACHE_FILE = 'update-check.json';
|
|
6
|
-
export const SKILL_CACHE_FILE = 'skill-update-check.json';
|
|
7
|
-
export function getVersionCachePath(filename = CLI_CACHE_FILE) {
|
|
8
|
-
return join(homedir(), '.wayai', filename);
|
|
9
|
-
}
|
|
10
|
-
export function readVersionCache(filename = CLI_CACHE_FILE) {
|
|
11
|
-
try {
|
|
12
|
-
const path = getVersionCachePath(filename);
|
|
13
|
-
if (!existsSync(path))
|
|
14
|
-
return null;
|
|
15
|
-
const parsed = JSON.parse(readFileSync(path, 'utf-8'));
|
|
16
|
-
if (typeof parsed.lastCheck !== 'number')
|
|
17
|
-
return null;
|
|
18
|
-
if (parsed.latest !== null && typeof parsed.latest !== 'string')
|
|
19
|
-
return null;
|
|
20
|
-
return parsed;
|
|
21
|
-
}
|
|
22
|
-
catch {
|
|
23
|
-
return null;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
export function readCachedLatest(filename = CLI_CACHE_FILE, maxAgeMs = MAX_AGE_24H_MS) {
|
|
27
|
-
const cache = readVersionCache(filename);
|
|
28
|
-
if (!cache?.latest)
|
|
29
|
-
return null;
|
|
30
|
-
if (Date.now() - cache.lastCheck > maxAgeMs)
|
|
31
|
-
return null;
|
|
32
|
-
return cache.latest;
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=version-cache.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"version-cache.js","sourceRoot":"","sources":["../../src/lib/version-cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAElD,MAAM,CAAC,MAAM,cAAc,GAAG,mBAAmB,CAAC;AAClD,MAAM,CAAC,MAAM,gBAAgB,GAAG,yBAAyB,CAAC;AAO1D,MAAM,UAAU,mBAAmB,CAAC,WAAmB,cAAc;IACnE,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,WAAmB,cAAc;IAChE,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAiB,CAAC;QACvE,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QACtD,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC7E,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,WAAmB,cAAc,EACjC,WAAmB,cAAc;IAEjC,MAAM,KAAK,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,CAAC,KAAK,EAAE,MAAM;QAAE,OAAO,IAAI,CAAC;IAChC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,GAAG,QAAQ;QAAE,OAAO,IAAI,CAAC;IACzD,OAAO,KAAK,CAAC,MAAM,CAAC;AACtB,CAAC"}
|
package/dist/lib/workspace.d.ts
DELETED
|
@@ -1,112 +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
|
-
export interface HubLocation {
|
|
10
|
-
hubFolder: string;
|
|
11
|
-
hubId: string;
|
|
12
|
-
hubEnvironment: string;
|
|
13
|
-
}
|
|
14
|
-
/** A hub folder where hub.yaml exists but has no hub_id yet (not created on platform). */
|
|
15
|
-
export interface NewHubLocation {
|
|
16
|
-
hubFolder: string;
|
|
17
|
-
hubName: string;
|
|
18
|
-
hubType?: string;
|
|
19
|
-
}
|
|
20
|
-
export interface WorkspaceInfo {
|
|
21
|
-
gitRoot: string;
|
|
22
|
-
workspaceDir: string;
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Find the git repository root. Returns null if not inside a git repo.
|
|
26
|
-
*/
|
|
27
|
-
export declare function findGitRoot(): string | null;
|
|
28
|
-
/**
|
|
29
|
-
* Detect the hubs directory for the active layout (`wayai-ws/hubs/`, or the
|
|
30
|
-
* legacy `workspace/`). Returns null if not in a git repo or the dir doesn't
|
|
31
|
-
* exist yet (fresh repo before the first pull/init).
|
|
32
|
-
*/
|
|
33
|
-
export declare function detectWorkspace(): WorkspaceInfo | null;
|
|
34
|
-
/** Scan `workspace/<hub>/hub.yaml` for hubs already created on the platform. */
|
|
35
|
-
export declare function scanWorkspaceHubs(workspaceDir: string): HubLocation[];
|
|
36
|
-
/** Scan `workspace/<hub>/hub.yaml` for hubs not yet created on the platform (no `hub_id`). */
|
|
37
|
-
export declare function scanNewHubs(workspaceDir: string): NewHubLocation[];
|
|
38
|
-
/**
|
|
39
|
-
* Compute the hub folder slug with preview disambiguation.
|
|
40
|
-
* Production: slugify(hubName)
|
|
41
|
-
* Preview: slugify(hubName) + "-" + slugify(previewLabel || branchName || hubId[0:8])
|
|
42
|
-
*
|
|
43
|
-
* IMPORTANT: This must produce identical output to the backend's computeHubSlug
|
|
44
|
-
* (workers/backend/src/routes/api/ci/lookup.ts) and getHubFolderSlug
|
|
45
|
-
* (routes/api/files/index.ts). All three delegate to the canonical kebab slug
|
|
46
|
-
* with a 64-char cap (CLI mirrors it via `slugify`; backend imports
|
|
47
|
-
* `slugifyKebab`). Keep the cap in lockstep or folder resolution diverges.
|
|
48
|
-
*/
|
|
49
|
-
export declare function getHubFolderSlug(hubName: string, hubEnvironment: string, hubId: string, previewLabel?: string | null, branchName?: string | null): string;
|
|
50
|
-
/**
|
|
51
|
-
* Resolve a hub folder in the workspace by hub_id match (handles folder renames),
|
|
52
|
-
* falling back to a flat slugified hub path with preview disambiguation.
|
|
53
|
-
*/
|
|
54
|
-
export declare function resolveHubFolder(workspaceDir: string, hubId: string | undefined, hubName: string, hubEnvironment: string, previewLabel?: string | null, branchName?: string | null): string;
|
|
55
|
-
/**
|
|
56
|
-
* Resolve the on-disk folder for a known hub_id by scanning the workspace.
|
|
57
|
-
* Returns null when no workspace exists or the hub isn't materialized locally.
|
|
58
|
-
*/
|
|
59
|
-
export declare function findLocalHubFolder(hubId: string): string | null;
|
|
60
|
-
/**
|
|
61
|
-
* Get hub folders with uncommitted changes via `git status`.
|
|
62
|
-
* Filters to hub.yaml, wayai.yaml, and agents/*.yaml/md files under workspace/.
|
|
63
|
-
* Unlike the GitHub Action, does NOT filter by hub_environment.
|
|
64
|
-
*/
|
|
65
|
-
export declare function getChangedHubs(workspaceDir: string): HubLocation[];
|
|
66
|
-
export interface ResolvedHubPath {
|
|
67
|
-
hubId: string;
|
|
68
|
-
hubFolder: string;
|
|
69
|
-
hubEnvironment: string;
|
|
70
|
-
}
|
|
71
|
-
export interface UnresolvedSegments {
|
|
72
|
-
orgPrefix?: string;
|
|
73
|
-
hub: string;
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Parse a hub path (hub, or org/hub), resolve it locally if possible, and
|
|
77
|
-
* return the parsed segments for API fallback if local resolution fails.
|
|
78
|
-
*
|
|
79
|
-
* Returns `{ resolved }` if found locally, or `{ segments }` for API lookup.
|
|
80
|
-
*/
|
|
81
|
-
export declare function resolveExplicitHubPath(hubPath: string): {
|
|
82
|
-
resolved: ResolvedHubPath;
|
|
83
|
-
} | {
|
|
84
|
-
segments: UnresolvedSegments;
|
|
85
|
-
};
|
|
86
|
-
/** Find a hub in `workspace/<hub>/` whose folder basename matches the given name. */
|
|
87
|
-
export declare function findHubByFolderName(workspaceDir: string, hubFolderName: string): HubLocation | null;
|
|
88
|
-
/**
|
|
89
|
-
* Auto-rename a hub folder when the hub name has changed.
|
|
90
|
-
* Compares current folder name against the expected slug and renames if different.
|
|
91
|
-
* Returns the new folder path (or same path if no rename occurred).
|
|
92
|
-
*/
|
|
93
|
-
export declare function autoRenameHubFolder(currentFolder: string, hubName: string, hubEnvironment: string, hubId: string, previewLabel?: string | null, branchName?: string | null): string;
|
|
94
|
-
/**
|
|
95
|
-
* Walk from `process.cwd()` up to (and including) `workspaceDir`, returning
|
|
96
|
-
* the first directory whose `hub.yaml` (or legacy `wayai.yaml`) carries a
|
|
97
|
-
* valid `hub_id`/`hub_environment`. Returns null if no enclosing hub folder
|
|
98
|
-
* is found before reaching the workspace root.
|
|
99
|
-
*/
|
|
100
|
-
export declare function findEnclosingHubFolder(workspaceDir: string): HubLocation | null;
|
|
101
|
-
/**
|
|
102
|
-
* Resolve the active hub for a workspace-scoped command.
|
|
103
|
-
*
|
|
104
|
-
* Resolution order:
|
|
105
|
-
* 1. `--hub <uuid|folder-name>` flag in args (and consumed from args[])
|
|
106
|
-
* 2. cwd is inside a hub folder
|
|
107
|
-
* 3. exactly one hub in workspace/
|
|
108
|
-
* 4. otherwise: error and exit
|
|
109
|
-
*
|
|
110
|
-
* Returns the hub's `hub_id`. Mutates `args` to remove the consumed `--hub` pair.
|
|
111
|
-
*/
|
|
112
|
-
export declare function resolveActiveHubId(args: string[]): string;
|