@wayai/cli 0.2.75 → 0.2.76
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/commands/status.d.ts +7 -1
- package/dist/commands/status.js +86 -15
- package/dist/commands/status.js.map +1 -1
- package/dist/index.js +3 -8
- package/dist/index.js.map +1 -1
- package/dist/lib/version-cache.d.ts +8 -0
- package/dist/lib/version-cache.js +33 -0
- package/dist/lib/version-cache.js.map +1 -0
- package/package.json +1 -1
|
@@ -4,8 +4,14 @@
|
|
|
4
4
|
* Usage:
|
|
5
5
|
* wayai status # human-readable output
|
|
6
6
|
* wayai status --json # structured output for agents/scripts
|
|
7
|
+
*
|
|
8
|
+
* The --json shape is the canonical state snapshot consumed by the WayAI skill
|
|
9
|
+
* during agentic onboarding. Fields are nullable so the agent can branch
|
|
10
|
+
* cleanly from any starting state (no config / no org / no workspace / etc.).
|
|
7
11
|
*/
|
|
8
12
|
export declare function parseArgs(args: string[]): {
|
|
9
13
|
json: boolean;
|
|
10
14
|
};
|
|
11
|
-
export declare function statusCommand(args: string[]
|
|
15
|
+
export declare function statusCommand(args: string[], pkg: {
|
|
16
|
+
version: string;
|
|
17
|
+
}): Promise<void>;
|
package/dist/commands/status.js
CHANGED
|
@@ -4,60 +4,131 @@
|
|
|
4
4
|
* Usage:
|
|
5
5
|
* wayai status # human-readable output
|
|
6
6
|
* wayai status --json # structured output for agents/scripts
|
|
7
|
+
*
|
|
8
|
+
* The --json shape is the canonical state snapshot consumed by the WayAI skill
|
|
9
|
+
* during agentic onboarding. Fields are nullable so the agent can branch
|
|
10
|
+
* cleanly from any starting state (no config / no org / no workspace / etc.).
|
|
7
11
|
*/
|
|
12
|
+
import * as path from 'node:path';
|
|
8
13
|
import { readConfig } from '../lib/config.js';
|
|
9
14
|
import { getAccessToken } from '../lib/auth.js';
|
|
10
15
|
import { readRepoConfig } from '../lib/repo-config.js';
|
|
16
|
+
import { detectWorkspace, findGitRoot, scanWorkspaceHubs } from '../lib/workspace.js';
|
|
17
|
+
import { ApiClient } from '../lib/api-client.js';
|
|
18
|
+
import { readCachedLatest } from '../lib/version-cache.js';
|
|
11
19
|
export function parseArgs(args) {
|
|
12
20
|
return { json: args.includes('--json') };
|
|
13
21
|
}
|
|
14
|
-
|
|
22
|
+
function buildWorkspaceState(repoConfig) {
|
|
23
|
+
if (!repoConfig)
|
|
24
|
+
return { scoped: false, path: null, hub_count: 0 };
|
|
25
|
+
const ws = detectWorkspace();
|
|
26
|
+
const gitRoot = ws?.gitRoot ?? findGitRoot();
|
|
27
|
+
const hubCount = ws ? scanWorkspaceHubs(ws.workspaceDir).length : 0;
|
|
28
|
+
const yamlPath = gitRoot ? path.join(gitRoot, '.wayai.yaml') : null;
|
|
29
|
+
return { scoped: true, path: yamlPath, hub_count: hubCount };
|
|
30
|
+
}
|
|
31
|
+
export async function statusCommand(args, pkg) {
|
|
15
32
|
const { json } = parseArgs(args);
|
|
16
33
|
const config = readConfig();
|
|
34
|
+
const repoConfig = readRepoConfig();
|
|
35
|
+
const workspace = buildWorkspaceState(repoConfig);
|
|
36
|
+
const cliLatest = readCachedLatest();
|
|
37
|
+
// Cold-start path: no config at all.
|
|
17
38
|
if (!config) {
|
|
39
|
+
const snapshot = {
|
|
40
|
+
logged_in: false,
|
|
41
|
+
token_valid: null,
|
|
42
|
+
api_url: null,
|
|
43
|
+
repo_scope: null,
|
|
44
|
+
cli: { version: pkg.version, latest: cliLatest },
|
|
45
|
+
auth: { logged_in: false, user_email: null },
|
|
46
|
+
orgs: [],
|
|
47
|
+
active_org: null,
|
|
48
|
+
workspace,
|
|
49
|
+
};
|
|
18
50
|
if (json) {
|
|
19
|
-
console.log(JSON.stringify(
|
|
51
|
+
console.log(JSON.stringify(snapshot, null, 2));
|
|
20
52
|
}
|
|
21
53
|
else {
|
|
22
54
|
console.log('Not logged in. Run `wayai login`.');
|
|
23
55
|
}
|
|
24
56
|
return;
|
|
25
57
|
}
|
|
26
|
-
//
|
|
27
|
-
let tokenValid;
|
|
58
|
+
// Logged-in path: validate token, then enrich with backend data.
|
|
59
|
+
let tokenValid = false;
|
|
60
|
+
let accessToken = null;
|
|
28
61
|
try {
|
|
29
|
-
await getAccessToken(config);
|
|
62
|
+
accessToken = await getAccessToken(config);
|
|
30
63
|
tokenValid = true;
|
|
31
64
|
}
|
|
32
65
|
catch {
|
|
33
66
|
tokenValid = false;
|
|
34
67
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
68
|
+
let userEmail = null;
|
|
69
|
+
let orgs = [];
|
|
70
|
+
if (tokenValid && accessToken) {
|
|
71
|
+
const client = new ApiClient({ apiUrl: config.api_url, accessToken });
|
|
72
|
+
const [meResult, orgsResult] = await Promise.allSettled([
|
|
73
|
+
client.me(),
|
|
74
|
+
client.organizations(),
|
|
75
|
+
]);
|
|
76
|
+
if (meResult.status === 'fulfilled') {
|
|
77
|
+
userEmail = meResult.value.email || null;
|
|
78
|
+
}
|
|
79
|
+
if (orgsResult.status === 'fulfilled') {
|
|
80
|
+
orgs = orgsResult.value.organizations.map((o) => ({ id: o.id, name: o.name }));
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
const activeOrg = repoConfig
|
|
84
|
+
? {
|
|
85
|
+
id: repoConfig.organization_id,
|
|
86
|
+
name: orgs.find((o) => o.id === repoConfig.organization_id)?.name
|
|
87
|
+
?? repoConfig.organization_name
|
|
88
|
+
?? repoConfig.organization_id,
|
|
89
|
+
}
|
|
90
|
+
: null;
|
|
91
|
+
const snapshot = {
|
|
92
|
+
logged_in: true,
|
|
93
|
+
token_valid: tokenValid,
|
|
94
|
+
api_url: config.api_url,
|
|
95
|
+
repo_scope: repoConfig
|
|
96
|
+
? {
|
|
42
97
|
organization_id: repoConfig.organization_id,
|
|
43
98
|
organization_name: repoConfig.organization_name ?? null,
|
|
44
|
-
}
|
|
45
|
-
|
|
99
|
+
}
|
|
100
|
+
: null,
|
|
101
|
+
cli: { version: pkg.version, latest: cliLatest },
|
|
102
|
+
auth: { logged_in: true, user_email: userEmail },
|
|
103
|
+
orgs,
|
|
104
|
+
active_org: activeOrg,
|
|
105
|
+
workspace,
|
|
106
|
+
};
|
|
107
|
+
if (json) {
|
|
108
|
+
console.log(JSON.stringify(snapshot, null, 2));
|
|
46
109
|
return;
|
|
47
110
|
}
|
|
111
|
+
// Human-readable output.
|
|
48
112
|
const tokenStatus = tokenValid
|
|
49
113
|
? 'token valid'
|
|
50
114
|
: 'token expired (run `wayai login` to re-authenticate)';
|
|
51
|
-
console.log(`Logged in — ${tokenStatus}`);
|
|
115
|
+
console.log(`Logged in${userEmail ? ` as ${userEmail}` : ''} — ${tokenStatus}`);
|
|
52
116
|
if (config.api_url !== 'https://api.wayai.pro') {
|
|
53
117
|
console.log(`API: ${config.api_url}`);
|
|
54
118
|
}
|
|
119
|
+
if (cliLatest && cliLatest !== pkg.version) {
|
|
120
|
+
console.log(`CLI: ${pkg.version} (latest: ${cliLatest} — run \`wayai update\`)`);
|
|
121
|
+
}
|
|
122
|
+
if (orgs.length > 0) {
|
|
123
|
+
console.log(`Organizations: ${orgs.length}`);
|
|
124
|
+
}
|
|
55
125
|
if (repoConfig) {
|
|
56
126
|
const orgLine = repoConfig.organization_name
|
|
57
127
|
? `${repoConfig.organization_name} (${repoConfig.organization_id})`
|
|
58
128
|
: repoConfig.organization_id;
|
|
59
129
|
console.log(`Repository scope:`);
|
|
60
130
|
console.log(` Organization: ${orgLine}`);
|
|
131
|
+
console.log(` Hubs: ${workspace.hub_count}`);
|
|
61
132
|
}
|
|
62
133
|
else {
|
|
63
134
|
console.log('No .wayai.yaml found — run `wayai init` to scope this repo to an organization.');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -26,6 +26,7 @@ import { dirname, join } from 'node:path';
|
|
|
26
26
|
import { homedir } from 'node:os';
|
|
27
27
|
import { initSentry, captureException, shouldReportToSentry, closeSentry } from './lib/sentry.js';
|
|
28
28
|
import { isNewerVersion } from './lib/utils.js';
|
|
29
|
+
import { readVersionCache } from './lib/version-cache.js';
|
|
29
30
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
30
31
|
const pkg = JSON.parse(readFileSync(join(__dirname, '..', 'package.json'), 'utf-8'));
|
|
31
32
|
const [, , command, ...args] = process.argv;
|
|
@@ -45,7 +46,7 @@ async function main() {
|
|
|
45
46
|
}
|
|
46
47
|
case 'status': {
|
|
47
48
|
const { statusCommand } = await import('./commands/status.js');
|
|
48
|
-
await statusCommand(args);
|
|
49
|
+
await statusCommand(args, pkg);
|
|
49
50
|
break;
|
|
50
51
|
}
|
|
51
52
|
case 'whoami': {
|
|
@@ -233,13 +234,7 @@ function checkForUpdates() {
|
|
|
233
234
|
try {
|
|
234
235
|
const cacheDir = join(homedir(), '.wayai');
|
|
235
236
|
const cachePath = join(cacheDir, 'update-check.json');
|
|
236
|
-
|
|
237
|
-
try {
|
|
238
|
-
if (existsSync(cachePath)) {
|
|
239
|
-
cache = JSON.parse(readFileSync(cachePath, 'utf-8'));
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
catch { /* malformed cache — proceed to fresh check */ }
|
|
237
|
+
const cache = readVersionCache();
|
|
243
238
|
if (cache && Date.now() - cache.lastCheck < UPDATE_CHECK_INTERVAL_MS) {
|
|
244
239
|
if (cache.latest && isNewerVersion(cache.latest, pkg.version)) {
|
|
245
240
|
console.error(`\nUpdate available: ${pkg.version} → ${cache.latest}\nRun \`wayai update\` to update.`);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAClG,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const MAX_AGE_24H_MS: number;
|
|
2
|
+
export interface VersionCache {
|
|
3
|
+
lastCheck: number;
|
|
4
|
+
latest: string | null;
|
|
5
|
+
}
|
|
6
|
+
export declare function getVersionCachePath(): string;
|
|
7
|
+
export declare function readVersionCache(): VersionCache | null;
|
|
8
|
+
export declare function readCachedLatest(maxAgeMs?: number): string | null;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// Read side of ~/.wayai/update-check.json; writes happen in src/index.ts checkForUpdates().
|
|
2
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
import { homedir } from 'node:os';
|
|
5
|
+
export const MAX_AGE_24H_MS = 24 * 60 * 60 * 1000;
|
|
6
|
+
export function getVersionCachePath() {
|
|
7
|
+
return join(homedir(), '.wayai', 'update-check.json');
|
|
8
|
+
}
|
|
9
|
+
export function readVersionCache() {
|
|
10
|
+
try {
|
|
11
|
+
const path = getVersionCachePath();
|
|
12
|
+
if (!existsSync(path))
|
|
13
|
+
return null;
|
|
14
|
+
const parsed = JSON.parse(readFileSync(path, 'utf-8'));
|
|
15
|
+
if (typeof parsed.lastCheck !== 'number')
|
|
16
|
+
return null;
|
|
17
|
+
if (parsed.latest !== null && typeof parsed.latest !== 'string')
|
|
18
|
+
return null;
|
|
19
|
+
return parsed;
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export function readCachedLatest(maxAgeMs = MAX_AGE_24H_MS) {
|
|
26
|
+
const cache = readVersionCache();
|
|
27
|
+
if (!cache?.latest)
|
|
28
|
+
return null;
|
|
29
|
+
if (Date.now() - cache.lastCheck > maxAgeMs)
|
|
30
|
+
return null;
|
|
31
|
+
return cache.latest;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=version-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-cache.js","sourceRoot":"","sources":["../../src/lib/version-cache.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAE5F,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;AAOlD,MAAM,UAAU,mBAAmB;IACjC,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,mBAAmB,EAAE,CAAC;QACnC,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,CAAC,WAAmB,cAAc;IAChE,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC;IACjC,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"}
|