orizu 0.5.49 → 0.5.51

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 (78) hide show
  1. package/dist/account-directory.d.ts +2 -2
  2. package/dist/account-directory.d.ts.map +1 -1
  3. package/dist/account-directory.js +7 -32
  4. package/dist/auth-commands.d.ts.map +1 -1
  5. package/dist/auth-commands.js +32 -36
  6. package/dist/credentials-transaction.d.ts +7 -0
  7. package/dist/credentials-transaction.d.ts.map +1 -0
  8. package/dist/credentials-transaction.js +60 -0
  9. package/dist/credentials.d.ts +24 -1
  10. package/dist/credentials.d.ts.map +1 -1
  11. package/dist/credentials.js +202 -76
  12. package/dist/dataset-transfer-upload.d.ts.map +1 -1
  13. package/dist/dataset-transfer-upload.js +6 -1
  14. package/dist/directory-list-read.d.ts +37 -0
  15. package/dist/directory-list-read.d.ts.map +1 -0
  16. package/dist/directory-list-read.js +87 -0
  17. package/dist/hosted-boot.d.ts.map +1 -1
  18. package/dist/hosted-boot.js +59 -41
  19. package/dist/hosted-harness-opencode.d.ts +31 -0
  20. package/dist/hosted-harness-opencode.d.ts.map +1 -1
  21. package/dist/hosted-harness-opencode.js +45 -7
  22. package/dist/hosted-loop.d.ts +39 -2
  23. package/dist/hosted-loop.d.ts.map +1 -1
  24. package/dist/hosted-loop.js +127 -18
  25. package/dist/hosted-session-seed.d.ts +2 -0
  26. package/dist/hosted-session-seed.d.ts.map +1 -1
  27. package/dist/hosted-session-seed.js +27 -10
  28. package/dist/http.d.ts.map +1 -1
  29. package/dist/http.js +39 -234
  30. package/dist/keyboard-select.d.ts.map +1 -1
  31. package/dist/keyboard-select.js +23 -45
  32. package/dist/project-create-workflow.d.ts +18 -0
  33. package/dist/project-create-workflow.d.ts.map +1 -0
  34. package/dist/project-create-workflow.js +121 -0
  35. package/dist/self-update-command.d.ts +8 -0
  36. package/dist/self-update-command.d.ts.map +1 -0
  37. package/dist/self-update-command.js +390 -0
  38. package/dist/self-update.d.ts +29 -16
  39. package/dist/self-update.d.ts.map +1 -1
  40. package/dist/self-update.js +55 -244
  41. package/dist/setup-account.d.ts.map +1 -1
  42. package/dist/setup-account.js +4 -1
  43. package/dist/setup-and-skills-commands.d.ts.map +1 -1
  44. package/dist/setup-and-skills-commands.js +88 -102
  45. package/dist/skill-install-workflow.d.ts +23 -0
  46. package/dist/skill-install-workflow.d.ts.map +1 -0
  47. package/dist/skill-install-workflow.js +184 -0
  48. package/dist/skill-installer.d.ts +8 -3
  49. package/dist/skill-installer.d.ts.map +1 -1
  50. package/dist/skill-installer.js +26 -33
  51. package/dist/stored-session-requests.d.ts +27 -0
  52. package/dist/stored-session-requests.d.ts.map +1 -0
  53. package/dist/stored-session-requests.js +268 -0
  54. package/dist/terminal-key-session.d.ts +23 -0
  55. package/dist/terminal-key-session.d.ts.map +1 -0
  56. package/dist/terminal-key-session.js +74 -0
  57. package/package.json +1 -1
  58. package/src/account-directory.ts +8 -42
  59. package/src/auth-commands.ts +31 -35
  60. package/src/credentials-transaction.ts +73 -0
  61. package/src/credentials.ts +211 -89
  62. package/src/dataset-transfer-upload.ts +7 -1
  63. package/src/directory-list-read.ts +123 -0
  64. package/src/hosted-boot.ts +65 -43
  65. package/src/hosted-harness-opencode.ts +65 -9
  66. package/src/hosted-loop.ts +152 -18
  67. package/src/hosted-session-seed.ts +25 -8
  68. package/src/http.ts +39 -317
  69. package/src/keyboard-select.ts +18 -55
  70. package/src/project-create-workflow.ts +139 -0
  71. package/src/self-update-command.ts +419 -0
  72. package/src/self-update.ts +70 -266
  73. package/src/setup-account.ts +4 -1
  74. package/src/setup-and-skills-commands.ts +89 -121
  75. package/src/skill-install-workflow.ts +215 -0
  76. package/src/skill-installer.ts +31 -38
  77. package/src/stored-session-requests.ts +319 -0
  78. package/src/terminal-key-session.ts +88 -0
