@elaraai/e3-cli 0.0.2-beta.12 → 0.0.2-beta.13
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/README.md +21 -9
- package/dist/src/cli.js +29 -14
- package/dist/src/cli.js.map +1 -1
- package/dist/src/commands/auth.d.ts +21 -0
- package/dist/src/commands/auth.d.ts.map +1 -0
- package/dist/src/commands/auth.js +185 -0
- package/dist/src/commands/auth.js.map +1 -0
- package/dist/src/commands/get.d.ts.map +1 -1
- package/dist/src/commands/get.js +32 -14
- package/dist/src/commands/get.js.map +1 -1
- package/dist/src/commands/list.d.ts.map +1 -1
- package/dist/src/commands/list.js +47 -14
- package/dist/src/commands/list.js.map +1 -1
- package/dist/src/commands/logs.d.ts.map +1 -1
- package/dist/src/commands/logs.js +126 -54
- package/dist/src/commands/logs.js.map +1 -1
- package/dist/src/commands/package.d.ts.map +1 -1
- package/dist/src/commands/package.js +55 -18
- package/dist/src/commands/package.js.map +1 -1
- package/dist/src/commands/repo.d.ts +29 -0
- package/dist/src/commands/repo.d.ts.map +1 -0
- package/dist/src/commands/repo.js +231 -0
- package/dist/src/commands/repo.js.map +1 -0
- package/dist/src/commands/run.d.ts.map +1 -1
- package/dist/src/commands/run.js +4 -3
- package/dist/src/commands/run.js.map +1 -1
- package/dist/src/commands/set.d.ts.map +1 -1
- package/dist/src/commands/set.js +16 -5
- package/dist/src/commands/set.js.map +1 -1
- package/dist/src/commands/start.d.ts.map +1 -1
- package/dist/src/commands/start.js +166 -47
- package/dist/src/commands/start.js.map +1 -1
- package/dist/src/commands/tree.d.ts.map +1 -1
- package/dist/src/commands/tree.js +110 -16
- package/dist/src/commands/tree.js.map +1 -1
- package/dist/src/commands/watch.d.ts.map +1 -1
- package/dist/src/commands/watch.js +8 -6
- package/dist/src/commands/watch.js.map +1 -1
- package/dist/src/commands/workspace.d.ts +4 -0
- package/dist/src/commands/workspace.d.ts.map +1 -1
- package/dist/src/commands/workspace.js +269 -29
- package/dist/src/commands/workspace.js.map +1 -1
- package/dist/src/credentials.d.ts +123 -0
- package/dist/src/credentials.d.ts.map +1 -0
- package/dist/src/credentials.js +213 -0
- package/dist/src/credentials.js.map +1 -0
- package/dist/src/utils.d.ts +48 -0
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/src/utils.js +58 -0
- package/dist/src/utils.js.map +1 -1
- package/package.json +6 -5
- package/dist/src/commands/gc.d.ts +0 -12
- package/dist/src/commands/gc.d.ts.map +0 -1
- package/dist/src/commands/gc.js +0 -44
- package/dist/src/commands/gc.js.map +0 -1
- package/dist/src/commands/init.d.ts +0 -9
- package/dist/src/commands/init.d.ts.map +0 -1
- package/dist/src/commands/init.js +0 -33
- package/dist/src/commands/init.js.map +0 -1
- package/dist/src/commands/status.d.ts +0 -9
- package/dist/src/commands/status.d.ts.map +0 -1
- package/dist/src/commands/status.js +0 -157
- package/dist/src/commands/status.js.map +0 -1
|
@@ -5,16 +5,24 @@
|
|
|
5
5
|
/**
|
|
6
6
|
* e3 workspace commands - Workspace management
|
|
7
7
|
*/
|
|
8
|
-
import { workspaceCreate, workspaceDeploy, workspaceExport, workspaceList, workspaceRemove, workspaceGetState, WorkspaceLockError, } from '@elaraai/e3-core';
|
|
9
|
-
import {
|
|
8
|
+
import { workspaceCreate, workspaceDeploy, workspaceExport, workspaceList, workspaceRemove, workspaceGetState, workspaceStatus, WorkspaceLockError, LocalStorage, } from '@elaraai/e3-core';
|
|
9
|
+
import { workspaceCreate as workspaceCreateRemote, workspaceDeploy as workspaceDeployRemote, workspaceExport as workspaceExportRemote, workspaceList as workspaceListRemote, workspaceRemove as workspaceRemoveRemote, workspaceStatus as workspaceStatusRemote, } from '@elaraai/e3-api-client';
|
|
10
|
+
import { writeFileSync } from 'node:fs';
|
|
11
|
+
import { parseRepoLocation, parsePackageSpec, formatError, exitError } from '../utils.js';
|
|
10
12
|
export const workspaceCommand = {
|
|
11
13
|
/**
|
|
12
14
|
* Create an empty workspace.
|
|
13
15
|
*/
|
|
14
16
|
async create(repoArg, name) {
|
|
15
17
|
try {
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
+
const location = await parseRepoLocation(repoArg);
|
|
19
|
+
if (location.type === 'local') {
|
|
20
|
+
const storage = new LocalStorage();
|
|
21
|
+
await workspaceCreate(storage, location.path, name);
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
await workspaceCreateRemote(location.baseUrl, location.repo, name, { token: location.token });
|
|
25
|
+
}
|
|
18
26
|
console.log(`Created workspace: ${name}`);
|
|
19
27
|
console.log('Deploy a package with: e3 workspace deploy <repo> <ws> <pkg>[@<ver>]');
|
|
20
28
|
}
|
|
@@ -27,9 +35,17 @@ export const workspaceCommand = {
|
|
|
27
35
|
*/
|
|
28
36
|
async deploy(repoArg, ws, pkgSpec) {
|
|
29
37
|
try {
|
|
30
|
-
const
|
|
38
|
+
const location = await parseRepoLocation(repoArg);
|
|
31
39
|
const { name, version } = parsePackageSpec(pkgSpec);
|
|
32
|
-
|
|
40
|
+
if (location.type === 'local') {
|
|
41
|
+
const storage = new LocalStorage();
|
|
42
|
+
await workspaceDeploy(storage, location.path, ws, name, version);
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
// Remote API accepts packageRef string (name@version)
|
|
46
|
+
const packageRef = version === 'latest' ? name : `${name}@${version}`;
|
|
47
|
+
await workspaceDeployRemote(location.baseUrl, location.repo, ws, packageRef, { token: location.token });
|
|
48
|
+
}
|
|
33
49
|
console.log(`Deployed ${name}@${version} to workspace: ${ws}`);
|
|
34
50
|
}
|
|
35
51
|
catch (err) {
|
|
@@ -46,12 +62,27 @@ export const workspaceCommand = {
|
|
|
46
62
|
*/
|
|
47
63
|
async export(repoArg, ws, zipPath, options) {
|
|
48
64
|
try {
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
65
|
+
const location = await parseRepoLocation(repoArg);
|
|
66
|
+
if (location.type === 'local') {
|
|
67
|
+
const storage = new LocalStorage();
|
|
68
|
+
const result = await workspaceExport(storage, location.path, ws, zipPath, options.name, options.version);
|
|
69
|
+
console.log(`Exported workspace ${ws} as ${result.name}@${result.version}`);
|
|
70
|
+
console.log(` Output: ${zipPath}`);
|
|
71
|
+
console.log(` Package hash: ${result.packageHash.slice(0, 12)}...`);
|
|
72
|
+
console.log(` Objects: ${result.objectCount}`);
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
// Remote export - fetch zip bytes and write to local file
|
|
76
|
+
// Note: Remote export doesn't support custom name/version options
|
|
77
|
+
if (options.name || options.version) {
|
|
78
|
+
console.warn('Warning: --name and --version options are not supported for remote export');
|
|
79
|
+
}
|
|
80
|
+
const zipBytes = await workspaceExportRemote(location.baseUrl, location.repo, ws, { token: location.token });
|
|
81
|
+
writeFileSync(zipPath, zipBytes);
|
|
82
|
+
console.log(`Exported workspace ${ws}`);
|
|
83
|
+
console.log(` Output: ${zipPath}`);
|
|
84
|
+
console.log(` Size: ${zipBytes.length} bytes`);
|
|
85
|
+
}
|
|
55
86
|
}
|
|
56
87
|
catch (err) {
|
|
57
88
|
exitError(formatError(err));
|
|
@@ -62,20 +93,41 @@ export const workspaceCommand = {
|
|
|
62
93
|
*/
|
|
63
94
|
async list(repoArg) {
|
|
64
95
|
try {
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
96
|
+
const location = await parseRepoLocation(repoArg);
|
|
97
|
+
if (location.type === 'local') {
|
|
98
|
+
const storage = new LocalStorage();
|
|
99
|
+
const workspaces = await workspaceList(storage, location.path);
|
|
100
|
+
if (workspaces.length === 0) {
|
|
101
|
+
console.log('No workspaces');
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
console.log('Workspaces:');
|
|
105
|
+
for (const ws of workspaces) {
|
|
106
|
+
const state = await workspaceGetState(storage, location.path, ws);
|
|
107
|
+
if (state) {
|
|
108
|
+
console.log(` ${ws} (${state.packageName}@${state.packageVersion})`);
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
console.log(` ${ws} (not deployed)`);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
// Remote - workspaceListRemote returns WorkspaceInfo[] with package info
|
|
117
|
+
const workspaces = await workspaceListRemote(location.baseUrl, location.repo, { token: location.token });
|
|
118
|
+
if (workspaces.length === 0) {
|
|
119
|
+
console.log('No workspaces');
|
|
120
|
+
return;
|
|
76
121
|
}
|
|
77
|
-
|
|
78
|
-
|
|
122
|
+
console.log('Workspaces:');
|
|
123
|
+
for (const info of workspaces) {
|
|
124
|
+
if (info.deployed && info.packageName.type === 'some') {
|
|
125
|
+
const pkgVersion = info.packageVersion.type === 'some' ? info.packageVersion.value : 'unknown';
|
|
126
|
+
console.log(` ${info.name} (${info.packageName.value}@${pkgVersion})`);
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
console.log(` ${info.name} (not deployed)`);
|
|
130
|
+
}
|
|
79
131
|
}
|
|
80
132
|
}
|
|
81
133
|
}
|
|
@@ -88,10 +140,17 @@ export const workspaceCommand = {
|
|
|
88
140
|
*/
|
|
89
141
|
async remove(repoArg, ws) {
|
|
90
142
|
try {
|
|
91
|
-
const
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
143
|
+
const location = await parseRepoLocation(repoArg);
|
|
144
|
+
if (location.type === 'local') {
|
|
145
|
+
const storage = new LocalStorage();
|
|
146
|
+
await workspaceRemove(storage, location.path, ws);
|
|
147
|
+
console.log(`Removed workspace: ${ws}`);
|
|
148
|
+
console.log('Run `e3 repo gc` to reclaim disk space');
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
await workspaceRemoveRemote(location.baseUrl, location.repo, ws, { token: location.token });
|
|
152
|
+
console.log(`Removed workspace: ${ws}`);
|
|
153
|
+
}
|
|
95
154
|
}
|
|
96
155
|
catch (err) {
|
|
97
156
|
if (err instanceof WorkspaceLockError) {
|
|
@@ -102,5 +161,186 @@ export const workspaceCommand = {
|
|
|
102
161
|
exitError(formatError(err));
|
|
103
162
|
}
|
|
104
163
|
},
|
|
164
|
+
/**
|
|
165
|
+
* Show detailed workspace status.
|
|
166
|
+
*/
|
|
167
|
+
async status(repoArg, ws) {
|
|
168
|
+
try {
|
|
169
|
+
const location = await parseRepoLocation(repoArg);
|
|
170
|
+
let status;
|
|
171
|
+
if (location.type === 'local') {
|
|
172
|
+
const storage = new LocalStorage();
|
|
173
|
+
status = await workspaceStatus(storage, location.path, ws);
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
const remoteStatus = await workspaceStatusRemote(location.baseUrl, location.repo, ws, { token: location.token });
|
|
177
|
+
// Convert remote status to local format
|
|
178
|
+
status = {
|
|
179
|
+
workspace: remoteStatus.workspace,
|
|
180
|
+
lock: remoteStatus.lock.type === 'some' ? {
|
|
181
|
+
pid: Number(remoteStatus.lock.value.pid),
|
|
182
|
+
acquiredAt: remoteStatus.lock.value.acquiredAt,
|
|
183
|
+
operation: remoteStatus.lock.value.command.type === 'some' ? remoteStatus.lock.value.command.value : undefined,
|
|
184
|
+
} : null,
|
|
185
|
+
datasets: remoteStatus.datasets.map(d => ({
|
|
186
|
+
path: d.path,
|
|
187
|
+
status: d.status,
|
|
188
|
+
hash: d.hash.type === 'some' ? d.hash.value : null,
|
|
189
|
+
isTaskOutput: d.isTaskOutput,
|
|
190
|
+
producedBy: d.producedBy.type === 'some' ? d.producedBy.value : null,
|
|
191
|
+
})),
|
|
192
|
+
tasks: remoteStatus.tasks.map(t => ({
|
|
193
|
+
name: t.name,
|
|
194
|
+
hash: t.hash,
|
|
195
|
+
status: convertTaskStatus(t.status),
|
|
196
|
+
inputs: t.inputs,
|
|
197
|
+
output: t.output,
|
|
198
|
+
dependsOn: t.dependsOn,
|
|
199
|
+
})),
|
|
200
|
+
summary: {
|
|
201
|
+
datasets: {
|
|
202
|
+
total: Number(remoteStatus.summary.datasets.total),
|
|
203
|
+
unset: Number(remoteStatus.summary.datasets.unset),
|
|
204
|
+
stale: Number(remoteStatus.summary.datasets.stale),
|
|
205
|
+
upToDate: Number(remoteStatus.summary.datasets.upToDate),
|
|
206
|
+
},
|
|
207
|
+
tasks: {
|
|
208
|
+
total: Number(remoteStatus.summary.tasks.total),
|
|
209
|
+
upToDate: Number(remoteStatus.summary.tasks.upToDate),
|
|
210
|
+
ready: Number(remoteStatus.summary.tasks.ready),
|
|
211
|
+
waiting: Number(remoteStatus.summary.tasks.waiting),
|
|
212
|
+
inProgress: Number(remoteStatus.summary.tasks.inProgress),
|
|
213
|
+
failed: Number(remoteStatus.summary.tasks.failed),
|
|
214
|
+
error: Number(remoteStatus.summary.tasks.error),
|
|
215
|
+
staleRunning: Number(remoteStatus.summary.tasks.staleRunning),
|
|
216
|
+
},
|
|
217
|
+
},
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
console.log(`Workspace: ${status.workspace}`);
|
|
221
|
+
console.log('');
|
|
222
|
+
// Lock status
|
|
223
|
+
if (status.lock) {
|
|
224
|
+
console.log('Lock:');
|
|
225
|
+
console.log(` Held by PID ${status.lock.pid}`);
|
|
226
|
+
console.log(` Since: ${status.lock.acquiredAt}`);
|
|
227
|
+
if (status.lock.operation) {
|
|
228
|
+
console.log(` Operation: ${status.lock.operation}`);
|
|
229
|
+
}
|
|
230
|
+
console.log('');
|
|
231
|
+
}
|
|
232
|
+
// Summary
|
|
233
|
+
console.log('Summary:');
|
|
234
|
+
console.log(` Datasets: ${status.summary.datasets.upToDate} up-to-date, ${status.summary.datasets.stale} stale, ${status.summary.datasets.unset} unset`);
|
|
235
|
+
// Build task summary line - only include non-zero counts
|
|
236
|
+
const taskParts = [];
|
|
237
|
+
if (status.summary.tasks.upToDate > 0)
|
|
238
|
+
taskParts.push(`${status.summary.tasks.upToDate} up-to-date`);
|
|
239
|
+
if (status.summary.tasks.ready > 0)
|
|
240
|
+
taskParts.push(`${status.summary.tasks.ready} ready`);
|
|
241
|
+
if (status.summary.tasks.waiting > 0)
|
|
242
|
+
taskParts.push(`${status.summary.tasks.waiting} waiting`);
|
|
243
|
+
if (status.summary.tasks.inProgress > 0)
|
|
244
|
+
taskParts.push(`${status.summary.tasks.inProgress} in-progress`);
|
|
245
|
+
if (status.summary.tasks.failed > 0)
|
|
246
|
+
taskParts.push(`${status.summary.tasks.failed} failed`);
|
|
247
|
+
if (status.summary.tasks.error > 0)
|
|
248
|
+
taskParts.push(`${status.summary.tasks.error} error`);
|
|
249
|
+
if (status.summary.tasks.staleRunning > 0)
|
|
250
|
+
taskParts.push(`${status.summary.tasks.staleRunning} stale-running`);
|
|
251
|
+
console.log(` Tasks: ${taskParts.join(', ') || 'none'}`);
|
|
252
|
+
console.log('');
|
|
253
|
+
// Tasks section
|
|
254
|
+
if (status.tasks.length > 0) {
|
|
255
|
+
console.log('Tasks:');
|
|
256
|
+
for (const task of status.tasks) {
|
|
257
|
+
const statusStr = formatTaskStatus(task.status);
|
|
258
|
+
console.log(` ${task.name}: ${statusStr}`);
|
|
259
|
+
if (task.dependsOn.length > 0) {
|
|
260
|
+
console.log(` depends on: ${task.dependsOn.join(', ')}`);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
console.log('');
|
|
264
|
+
}
|
|
265
|
+
// Datasets section (only show non-up-to-date ones for brevity)
|
|
266
|
+
const nonUpToDate = status.datasets.filter(d => d.status.type !== 'up-to-date');
|
|
267
|
+
if (nonUpToDate.length > 0) {
|
|
268
|
+
console.log('Datasets needing attention:');
|
|
269
|
+
for (const dataset of nonUpToDate) {
|
|
270
|
+
const statusStr = dataset.status.type === 'unset' ? 'unset' : 'stale';
|
|
271
|
+
const producer = dataset.producedBy ? ` (from ${dataset.producedBy})` : ' (input)';
|
|
272
|
+
console.log(` ${dataset.path}: ${statusStr}${producer}`);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
else if (status.datasets.length > 0) {
|
|
276
|
+
console.log('All datasets up-to-date');
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
catch (err) {
|
|
280
|
+
exitError(formatError(err));
|
|
281
|
+
}
|
|
282
|
+
},
|
|
105
283
|
};
|
|
284
|
+
/**
|
|
285
|
+
* Convert remote task status to local format.
|
|
286
|
+
*/
|
|
287
|
+
function convertTaskStatus(status) {
|
|
288
|
+
switch (status.type) {
|
|
289
|
+
case 'up-to-date':
|
|
290
|
+
return { type: 'up-to-date', cached: Boolean(status.cached) };
|
|
291
|
+
case 'ready':
|
|
292
|
+
return { type: 'ready' };
|
|
293
|
+
case 'waiting':
|
|
294
|
+
return { type: 'waiting', reason: String(status.reason ?? '') };
|
|
295
|
+
case 'in-progress':
|
|
296
|
+
return {
|
|
297
|
+
type: 'in-progress',
|
|
298
|
+
pid: status.pid?.type === 'some' ? Number(status.pid.value) : undefined,
|
|
299
|
+
startedAt: status.startedAt?.type === 'some' ? status.startedAt.value : undefined,
|
|
300
|
+
};
|
|
301
|
+
case 'failed':
|
|
302
|
+
return {
|
|
303
|
+
type: 'failed',
|
|
304
|
+
exitCode: Number(status.exitCode ?? 0),
|
|
305
|
+
completedAt: status.completedAt?.type === 'some' ? status.completedAt.value : undefined,
|
|
306
|
+
};
|
|
307
|
+
case 'error':
|
|
308
|
+
return {
|
|
309
|
+
type: 'error',
|
|
310
|
+
message: String(status.message ?? ''),
|
|
311
|
+
completedAt: status.completedAt?.type === 'some' ? status.completedAt.value : undefined,
|
|
312
|
+
};
|
|
313
|
+
case 'stale-running':
|
|
314
|
+
return {
|
|
315
|
+
type: 'stale-running',
|
|
316
|
+
pid: status.pid?.type === 'some' ? Number(status.pid.value) : undefined,
|
|
317
|
+
startedAt: status.startedAt?.type === 'some' ? status.startedAt.value : undefined,
|
|
318
|
+
};
|
|
319
|
+
default:
|
|
320
|
+
return { type: 'ready' };
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Format task status for display.
|
|
325
|
+
*/
|
|
326
|
+
function formatTaskStatus(status) {
|
|
327
|
+
switch (status.type) {
|
|
328
|
+
case 'up-to-date':
|
|
329
|
+
return status.cached ? 'up-to-date (cached)' : 'up-to-date';
|
|
330
|
+
case 'ready':
|
|
331
|
+
return 'ready to run';
|
|
332
|
+
case 'waiting':
|
|
333
|
+
return `waiting (${status.reason})`;
|
|
334
|
+
case 'in-progress':
|
|
335
|
+
return status.pid ? `in-progress (PID ${status.pid})` : 'in-progress';
|
|
336
|
+
case 'failed':
|
|
337
|
+
return `FAILED (exit code ${status.exitCode})`;
|
|
338
|
+
case 'error':
|
|
339
|
+
return `ERROR: ${status.message}`;
|
|
340
|
+
case 'stale-running':
|
|
341
|
+
return `stale-running (PID ${status.pid} no longer exists)`;
|
|
342
|
+
default:
|
|
343
|
+
return 'unknown';
|
|
344
|
+
}
|
|
345
|
+
}
|
|
106
346
|
//# sourceMappingURL=workspace.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../../src/commands/workspace.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../../src/commands/workspace.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Licensed under BSL 1.1. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Single credential entry for a server.
|
|
7
|
+
*/
|
|
8
|
+
export interface CredentialEntry {
|
|
9
|
+
/** JWT access token */
|
|
10
|
+
accessToken: string;
|
|
11
|
+
/** JWT refresh token */
|
|
12
|
+
refreshToken: string;
|
|
13
|
+
/** Access token expiration (ISO 8601) */
|
|
14
|
+
expiresAt: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Credentials file structure.
|
|
18
|
+
*/
|
|
19
|
+
export interface CredentialsFile {
|
|
20
|
+
/** File format version */
|
|
21
|
+
version: 1;
|
|
22
|
+
/** Credentials keyed by server URL (normalized, no trailing slash) */
|
|
23
|
+
credentials: Record<string, CredentialEntry>;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* OIDC Discovery document.
|
|
27
|
+
*/
|
|
28
|
+
export interface OidcDiscovery {
|
|
29
|
+
issuer: string;
|
|
30
|
+
device_authorization_endpoint: string;
|
|
31
|
+
token_endpoint: string;
|
|
32
|
+
jwks_uri: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Device authorization response.
|
|
36
|
+
*/
|
|
37
|
+
export interface DeviceAuthResponse {
|
|
38
|
+
device_code: string;
|
|
39
|
+
user_code: string;
|
|
40
|
+
verification_uri: string;
|
|
41
|
+
verification_uri_complete: string;
|
|
42
|
+
expires_in: number;
|
|
43
|
+
interval: number;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Token response from OAuth2 token endpoint.
|
|
47
|
+
*/
|
|
48
|
+
export interface TokenResponse {
|
|
49
|
+
access_token: string;
|
|
50
|
+
refresh_token: string;
|
|
51
|
+
token_type: string;
|
|
52
|
+
expires_in: number;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Token error response.
|
|
56
|
+
*/
|
|
57
|
+
export interface TokenErrorResponse {
|
|
58
|
+
error: string;
|
|
59
|
+
error_description?: string;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Normalize server URL (remove trailing slash).
|
|
63
|
+
*/
|
|
64
|
+
export declare function normalizeServerUrl(url: string): string;
|
|
65
|
+
/**
|
|
66
|
+
* Load credentials file.
|
|
67
|
+
*/
|
|
68
|
+
export declare function loadCredentials(): CredentialsFile;
|
|
69
|
+
/**
|
|
70
|
+
* Save credentials file.
|
|
71
|
+
*/
|
|
72
|
+
export declare function saveCredentials(file: CredentialsFile): void;
|
|
73
|
+
/**
|
|
74
|
+
* Get credential for a server.
|
|
75
|
+
*/
|
|
76
|
+
export declare function getCredential(serverUrl: string): CredentialEntry | null;
|
|
77
|
+
/**
|
|
78
|
+
* Set credential for a server.
|
|
79
|
+
*/
|
|
80
|
+
export declare function setCredential(serverUrl: string, entry: CredentialEntry): void;
|
|
81
|
+
/**
|
|
82
|
+
* Remove credential for a server.
|
|
83
|
+
*/
|
|
84
|
+
export declare function removeCredential(serverUrl: string): boolean;
|
|
85
|
+
/**
|
|
86
|
+
* List all saved credentials.
|
|
87
|
+
*/
|
|
88
|
+
export declare function listCredentials(): Array<{
|
|
89
|
+
server: string;
|
|
90
|
+
expiresAt: string;
|
|
91
|
+
}>;
|
|
92
|
+
/**
|
|
93
|
+
* Check if a token expiration time has passed.
|
|
94
|
+
*/
|
|
95
|
+
export declare function isExpired(expiresAt: string): boolean;
|
|
96
|
+
/**
|
|
97
|
+
* Fetch OIDC discovery document.
|
|
98
|
+
*/
|
|
99
|
+
export declare function fetchDiscovery(serverUrl: string): Promise<OidcDiscovery>;
|
|
100
|
+
/**
|
|
101
|
+
* Start device authorization flow.
|
|
102
|
+
*/
|
|
103
|
+
export declare function startDeviceAuth(discovery: OidcDiscovery): Promise<DeviceAuthResponse>;
|
|
104
|
+
/**
|
|
105
|
+
* Poll for device code approval.
|
|
106
|
+
*/
|
|
107
|
+
export declare function pollForTokens(discovery: OidcDiscovery, deviceCode: string, interval: number, expiresIn: number): Promise<TokenResponse>;
|
|
108
|
+
/**
|
|
109
|
+
* Refresh an access token using a refresh token.
|
|
110
|
+
*/
|
|
111
|
+
export declare function refreshAccessToken(serverUrl: string, refreshToken: string): Promise<TokenResponse>;
|
|
112
|
+
/**
|
|
113
|
+
* Get a valid access token for a server.
|
|
114
|
+
*
|
|
115
|
+
* If the current token is expired, attempts to refresh it.
|
|
116
|
+
* Throws if not logged in or refresh fails.
|
|
117
|
+
*/
|
|
118
|
+
export declare function getValidToken(serverUrl: string): Promise<string>;
|
|
119
|
+
/**
|
|
120
|
+
* Decode JWT payload without verification (for display purposes only).
|
|
121
|
+
*/
|
|
122
|
+
export declare function decodeJwtPayload(token: string): Record<string, unknown>;
|
|
123
|
+
//# sourceMappingURL=credentials.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/credentials.ts"],"names":[],"mappings":"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"}
|