@elaraai/e3-cli 0.0.2-beta.4 → 0.0.2-beta.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/README.md +33 -9
  2. package/dist/src/cli.js +50 -15
  3. package/dist/src/cli.js.map +1 -1
  4. package/dist/src/commands/auth.d.ts +21 -0
  5. package/dist/src/commands/auth.d.ts.map +1 -0
  6. package/dist/src/commands/auth.js +196 -0
  7. package/dist/src/commands/auth.js.map +1 -0
  8. package/dist/src/commands/dataset-status.d.ts +9 -0
  9. package/dist/src/commands/dataset-status.d.ts.map +1 -0
  10. package/dist/src/commands/dataset-status.js +77 -0
  11. package/dist/src/commands/dataset-status.js.map +1 -0
  12. package/dist/src/commands/get.d.ts.map +1 -1
  13. package/dist/src/commands/get.js +32 -14
  14. package/dist/src/commands/get.js.map +1 -1
  15. package/dist/src/commands/list.d.ts +6 -1
  16. package/dist/src/commands/list.d.ts.map +1 -1
  17. package/dist/src/commands/list.js +259 -17
  18. package/dist/src/commands/list.js.map +1 -1
  19. package/dist/src/commands/logs.d.ts.map +1 -1
  20. package/dist/src/commands/logs.js +105 -69
  21. package/dist/src/commands/logs.js.map +1 -1
  22. package/dist/src/commands/package.d.ts.map +1 -1
  23. package/dist/src/commands/package.js +55 -18
  24. package/dist/src/commands/package.js.map +1 -1
  25. package/dist/src/commands/repo.d.ts +35 -0
  26. package/dist/src/commands/repo.d.ts.map +1 -0
  27. package/dist/src/commands/repo.js +242 -0
  28. package/dist/src/commands/repo.js.map +1 -0
  29. package/dist/src/commands/run.d.ts.map +1 -1
  30. package/dist/src/commands/run.js +4 -3
  31. package/dist/src/commands/run.js.map +1 -1
  32. package/dist/src/commands/set.d.ts.map +1 -1
  33. package/dist/src/commands/set.js +16 -10
  34. package/dist/src/commands/set.js.map +1 -1
  35. package/dist/src/commands/start.d.ts.map +1 -1
  36. package/dist/src/commands/start.js +188 -52
  37. package/dist/src/commands/start.js.map +1 -1
  38. package/dist/src/commands/watch.d.ts.map +1 -1
  39. package/dist/src/commands/watch.js +26 -16
  40. package/dist/src/commands/watch.js.map +1 -1
  41. package/dist/src/commands/workspace.d.ts +8 -0
  42. package/dist/src/commands/workspace.d.ts.map +1 -1
  43. package/dist/src/commands/workspace.js +325 -37
  44. package/dist/src/commands/workspace.js.map +1 -1
  45. package/dist/src/credentials.d.ts +123 -0
  46. package/dist/src/credentials.d.ts.map +1 -0
  47. package/dist/src/credentials.js +213 -0
  48. package/dist/src/credentials.js.map +1 -0
  49. package/dist/src/format.d.ts +15 -0
  50. package/dist/src/format.d.ts.map +1 -0
  51. package/dist/src/format.js +29 -0
  52. package/dist/src/format.js.map +1 -0
  53. package/dist/src/utils.d.ts +60 -1
  54. package/dist/src/utils.d.ts.map +1 -1
  55. package/dist/src/utils.js +80 -1
  56. package/dist/src/utils.js.map +1 -1
  57. package/package.json +7 -6
  58. package/dist/src/commands/gc.d.ts +0 -12
  59. package/dist/src/commands/gc.d.ts.map +0 -1
  60. package/dist/src/commands/gc.js +0 -44
  61. package/dist/src/commands/gc.js.map +0 -1
  62. package/dist/src/commands/init.d.ts +0 -9
  63. package/dist/src/commands/init.d.ts.map +0 -1
  64. package/dist/src/commands/init.js +0 -33
  65. package/dist/src/commands/init.js.map +0 -1
  66. package/dist/src/commands/status.d.ts +0 -9
  67. package/dist/src/commands/status.d.ts.map +0 -1
  68. package/dist/src/commands/status.js +0 -157
  69. 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 { resolveRepo, parsePackageSpec, formatError, exitError } from '../utils.js';
