@codata-io/cli 0.3.2 → 0.4.1
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/src/cli.js +360 -5
- package/dist/src/cli.js.map +1 -1
- package/dist/src/commands/api.d.ts +5 -1
- package/dist/src/commands/api.d.ts.map +1 -1
- package/dist/src/commands/api.js +153 -29
- package/dist/src/commands/api.js.map +1 -1
- package/dist/src/commands/chat.d.ts +9 -0
- package/dist/src/commands/chat.d.ts.map +1 -0
- package/dist/src/commands/chat.js +123 -0
- package/dist/src/commands/chat.js.map +1 -0
- package/dist/src/commands/completion.d.ts +2 -0
- package/dist/src/commands/completion.d.ts.map +1 -0
- package/dist/src/commands/completion.js +107 -0
- package/dist/src/commands/completion.js.map +1 -0
- package/dist/src/commands/conversations.d.ts +13 -0
- package/dist/src/commands/conversations.d.ts.map +1 -0
- package/dist/src/commands/conversations.js +90 -0
- package/dist/src/commands/conversations.js.map +1 -0
- package/dist/src/commands/costs.d.ts +7 -0
- package/dist/src/commands/costs.d.ts.map +1 -0
- package/dist/src/commands/costs.js +43 -0
- package/dist/src/commands/costs.js.map +1 -0
- package/dist/src/commands/doctor.d.ts +2 -0
- package/dist/src/commands/doctor.d.ts.map +1 -0
- package/dist/src/commands/doctor.js +142 -0
- package/dist/src/commands/doctor.js.map +1 -0
- package/dist/src/commands/endpoints.d.ts +10 -0
- package/dist/src/commands/endpoints.d.ts.map +1 -0
- package/dist/src/commands/endpoints.js +129 -0
- package/dist/src/commands/endpoints.js.map +1 -0
- package/dist/src/commands/files.d.ts +11 -0
- package/dist/src/commands/files.d.ts.map +1 -0
- package/dist/src/commands/files.js +84 -0
- package/dist/src/commands/files.js.map +1 -0
- package/dist/src/commands/integrationKit.d.ts +6 -0
- package/dist/src/commands/integrationKit.d.ts.map +1 -0
- package/dist/src/commands/integrationKit.js +71 -0
- package/dist/src/commands/integrationKit.js.map +1 -0
- package/dist/src/commands/lifecycle.d.ts +24 -0
- package/dist/src/commands/lifecycle.d.ts.map +1 -0
- package/dist/src/commands/lifecycle.js +84 -0
- package/dist/src/commands/lifecycle.js.map +1 -0
- package/dist/src/commands/tokens.d.ts +17 -0
- package/dist/src/commands/tokens.d.ts.map +1 -0
- package/dist/src/commands/tokens.js +112 -0
- package/dist/src/commands/tokens.js.map +1 -0
- package/dist/src/commands/versions.d.ts +8 -0
- package/dist/src/commands/versions.d.ts.map +1 -0
- package/dist/src/commands/versions.js +61 -0
- package/dist/src/commands/versions.js.map +1 -0
- package/dist/src/commands/workspaces.d.ts +8 -0
- package/dist/src/commands/workspaces.d.ts.map +1 -1
- package/dist/src/commands/workspaces.js +44 -1
- package/dist/src/commands/workspaces.js.map +1 -1
- package/dist/src/config.d.ts +10 -0
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/config.js +71 -2
- package/dist/src/config.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"costs.d.ts","sourceRoot":"","sources":["../../../src/commands/costs.ts"],"names":[],"mappings":"AAWA,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAC1B,OAAO,CAAC,IAAI,CAAC,CAkBf;AAED,wBAAsB,qBAAqB,CACzC,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAC1B,OAAO,CAAC,IAAI,CAAC,CAiBf"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
2
|
+
// Codata CLI — Workspace Costs (jwtAuth)
|
|
3
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
4
|
+
//
|
|
5
|
+
// codata costs <ws> # GET /:id/costs
|
|
6
|
+
// codata costs aggregate # GET /costs/aggregate (all workspaces)
|
|
7
|
+
//
|
|
8
|
+
import { createCliClient } from '../config.js';
|
|
9
|
+
import { heading, info, error as printError, printJson } from '../output.js';
|
|
10
|
+
export async function costsShowCommand(workspace, options) {
|
|
11
|
+
try {
|
|
12
|
+
const client = createCliClient();
|
|
13
|
+
const ws = await client.findWorkspace(workspace);
|
|
14
|
+
const data = await client.request('GET', `/api/workspaces/${ws.id}/costs`);
|
|
15
|
+
if (options.json) {
|
|
16
|
+
printJson(data);
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
heading(`Costs for ${ws.name ?? ws.id}`);
|
|
20
|
+
info(JSON.stringify(data, null, 2));
|
|
21
|
+
}
|
|
22
|
+
catch (err) {
|
|
23
|
+
printError(err.message ?? String(err));
|
|
24
|
+
process.exit(1);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export async function costsAggregateCommand(options) {
|
|
28
|
+
try {
|
|
29
|
+
const client = createCliClient();
|
|
30
|
+
const data = await client.request('GET', `/api/workspaces/costs/aggregate`);
|
|
31
|
+
if (options.json) {
|
|
32
|
+
printJson(data);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
heading('Aggregate costs (all workspaces)');
|
|
36
|
+
info(JSON.stringify(data, null, 2));
|
|
37
|
+
}
|
|
38
|
+
catch (err) {
|
|
39
|
+
printError(err.message ?? String(err));
|
|
40
|
+
process.exit(1);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=costs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"costs.js","sourceRoot":"","sources":["../../../src/commands/costs.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,yCAAyC;AACzC,+EAA+E;AAC/E,EAAE;AACF,yDAAyD;AACzD,gFAAgF;AAChF,EAAE;AAEF,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,IAAI,UAAU,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE7E,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,SAAiB,EACjB,OAA2B;IAE3B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;QACjC,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAC/B,KAAK,EACL,mBAAmB,EAAE,CAAC,EAAE,QAAQ,CACjC,CAAC;QACF,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,SAAS,CAAC,IAAI,CAAC,CAAC;YAChB,OAAO;QACT,CAAC;QACD,OAAO,CAAC,aAAa,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,UAAU,CAAC,GAAG,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAA2B;IAE3B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAC/B,KAAK,EACL,iCAAiC,CAClC,CAAC;QACF,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,SAAS,CAAC,IAAI,CAAC,CAAC;YAChB,OAAO;QACT,CAAC;QACD,OAAO,CAAC,kCAAkC,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,UAAU,CAAC,GAAG,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/commands/doctor.ts"],"names":[],"mappings":"AAmBA,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAmGnD"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
2
|
+
// Codata CLI — Doctor (Diagnose Common Issues)
|
|
3
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
4
|
+
//
|
|
5
|
+
// Verifies the local CLI install can talk to the control plane and Gater,
|
|
6
|
+
// and reports auth state. Useful for triaging "fetch failed" / "401" reports.
|
|
7
|
+
//
|
|
8
|
+
// Usage: codata doctor
|
|
9
|
+
//
|
|
10
|
+
import { getConfig, getStoredKeys, isAuthenticated, createCliClient } from '../config.js';
|
|
11
|
+
import { heading, success, error as printError, info, warn, printTable } from '../output.js';
|
|
12
|
+
export async function doctorCommand() {
|
|
13
|
+
heading('Codata CLI Doctor');
|
|
14
|
+
const cfg = getConfig();
|
|
15
|
+
const checks = [];
|
|
16
|
+
// 1. Config
|
|
17
|
+
checks.push({
|
|
18
|
+
name: 'Config file',
|
|
19
|
+
status: 'ok',
|
|
20
|
+
detail: `serverUrl=${cfg.serverUrl}${cfg.gateUrl ? `, gateUrl=${cfg.gateUrl}` : ' (gateUrl derived)'}`,
|
|
21
|
+
});
|
|
22
|
+
// 2. Auth state
|
|
23
|
+
const tokens = isAuthenticated();
|
|
24
|
+
const stored = Object.keys(getStoredKeys());
|
|
25
|
+
if (tokens) {
|
|
26
|
+
checks.push({ name: 'CLI login', status: 'ok', detail: 'authenticated' });
|
|
27
|
+
}
|
|
28
|
+
else if (stored.length > 0) {
|
|
29
|
+
checks.push({
|
|
30
|
+
name: 'CLI login',
|
|
31
|
+
status: 'warn',
|
|
32
|
+
detail: `not logged in, but ${stored.length} workspace key(s) stored locally`,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
checks.push({
|
|
37
|
+
name: 'CLI login',
|
|
38
|
+
status: 'warn',
|
|
39
|
+
detail: "not logged in (run `codata login`) and no stored workspace keys",
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
// 3. Control plane reachability
|
|
43
|
+
const controlPlane = await pingUrl(cfg.serverUrl + '/api/health', 5000);
|
|
44
|
+
checks.push({
|
|
45
|
+
name: 'Control plane',
|
|
46
|
+
status: controlPlane.ok ? 'ok' : 'fail',
|
|
47
|
+
detail: controlPlane.ok
|
|
48
|
+
? `${cfg.serverUrl} → ${controlPlane.status} (${controlPlane.ms}ms)`
|
|
49
|
+
: `${cfg.serverUrl} → ${controlPlane.error}`,
|
|
50
|
+
});
|
|
51
|
+
// 4. Derived / configured Gater reachability
|
|
52
|
+
const gateUrl = cfg.gateUrl ?? deriveGateUrl(cfg.serverUrl);
|
|
53
|
+
if (gateUrl) {
|
|
54
|
+
const gate = await pingUrl(gateUrl + '/health', 5000);
|
|
55
|
+
checks.push({
|
|
56
|
+
name: 'Gater',
|
|
57
|
+
status: gate.ok || gate.status === 404 ? 'ok' : 'fail',
|
|
58
|
+
detail: gate.ok || gate.status === 404
|
|
59
|
+
? `${gateUrl} → ${gate.status} (${gate.ms}ms)`
|
|
60
|
+
: `${gateUrl} → ${gate.error ?? gate.status}`,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
checks.push({
|
|
65
|
+
name: 'Gater',
|
|
66
|
+
status: 'warn',
|
|
67
|
+
detail: 'cannot derive Gater URL from serverUrl; set gateUrl in ~/.codata/config.json',
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
// 5. Workspaces accessible (only if authenticated or has any stored key)
|
|
71
|
+
if (tokens || stored.length > 0) {
|
|
72
|
+
try {
|
|
73
|
+
const client = createCliClient();
|
|
74
|
+
const wss = await client.listWorkspaces();
|
|
75
|
+
checks.push({
|
|
76
|
+
name: 'Workspaces accessible',
|
|
77
|
+
status: 'ok',
|
|
78
|
+
detail: `${wss.length} workspace(s) visible to current auth`,
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
catch (err) {
|
|
82
|
+
checks.push({
|
|
83
|
+
name: 'Workspaces accessible',
|
|
84
|
+
status: 'fail',
|
|
85
|
+
detail: err.message ?? String(err),
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// Render
|
|
90
|
+
console.log('');
|
|
91
|
+
printTable(['CHECK', 'STATUS', 'DETAIL'], checks.map((c) => [c.name, badge(c.status), c.detail]));
|
|
92
|
+
const failed = checks.filter((c) => c.status === 'fail');
|
|
93
|
+
const warned = checks.filter((c) => c.status === 'warn');
|
|
94
|
+
console.log('');
|
|
95
|
+
if (failed.length === 0 && warned.length === 0) {
|
|
96
|
+
success('All checks passed.');
|
|
97
|
+
}
|
|
98
|
+
else if (failed.length === 0) {
|
|
99
|
+
warn(`${warned.length} warning(s).`);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
printError(`${failed.length} check(s) failed.`);
|
|
103
|
+
process.exit(1);
|
|
104
|
+
}
|
|
105
|
+
info('');
|
|
106
|
+
}
|
|
107
|
+
function badge(s) {
|
|
108
|
+
if (s === 'ok')
|
|
109
|
+
return '✓ ok';
|
|
110
|
+
if (s === 'warn')
|
|
111
|
+
return '⚠ warn';
|
|
112
|
+
return '✗ fail';
|
|
113
|
+
}
|
|
114
|
+
function deriveGateUrl(baseUrl) {
|
|
115
|
+
try {
|
|
116
|
+
const u = new URL(baseUrl);
|
|
117
|
+
if (u.hostname.startsWith('www.')) {
|
|
118
|
+
u.hostname = 'api.' + u.hostname.slice(4);
|
|
119
|
+
return `${u.protocol}//${u.host}`;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
/* ignore */
|
|
124
|
+
}
|
|
125
|
+
return null;
|
|
126
|
+
}
|
|
127
|
+
async function pingUrl(url, timeoutMs) {
|
|
128
|
+
const start = Date.now();
|
|
129
|
+
const controller = new AbortController();
|
|
130
|
+
const t = setTimeout(() => controller.abort(), timeoutMs);
|
|
131
|
+
try {
|
|
132
|
+
const res = await fetch(url, { method: 'GET', signal: controller.signal });
|
|
133
|
+
return { ok: res.ok, status: res.status, ms: Date.now() - start };
|
|
134
|
+
}
|
|
135
|
+
catch (err) {
|
|
136
|
+
return { ok: false, error: err?.message ?? String(err) };
|
|
137
|
+
}
|
|
138
|
+
finally {
|
|
139
|
+
clearTimeout(t);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare function endpointsListCommand(workspace: string, options: {
|
|
2
|
+
json?: boolean;
|
|
3
|
+
key?: string;
|
|
4
|
+
}): Promise<void>;
|
|
5
|
+
export declare function endpointsShowCommand(workspace: string, selector: string, options: {
|
|
6
|
+
method?: string;
|
|
7
|
+
json?: boolean;
|
|
8
|
+
key?: string;
|
|
9
|
+
}): Promise<void>;
|
|
10
|
+
//# sourceMappingURL=endpoints.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"endpoints.d.ts","sourceRoot":"","sources":["../../../src/commands/endpoints.ts"],"names":[],"mappings":"AAuBA,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GACxC,OAAO,CAAC,IAAI,CAAC,CAoCf;AAED,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GACzD,OAAO,CAAC,IAAI,CAAC,CAuDf"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
2
|
+
// Codata CLI — Endpoints (Detailed Spec Inspection)
|
|
3
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
4
|
+
//
|
|
5
|
+
// `endpoints list <workspace>` → table of all endpoints
|
|
6
|
+
// `endpoints show <workspace> <op-or-path>` → full detail for one endpoint
|
|
7
|
+
//
|
|
8
|
+
// Sources the workspace spec (same data the `api` listing uses), so works
|
|
9
|
+
// against any backend that exposes the workspace spec via combinedAuth.
|
|
10
|
+
//
|
|
11
|
+
import { createCliClient } from '../config.js';
|
|
12
|
+
import { heading, printTable, printJson, info, warn, error as printError, methodColor, } from '../output.js';
|
|
13
|
+
export async function endpointsListCommand(workspace, options) {
|
|
14
|
+
try {
|
|
15
|
+
const client = createCliClient({ apiKey: options.key });
|
|
16
|
+
const ws = await client.findWorkspace(workspace);
|
|
17
|
+
const authedClient = options.key ? client : createCliClient({ workspaceId: ws.id });
|
|
18
|
+
const wsClient = authedClient.workspace(ws.id);
|
|
19
|
+
const spec = await wsClient.getSpec();
|
|
20
|
+
const endpoints = spec?.endpoints ?? [];
|
|
21
|
+
if (options.json) {
|
|
22
|
+
printJson(endpoints);
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
heading(`Endpoints for ${ws.name ?? ws.id} (${endpoints.length})`);
|
|
26
|
+
if (endpoints.length === 0) {
|
|
27
|
+
warn('No endpoints. Has this workspace been generated yet?');
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
printTable(['METHOD', 'PATH', 'OPERATION ID', 'SUMMARY'], endpoints
|
|
31
|
+
.slice()
|
|
32
|
+
.sort((a, b) => (a.path ?? '').localeCompare(b.path ?? ''))
|
|
33
|
+
.map((e) => [
|
|
34
|
+
methodColor((e.method ?? '').toUpperCase()),
|
|
35
|
+
e.path ?? '',
|
|
36
|
+
e.operationId ?? '',
|
|
37
|
+
e.summary ?? e.description ?? '',
|
|
38
|
+
]));
|
|
39
|
+
}
|
|
40
|
+
catch (err) {
|
|
41
|
+
printError(err.message ?? String(err));
|
|
42
|
+
process.exit(1);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
export async function endpointsShowCommand(workspace, selector, options) {
|
|
46
|
+
try {
|
|
47
|
+
const client = createCliClient({ apiKey: options.key });
|
|
48
|
+
const ws = await client.findWorkspace(workspace);
|
|
49
|
+
const authedClient = options.key ? client : createCliClient({ workspaceId: ws.id });
|
|
50
|
+
const wsClient = authedClient.workspace(ws.id);
|
|
51
|
+
const spec = await wsClient.getSpec();
|
|
52
|
+
const endpoints = spec?.endpoints ?? [];
|
|
53
|
+
const match = findEndpoint(endpoints, selector, options.method);
|
|
54
|
+
if (!match) {
|
|
55
|
+
printError(`No endpoint matched "${selector}"`);
|
|
56
|
+
info('List endpoints with: codata endpoints list ' + workspace);
|
|
57
|
+
process.exit(1);
|
|
58
|
+
}
|
|
59
|
+
if (options.json) {
|
|
60
|
+
printJson(match);
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
heading(`${(match.method ?? '').toUpperCase()} ${match.path}`);
|
|
64
|
+
const rows = [];
|
|
65
|
+
if (match.operationId)
|
|
66
|
+
rows.push(['Operation ID', match.operationId]);
|
|
67
|
+
if (match.summary)
|
|
68
|
+
rows.push(['Summary', match.summary]);
|
|
69
|
+
if (match.description)
|
|
70
|
+
rows.push(['Description', match.description]);
|
|
71
|
+
if (match.flowId)
|
|
72
|
+
rows.push(['Flow ID', match.flowId]);
|
|
73
|
+
if (match.parameters?.length) {
|
|
74
|
+
rows.push([
|
|
75
|
+
'Parameters',
|
|
76
|
+
match.parameters
|
|
77
|
+
.map((p) => `${p.in}:${p.name}${p.required ? '*' : ''}`)
|
|
78
|
+
.join(', '),
|
|
79
|
+
]);
|
|
80
|
+
}
|
|
81
|
+
if (match.requestBody)
|
|
82
|
+
rows.push(['Request body', 'yes']);
|
|
83
|
+
printTable(['FIELD', 'VALUE'], rows);
|
|
84
|
+
if (match.parameters?.length) {
|
|
85
|
+
console.log('');
|
|
86
|
+
heading('Parameters');
|
|
87
|
+
printTable(['IN', 'NAME', 'REQUIRED', 'TYPE'], match.parameters.map((p) => [
|
|
88
|
+
String(p.in ?? ''),
|
|
89
|
+
String(p.name ?? ''),
|
|
90
|
+
p.required ? 'yes' : 'no',
|
|
91
|
+
String(p.schema?.type ?? p.type ?? ''),
|
|
92
|
+
]));
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
catch (err) {
|
|
96
|
+
printError(err.message ?? String(err));
|
|
97
|
+
process.exit(1);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
function findEndpoint(endpoints, selector, methodHint) {
|
|
101
|
+
const wantMethod = methodHint?.toUpperCase();
|
|
102
|
+
// 1. Exact operationId match
|
|
103
|
+
const byOp = endpoints.find((e) => e.operationId === selector);
|
|
104
|
+
if (byOp)
|
|
105
|
+
return byOp;
|
|
106
|
+
// 2. METHOD /path form (e.g. "GET /habits")
|
|
107
|
+
const m = /^([A-Za-z]+)\s+(.+)$/.exec(selector);
|
|
108
|
+
if (m) {
|
|
109
|
+
const [, method, p] = m;
|
|
110
|
+
const found = endpoints.find((e) => (e.method ?? '').toUpperCase() === method.toUpperCase() &&
|
|
111
|
+
e.path === p);
|
|
112
|
+
if (found)
|
|
113
|
+
return found;
|
|
114
|
+
}
|
|
115
|
+
// 3. Path match (with optional --method)
|
|
116
|
+
const matches = endpoints.filter((e) => e.path === selector);
|
|
117
|
+
if (matches.length === 1)
|
|
118
|
+
return matches[0];
|
|
119
|
+
if (matches.length > 1) {
|
|
120
|
+
if (!wantMethod) {
|
|
121
|
+
warn(`Multiple endpoints match path "${selector}". Disambiguate with --method ` +
|
|
122
|
+
`(${matches.map((e) => (e.method ?? '').toUpperCase()).join(', ')}).`);
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
return (matches.find((e) => (e.method ?? '').toUpperCase() === wantMethod) ?? null);
|
|
126
|
+
}
|
|
127
|
+
return null;
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=endpoints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"endpoints.js","sourceRoot":"","sources":["../../../src/commands/endpoints.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare function filesListCommand(workspace: string, options: {
|
|
2
|
+
key?: string;
|
|
3
|
+
branch?: string;
|
|
4
|
+
json?: boolean;
|
|
5
|
+
}): Promise<void>;
|
|
6
|
+
export declare function filesGetCommand(workspace: string, filePath: string, options: {
|
|
7
|
+
key?: string;
|
|
8
|
+
branch?: string;
|
|
9
|
+
out?: string;
|
|
10
|
+
}): Promise<void>;
|
|
11
|
+
//# sourceMappingURL=files.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../../src/commands/files.ts"],"names":[],"mappings":"AA6BA,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GACzD,OAAO,CAAC,IAAI,CAAC,CAkCf;AAED,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GACvD,OAAO,CAAC,IAAI,CAAC,CA4Cf"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
2
|
+
// Codata CLI — Handoff Files (list / get)
|
|
3
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
4
|
+
//
|
|
5
|
+
// codata files list <ws> # combinedAuth
|
|
6
|
+
// codata files get <ws> <path> [--out f]
|
|
7
|
+
//
|
|
8
|
+
import fs from 'fs';
|
|
9
|
+
import path from 'path';
|
|
10
|
+
import { createCliClient } from '../config.js';
|
|
11
|
+
import { heading, info, success, error as printError, printJson } from '../output.js';
|
|
12
|
+
export async function filesListCommand(workspace, options) {
|
|
13
|
+
try {
|
|
14
|
+
const client = createCliClient({ apiKey: options.key });
|
|
15
|
+
const ws = await client.findWorkspace(workspace);
|
|
16
|
+
const c = options.key ? client : createCliClient({ workspaceId: ws.id });
|
|
17
|
+
const data = await c.request('GET', `/api/workspaces/${ws.id}/handoff/files`, { query: options.branch ? { branch: options.branch } : undefined });
|
|
18
|
+
if (options.json) {
|
|
19
|
+
printJson(data);
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
heading(`Handoff files for ${ws.name ?? ws.id} (branch ${data.branchName})`);
|
|
23
|
+
if (!data.files?.length) {
|
|
24
|
+
info('(no files — workspace may not be generated yet)');
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
info(' PATH KIND ACTION SIZE');
|
|
28
|
+
for (const f of data.files) {
|
|
29
|
+
const p = (f.path ?? '').padEnd(42);
|
|
30
|
+
const kind = (f.kind ?? '?').padEnd(13);
|
|
31
|
+
const action = (f.writeAction ?? 'create').padEnd(19);
|
|
32
|
+
const size = String(f.sizeBytes ?? '?');
|
|
33
|
+
console.log(` ${p} ${kind} ${action} ${size}`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
catch (err) {
|
|
37
|
+
printError(err.message ?? String(err));
|
|
38
|
+
process.exit(1);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
export async function filesGetCommand(workspace, filePath, options) {
|
|
42
|
+
try {
|
|
43
|
+
const client = createCliClient({ apiKey: options.key });
|
|
44
|
+
const ws = await client.findWorkspace(workspace);
|
|
45
|
+
const c = options.key ? client : createCliClient({ workspaceId: ws.id });
|
|
46
|
+
// Backend uses URL-encoded filePath; encodeURIComponent it before joining.
|
|
47
|
+
const encoded = encodeURIComponent(filePath);
|
|
48
|
+
// The download endpoint returns raw file content with a
|
|
49
|
+
// Content-Disposition attachment header (NOT an envelope). The SDK
|
|
50
|
+
// returns the parsed body as the data; for non-JSON content types it
|
|
51
|
+
// returns the raw text string.
|
|
52
|
+
const body = await c.request('GET', `/api/workspaces/${ws.id}/handoff/files/${encoded}`, { query: options.branch ? { branch: options.branch } : undefined });
|
|
53
|
+
const text = typeof body === 'string' ? body : JSON.stringify(body, null, 2);
|
|
54
|
+
if (options.out) {
|
|
55
|
+
// Default behaviour: respect parent directories. If --out is a dir, write
|
|
56
|
+
// using the original basename; otherwise treat it as a file path.
|
|
57
|
+
let target = options.out;
|
|
58
|
+
try {
|
|
59
|
+
const st = fs.statSync(target);
|
|
60
|
+
if (st.isDirectory()) {
|
|
61
|
+
target = path.join(target, path.basename(filePath));
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
// not an existing path — treat options.out as a file path
|
|
66
|
+
}
|
|
67
|
+
const dir = path.dirname(target);
|
|
68
|
+
if (dir && dir !== '.')
|
|
69
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
70
|
+
fs.writeFileSync(target, text);
|
|
71
|
+
success(`Wrote ${target}`);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
process.stdout.write(text);
|
|
75
|
+
if (!text.endsWith('\n'))
|
|
76
|
+
process.stdout.write('\n');
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
catch (err) {
|
|
80
|
+
printError(err.message ?? String(err));
|
|
81
|
+
process.exit(1);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../../src/commands/files.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integrationKit.d.ts","sourceRoot":"","sources":["../../../src/commands/integrationKit.ts"],"names":[],"mappings":"AAsCA,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GACtD,OAAO,CAAC,IAAI,CAAC,CAmEf"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
2
|
+
// Codata CLI — Integration Kit
|
|
3
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
4
|
+
//
|
|
5
|
+
// Fetches the workspace integration kit (generated SDK / config files) and
|
|
6
|
+
// either prints the file manifest or writes every file to disk.
|
|
7
|
+
//
|
|
8
|
+
// Backend route (combinedAuth → wsk_* keys accepted):
|
|
9
|
+
// GET /api/workspaces/:id/integration-kit
|
|
10
|
+
//
|
|
11
|
+
import fs from 'fs';
|
|
12
|
+
import path from 'path';
|
|
13
|
+
import { createCliClient } from '../config.js';
|
|
14
|
+
import { heading, printTable, printJson, success, info, warn, error as printError, } from '../output.js';
|
|
15
|
+
export async function integrationKitCommand(workspace, options) {
|
|
16
|
+
try {
|
|
17
|
+
const client = createCliClient({ apiKey: options.key });
|
|
18
|
+
const ws = await client.findWorkspace(workspace);
|
|
19
|
+
const authedClient = options.key ? client : createCliClient({ workspaceId: ws.id });
|
|
20
|
+
const kit = await authedClient.request('GET', `/api/workspaces/${ws.id}/integration-kit`);
|
|
21
|
+
if (options.json) {
|
|
22
|
+
printJson(kit);
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
const files = kit.files ?? [];
|
|
26
|
+
const manifest = kit.fileManifest ??
|
|
27
|
+
files.map((f) => ({ path: f.path, writeAction: f.writeAction ?? 'create' }));
|
|
28
|
+
if (!options.out) {
|
|
29
|
+
heading(`Integration kit for ${ws.name ?? ws.id}`);
|
|
30
|
+
if (manifest.length === 0) {
|
|
31
|
+
warn('No files in this integration kit.');
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
printTable(['PATH', 'ACTION'], manifest.map((m) => [m.path, m.writeAction ?? 'create']));
|
|
35
|
+
console.log('');
|
|
36
|
+
info(`Write the kit to disk:`);
|
|
37
|
+
info(` codata integration-kit ${workspace} --out ./`);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
// ── Write mode ──────────────────────────────────────────────────────
|
|
41
|
+
if (files.length === 0) {
|
|
42
|
+
warn('Integration kit has no file contents to write.');
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const root = path.resolve(options.out);
|
|
46
|
+
let created = 0;
|
|
47
|
+
let appended = 0;
|
|
48
|
+
for (const f of files) {
|
|
49
|
+
if (!f.path || f.content === undefined)
|
|
50
|
+
continue;
|
|
51
|
+
const target = path.join(root, f.path);
|
|
52
|
+
fs.mkdirSync(path.dirname(target), { recursive: true });
|
|
53
|
+
if (f.writeAction === 'append_if_exists' && fs.existsSync(target)) {
|
|
54
|
+
fs.appendFileSync(target, f.content);
|
|
55
|
+
appended++;
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
fs.writeFileSync(target, f.content);
|
|
59
|
+
created++;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
success(`Wrote ${created} file(s)${appended ? `, appended to ${appended}` : ''} under ${root}`);
|
|
63
|
+
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
printError(err.message ?? String(err));
|
|
66
|
+
process.exit(1);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
// Suppress unused import warning when CodataClient is only used for typing
|
|
70
|
+
void null;
|
|
71
|
+
//# sourceMappingURL=integrationKit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integrationKit.js","sourceRoot":"","sources":["../../../src/commands/integrationKit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export declare function generateCommand(workspace: string, options: {
|
|
2
|
+
branch?: string;
|
|
3
|
+
json?: boolean;
|
|
4
|
+
wait?: boolean;
|
|
5
|
+
timeout?: string;
|
|
6
|
+
}): Promise<void>;
|
|
7
|
+
export declare function activateCommand(workspace: string, options: {
|
|
8
|
+
branch?: string;
|
|
9
|
+
json?: boolean;
|
|
10
|
+
}): Promise<void>;
|
|
11
|
+
export declare function deactivateCommand(workspace: string, options: {
|
|
12
|
+
branch?: string;
|
|
13
|
+
json?: boolean;
|
|
14
|
+
}): Promise<void>;
|
|
15
|
+
export declare function rollbackCommand(workspace: string, version: string, options: {
|
|
16
|
+
branch?: string;
|
|
17
|
+
json?: boolean;
|
|
18
|
+
}): Promise<void>;
|
|
19
|
+
export declare function discardChangesCommand(workspace: string, options: {
|
|
20
|
+
branch?: string;
|
|
21
|
+
json?: boolean;
|
|
22
|
+
force?: boolean;
|
|
23
|
+
}): Promise<void>;
|
|
24
|
+
//# sourceMappingURL=lifecycle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../../src/commands/lifecycle.ts"],"names":[],"mappings":"AAkBA,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7E,OAAO,CAAC,IAAI,CAAC,CAOf;AAED,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAC3C,OAAO,CAAC,IAAI,CAAC,CAOf;AAED,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAC3C,OAAO,CAAC,IAAI,CAAC,CAOf;AAED,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAC3C,OAAO,CAAC,IAAI,CAAC,CAYf;AAED,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5D,OAAO,CAAC,IAAI,CAAC,CAWf"}
|