agent-relay 6.0.16 → 6.0.18

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 (63) hide show
  1. package/dist/index.cjs +111 -32
  2. package/dist/packages/cloud/src/api-client.d.ts +33 -0
  3. package/dist/packages/cloud/src/api-client.d.ts.map +1 -0
  4. package/dist/packages/cloud/src/api-client.js +123 -0
  5. package/dist/packages/cloud/src/api-client.js.map +1 -0
  6. package/dist/packages/cloud/src/auth.d.ts +13 -0
  7. package/dist/packages/cloud/src/auth.d.ts.map +1 -0
  8. package/dist/packages/cloud/src/auth.js +299 -0
  9. package/dist/packages/cloud/src/auth.js.map +1 -0
  10. package/dist/packages/cloud/src/connect.d.ts +45 -0
  11. package/dist/packages/cloud/src/connect.d.ts.map +1 -0
  12. package/dist/packages/cloud/src/connect.js +166 -0
  13. package/dist/packages/cloud/src/connect.js.map +1 -0
  14. package/dist/packages/cloud/src/index.d.ts +10 -0
  15. package/dist/packages/cloud/src/index.d.ts.map +1 -0
  16. package/dist/packages/cloud/src/index.js +10 -0
  17. package/dist/packages/cloud/src/index.js.map +1 -0
  18. package/dist/packages/cloud/src/lib/ssh-interactive.d.ts +70 -0
  19. package/dist/packages/cloud/src/lib/ssh-interactive.d.ts.map +1 -0
  20. package/dist/packages/cloud/src/lib/ssh-interactive.js +440 -0
  21. package/dist/packages/cloud/src/lib/ssh-interactive.js.map +1 -0
  22. package/dist/packages/cloud/src/lib/ssh-runtime.d.ts +35 -0
  23. package/dist/packages/cloud/src/lib/ssh-runtime.d.ts.map +1 -0
  24. package/dist/packages/cloud/src/lib/ssh-runtime.js +52 -0
  25. package/dist/packages/cloud/src/lib/ssh-runtime.js.map +1 -0
  26. package/dist/packages/cloud/src/proactive-runtime.d.ts +24 -0
  27. package/dist/packages/cloud/src/proactive-runtime.d.ts.map +1 -0
  28. package/dist/packages/cloud/src/proactive-runtime.js +315 -0
  29. package/dist/packages/cloud/src/proactive-runtime.js.map +1 -0
  30. package/dist/packages/cloud/src/types.d.ts +200 -0
  31. package/dist/packages/cloud/src/types.d.ts.map +1 -0
  32. package/dist/packages/cloud/src/types.js +12 -0
  33. package/dist/packages/cloud/src/types.js.map +1 -0
  34. package/dist/packages/cloud/src/workflows.d.ts +65 -0
  35. package/dist/packages/cloud/src/workflows.d.ts.map +1 -0
  36. package/dist/packages/cloud/src/workflows.js +892 -0
  37. package/dist/packages/cloud/src/workflows.js.map +1 -0
  38. package/dist/packages/cloud/src/workspaces.d.ts +11 -0
  39. package/dist/packages/cloud/src/workspaces.d.ts.map +1 -0
  40. package/dist/packages/cloud/src/workspaces.js +146 -0
  41. package/dist/packages/cloud/src/workspaces.js.map +1 -0
  42. package/dist/src/cli/bootstrap.d.ts +3 -1
  43. package/dist/src/cli/bootstrap.d.ts.map +1 -1
  44. package/dist/src/cli/bootstrap.js +17 -3
  45. package/dist/src/cli/bootstrap.js.map +1 -1
  46. package/dist/src/cli/commands/cloud.js +1 -1
  47. package/dist/src/cli/commands/cloud.js.map +1 -1
  48. package/dist/src/cli/commands/dlq.d.ts +20 -0
  49. package/dist/src/cli/commands/dlq.d.ts.map +1 -0
  50. package/dist/src/cli/commands/dlq.js +456 -0
  51. package/dist/src/cli/commands/dlq.js.map +1 -0
  52. package/dist/src/cli/commands/proactive-bootstrap.d.ts +10 -0
  53. package/dist/src/cli/commands/proactive-bootstrap.d.ts.map +1 -0
  54. package/dist/src/cli/commands/proactive-bootstrap.js +133 -0
  55. package/dist/src/cli/commands/proactive-bootstrap.js.map +1 -0
  56. package/dist/src/cli/commands/relay-runtime.d.ts +58 -0
  57. package/dist/src/cli/commands/relay-runtime.d.ts.map +1 -0
  58. package/dist/src/cli/commands/relay-runtime.js +484 -0
  59. package/dist/src/cli/commands/relay-runtime.js.map +1 -0
  60. package/dist/src/cli/commands/setup.d.ts.map +1 -1
  61. package/dist/src/cli/commands/setup.js +11 -9
  62. package/dist/src/cli/commands/setup.js.map +1 -1
  63. package/package.json +11 -10
