@wayai/cli 0.2.42 → 0.2.44
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/create-credential.d.ts +18 -0
- package/dist/commands/create-credential.js +162 -0
- package/dist/commands/create-credential.js.map +1 -0
- package/dist/commands/create-project.d.ts +14 -0
- package/dist/commands/create-project.js +50 -0
- package/dist/commands/create-project.js.map +1 -0
- package/dist/commands/init.js +65 -52
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/push.d.ts +2 -1
- package/dist/commands/push.js +131 -43
- package/dist/commands/push.js.map +1 -1
- package/dist/index.d.ts +9 -7
- package/dist/index.js +43 -26
- package/dist/index.js.map +1 -1
- package/dist/lib/api-client.d.ts +43 -0
- package/dist/lib/api-client.js +24 -0
- package/dist/lib/api-client.js.map +1 -1
- package/dist/lib/parser.d.ts +5 -1
- package/dist/lib/parser.js +48 -20
- package/dist/lib/parser.js.map +1 -1
- package/dist/lib/repo-config.d.ts +18 -0
- package/dist/lib/repo-config.js +75 -1
- package/dist/lib/repo-config.js.map +1 -1
- package/dist/lib/utils.d.ts +20 -0
- package/dist/lib/utils.js +48 -0
- package/dist/lib/utils.js.map +1 -1
- package/dist/lib/workspace.d.ts +11 -0
- package/dist/lib/workspace.js +47 -0
- package/dist/lib/workspace.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* wayai create-credential — create an organization credential (API key, token, or basic auth)
|
|
3
|
+
*
|
|
4
|
+
* Usage:
|
|
5
|
+
* wayai create-credential --name "openai-key" --type "Bearer Token"
|
|
6
|
+
* wayai create-credential --name "my-api" --type "Basic Auth" --org <uuid>
|
|
7
|
+
* echo "$SECRET" | wayai create-credential --name "openai-key" --type "Bearer Token" --stdin
|
|
8
|
+
*/
|
|
9
|
+
interface ParsedArgs {
|
|
10
|
+
name: string | undefined;
|
|
11
|
+
type: string | undefined;
|
|
12
|
+
orgId: string | undefined;
|
|
13
|
+
description: string | undefined;
|
|
14
|
+
stdin: boolean;
|
|
15
|
+
}
|
|
16
|
+
export declare function parseArgs(args: string[]): ParsedArgs;
|
|
17
|
+
export declare function createCredentialCommand(args: string[]): Promise<void>;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* wayai create-credential — create an organization credential (API key, token, or basic auth)
|
|
3
|
+
*
|
|
4
|
+
* Usage:
|
|
5
|
+
* wayai create-credential --name "openai-key" --type "Bearer Token"
|
|
6
|
+
* wayai create-credential --name "my-api" --type "Basic Auth" --org <uuid>
|
|
7
|
+
* echo "$SECRET" | wayai create-credential --name "openai-key" --type "Bearer Token" --stdin
|
|
8
|
+
*/
|
|
9
|
+
import * as readline from 'node:readline';
|
|
10
|
+
import { requireAuth } from '../lib/auth.js';
|
|
11
|
+
import { ApiClient } from '../lib/api-client.js';
|
|
12
|
+
import { prompt, resolveOrganizationId } from '../lib/utils.js';
|
|
13
|
+
const VALID_AUTH_TYPES = ['API Key', 'Bearer Token', 'Basic Auth'];
|
|
14
|
+
export function parseArgs(args) {
|
|
15
|
+
let name;
|
|
16
|
+
let type;
|
|
17
|
+
let orgId;
|
|
18
|
+
let description;
|
|
19
|
+
let stdin = false;
|
|
20
|
+
for (let i = 0; i < args.length; i++) {
|
|
21
|
+
if (args[i] === '--name' && args[i + 1]) {
|
|
22
|
+
name = args[++i];
|
|
23
|
+
}
|
|
24
|
+
else if (args[i] === '--type' && args[i + 1]) {
|
|
25
|
+
type = args[++i];
|
|
26
|
+
}
|
|
27
|
+
else if (args[i] === '--org' && args[i + 1]) {
|
|
28
|
+
orgId = args[++i];
|
|
29
|
+
}
|
|
30
|
+
else if (args[i] === '--description' && args[i + 1]) {
|
|
31
|
+
description = args[++i];
|
|
32
|
+
}
|
|
33
|
+
else if (args[i] === '--stdin') {
|
|
34
|
+
stdin = true;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return { name, type, orgId, description, stdin };
|
|
38
|
+
}
|
|
39
|
+
/** Read a line from stdin with masked output (shows * for each character). */
|
|
40
|
+
function promptSecret(question) {
|
|
41
|
+
return new Promise((resolve) => {
|
|
42
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
43
|
+
// Mute output by replacing _writeToOutput
|
|
44
|
+
const originalWrite = rl._writeToOutput;
|
|
45
|
+
let firstWrite = true;
|
|
46
|
+
rl._writeToOutput = function (s) {
|
|
47
|
+
if (firstWrite) {
|
|
48
|
+
// Let the prompt question through
|
|
49
|
+
originalWrite.call(rl, s);
|
|
50
|
+
firstWrite = false;
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
// Replace typed characters with *
|
|
54
|
+
originalWrite.call(rl, '*'.repeat(s.replace(/[\r\n]/g, '').length));
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
rl.question(question, (answer) => {
|
|
58
|
+
// Restore and print newline
|
|
59
|
+
rl._writeToOutput = originalWrite;
|
|
60
|
+
process.stdout.write('\n');
|
|
61
|
+
rl.close();
|
|
62
|
+
resolve(answer);
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
/** Read all of stdin as a single string (for piped input). */
|
|
67
|
+
function readStdin() {
|
|
68
|
+
return new Promise((resolve, reject) => {
|
|
69
|
+
let data = '';
|
|
70
|
+
process.stdin.setEncoding('utf-8');
|
|
71
|
+
process.stdin.on('data', (chunk) => { data += chunk; });
|
|
72
|
+
process.stdin.on('end', () => resolve(data.trim()));
|
|
73
|
+
process.stdin.on('error', reject);
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
export async function createCredentialCommand(args) {
|
|
77
|
+
const parsed = parseArgs(args);
|
|
78
|
+
if (!parsed.name) {
|
|
79
|
+
console.error('Missing required flag: --name <credential-name>');
|
|
80
|
+
console.error('Usage: wayai create-credential --name "openai-key" --type "Bearer Token"');
|
|
81
|
+
process.exit(1);
|
|
82
|
+
}
|
|
83
|
+
if (!parsed.type) {
|
|
84
|
+
console.error('Missing required flag: --type <auth-type>');
|
|
85
|
+
console.error(`Supported types: ${VALID_AUTH_TYPES.join(', ')}`);
|
|
86
|
+
process.exit(1);
|
|
87
|
+
}
|
|
88
|
+
if (!VALID_AUTH_TYPES.includes(parsed.type)) {
|
|
89
|
+
console.error(`Invalid authentication type: "${parsed.type}"`);
|
|
90
|
+
console.error(`Supported types: ${VALID_AUTH_TYPES.join(', ')}`);
|
|
91
|
+
process.exit(1);
|
|
92
|
+
}
|
|
93
|
+
const authType = parsed.type;
|
|
94
|
+
const { config, accessToken } = await requireAuth();
|
|
95
|
+
const client = new ApiClient({ apiUrl: config.api_url, accessToken });
|
|
96
|
+
const { organizationId } = await resolveOrganizationId(client, parsed.orgId);
|
|
97
|
+
// Collect secret(s) based on auth type
|
|
98
|
+
const secrets = {};
|
|
99
|
+
if (parsed.stdin) {
|
|
100
|
+
if (process.stdin.isTTY) {
|
|
101
|
+
console.error('--stdin requires piped input. Example: echo "$SECRET" | wayai create-credential --name "key" --type "Bearer Token" --stdin');
|
|
102
|
+
process.exit(1);
|
|
103
|
+
}
|
|
104
|
+
const input = await readStdin();
|
|
105
|
+
if (!input) {
|
|
106
|
+
console.error('No input received from stdin.');
|
|
107
|
+
process.exit(1);
|
|
108
|
+
}
|
|
109
|
+
switch (authType) {
|
|
110
|
+
case 'Bearer Token':
|
|
111
|
+
secrets.access_token = input;
|
|
112
|
+
break;
|
|
113
|
+
case 'API Key':
|
|
114
|
+
secrets.api_key = input;
|
|
115
|
+
break;
|
|
116
|
+
case 'Basic Auth': {
|
|
117
|
+
const colonIdx = input.indexOf(':');
|
|
118
|
+
if (colonIdx === -1) {
|
|
119
|
+
console.error('Basic Auth stdin format: username:password');
|
|
120
|
+
process.exit(1);
|
|
121
|
+
}
|
|
122
|
+
secrets.username = input.slice(0, colonIdx);
|
|
123
|
+
secrets.password = input.slice(colonIdx + 1);
|
|
124
|
+
break;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
// Interactive prompt with masked input
|
|
130
|
+
switch (authType) {
|
|
131
|
+
case 'Bearer Token':
|
|
132
|
+
secrets.access_token = await promptSecret('Enter access token: ');
|
|
133
|
+
break;
|
|
134
|
+
case 'API Key':
|
|
135
|
+
secrets.api_key = await promptSecret('Enter API key: ');
|
|
136
|
+
break;
|
|
137
|
+
case 'Basic Auth':
|
|
138
|
+
secrets.username = await prompt('Enter username: ');
|
|
139
|
+
secrets.password = await promptSecret('Enter password: ');
|
|
140
|
+
break;
|
|
141
|
+
}
|
|
142
|
+
// Validate secrets are not empty
|
|
143
|
+
for (const [key, value] of Object.entries(secrets)) {
|
|
144
|
+
if (!value) {
|
|
145
|
+
console.error(`${key} cannot be empty.`);
|
|
146
|
+
process.exit(1);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
console.log(`Creating credential "${parsed.name}" (${authType})...`);
|
|
151
|
+
const result = await client.createOrgCredential({
|
|
152
|
+
organization_id: organizationId,
|
|
153
|
+
credential_display_name: parsed.name,
|
|
154
|
+
authentication_type: authType,
|
|
155
|
+
...(parsed.description && { credential_description: parsed.description }),
|
|
156
|
+
...secrets,
|
|
157
|
+
});
|
|
158
|
+
console.log(`\nCredential created: ${result.data.credential_display_name}`);
|
|
159
|
+
console.log(` ID: ${result.data.organization_credential_id}`);
|
|
160
|
+
console.log(` Type: ${result.data.authentication_type}`);
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=create-credential.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-credential.js","sourceRoot":"","sources":["../../src/commands/create-credential.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAChE,MAAM,gBAAgB,GAAG,CAAC,SAAS,EAAE,cAAc,EAAE,YAAY,CAAU,CAAC;AAW5E,MAAM,UAAU,SAAS,CAAC,IAAc;IACtC,IAAI,IAAwB,CAAC;IAC7B,IAAI,IAAwB,CAAC;IAC7B,IAAI,KAAyB,CAAC;IAC9B,IAAI,WAA+B,CAAC;IACpC,IAAI,KAAK,GAAG,KAAK,CAAC;IAElB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACxC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACnB,CAAC;aAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC/C,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACnB,CAAC;aAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC9C,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACpB,CAAC;aAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,eAAe,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACtD,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1B,CAAC;aAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;YACjC,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;AACnD,CAAC;AAED,8EAA8E;AAC9E,SAAS,YAAY,CAAC,QAAgB;IACpC,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,8DAA8D;AAC9D,SAAS,SAAS;IAChB,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,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,IAAc;IAC1D,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAE/B,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACjE,OAAO,CAAC,KAAK,CAAC,0EAA0E,CAAC,CAAC;QAC1F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC3D,OAAO,CAAC,KAAK,CAAC,oBAAoB,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAgB,CAAC,EAAE,CAAC;QACxD,OAAO,CAAC,KAAK,CAAC,iCAAiC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;QAC/D,OAAO,CAAC,KAAK,CAAC,oBAAoB,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAgB,CAAC;IAEzC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,WAAW,EAAE,CAAC;IACpD,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;IAEtE,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAE7E,uCAAuC;IACvC,MAAM,OAAO,GAA2B,EAAE,CAAC;IAE3C,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACxB,OAAO,CAAC,KAAK,CAAC,4HAA4H,CAAC,CAAC;YAC5I,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,CAAC;QAChC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;YAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,cAAc;gBACjB,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC;gBAC7B,MAAM;YACR,KAAK,SAAS;gBACZ,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC;gBACxB,MAAM;YACR,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACpC,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;oBACpB,OAAO,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;oBAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;gBACD,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;gBAC5C,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;gBAC7C,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,uCAAuC;QACvC,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,cAAc;gBACjB,OAAO,CAAC,YAAY,GAAG,MAAM,YAAY,CAAC,sBAAsB,CAAC,CAAC;gBAClE,MAAM;YACR,KAAK,SAAS;gBACZ,OAAO,CAAC,OAAO,GAAG,MAAM,YAAY,CAAC,iBAAiB,CAAC,CAAC;gBACxD,MAAM;YACR,KAAK,YAAY;gBACf,OAAO,CAAC,QAAQ,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;gBACpD,OAAO,CAAC,QAAQ,GAAG,MAAM,YAAY,CAAC,kBAAkB,CAAC,CAAC;gBAC1D,MAAM;QACV,CAAC;QAED,iCAAiC;QACjC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACnD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,mBAAmB,CAAC,CAAC;gBACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,wBAAwB,MAAM,CAAC,IAAI,MAAM,QAAQ,MAAM,CAAC,CAAC;IAErE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC;QAC9C,eAAe,EAAE,cAAc;QAC/B,uBAAuB,EAAE,MAAM,CAAC,IAAI;QACpC,mBAAmB,EAAE,QAAQ;QAC7B,GAAG,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,sBAAsB,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;QACzE,GAAG,OAAO;KACX,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,yBAAyB,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC;IAC5E,OAAO,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,WAAW,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;AAC5D,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* wayai create-project — create a new project in an organization
|
|
3
|
+
*
|
|
4
|
+
* Usage:
|
|
5
|
+
* wayai create-project --name "My Project"
|
|
6
|
+
* wayai create-project --name "My Project" --org <uuid>
|
|
7
|
+
*/
|
|
8
|
+
interface ParsedArgs {
|
|
9
|
+
name: string | undefined;
|
|
10
|
+
orgId: string | undefined;
|
|
11
|
+
}
|
|
12
|
+
export declare function parseArgs(args: string[]): ParsedArgs;
|
|
13
|
+
export declare function createProjectCommand(args: string[]): Promise<void>;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* wayai create-project — create a new project in an organization
|
|
3
|
+
*
|
|
4
|
+
* Usage:
|
|
5
|
+
* wayai create-project --name "My Project"
|
|
6
|
+
* wayai create-project --name "My Project" --org <uuid>
|
|
7
|
+
*/
|
|
8
|
+
import { requireAuth } from '../lib/auth.js';
|
|
9
|
+
import { ApiClient } from '../lib/api-client.js';
|
|
10
|
+
import { writePartialRepoConfig } from '../lib/repo-config.js';
|
|
11
|
+
import { resolveOrganizationId } from '../lib/utils.js';
|
|
12
|
+
export function parseArgs(args) {
|
|
13
|
+
let name;
|
|
14
|
+
let orgId;
|
|
15
|
+
for (let i = 0; i < args.length; i++) {
|
|
16
|
+
if (args[i] === '--name' && args[i + 1]) {
|
|
17
|
+
name = args[++i];
|
|
18
|
+
}
|
|
19
|
+
else if (args[i] === '--org' && args[i + 1]) {
|
|
20
|
+
orgId = args[++i];
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return { name, orgId };
|
|
24
|
+
}
|
|
25
|
+
export async function createProjectCommand(args) {
|
|
26
|
+
const parsed = parseArgs(args);
|
|
27
|
+
if (!parsed.name) {
|
|
28
|
+
console.error('Missing required flag: --name <project-name>');
|
|
29
|
+
console.error('Usage: wayai create-project --name "My Project" [--org <uuid>]');
|
|
30
|
+
process.exit(1);
|
|
31
|
+
}
|
|
32
|
+
const { config, accessToken } = await requireAuth();
|
|
33
|
+
const client = new ApiClient({ apiUrl: config.api_url, accessToken });
|
|
34
|
+
const { organizationId, organizationName } = await resolveOrganizationId(client, parsed.orgId);
|
|
35
|
+
console.log(`Creating project "${parsed.name}"...`);
|
|
36
|
+
const result = await client.createProject(organizationId, parsed.name);
|
|
37
|
+
const project = result.data[0];
|
|
38
|
+
// Update .wayai.yaml with the new project (preserve existing org info, clear hub)
|
|
39
|
+
const configPath = writePartialRepoConfig({
|
|
40
|
+
organization_id: organizationId,
|
|
41
|
+
organization_name: organizationName,
|
|
42
|
+
project_id: project.project_id,
|
|
43
|
+
project_name: project.project_name,
|
|
44
|
+
});
|
|
45
|
+
console.log(`\nProject created: ${project.project_name}`);
|
|
46
|
+
console.log(` ID: ${project.project_id}`);
|
|
47
|
+
console.log(`\nWrote ${configPath}`);
|
|
48
|
+
console.log('Create hub files in workspace/ and run `wayai push` to create a hub.');
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=create-project.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-project.js","sourceRoot":"","sources":["../../src/commands/create-project.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAOxD,MAAM,UAAU,SAAS,CAAC,IAAc;IACtC,IAAI,IAAwB,CAAC;IAC7B,IAAI,KAAyB,CAAC;IAE9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACxC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACnB,CAAC;aAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC9C,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACzB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAAc;IACvD,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAE/B,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAC9D,OAAO,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;QAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,WAAW,EAAE,CAAC;IACpD,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;IAEtE,MAAM,EAAE,cAAc,EAAE,gBAAgB,EAAE,GAAG,MAAM,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAE/F,OAAO,CAAC,GAAG,CAAC,qBAAqB,MAAM,CAAC,IAAI,MAAM,CAAC,CAAC;IAEpD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAE/B,kFAAkF;IAClF,MAAM,UAAU,GAAG,sBAAsB,CAAC;QACxC,eAAe,EAAE,cAAc;QAC/B,iBAAiB,EAAE,gBAAgB;QACnC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,YAAY,EAAE,OAAO,CAAC,YAAY;KACnC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,sBAAsB,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,SAAS,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,WAAW,UAAU,EAAE,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAC;AACtF,CAAC"}
|
package/dist/commands/init.js
CHANGED
|
@@ -4,22 +4,12 @@
|
|
|
4
4
|
* Interactive mode: prompts user to pick org → project → hub
|
|
5
5
|
* Direct mode: --hub <uuid> resolves org/project info from the API
|
|
6
6
|
*/
|
|
7
|
-
import * as readline from 'node:readline';
|
|
8
7
|
import { requireAuth } from '../lib/auth.js';
|
|
9
8
|
import { ApiClient } from '../lib/api-client.js';
|
|
10
|
-
import { readRepoConfig, writeRepoConfig } from '../lib/repo-config.js';
|
|
9
|
+
import { readRepoConfig, readPartialRepoConfig, writeRepoConfig, writePartialRepoConfig } from '../lib/repo-config.js';
|
|
11
10
|
import { refreshScaffold } from '../lib/scaffold.js';
|
|
12
11
|
import { findGitRoot } from '../lib/workspace.js';
|
|
13
|
-
|
|
14
|
-
function prompt(question) {
|
|
15
|
-
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
16
|
-
return new Promise((resolve) => {
|
|
17
|
-
rl.question(question, (answer) => {
|
|
18
|
-
rl.close();
|
|
19
|
-
resolve(answer.trim());
|
|
20
|
-
});
|
|
21
|
-
});
|
|
22
|
-
}
|
|
12
|
+
import { UUID_RE, prompt } from '../lib/utils.js';
|
|
23
13
|
export function parseArgs(args) {
|
|
24
14
|
let hubId;
|
|
25
15
|
let autoConfirm = false;
|
|
@@ -37,9 +27,12 @@ export function parseArgs(args) {
|
|
|
37
27
|
export async function initCommand(args) {
|
|
38
28
|
const { hubId: directHubId, autoConfirm } = parseArgs(args);
|
|
39
29
|
// Warn if .wayai.yaml already exists
|
|
40
|
-
const existing = readRepoConfig();
|
|
30
|
+
const existing = readRepoConfig() ?? readPartialRepoConfig();
|
|
41
31
|
if (existing) {
|
|
42
|
-
|
|
32
|
+
const scopeLabel = existing.hub_id
|
|
33
|
+
? `${existing.hub_name || existing.hub_id} in ${existing.organization_name || existing.organization_id}`
|
|
34
|
+
: `${existing.project_name || existing.project_id} in ${existing.organization_name || existing.organization_id} (no hub)`;
|
|
35
|
+
console.log(`Current scope: ${scopeLabel}`);
|
|
43
36
|
if (!autoConfirm) {
|
|
44
37
|
const answer = await prompt('Overwrite? [y/N]: ');
|
|
45
38
|
if (answer.toLowerCase() !== 'y') {
|
|
@@ -74,7 +67,11 @@ export async function initCommand(args) {
|
|
|
74
67
|
console.warn(`Warning: failed to download scaffold files: ${err instanceof Error ? err.message : String(err)}`);
|
|
75
68
|
}
|
|
76
69
|
}
|
|
77
|
-
|
|
70
|
+
// Check if a hub was selected (full config) or just org+project (partial config)
|
|
71
|
+
const finalConfig = readRepoConfig();
|
|
72
|
+
if (finalConfig) {
|
|
73
|
+
console.log('Run `wayai pull` to fetch hub configuration.');
|
|
74
|
+
}
|
|
78
75
|
}
|
|
79
76
|
async function initDirect(client, hubId) {
|
|
80
77
|
if (!UUID_RE.test(hubId)) {
|
|
@@ -137,68 +134,84 @@ async function initInteractive(client) {
|
|
|
137
134
|
}
|
|
138
135
|
selectedOrg = organizations[orgIdx];
|
|
139
136
|
}
|
|
140
|
-
// Step 2: Fetch
|
|
141
|
-
console.log('Fetching
|
|
142
|
-
const {
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
if (previewHubs.length === 0) {
|
|
146
|
-
console.error('No preview hubs found. Create one in the WayAI platform first.');
|
|
137
|
+
// Step 2: Fetch projects directly (not derived from hubs — supports empty projects)
|
|
138
|
+
console.log('Fetching projects...');
|
|
139
|
+
const { data: projectList } = await client.listProjects(selectedOrg.id);
|
|
140
|
+
if (projectList.length === 0) {
|
|
141
|
+
console.error('No projects found. Create one with `wayai create-project --name "..."` first.');
|
|
147
142
|
process.exit(1);
|
|
148
143
|
}
|
|
149
|
-
// Group by project
|
|
150
|
-
const projectMap = new Map();
|
|
151
|
-
for (const hub of previewHubs) {
|
|
152
|
-
let project = projectMap.get(hub.project_id);
|
|
153
|
-
if (!project) {
|
|
154
|
-
project = { id: hub.project_id, name: hub.project_name, hubs: [] };
|
|
155
|
-
projectMap.set(hub.project_id, project);
|
|
156
|
-
}
|
|
157
|
-
project.hubs.push(hub);
|
|
158
|
-
}
|
|
159
|
-
const projects = Array.from(projectMap.values());
|
|
160
|
-
// Step 3: Pick project (skip if only one)
|
|
161
144
|
let selectedProject;
|
|
162
|
-
if (
|
|
163
|
-
selectedProject =
|
|
145
|
+
if (projectList.length === 1) {
|
|
146
|
+
selectedProject = { id: projectList[0].project_id, name: projectList[0].project_name };
|
|
164
147
|
console.log(`Project: ${selectedProject.name}`);
|
|
165
148
|
}
|
|
166
149
|
else {
|
|
167
150
|
console.log('\nProjects:');
|
|
168
|
-
for (let i = 0; i <
|
|
169
|
-
console.log(` ${i + 1}. ${
|
|
151
|
+
for (let i = 0; i < projectList.length; i++) {
|
|
152
|
+
console.log(` ${i + 1}. ${projectList[i].project_name}`);
|
|
170
153
|
}
|
|
171
|
-
const projAnswer = await prompt(`\nSelect project [1-${
|
|
154
|
+
const projAnswer = await prompt(`\nSelect project [1-${projectList.length}]: `);
|
|
172
155
|
const projIdx = parseInt(projAnswer, 10) - 1;
|
|
173
|
-
if (isNaN(projIdx) || projIdx < 0 || projIdx >=
|
|
156
|
+
if (isNaN(projIdx) || projIdx < 0 || projIdx >= projectList.length) {
|
|
174
157
|
console.error('Invalid selection.');
|
|
175
158
|
process.exit(1);
|
|
176
159
|
}
|
|
177
|
-
selectedProject =
|
|
160
|
+
selectedProject = { id: projectList[projIdx].project_id, name: projectList[projIdx].project_name };
|
|
161
|
+
}
|
|
162
|
+
// Step 3: Fetch hubs for the selected project
|
|
163
|
+
console.log('Fetching hubs...');
|
|
164
|
+
const { hubs } = await client.listHubs(selectedOrg.id, selectedProject.id);
|
|
165
|
+
const previewHubs = hubs.filter((h) => h.hub_environment === 'preview');
|
|
166
|
+
// Step 4: Pick hub (or skip to create later via push)
|
|
167
|
+
if (previewHubs.length === 0) {
|
|
168
|
+
// No hubs — write partial config (org + project only)
|
|
169
|
+
const configPath = writePartialRepoConfig({
|
|
170
|
+
organization_id: selectedOrg.id,
|
|
171
|
+
organization_name: selectedOrg.name,
|
|
172
|
+
project_id: selectedProject.id,
|
|
173
|
+
project_name: selectedProject.name,
|
|
174
|
+
});
|
|
175
|
+
console.log(`\nWrote ${configPath} (no hub selected)`);
|
|
176
|
+
console.log('Create hub files in workspace/<project>/<hub>/hub.yaml and run `wayai push` to create the hub.');
|
|
177
|
+
return;
|
|
178
178
|
}
|
|
179
|
-
// Step 4: Pick hub
|
|
180
|
-
const hubList = selectedProject.hubs;
|
|
181
179
|
let selectedHub;
|
|
182
|
-
if (
|
|
183
|
-
|
|
180
|
+
if (previewHubs.length === 1) {
|
|
181
|
+
// Auto-select single hub
|
|
182
|
+
selectedHub = previewHubs[0];
|
|
184
183
|
console.log(`Hub: ${selectedHub.hub_name}`);
|
|
185
184
|
}
|
|
186
185
|
else {
|
|
186
|
+
// Show hubs with option 0 to skip
|
|
187
187
|
console.log('\nHubs:');
|
|
188
|
-
|
|
189
|
-
|
|
188
|
+
console.log(' 0. (new hub — create via push later)');
|
|
189
|
+
for (let i = 0; i < previewHubs.length; i++) {
|
|
190
|
+
const h = previewHubs[i];
|
|
190
191
|
const label = h.preview_label ? ` (${h.preview_label})` : h.branch_name ? ` [${h.branch_name}]` : '';
|
|
191
192
|
console.log(` ${i + 1}. ${h.hub_name}${label}`);
|
|
192
193
|
}
|
|
193
|
-
const hubAnswer = await prompt(`\nSelect hub [
|
|
194
|
-
const hubIdx = parseInt(hubAnswer, 10)
|
|
195
|
-
if (isNaN(hubIdx) || hubIdx < 0 || hubIdx
|
|
194
|
+
const hubAnswer = await prompt(`\nSelect hub [0-${previewHubs.length}]: `);
|
|
195
|
+
const hubIdx = parseInt(hubAnswer, 10);
|
|
196
|
+
if (isNaN(hubIdx) || hubIdx < 0 || hubIdx > previewHubs.length) {
|
|
196
197
|
console.error('Invalid selection.');
|
|
197
198
|
process.exit(1);
|
|
198
199
|
}
|
|
199
|
-
|
|
200
|
+
if (hubIdx === 0) {
|
|
201
|
+
// Skip hub — write partial config
|
|
202
|
+
const configPath = writePartialRepoConfig({
|
|
203
|
+
organization_id: selectedOrg.id,
|
|
204
|
+
organization_name: selectedOrg.name,
|
|
205
|
+
project_id: selectedProject.id,
|
|
206
|
+
project_name: selectedProject.name,
|
|
207
|
+
});
|
|
208
|
+
console.log(`\nWrote ${configPath} (no hub selected)`);
|
|
209
|
+
console.log('Create hub files in workspace/<project>/<hub>/hub.yaml and run `wayai push` to create the hub.');
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
selectedHub = previewHubs[hubIdx - 1];
|
|
200
213
|
}
|
|
201
|
-
// Step 5: Write .wayai.yaml
|
|
214
|
+
// Step 5: Write .wayai.yaml with full config
|
|
202
215
|
const configPath = writeRepoConfig({
|
|
203
216
|
organization_id: selectedOrg.id,
|
|
204
217
|
organization_name: selectedOrg.name,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/push.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* wayai push [-y] — parse local files, diff remote, sync to preview
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* If .wayai.yaml has hub_id → pushes to the existing hub.
|
|
5
|
+
* If .wayai.yaml has only org_id + project_id → creates the hub first, then pushes.
|
|
5
6
|
*/
|
|
6
7
|
import { ApiClient } from '../lib/api-client.js';
|
|
7
8
|
/**
|