@@ -9,6 +9,11 @@ import { canonicalServerUrl, normalizeBaseUrl } from './global-flags.js';
9
9
  function isNodeError(error) {
10
10
  return error instanceof Error;
11
11
  }
12
+ // The system's short error code (EACCES, EPERM), never the message: messages
13
+ // from fs calls carry paths, and this one goes to the terminal.
14
+ function errorCode(error) {
15
+ return isNodeError(error) && typeof error.code === 'string' ? error.code : 'unknown error';
16
+ }
12
17
  export function getConfigDir() {
13
18
  if (process.env.ORIZU_CONFIG_DIR) {
14
19
  return process.env.ORIZU_CONFIG_DIR;
@@ -20,7 +25,7 @@ function getCredentialsPath() {
20
25
  }
21
26
  const DEFAULT_CREDENTIALS_LOCK_TIMEOUT_MS = 2_000;
22
27
  const MAX_CREDENTIALS_LOCK_TIMEOUT_MS = 10_000;
23
- const CREDENTIALS_LOCK_RETRY_MS = 20;
28
+ export const CREDENTIALS_LOCK_RETRY_MS = 20;
24
29
  let heldCredentialsLock = null;
25
30
  const credentialsTransactionOwner = new AsyncLocalStorage();
26
31
  function getCredentialsLockPath() {
@@ -38,58 +43,74 @@ function readLockDuration(name, fallback, maximum = Number.MAX_SAFE_INTEGER) {
38
43
  function sleepSync(milliseconds) {
39
44
  Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, milliseconds);
40
45
  }
41
- function acquireCredentialsLock() {
46
+ export function credentialsLockTimeoutMs() {
47
+ return readLockDuration('ORIZU_CREDENTIALS_LOCK_TIMEOUT_MS', DEFAULT_CREDENTIALS_LOCK_TIMEOUT_MS, MAX_CREDENTIALS_LOCK_TIMEOUT_MS);
48
+ }
49
+ export function credentialsLockTimeoutError(timeoutMs) {
50
+ return new Error(`ORIZU_CREDENTIALS_LOCK_TIMEOUT: credentials mutation did not acquire the lock within ${timeoutMs}ms. Verify no Orizu process is running, then remove credentials.json.lock manually.`);
51
+ }
52
+ /**
53
+ * One try at the cross-process lock. Returns null when another owner holds
54
+ * it. The waits between tries belong to the caller: a blocking one below for
55
+ * synchronous writers, an Effect sleep in credentials-transaction.ts.
56
+ */
57
+ export function tryAcquireCredentialsLock() {
42
58
  const dir = getConfigDir();
43
59
  mkdirSync(dir, { recursive: true, mode: 0o700 });
44
60
  chmodSync(dir, 0o700);
45
61
  const lockPath = getCredentialsLockPath();
46
- const timeoutMs = readLockDuration('ORIZU_CREDENTIALS_LOCK_TIMEOUT_MS', DEFAULT_CREDENTIALS_LOCK_TIMEOUT_MS, MAX_CREDENTIALS_LOCK_TIMEOUT_MS);
47
- const deadline = Date.now() + timeoutMs;
48
- while (true) {
49
- const metadata = JSON.stringify({
50
- version: 1,
51
- pid: process.pid,
52
- hostname: hostname(),
53
- createdAt: Date.now(),
54
- instanceId: randomBytes(16).toString('hex'),
55
- });
56
- const tempPath = join(dir, `.credentials.json.lock.${process.pid}.${randomBytes(8).toString('hex')}.tmp`);
62
+ const metadata = JSON.stringify({
63
+ version: 1,
64
+ pid: process.pid,
65
+ hostname: hostname(),
66
+ createdAt: Date.now(),
67
+ instanceId: randomBytes(16).toString('hex'),
68
+ });
69
+ const tempPath = join(dir, `.credentials.json.lock.${process.pid}.${randomBytes(8).toString('hex')}.tmp`);
70
+ try {
71
+ const fd = openSync(tempPath, 'wx', 0o600);
57
72
  try {
58
- const fd = openSync(tempPath, 'wx', 0o600);
59
- try {
60
- writeFileSync(fd, metadata, 'utf8');
61
- fsyncSync(fd);
62
- chmodSync(tempPath, 0o600);
63
- }
64
- finally {
65
- closeSync(fd);
66
- }
67
- try {
68
- // link(2) publishes the already-complete inode without replacing an
69
- // existing owner. No contender ever unlinks the canonical lock.
70
- linkSync(tempPath, lockPath);
71
- }
72
- catch (error) {
73
- if (!(isNodeError(error) && error.code === 'EEXIST'))
74
- throw error;
75
- if (Date.now() >= deadline) {
76
- throw new Error(`ORIZU_CREDENTIALS_LOCK_TIMEOUT: credentials mutation did not acquire the lock within ${timeoutMs}ms. Verify no Orizu process is running, then remove credentials.json.lock manually.`);
77
- }
78
- sleepSync(Math.min(CREDENTIALS_LOCK_RETRY_MS, Math.max(1, deadline - Date.now())));
79
- continue;
80
- }
81
- let resolveReleased = () => { };
82
- const released = new Promise(resolve => { resolveReleased = resolve; });
83
- return { path: lockPath, metadata, depth: 1, released, resolveReleased };
73
+ writeFileSync(fd, metadata, 'utf8');
74
+ fsyncSync(fd);
75
+ chmodSync(tempPath, 0o600);
84
76
  }
85
77
  finally {
86
- // The unique owner-only preparation link is never retained, whether
87
- // publication succeeds, loses to an owner, or fails unexpectedly.
88
- rmSync(tempPath, { force: true });
78
+ closeSync(fd);
79
+ }
80
+ try {
81
+ // link(2) publishes the already-complete inode without replacing an
82
+ // existing owner. No contender ever unlinks the canonical lock.
83
+ linkSync(tempPath, lockPath);
84
+ }
85
+ catch (error) {
86
+ if (isNodeError(error) && error.code === 'EEXIST')
87
+ return null;
88
+ throw error;
89
89
  }
90
+ let resolveReleased = () => { };
91
+ const released = new Promise(resolve => { resolveReleased = resolve; });
92
+ return { path: lockPath, metadata, depth: 1, released, resolveReleased };
93
+ }
94
+ finally {
95
+ // The unique owner-only preparation link is never retained, whether
96
+ // publication succeeds, loses to an owner, or fails unexpectedly.
97
+ rmSync(tempPath, { force: true });
90
98
  }
91
99
  }
92
- function releaseCredentialsLock(lock) {
100
+ /** Blocks the process between tries; only for synchronous writers. */
101
+ function acquireCredentialsLock() {
102
+ const timeoutMs = credentialsLockTimeoutMs();
103
+ const deadline = Date.now() + timeoutMs;
104
+ while (true) {
105
+ const lock = tryAcquireCredentialsLock();
106
+ if (lock)
107
+ return lock;
108
+ if (Date.now() >= deadline)
109
+ throw credentialsLockTimeoutError(timeoutMs);
110
+ sleepSync(Math.min(CREDENTIALS_LOCK_RETRY_MS, Math.max(1, deadline - Date.now())));
111
+ }
112
+ }
113
+ export function releaseCredentialsLock(lock) {
93
114
  let currentMetadata;
94
115
  try {
95
116
  currentMetadata = readFileSync(lock.path, 'utf8');
@@ -129,17 +150,30 @@ export function withCredentialsTransactionLock(operation) {
129
150
  }
130
151
  const lock = acquireCredentialsLock();
131
152
  heldCredentialsLock = lock;
153
+ let failed = false;
132
154
  try {
133
155
  return operation();
134
156
  }
157
+ catch (error) {
158
+ failed = true;
159
+ throw error;
160
+ }
135
161
  finally {
136
162
  heldCredentialsLock = null;
137
- try {
138
- releaseCredentialsLock(lock);
139
- }
140
- finally {
141
- lock.resolveReleased();
142
- }
163
+ endTransaction(lock, failed);
164
+ }
165
+ }
166
+ /** Release the lock if it is still ours. A release error never hides the transaction's own error. */
167
+ function endTransaction(lock, failed) {
168
+ try {
169
+ releaseCredentialsLock(lock);
170
+ }
171
+ catch (releaseError) {
172
+ if (!failed)
173
+ throw releaseError;
174
+ }
175
+ finally {
176
+ lock.resolveReleased();
143
177
  }
144
178
  }
145
179
  /**
@@ -147,7 +181,10 @@ export function withCredentialsTransactionLock(operation) {
147
181
  * synchronous credential writes are admitted only from this transaction's
148
182
  * async execution context; unrelated same-process work must wait or fail.
149
183
  */
150
- export async function withCredentialsTransactionLockAsync(operation) {
184
+ export async function withCredentialsTransactionLockAsync(operation,
185
+ // How to wait for the cross-process lock. The default blocks the process
186
+ // between tries; stored-login commands pass credentials-transaction.ts's.
187
+ acquire = acquireCredentialsLock) {
151
188
  const lockPath = getCredentialsLockPath();
152
189
  const currentOwner = credentialsTransactionOwner.getStore();
153
190
  if (heldCredentialsLock) {
@@ -163,7 +200,7 @@ export async function withCredentialsTransactionLockAsync(operation) {
163
200
  heldCredentialsLock.depth -= 1;
164
201
  }
165
202
  }
166
- const timeoutMs = readLockDuration('ORIZU_CREDENTIALS_LOCK_TIMEOUT_MS', DEFAULT_CREDENTIALS_LOCK_TIMEOUT_MS, MAX_CREDENTIALS_LOCK_TIMEOUT_MS);
203
+ const timeoutMs = credentialsLockTimeoutMs();
167
204
  let timer;
168
205
  const didRelease = await Promise.race([
169
206
  heldCredentialsLock.released.then(() => true),
@@ -171,26 +208,25 @@ export async function withCredentialsTransactionLockAsync(operation) {
171
208
  ]);
172
209
  if (timer)
173
210
  clearTimeout(timer);
174
- if (!didRelease) {
175
- throw new Error(`ORIZU_CREDENTIALS_LOCK_TIMEOUT: credentials mutation did not acquire the lock within ${timeoutMs}ms. Verify no Orizu process is running, then remove credentials.json.lock manually.`);
176
- }
177
- return await withCredentialsTransactionLockAsync(operation);
211
+ if (!didRelease)
212
+ throw credentialsLockTimeoutError(timeoutMs);
213
+ return await withCredentialsTransactionLockAsync(operation, acquire);
178
214
  }
179
- const lock = acquireCredentialsLock();
215
+ const lock = await acquire();
180
216
  const owner = Symbol('credentials-transaction-owner');
181
217
  lock.asyncOwner = owner;
182
218
  heldCredentialsLock = lock;
219
+ let failed = false;
183
220
  try {
184
221
  return await credentialsTransactionOwner.run(owner, operation);
185
222
  }
223
+ catch (error) {
224
+ failed = true;
225
+ throw error;
226
+ }
186
227
  finally {
187
228
  heldCredentialsLock = null;
188
- try {
189
- releaseCredentialsLock(lock);
190
- }
191
- finally {
192
- lock.resolveReleased();
193
- }
229
+ endTransaction(lock, failed);
194
230
  }
195
231
  }
196
232
  function assertCredentialsLockHeld() {
@@ -244,18 +280,24 @@ function writeCredentials(config) {
244
280
  const tempPath = join(dir, `.credentials.json.${process.pid}.${randomBytes(8).toString('hex')}.tmp`);
245
281
  const payload = JSON.stringify(config, null, 2) + '\n';
246
282
  try {
247
- const fd = openSync(tempPath, 'wx', 0o600);
248
283
  try {
249
- writeFileSync(fd, payload, 'utf-8');
250
- fsyncSync(fd);
284
+ const fd = openSync(tempPath, 'wx', 0o600);
285
+ try {
286
+ writeFileSync(fd, payload, 'utf-8');
287
+ fsyncSync(fd);
288
+ }
289
+ finally {
290
+ closeSync(fd);
291
+ }
292
+ chmodSync(tempPath, 0o600);
293
+ // Never delete the destination to emulate replacement. If this platform
294
+ // cannot atomically replace it, preserve the old file and surface the error.
295
+ renameSync(tempPath, path);
251
296
  }
252
- finally {
253
- closeSync(fd);
297
+ catch (error) {
298
+ // Until the rename succeeds the saved file is untouched.
299
+ throw new Error(`ORIZU_CREDENTIALS_WRITE_FAILED: could not save sign-ins to ${path} (${errorCode(error)}). The saved file is unchanged.`, { cause: error });
254
300
  }
255
- chmodSync(tempPath, 0o600);
256
- // Never delete the destination to emulate replacement. If this platform
257
- // cannot atomically replace it, preserve the old file and surface the error.
258
- renameSync(tempPath, path);
259
301
  chmodSync(path, 0o600);
260
302
  }
261
303
  finally {
@@ -271,12 +313,15 @@ function createEmptyCredentialsConfig() {
271
313
  servers: {},
272
314
  };
273
315
  }
316
+ // A missing file, invalid JSON or an unknown format start empty (the "log in
317
+ // again" recovery). A file that exists but cannot be read is never replaced:
318
+ // that would delete every other saved sign-in.
274
319
  function loadCredentialsConfigForWrite() {
275
320
  try {
276
321
  return loadCredentialsConfig() || createEmptyCredentialsConfig();
277
322
  }
278
- catch {
279
- return createEmptyCredentialsConfig();
323
+ catch (error) {
324
+ throw new Error(`ORIZU_CREDENTIALS_READ_FAILED: could not read ${getCredentialsPath()} (${errorCode(error)}). Saved sign-ins were not changed. Move it aside, then run \`orizu login\` again.`, { cause: error });
280
325
  }
281
326
  }
282
327
  export function loadCredentialsConfig() {
@@ -305,6 +350,28 @@ export function loadCredentialsConfig() {
305
350
  console.warn('Warning: credentials file has unrecognized format — please re-login with `orizu login`');
306
351
  return null;
307
352
  }
353
+ function isNonEmptyString(value) {
354
+ return typeof value === 'string' && value.length > 0;
355
+ }
356
+ /**
357
+ * A saved sign-in this CLI can use: a session (it has an access token) or an
358
+ * API key. Plain code, not Effect Schema: this file is loaded by every
359
+ * command, including hosted sessions signed with ORIZU_TOKEN, which must never
360
+ * load Effect.
361
+ */
362
+ function isServerCredentials(value) {
363
+ if (!value || typeof value !== 'object' || Array.isArray(value))
364
+ return false;
365
+ const entry = value;
366
+ if ('accessToken' in entry) {
367
+ return isNonEmptyString(entry.accessToken)
368
+ && isNonEmptyString(entry.refreshToken)
369
+ && typeof entry.expiresAt === 'number'
370
+ && Number.isFinite(entry.expiresAt);
371
+ }
372
+ return isNonEmptyString(entry.apiKey);
373
+ }
374
+ const warnedUnreadableServers = new Set();
308
375
  export function getServerCredentials(baseUrl) {
309
376
  const config = loadCredentialsConfig();
310
377
  if (!config) {
@@ -313,7 +380,18 @@ export function getServerCredentials(baseUrl) {
313
380
  if (!Object.hasOwn(config.servers, baseUrl)) {
314
381
  return null;
315
382
  }
316
- return config.servers[baseUrl] || null;
383
+ const entry = config.servers[baseUrl];
384
+ if (entry === null || entry === undefined)
385
+ return null;
386
+ if (!isServerCredentials(entry)) {
387
+ // Never the value: a hand-edited file may hold a token here (ORI-2675).
388
+ if (!warnedUnreadableServers.has(baseUrl)) {
389
+ warnedUnreadableServers.add(baseUrl);
390
+ console.warn(`Warning: the saved sign-in for ${baseUrl} is not in a format this CLI understands. Run \`orizu login --server ${baseUrl}\` to replace it, or \`orizu logout --server ${baseUrl}\` to remove it.`);
391
+ }
392
+ return null;
393
+ }
394
+ return entry;
317
395
  }
318
396
  export function saveServerCredentials(baseUrl, credentials) {
319
397
  return withCredentialsTransactionLock(() => {
@@ -345,6 +423,9 @@ export function updateServerCredentials(baseUrl, credentials) {
345
423
  });
346
424
  }
347
425
  export function credentialsEqual(left, right) {
426
+ // Entries read straight from the file may be malformed; those never match.
427
+ if (!isServerCredentials(left) || !isServerCredentials(right))
428
+ return false;
348
429
  if ('apiKey' in left || 'apiKey' in right) {
349
430
  return 'apiKey' in left && 'apiKey' in right && left.apiKey === right.apiKey;
350
431
  }
@@ -363,9 +444,31 @@ export function updateServerCredentialsIfCurrent(baseUrl, expected, replacement)
363
444
  return true;
364
445
  });
365
446
  }
447
+ function isServerAddress(value) {
448
+ if (typeof value !== 'string')
449
+ return false;
450
+ try {
451
+ normalizeBaseUrl(value);
452
+ return true;
453
+ }
454
+ catch {
455
+ return false;
456
+ }
457
+ }
458
+ // Never the value: the "Invalid server URL" error would print it (ORI-2675).
459
+ // No fallback to the default server either: with an app.orizu.ai sign-in
460
+ // saved, that would run the command as a different account.
461
+ function unreadableActiveServerError() {
462
+ return new Error('The saved server in credentials.json isn\'t a valid address. Run `orizu login --server <url>`.');
463
+ }
366
464
  export function getActiveBaseUrl() {
367
465
  const config = loadCredentialsConfig();
368
- return config?.activeBaseUrl || null;
466
+ const active = config?.activeBaseUrl;
467
+ if (active === null || active === undefined || active === '')
468
+ return null;
469
+ if (isServerAddress(active))
470
+ return active;
471
+ throw unreadableActiveServerError();
369
472
  }
370
473
  /** Resolve the selected server and move a retired production credential atomically. */
371
474
  export function resolveCredentialServer(selected) {
@@ -383,7 +486,11 @@ export function resolveCredentialServer(selected) {
383
486
  return withCredentialsTransactionLock(() => {
384
487
  const config = loadCredentialsConfig();
385
488
  // Another process may have selected a different server while we waited.
386
- const currentSource = selected ?? config?.activeBaseUrl;
489
+ const storedSource = config?.activeBaseUrl;
490
+ if (!selected && storedSource !== null && storedSource !== undefined && storedSource !== '' && !isServerAddress(storedSource)) {
491
+ throw unreadableActiveServerError();
492
+ }
493
+ const currentSource = selected ?? (isServerAddress(storedSource) ? storedSource : null);
387
494
  if (!currentSource)
388
495
  return null;
389
496
  const currentTarget = canonicalServerUrl(currentSource);
@@ -535,6 +642,25 @@ export function clearServerCredentials(baseUrl) {
535
642
  return true;
536
643
  });
537
644
  }
645
+ /**
646
+ * Remove a saved sign-in this CLI cannot read (it may be a pasted token).
647
+ * Returns false when there is none, or when it has become readable since.
648
+ */
649
+ export function clearUnreadableServerCredentials(baseUrl) {
650
+ return withCredentialsTransactionLock(() => {
651
+ const config = loadCredentialsConfig();
652
+ if (!config || !Object.hasOwn(config.servers, baseUrl))
653
+ return false;
654
+ const entry = config.servers[baseUrl];
655
+ if (entry === null || entry === undefined || isServerCredentials(entry))
656
+ return false;
657
+ delete config.servers[baseUrl];
658
+ if (config.activeBaseUrl === baseUrl)
659
+ config.activeBaseUrl = null;
660
+ writeCredentials(config);
661
+ return true;
662
+ });
663
+ }
538
664
  export function clearCredentialsFile() {
539
665
  return withCredentialsTransactionLock(() => {
540
666
  const path = getCredentialsPath();
@@ -1 +1 @@
1
- {"version":3,"file":"dataset-transfer-upload.d.ts","sourceRoot":"","sources":["../src/dataset-transfer-upload.ts"],"names":[],"mappings":"AAIA,OAAO,EAAsD,KAAK,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AAM/H,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACzF,aAAa,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;CAC/E;AAGD,KAAK,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;AAChD,KAAK,YAAY,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAAA;CAAE,CAAA;AAE9H,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,YAAY,CAAA;IACpB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,IAAI,EAAE,OAAO,CAAA;IACb,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;CACnD;AA2HD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,qBAAqB,CAAC;IAAC,OAAO,EAAE,sBAAsB,CAAA;CAAE,CAAC,CAE9I"}
1
+ {"version":3,"file":"dataset-transfer-upload.d.ts","sourceRoot":"","sources":["../src/dataset-transfer-upload.ts"],"names":[],"mappings":"AAIA,OAAO,EAAsD,KAAK,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AAM/H,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACzF,aAAa,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;CAC/E;AAGD,KAAK,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;AAChD,KAAK,YAAY,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAAA;CAAE,CAAA;AAE9H,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,YAAY,CAAA;IACpB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,IAAI,EAAE,OAAO,CAAA;IACb,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;CACnD;AAiID,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,qBAAqB,CAAC;IAAC,OAAO,EAAE,sBAAsB,CAAA;CAAE,CAAC,CAE9I"}
@@ -25,6 +25,11 @@ const DatasetUploadApi = Context.Service('orizu/DatasetUploadApi');
25
25
  function isAuthContextChange(cause) {
26
26
  return cause instanceof Error && cause.message.startsWith('ORIZU_AUTH_CONTEXT_CHANGED:');
27
27
  }
28
+ // authedFetch sets this when the server answered 401 and the sign-in refresh
29
+ // then failed, so the request was not sent again: nothing was written.
30
+ function isRequestRejected(cause) {
31
+ return cause instanceof Error && cause.requestRejected === true;
32
+ }
28
33
  // Only the existing authentication client's rejected-token refresh may replay a
29
34
  // request. No transient/transport retries belong around these non-idempotent writes.
30
35
  function post(path, body, context, prefix, timeoutMs) {
@@ -41,7 +46,7 @@ function post(path, body, context, prefix, timeoutMs) {
41
46
  }
42
47
  return await parseJsonResponse(response, context);
43
48
  },
44
- catch: cause => cause instanceof DatasetWriteFailure ? cause : new DatasetWriteFailure(cause instanceof Error ? cause.message : String(cause), requestStarted && !isAuthContextChange(cause) ? 'unknown' : 'rejected', { cause }),
49
+ catch: cause => cause instanceof DatasetWriteFailure ? cause : new DatasetWriteFailure(cause instanceof Error ? cause.message : String(cause), requestStarted && !isAuthContextChange(cause) && !isRequestRejected(cause) ? 'unknown' : 'rejected', { cause }),
45
50
  }).pipe(Effect.timeoutOrElse({
46
51
  duration: timeoutMs,
47
52
  orElse: () => Effect.fail(new DatasetWriteFailure(`DATASET_TRANSFER_TIMEOUT: ${context} exceeded its deadline`, requestStarted ? 'unknown' : 'rejected')),
@@ -0,0 +1,37 @@
1
+ type ListRequest = (path: string, init: RequestInit) => Promise<Response>;
2
+ interface ListShape<T> {
3
+ /** How the list is named in messages: "team list". */
4
+ what: string;
5
+ /** The words before a refused reply's text, as before: "Failed to fetch teams". */
6
+ failed: string;
7
+ /** The label for a reply that isn't JSON: "Teams list". */
8
+ label: string;
9
+ /** The reply's field holding the list: "teams". */
10
+ field: string;
11
+ /** The item with any missing optional field filled in, or null when the CLI can't use it. */
12
+ read: (value: unknown) => T | null;
13
+ }
14
+ export interface ListedTeam {
15
+ id: string;
16
+ name: string;
17
+ slug: string;
18
+ role: string;
19
+ }
20
+ export interface ListedProject {
21
+ id: string;
22
+ name: string;
23
+ slug: string;
24
+ teamId: string;
25
+ teamName: string;
26
+ teamSlug: string;
27
+ role: string;
28
+ }
29
+ export declare const TEAM_LIST: ListShape<ListedTeam>;
30
+ export declare const PROJECT_LIST: ListShape<ListedProject>;
31
+ /**
32
+ * One request with a time limit, its reply read under the same limit. A list
33
+ * Orizu can't read stops here, before any caller writes a file.
34
+ */
35
+ export declare function readDirectoryList<T>(request: ListRequest, path: string, shape: ListShape<T>, timeoutMs?: number): Promise<T[]>;
36
+ export {};
37
+ //# sourceMappingURL=directory-list-read.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directory-list-read.d.ts","sourceRoot":"","sources":["../src/directory-list-read.ts"],"names":[],"mappings":"AAKA,KAAK,WAAW,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AAEzE,UAAU,SAAS,CAAC,CAAC;IACnB,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAA;IACZ,mFAAmF;IACnF,MAAM,EAAE,MAAM,CAAA;IACd,2DAA2D;IAC3D,KAAK,EAAE,MAAM,CAAA;IACb,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAA;IACb,6FAA6F;IAC7F,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,CAAC,GAAG,IAAI,CAAA;CACnC;AAgBD,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;CACb;AAKD,eAAO,MAAM,SAAS,EAAE,SAAS,CAAC,UAAU,CAU3C,CAAA;AAID,eAAO,MAAM,YAAY,EAAE,SAAS,CAAC,aAAa,CAmBjD,CAAA;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,CAAC,EACvC,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EACnB,SAAS,SAA0B,GAClC,OAAO,CAAC,CAAC,EAAE,CAAC,CAwBd"}
@@ -0,0 +1,87 @@
1
+ // The team and project lists that setup, `teams list` and `projects list`
2
+ // read. Plain TypeScript on purpose: hosted sessions list teams and projects
3
+ // with ORIZU_TOKEN or ORIZU_TOKEN_FILE set, and that path loads no Effect.
4
+ import { parseJsonResponse } from './json-response.js';
5
+ const isRecord = (value) => value !== null && typeof value === 'object' && !Array.isArray(value);
6
+ // Every command that names a project reads these lists, and none of them read
7
+ // ORIZU_DATASET_TRANSFER_TIMEOUT_MS before, so they get a fixed limit. Setup
8
+ // passes the setting, as its team and project creates already use it.
9
+ const DEFAULT_LIST_TIMEOUT_MS = 120_000;
10
+ const isNonEmptyString = (value) => typeof value === 'string' && value.length > 0;
11
+ /** A field the CLI only shows: absent, null or a string. */
12
+ const isOptionalString = (value) => value === undefined || value === null || typeof value === 'string';
13
+ // The CLI needs a team's id and slug. Its name and role are only shown, and a
14
+ // missing role was already shown as "-", so those may be missing; any other
15
+ // field the server sends is kept as it came.
16
+ export const TEAM_LIST = {
17
+ what: 'team list',
18
+ failed: 'Failed to fetch teams',
19
+ label: 'Teams list',
20
+ field: 'teams',
21
+ read: value => {
22
+ if (!isRecord(value) || !isNonEmptyString(value.id) || !isNonEmptyString(value.slug))
23
+ return null;
24
+ if (!isOptionalString(value.name) || !isOptionalString(value.role))
25
+ return null;
26
+ return { ...value, id: value.id, slug: value.slug, name: value.name ?? value.slug, role: value.role ?? '' };
27
+ },
28
+ };
29
+ // Setup files each project by its slug and records its id, under its team's
30
+ // slug, so those three must be there; the rest are only shown.
31
+ export const PROJECT_LIST = {
32
+ what: 'project list',
33
+ failed: 'Failed to fetch projects',
34
+ label: 'Projects list',
35
+ field: 'projects',
36
+ read: value => {
37
+ if (!isRecord(value) || !isNonEmptyString(value.id) || !isNonEmptyString(value.slug) || !isNonEmptyString(value.teamSlug))
38
+ return null;
39
+ if (!isOptionalString(value.name) || !isOptionalString(value.teamId) || !isOptionalString(value.teamName) || !isOptionalString(value.role))
40
+ return null;
41
+ return {
42
+ ...value,
43
+ id: value.id,
44
+ slug: value.slug,
45
+ teamSlug: value.teamSlug,
46
+ name: value.name ?? value.slug,
47
+ teamId: value.teamId ?? '',
48
+ teamName: value.teamName ?? value.teamSlug,
49
+ role: value.role ?? '',
50
+ };
51
+ },
52
+ };
53
+ /**
54
+ * One request with a time limit, its reply read under the same limit. A list
55
+ * Orizu can't read stops here, before any caller writes a file.
56
+ */
57
+ export async function readDirectoryList(request, path, shape, timeoutMs = DEFAULT_LIST_TIMEOUT_MS) {
58
+ const controller = new AbortController();
59
+ let timedOut = false;
60
+ const timer = setTimeout(() => { timedOut = true; controller.abort(); }, timeoutMs);
61
+ try {
62
+ const response = await request(path, { signal: controller.signal });
63
+ if (!response.ok)
64
+ throw new Error(`${shape.failed}: ${await response.text()}`);
65
+ const data = await parseJsonResponse(response, shape.label);
66
+ const list = isRecord(data) ? data[shape.field] : undefined;
67
+ const unreadable = new Error(`The server sent a ${shape.what} Orizu can't read. Run \`orizu update\` and try again; if it still fails, the server may be having trouble.`);
68
+ if (!Array.isArray(list))
69
+ throw unreadable;
70
+ const items = [];
71
+ for (const value of list) {
72
+ const item = shape.read(value);
73
+ if (item === null)
74
+ throw unreadable;
75
+ items.push(item);
76
+ }
77
+ return items;
78
+ }
79
+ catch (error) {
80
+ if (timedOut)
81
+ throw new Error(`Orizu didn't get the ${shape.what} within ${timeoutMs / 1000} s. Check your connection and try again.`);
82
+ throw error;
83
+ }
84
+ finally {
85
+ clearTimeout(timer);
86
+ }
87
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"hosted-boot.d.ts","sourceRoot":"","sources":["../src/hosted-boot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hosted-boot.d.ts","sourceRoot":"","sources":["../src/hosted-boot.ts"],"names":[],"mappings":"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"}