package/dist/index.cjs CHANGED
@@ -1364,6 +1364,9 @@ var require_sender = __commonJS({
1364
1364
  "use strict";
1365
1365
  var { Duplex } = require("stream");
1366
1366
  var { randomFillSync } = require("crypto");
1367
+ var {
1368
+ types: { isUint8Array }
1369
+ } = require("util");
1367
1370
  var PerMessageDeflate2 = require_permessage_deflate();
1368
1371
  var { EMPTY_BUFFER, kWebSocket, NOOP } = require_constants();
1369
1372
  var { isBlob, isValidStatusCode } = require_validation();
@@ -1517,8 +1520,10 @@ var require_sender = __commonJS({
1517
1520
  buf.writeUInt16BE(code, 0);
1518
1521
  if (typeof data === "string") {
1519
1522
  buf.write(data, 2);
1520
- } else {
1523
+ } else if (isUint8Array(data)) {
1521
1524
  buf.set(data, 2);
1525
+ } else {
1526
+ throw new TypeError("Second argument must be a string or a Uint8Array");
1522
1527
  }
1523
1528
  }
1524
1529
  const options = {
@@ -42505,17 +42510,72 @@ function estimateTokens(text) {
42505
42510
  return Math.ceil(length / 3.5);
42506
42511
  }
42507
42512
  const sampleSize = Math.min(1e3, length);
42508
- const sample = text.substring(0, sampleSize);
42509
42513
  let codeChars = 0;
42510
42514
  let whitespaceChars = 0;
42511
- let _punctuationChars = 0;
42512
- for (let i = 0; i < sample.length; i++) {
42513
- const char = sample[i];
42514
- if (/\s/.test(char)) {
42515
+ for (let i = 0; i < sampleSize; i++) {
42516
+ const code = text.charCodeAt(i);
42517
+ if (code <= 32 || code === 127) {
42515
42518
  whitespaceChars++;
42516
- } else if (/[{}[\]();:,.<>!=+\-*/&|^~`@#$%]/.test(char)) {
42517
- _punctuationChars++;
42518
- codeChars++;
42519
+ continue;
42520
+ }
42521
+ switch (code) {
42522
+ case 33:
42523
+ // !
42524
+ case 35:
42525
+ // #
42526
+ case 36:
42527
+ // $
42528
+ case 37:
42529
+ // %
42530
+ case 38:
42531
+ // &
42532
+ case 40:
42533
+ // (
42534
+ case 41:
42535
+ // )
42536
+ case 42:
42537
+ // *
42538
+ case 43:
42539
+ // +
42540
+ case 44:
42541
+ // ,
42542
+ case 45:
42543
+ // -
42544
+ case 46:
42545
+ // .
42546
+ case 47:
42547
+ // /
42548
+ case 58:
42549
+ // :
42550
+ case 59:
42551
+ // ;
42552
+ case 60:
42553
+ // <
42554
+ case 61:
42555
+ // =
42556
+ case 62:
42557
+ // >
42558
+ case 64:
42559
+ // @
42560
+ case 91:
42561
+ // [
42562
+ case 93:
42563
+ // ]
42564
+ case 94:
42565
+ // ^
42566
+ case 96:
42567
+ // `
42568
+ case 123:
42569
+ // {
42570
+ case 124:
42571
+ // |
42572
+ case 125:
42573
+ // }
42574
+ case 126:
42575
+ codeChars++;
42576
+ break;
42577
+ default:
42578
+ break;
42519
42579
  }
42520
42580
  }
42521
42581
  const codeRatio = codeChars / sampleSize;
@@ -42654,15 +42714,17 @@ function benchmarkTokenEstimation(iterations = 1e4) {
42654
42714
  "A".repeat(1e4)
42655
42715
  // 10k chars
42656
42716
  ];
42717
+ for (const text of testTexts) {
42718
+ estimateTokens(text);
42719
+ }
42657
42720
  let maxNs = 0;
42658
42721
  let totalTokens = 0;
42659
42722
  const start = process.hrtime.bigint();
42660
42723
  for (let i = 0; i < iterations; i++) {
42661
42724
  for (const text of testTexts) {
42662
- const s3 = process.hrtime.bigint();
42663
- const tokens = estimateTokens(text);
42664
- totalTokens += tokens;
42665
- const elapsed = Number(process.hrtime.bigint() - s3);
42725
+ const sampleStart = process.hrtime.bigint();
42726
+ totalTokens += estimateTokens(text);
42727
+ const elapsed = Number(process.hrtime.bigint() - sampleStart);
42666
42728
  if (elapsed > maxNs)
42667
42729
  maxNs = elapsed;
42668
42730
  }
@@ -42740,12 +42802,15 @@ var init_context_compaction = __esm({
42740
42802
  importanceMap.set(result[i].id, calculateImportance(result[i], i, result.length));
42741
42803
  }
42742
42804
  if (this.config.enableDeduplication) {
42805
+ const protectedRecentIds = new Set(this.config.keepRecentCount > 0 ? result.slice(-this.config.keepRecentCount).map((m2) => m2.id) : []);
42743
42806
  const duplicates = findDuplicates(result, this.config.deduplicationThreshold);
42744
42807
  if (duplicates.size > 0) {
42745
42808
  const toRemove = /* @__PURE__ */ new Set();
42746
42809
  for (const [, dups] of duplicates) {
42747
42810
  for (const id of dups) {
42748
- toRemove.add(id);
42811
+ if (!protectedRecentIds.has(id)) {
42812
+ toRemove.add(id);
42813
+ }
42749
42814
  }
42750
42815
  }
42751
42816
  result = result.filter((m2) => !toRemove.has(m2.id));
@@ -42789,10 +42854,7 @@ var init_context_compaction = __esm({
42789
42854
  if (messagesToSummarize.length >= 3) {
42790
42855
  const summary = createSummary(messagesToSummarize);
42791
42856
  const summaryIds = new Set(messagesToSummarize.map((m2) => m2.id));
42792
- result = [
42793
- summary,
42794
- ...result.filter((m2) => !summaryIds.has(m2.id))
42795
- ];
42857
+ result = [summary, ...result.filter((m2) => !summaryIds.has(m2.id))];
42796
42858
  strategy = "summarize";
42797
42859
  return {
42798
42860
  messages: result,
@@ -91144,6 +91206,14 @@ function replaceOrphanedCsiPrefix(match) {
91144
91206
  return replacement;
91145
91207
  }
91146
91208
  function stripAnsiFast(str) {
91209
+ if (str.length === 0) {
91210
+ return str;
91211
+ }
91212
+ const hasEscape = str.indexOf("\x1B") !== -1;
91213
+ const hasCarriageReturn = str.indexOf("\r") !== -1;
91214
+ if (!hasEscape && !hasCarriageReturn && str.indexOf("[") === -1) {
91215
+ return str;
91216
+ }
91147
91217
  CURSOR_FORWARD_CSI_COMPILED.lastIndex = 0;
91148
91218
  ORPHANED_CURSOR_FORWARD_CSI_COMPILED.lastIndex = 0;
91149
91219
  ANSI_PATTERN_COMPILED.lastIndex = 0;
@@ -91241,14 +91311,17 @@ function benchmarkPatterns(iterations = 1e4) {
91241
91311
  const results = {};
91242
91312
  {
91243
91313
  let maxNs = 0;
91314
+ for (const str of testStrings) {
91315
+ const sampleStart = process.hrtime.bigint();
91316
+ isInstructionalTextFast(str);
91317
+ const elapsed = Number(process.hrtime.bigint() - sampleStart);
91318
+ if (elapsed > maxNs)
91319
+ maxNs = elapsed;
91320
+ }
91244
91321
  const start = process.hrtime.bigint();
91245
91322
  for (let i = 0; i < iterations; i++) {
91246
91323
  for (const str of testStrings) {
91247
- const s3 = process.hrtime.bigint();
91248
91324
  isInstructionalTextFast(str);
91249
- const elapsed = Number(process.hrtime.bigint() - s3);
91250
- if (elapsed > maxNs)
91251
- maxNs = elapsed;
91252
91325
  }
91253
91326
  }
91254
91327
  const totalNs = Number(process.hrtime.bigint() - start);
@@ -91259,14 +91332,17 @@ function benchmarkPatterns(iterations = 1e4) {
91259
91332
  }
91260
91333
  {
91261
91334
  let maxNs = 0;
91335
+ for (const str of testStrings) {
91336
+ const sampleStart = process.hrtime.bigint();
91337
+ stripAnsiFast(str);
91338
+ const elapsed = Number(process.hrtime.bigint() - sampleStart);
91339
+ if (elapsed > maxNs)
91340
+ maxNs = elapsed;
91341
+ }
91262
91342
  const start = process.hrtime.bigint();
91263
91343
  for (let i = 0; i < iterations; i++) {
91264
91344
  for (const str of testStrings) {
91265
- const s3 = process.hrtime.bigint();
91266
91345
  stripAnsiFast(str);
91267
- const elapsed = Number(process.hrtime.bigint() - s3);
91268
- if (elapsed > maxNs)
91269
- maxNs = elapsed;
91270
91346
  }
91271
91347
  }
91272
91348
  const totalNs = Number(process.hrtime.bigint() - start);
@@ -91278,14 +91354,17 @@ function benchmarkPatterns(iterations = 1e4) {
91278
91354
  {
91279
91355
  const targets = ["AgentName", "Lead", "Worker", "target", "Developer"];
91280
91356
  let maxNs = 0;
91357
+ for (const target of targets) {
91358
+ const sampleStart = process.hrtime.bigint();
91359
+ isPlaceholderTargetFast(target);
91360
+ const elapsed = Number(process.hrtime.bigint() - sampleStart);
91361
+ if (elapsed > maxNs)
91362
+ maxNs = elapsed;
91363
+ }
91281
91364
  const start = process.hrtime.bigint();
91282
91365
  for (let i = 0; i < iterations; i++) {
91283
- for (const t of targets) {
91284
- const s3 = process.hrtime.bigint();
91285
- isPlaceholderTargetFast(t);
91286
- const elapsed = Number(process.hrtime.bigint() - s3);
91287
- if (elapsed > maxNs)
91288
- maxNs = elapsed;
91366
+ for (const target of targets) {
91367
+ isPlaceholderTargetFast(target);
91289
91368
  }
91290
91369
  }
91291
91370
  const totalNs = Number(process.hrtime.bigint() - start);
@@ -0,0 +1,33 @@
1
+ export type CloudApiClientOptions = {
2
+ apiUrl: string;
3
+ accessToken: string;
4
+ refreshToken: string;
5
+ accessTokenExpiresAt: string;
6
+ refreshTokenExpiresAt?: string;
7
+ };
8
+ export type CloudApiClientSnapshot = {
9
+ apiUrl: string;
10
+ accessToken: string;
11
+ refreshToken: string;
12
+ accessTokenExpiresAt: string;
13
+ refreshTokenExpiresAt?: string;
14
+ };
15
+ export declare function buildApiUrl(apiUrl: string, p: string): URL;
16
+ export declare class CloudApiClient {
17
+ private readonly options;
18
+ private accessToken;
19
+ private refreshToken;
20
+ private accessTokenExpiresAt;
21
+ private refreshTokenExpiresAt?;
22
+ private refreshPromise;
23
+ constructor(options: CloudApiClientOptions);
24
+ static fromEnv(env: NodeJS.ProcessEnv): CloudApiClient | null;
25
+ snapshot(): CloudApiClientSnapshot;
26
+ fetch(p: string, init?: RequestInit): Promise<Response>;
27
+ revoke(): Promise<void>;
28
+ private refresh;
29
+ private doRefresh;
30
+ private buildHeaders;
31
+ private shouldRefresh;
32
+ }
33
+ //# sourceMappingURL=api-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../../../packages/cloud/src/api-client.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC;AAYF,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,GAAG,CAE1D;AAED,qBAAa,cAAc;IAOb,OAAO,CAAC,QAAQ,CAAC,OAAO;IANpC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,qBAAqB,CAAC,CAAS;IACvC,OAAO,CAAC,cAAc,CAA8B;gBAEvB,OAAO,EAAE,qBAAqB;IAO3D,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,cAAc,GAAG,IAAI;IAoB7D,QAAQ,IAAI,sBAAsB;IAU5B,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAoB3D,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;YAcf,OAAO;YAgBP,SAAS;IA8BvB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,aAAa;CAQtB"}
@@ -0,0 +1,123 @@
1
+ import { REFRESH_WINDOW_MS } from './types.js';
2
+ function trimLeadingSlash(p) {
3
+ return p.replace(/^\/+/, '');
4
+ }
5
+ function withTrailingSlash(p) {
6
+ return p.endsWith('/') ? p : `${p}/`;
7
+ }
8
+ export function buildApiUrl(apiUrl, p) {
9
+ return new URL(trimLeadingSlash(p), withTrailingSlash(apiUrl));
10
+ }
11
+ export class CloudApiClient {
12
+ options;
13
+ accessToken;
14
+ refreshToken;
15
+ accessTokenExpiresAt;
16
+ refreshTokenExpiresAt;
17
+ refreshPromise = null;
18
+ constructor(options) {
19
+ this.options = options;
20
+ this.accessToken = options.accessToken;
21
+ this.refreshToken = options.refreshToken;
22
+ this.accessTokenExpiresAt = options.accessTokenExpiresAt;
23
+ this.refreshTokenExpiresAt = options.refreshTokenExpiresAt;
24
+ }
25
+ static fromEnv(env) {
26
+ const apiUrl = env.CLOUD_API_URL?.trim();
27
+ const accessToken = env.CLOUD_API_ACCESS_TOKEN?.trim();
28
+ const refreshToken = env.CLOUD_API_REFRESH_TOKEN?.trim();
29
+ const accessTokenExpiresAt = env.CLOUD_API_ACCESS_TOKEN_EXPIRES_AT?.trim();
30
+ const refreshTokenExpiresAt = env.CLOUD_API_REFRESH_TOKEN_EXPIRES_AT?.trim();
31
+ if (!apiUrl || !accessToken || !refreshToken || !accessTokenExpiresAt) {
32
+ return null;
33
+ }
34
+ return new CloudApiClient({
35
+ apiUrl,
36
+ accessToken,
37
+ refreshToken,
38
+ accessTokenExpiresAt,
39
+ refreshTokenExpiresAt,
40
+ });
41
+ }
42
+ snapshot() {
43
+ return {
44
+ apiUrl: this.options.apiUrl,
45
+ accessToken: this.accessToken,
46
+ refreshToken: this.refreshToken,
47
+ accessTokenExpiresAt: this.accessTokenExpiresAt,
48
+ ...(this.refreshTokenExpiresAt ? { refreshTokenExpiresAt: this.refreshTokenExpiresAt } : {}),
49
+ };
50
+ }
51
+ async fetch(p, init = {}) {
52
+ await this.refresh();
53
+ const response = await fetch(buildApiUrl(this.options.apiUrl, p), {
54
+ ...init,
55
+ headers: this.buildHeaders(init.headers),
56
+ });
57
+ if (response.status !== 401) {
58
+ return response;
59
+ }
60
+ await this.refresh(true);
61
+ return fetch(buildApiUrl(this.options.apiUrl, p), {
62
+ ...init,
63
+ headers: this.buildHeaders(init.headers),
64
+ });
65
+ }
66
+ async revoke() {
67
+ const response = await fetch(buildApiUrl(this.options.apiUrl, '/api/v1/auth/token/revoke'), {
68
+ method: 'POST',
69
+ headers: {
70
+ 'Content-Type': 'application/json',
71
+ },
72
+ body: JSON.stringify({ token: this.refreshToken }),
73
+ });
74
+ if (!response.ok && response.status !== 404) {
75
+ throw new Error(`Failed to revoke API token: ${response.status} ${response.statusText}`);
76
+ }
77
+ }
78
+ async refresh(force = false) {
79
+ if (this.refreshPromise) {
80
+ return this.refreshPromise;
81
+ }
82
+ if (!force && !this.shouldRefresh()) {
83
+ return;
84
+ }
85
+ this.refreshPromise = this.doRefresh().finally(() => {
86
+ this.refreshPromise = null;
87
+ });
88
+ return this.refreshPromise;
89
+ }
90
+ async doRefresh() {
91
+ const response = await fetch(buildApiUrl(this.options.apiUrl, '/api/v1/auth/token/refresh'), {
92
+ method: 'POST',
93
+ headers: {
94
+ 'Content-Type': 'application/json',
95
+ },
96
+ body: JSON.stringify({ refreshToken: this.refreshToken }),
97
+ });
98
+ if (!response.ok) {
99
+ throw new Error(`Failed to refresh API token: ${response.status} ${response.statusText}`);
100
+ }
101
+ const payload = (await response.json());
102
+ if (!payload.accessToken || !payload.accessTokenExpiresAt || !payload.refreshToken) {
103
+ throw new Error('Refresh response missing token fields');
104
+ }
105
+ this.accessToken = payload.accessToken;
106
+ this.accessTokenExpiresAt = payload.accessTokenExpiresAt;
107
+ this.refreshToken = payload.refreshToken;
108
+ this.refreshTokenExpiresAt = payload.refreshTokenExpiresAt;
109
+ }
110
+ buildHeaders(headers) {
111
+ const merged = new Headers(headers);
112
+ merged.set('Authorization', `Bearer ${this.accessToken}`);
113
+ return merged;
114
+ }
115
+ shouldRefresh() {
116
+ const expiresAt = Date.parse(this.accessTokenExpiresAt);
117
+ if (Number.isNaN(expiresAt)) {
118
+ return true;
119
+ }
120
+ return expiresAt - Date.now() <= REFRESH_WINDOW_MS;
121
+ }
122
+ }
123
+ //# sourceMappingURL=api-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../../../packages/cloud/src/api-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { type StoredAuth } from './types.js';
2
+ export declare function readStoredAuth(env?: NodeJS.ProcessEnv): Promise<StoredAuth | null>;
3
+ export declare function writeStoredAuth(auth: StoredAuth): Promise<void>;
4
+ export declare function clearStoredAuth(): Promise<void>;
5
+ export declare function refreshStoredAuth(auth: StoredAuth): Promise<StoredAuth>;
6
+ export declare function ensureAuthenticated(apiUrl: string, options?: {
7
+ force?: boolean;
8
+ }): Promise<StoredAuth>;
9
+ export declare function authorizedApiFetch(auth: StoredAuth, requestPath: string, init: RequestInit): Promise<{
10
+ response: Response;
11
+ auth: StoredAuth;
12
+ }>;
13
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../../packages/cloud/src/auth.ts"],"names":[],"mappings":"AAOA,OAAO,EAAqC,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAgEhF,wBAAsB,cAAc,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAarG;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CASrE;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAErD;AAyKD,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAgC7E;AASD,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5B,OAAO,CAAC,UAAU,CAAC,CA0BrB;AAkBD,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,UAAU,EAChB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC,CAoBnD"}