8
+ import { workspaceCreate, workspaceDeploy, workspaceExport, workspaceList, workspaceRemove, workspaceGetState, workspaceStatus, packageImport, LocalStorage, WorkspaceExistsError, } from '@elaraai/e3-core';
9
+ import { workspaceCreate as workspaceCreateRemote, workspaceDeploy as workspaceDeployRemote, workspaceExport as workspaceExportRemote, workspaceList as workspaceListRemote, workspaceRemove as workspaceRemoveRemote, workspaceStatus as workspaceStatusRemote, packageImport as packageImportRemote, ApiError, } from '@elaraai/e3-api-client';
10
+ import { readFileSync, 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 repoPath = resolveRepo(repoArg);
17
- await workspaceCreate(repoPath, name);
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,17 +35,20 @@ export const workspaceCommand = {
27
35
  */
28
36
  async deploy(repoArg, ws, pkgSpec) {
29
37
  try {
30
- const repoPath = resolveRepo(repoArg);
38
+ const location = await parseRepoLocation(repoArg);
31
39
  const { name, version } = parsePackageSpec(pkgSpec);
32
- await workspaceDeploy(repoPath, ws, name, version);
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) {
36
- if (err instanceof WorkspaceLockError) {
37
- console.log('');
38
- console.log(`Workspace is locked by another process with PID: ${err.holder?.pid ?? 'unknown'}`);
39
- process.exit(1);
40
- }
41
52
  exitError(formatError(err));
42
53
  }
43
54
  },
@@ -46,12 +57,85 @@ export const workspaceCommand = {
46
57
  */
47
58
  async export(repoArg, ws, zipPath, options) {
48
59
  try {
49
- const repoPath = resolveRepo(repoArg);
50
- const result = await workspaceExport(repoPath, ws, zipPath, options.name, options.version);
51
- console.log(`Exported workspace ${ws} as ${result.name}@${result.version}`);
52
- console.log(` Output: ${zipPath}`);
53
- console.log(` Package hash: ${result.packageHash.slice(0, 12)}...`);
54
- console.log(` Objects: ${result.objectCount}`);
60
+ const location = await parseRepoLocation(repoArg);
61
+ if (location.type === 'local') {
62
+ const storage = new LocalStorage();
63
+ const result = await workspaceExport(storage, location.path, ws, zipPath, options.name, options.version);
64
+ console.log(`Exported workspace ${ws} as ${result.name}@${result.version}`);
65
+ console.log(` Output: ${zipPath}`);
66
+ console.log(` Package hash: ${result.packageHash.slice(0, 12)}...`);
67
+ console.log(` Objects: ${result.objectCount}`);
68
+ }
69
+ else {
70
+ // Remote export - fetch zip bytes and write to local file
71
+ // Note: Remote export doesn't support custom name/version options
72
+ if (options.name || options.version) {
73
+ console.warn('Warning: --name and --version options are not supported for remote export');
74
+ }
75
+ const zipBytes = await workspaceExportRemote(location.baseUrl, location.repo, ws, { token: location.token });
76
+ writeFileSync(zipPath, zipBytes);
77
+ console.log(`Exported workspace ${ws}`);
78
+ console.log(` Output: ${zipPath}`);
79
+ console.log(` Size: ${zipBytes.length} bytes`);
80
+ }
81
+ }
82
+ catch (err) {
83
+ exitError(formatError(err));
84
+ }
85
+ },
86
+ /**
87
+ * Import a package zip into a workspace (creates workspace if needed).
88
+ */
89
+ async import(repoArg, ws, zipPath) {
90
+ try {
91
+ const location = await parseRepoLocation(repoArg);
92
+ let name;
93
+ let version;
94
+ let packageHash;
95
+ let objectCount;
96
+ if (location.type === 'local') {
97
+ const storage = new LocalStorage();
98
+ // Import the package
99
+ const result = await packageImport(storage, location.path, zipPath);
100
+ name = result.name;
101
+ version = result.version;
102
+ packageHash = result.packageHash;
103
+ objectCount = result.objectCount;
104
+ // Create workspace (ignore if already exists)
105
+ try {
106
+ await workspaceCreate(storage, location.path, ws);
107
+ }
108
+ catch (err) {
109
+ if (!(err instanceof WorkspaceExistsError))
110
+ throw err;
111
+ }
112
+ // Deploy
113
+ await workspaceDeploy(storage, location.path, ws, name, version);
114
+ }
115
+ else {
116
+ // Remote import
117
+ const zipBytes = readFileSync(zipPath);
118
+ const result = await packageImportRemote(location.baseUrl, location.repo, new Uint8Array(zipBytes), { token: location.token });
119
+ name = result.name;
120
+ version = result.version;
121
+ packageHash = result.packageHash;
122
+ objectCount = Number(result.objectCount);
123
+ // Create workspace (ignore if already exists)
124
+ try {
125
+ await workspaceCreateRemote(location.baseUrl, location.repo, ws, { token: location.token });
126
+ }
127
+ catch (err) {
128
+ if (!(err instanceof ApiError && err.code === 'workspace_exists'))
129
+ throw err;
130
+ }
131
+ // Deploy
132
+ const packageRef = `${name}@${version}`;
133
+ await workspaceDeployRemote(location.baseUrl, location.repo, ws, packageRef, { token: location.token });
134
+ }
135
+ console.log(`Imported ${name}@${version}`);
136
+ console.log(` Package hash: ${packageHash.slice(0, 12)}...`);
137
+ console.log(` Objects: ${objectCount}`);
138
+ console.log(`Deployed to workspace: ${ws}`);
55
139
  }
56
140
  catch (err) {
57
141
  exitError(formatError(err));
@@ -62,20 +146,41 @@ export const workspaceCommand = {
62
146
  */
63
147
  async list(repoArg) {
64
148
  try {
65
- const repoPath = resolveRepo(repoArg);
66
- const workspaces = await workspaceList(repoPath);
67
- if (workspaces.length === 0) {
68
- console.log('No workspaces');
69
- return;
70
- }
71
- console.log('Workspaces:');
72
- for (const ws of workspaces) {
73
- const state = await workspaceGetState(repoPath, ws);
74
- if (state) {
75
- console.log(` ${ws} (${state.packageName}@${state.packageVersion})`);
149
+ const location = await parseRepoLocation(repoArg);
150
+ if (location.type === 'local') {
151
+ const storage = new LocalStorage();
152
+ const workspaces = await workspaceList(storage, location.path);
153
+ if (workspaces.length === 0) {
154
+ console.log('No workspaces');
155
+ return;
76
156
  }
77
- else {
78
- console.log(` ${ws} (not deployed)`);
157
+ console.log('Workspaces:');
158
+ for (const ws of workspaces) {
159
+ const state = await workspaceGetState(storage, location.path, ws);
160
+ if (state) {
161
+ console.log(` ${ws} (${state.packageName}@${state.packageVersion})`);
162
+ }
163
+ else {
164
+ console.log(` ${ws} (not deployed)`);
165
+ }
166
+ }
167
+ }
168
+ else {
169
+ // Remote - workspaceListRemote returns WorkspaceInfo[] with package info
170
+ const workspaces = await workspaceListRemote(location.baseUrl, location.repo, { token: location.token });
171
+ if (workspaces.length === 0) {
172
+ console.log('No workspaces');
173
+ return;
174
+ }
175
+ console.log('Workspaces:');
176
+ for (const info of workspaces) {
177
+ if (info.deployed && info.packageName.type === 'some') {
178
+ const pkgVersion = info.packageVersion.type === 'some' ? info.packageVersion.value : 'unknown';
179
+ console.log(` ${info.name} (${info.packageName.value}@${pkgVersion})`);
180
+ }
181
+ else {
182
+ console.log(` ${info.name} (not deployed)`);
183
+ }
79
184
  }
80
185
  }
81
186
  }
@@ -88,19 +193,202 @@ export const workspaceCommand = {
88
193
  */
89
194
  async remove(repoArg, ws) {
90
195
  try {
91
- const repoPath = resolveRepo(repoArg);
92
- await workspaceRemove(repoPath, ws);
93
- console.log(`Removed workspace: ${ws}`);
94
- console.log('Run `e3 gc` to reclaim disk space');
196
+ const location = await parseRepoLocation(repoArg);
197
+ if (location.type === 'local') {
198
+ const storage = new LocalStorage();
199
+ await workspaceRemove(storage, location.path, ws);
200
+ console.log(`Removed workspace: ${ws}`);
201
+ console.log('Run `e3 repo gc` to reclaim disk space');
202
+ }
203
+ else {
204
+ await workspaceRemoveRemote(location.baseUrl, location.repo, ws, { token: location.token });
205
+ console.log(`Removed workspace: ${ws}`);
206
+ }
95
207
  }
96
208
  catch (err) {
97
- if (err instanceof WorkspaceLockError) {
209
+ exitError(formatError(err));
210
+ }
211
+ },
212
+ /**
213
+ * Show detailed workspace status.
214
+ */
215
+ async status(repoArg, ws) {
216
+ try {
217
+ const location = await parseRepoLocation(repoArg);
218
+ let status;
219
+ if (location.type === 'local') {
220
+ const storage = new LocalStorage();
221
+ status = await workspaceStatus(storage, location.path, ws);
222
+ }
223
+ else {
224
+ const remoteStatus = await workspaceStatusRemote(location.baseUrl, location.repo, ws, { token: location.token });
225
+ // Convert remote status to local format
226
+ status = {
227
+ workspace: remoteStatus.workspace,
228
+ lock: remoteStatus.lock.type === 'some' ? {
229
+ pid: Number(remoteStatus.lock.value.pid),
230
+ acquiredAt: remoteStatus.lock.value.acquiredAt,
231
+ operation: remoteStatus.lock.value.command.type === 'some' ? remoteStatus.lock.value.command.value : undefined,
232
+ } : null,
233
+ datasets: remoteStatus.datasets.map(d => ({
234
+ path: d.path,
235
+ status: d.status,
236
+ hash: d.hash.type === 'some' ? d.hash.value : null,
237
+ isTaskOutput: d.isTaskOutput,
238
+ producedBy: d.producedBy.type === 'some' ? d.producedBy.value : null,
239
+ })),
240
+ tasks: remoteStatus.tasks.map(t => ({
241
+ name: t.name,
242
+ hash: t.hash,
243
+ status: convertTaskStatus(t.status),
244
+ inputs: t.inputs,
245
+ output: t.output,
246
+ dependsOn: t.dependsOn,
247
+ })),
248
+ summary: {
249
+ datasets: {
250
+ total: Number(remoteStatus.summary.datasets.total),
251
+ unset: Number(remoteStatus.summary.datasets.unset),
252
+ stale: Number(remoteStatus.summary.datasets.stale),
253
+ upToDate: Number(remoteStatus.summary.datasets.upToDate),
254
+ },
255
+ tasks: {
256
+ total: Number(remoteStatus.summary.tasks.total),
257
+ upToDate: Number(remoteStatus.summary.tasks.upToDate),
258
+ ready: Number(remoteStatus.summary.tasks.ready),
259
+ waiting: Number(remoteStatus.summary.tasks.waiting),
260
+ inProgress: Number(remoteStatus.summary.tasks.inProgress),
261
+ failed: Number(remoteStatus.summary.tasks.failed),
262
+ error: Number(remoteStatus.summary.tasks.error),
263
+ staleRunning: Number(remoteStatus.summary.tasks.staleRunning),
264
+ },
265
+ },
266
+ };
267
+ }
268
+ console.log(`Workspace: ${status.workspace}`);
269
+ console.log('');
270
+ // Lock status
271
+ if (status.lock) {
272
+ console.log('Lock:');
273
+ console.log(` Held by PID ${status.lock.pid}`);
274
+ console.log(` Since: ${status.lock.acquiredAt}`);
275
+ if (status.lock.operation) {
276
+ console.log(` Operation: ${status.lock.operation}`);
277
+ }
98
278
  console.log('');
99
- console.log(`Workspace is locked by another process with PID: ${err.holder?.pid ?? 'unknown'}`);
100
- process.exit(1);
101
279
  }
280
+ // Summary
281
+ console.log('Summary:');
282
+ console.log(` Datasets: ${status.summary.datasets.upToDate} up-to-date, ${status.summary.datasets.stale} stale, ${status.summary.datasets.unset} unset`);
283
+ // Build task summary line - only include non-zero counts
284
+ const taskParts = [];
285
+ if (status.summary.tasks.upToDate > 0)
286
+ taskParts.push(`${status.summary.tasks.upToDate} up-to-date`);
287
+ if (status.summary.tasks.ready > 0)
288
+ taskParts.push(`${status.summary.tasks.ready} ready`);
289
+ if (status.summary.tasks.waiting > 0)
290
+ taskParts.push(`${status.summary.tasks.waiting} waiting`);
291
+ if (status.summary.tasks.inProgress > 0)
292
+ taskParts.push(`${status.summary.tasks.inProgress} in-progress`);
293
+ if (status.summary.tasks.failed > 0)
294
+ taskParts.push(`${status.summary.tasks.failed} failed`);
295
+ if (status.summary.tasks.error > 0)
296
+ taskParts.push(`${status.summary.tasks.error} error`);
297
+ if (status.summary.tasks.staleRunning > 0)
298
+ taskParts.push(`${status.summary.tasks.staleRunning} stale-running`);
299
+ console.log(` Tasks: ${taskParts.join(', ') || 'none'}`);
300
+ console.log('');
301
+ // Tasks section
302
+ if (status.tasks.length > 0) {
303
+ console.log('Tasks:');
304
+ for (const task of status.tasks) {
305
+ const statusStr = formatTaskStatus(task.status);
306
+ console.log(` ${task.name}: ${statusStr}`);
307
+ if (task.dependsOn.length > 0) {
308
+ console.log(` depends on: ${task.dependsOn.join(', ')}`);
309
+ }
310
+ }
311
+ console.log('');
312
+ }
313
+ // Datasets section (only show non-up-to-date ones for brevity)
314
+ const nonUpToDate = status.datasets.filter(d => d.status.type !== 'up-to-date');
315
+ if (nonUpToDate.length > 0) {
316
+ console.log('Datasets needing attention:');
317
+ for (const dataset of nonUpToDate) {
318
+ const statusStr = dataset.status.type === 'unset' ? 'unset' : 'stale';
319
+ const producer = dataset.producedBy ? ` (from ${dataset.producedBy})` : ' (input)';
320
+ console.log(` ${dataset.path}: ${statusStr}${producer}`);
321
+ }
322
+ }
323
+ else if (status.datasets.length > 0) {
324
+ console.log('All datasets up-to-date');
325
+ }
326
+ }
327
+ catch (err) {
102
328
  exitError(formatError(err));
103
329
  }
104
330
  },
105
331
  };
332
+ /**
333
+ * Convert remote task status to local format.
334
+ */
335
+ function convertTaskStatus(status) {
336
+ switch (status.type) {
337
+ case 'up-to-date':
338
+ return { type: 'up-to-date', cached: Boolean(status.cached) };
339
+ case 'ready':
340
+ return { type: 'ready' };
341
+ case 'waiting':
342
+ return { type: 'waiting', reason: String(status.reason ?? '') };
343
+ case 'in-progress':
344
+ return {
345
+ type: 'in-progress',
346
+ pid: status.pid?.type === 'some' ? Number(status.pid.value) : undefined,
347
+ startedAt: status.startedAt?.type === 'some' ? status.startedAt.value : undefined,
348
+ };
349
+ case 'failed':
350
+ return {
351
+ type: 'failed',
352
+ exitCode: Number(status.exitCode ?? 0),
353
+ completedAt: status.completedAt?.type === 'some' ? status.completedAt.value : undefined,
354
+ };
355
+ case 'error':
356
+ return {
357
+ type: 'error',
358
+ message: String(status.message ?? ''),
359
+ completedAt: status.completedAt?.type === 'some' ? status.completedAt.value : undefined,
360
+ };
361
+ case 'stale-running':
362
+ return {
363
+ type: 'stale-running',
364
+ pid: status.pid?.type === 'some' ? Number(status.pid.value) : undefined,
365
+ startedAt: status.startedAt?.type === 'some' ? status.startedAt.value : undefined,
366
+ };
367
+ default:
368
+ return { type: 'ready' };
369
+ }
370
+ }
371
+ /**
372
+ * Format task status for display.
373
+ */
374
+ function formatTaskStatus(status) {
375
+ switch (status.type) {
376
+ case 'up-to-date':
377
+ return status.cached ? 'up-to-date (cached)' : 'up-to-date';
378
+ case 'ready':
379
+ return 'ready to run';
380
+ case 'waiting':
381
+ return `waiting (${status.reason})`;
382
+ case 'in-progress':
383
+ return status.pid ? `in-progress (PID ${status.pid})` : 'in-progress';
384
+ case 'failed':
385
+ return `FAILED (exit code ${status.exitCode})`;
386
+ case 'error':
387
+ return `ERROR: ${status.message}`;
388
+ case 'stale-running':
389
+ return `stale-running (PID ${status.pid} no longer exists)`;
390
+ default:
391
+ return 'unknown';
392
+ }
393
+ }
106
394
  //# 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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"}