@agentworkforce/deploy 3.0.7 → 3.0.9

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 (41) hide show
  1. package/dist/cloud-url.d.ts +54 -0
  2. package/dist/cloud-url.d.ts.map +1 -0
  3. package/dist/cloud-url.js +88 -0
  4. package/dist/cloud-url.js.map +1 -0
  5. package/dist/cloud-url.test.d.ts +2 -0
  6. package/dist/cloud-url.test.d.ts.map +1 -0
  7. package/dist/cloud-url.test.js +99 -0
  8. package/dist/cloud-url.test.js.map +1 -0
  9. package/dist/connect.d.ts +17 -2
  10. package/dist/connect.d.ts.map +1 -1
  11. package/dist/connect.js +51 -14
  12. package/dist/connect.js.map +1 -1
  13. package/dist/connect.test.js +160 -4
  14. package/dist/connect.test.js.map +1 -1
  15. package/dist/deploy.d.ts +13 -1
  16. package/dist/deploy.d.ts.map +1 -1
  17. package/dist/deploy.js +57 -12
  18. package/dist/deploy.js.map +1 -1
  19. package/dist/deploy.test.js +129 -0
  20. package/dist/deploy.test.js.map +1 -1
  21. package/dist/error-format.d.ts +17 -0
  22. package/dist/error-format.d.ts.map +1 -0
  23. package/dist/error-format.js +36 -0
  24. package/dist/error-format.js.map +1 -0
  25. package/dist/error-format.test.d.ts +2 -0
  26. package/dist/error-format.test.d.ts.map +1 -0
  27. package/dist/error-format.test.js +51 -0
  28. package/dist/error-format.test.js.map +1 -0
  29. package/dist/index.d.ts +5 -3
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +2 -0
  32. package/dist/index.js.map +1 -1
  33. package/dist/login.d.ts.map +1 -1
  34. package/dist/login.js +28 -2
  35. package/dist/login.js.map +1 -1
  36. package/dist/modes/cloud.d.ts.map +1 -1
  37. package/dist/modes/cloud.js +41 -20
  38. package/dist/modes/cloud.js.map +1 -1
  39. package/dist/modes/cloud.test.js +107 -6
  40. package/dist/modes/cloud.test.js.map +1 -1
  41. package/package.json +3 -3
@@ -0,0 +1,54 @@
1
+ import type { ActiveWorkspacePointer } from './login.js';
2
+ /**
3
+ * Canonicalize the workforce cloud URL to the public host the user logged
4
+ * into, regardless of which edge / origin-bypass URL the auth response
5
+ * happened to come from.
6
+ *
7
+ * Why this exists: cloud's auth-result handler currently echoes
8
+ * `request.url` back as `apiUrl`, so when the auth request happens to
9
+ * route through the SST/Cloudflare origin-bypass (`origin.agentrelay.cloud`)
10
+ * the CLI ends up persisting that hostname and sending every subsequent
11
+ * API call to it. Session cookies and Bearer tokens don't validate
12
+ * cross-subdomain, so every call 401s.
13
+ *
14
+ * This is a CLI-side mitigation; the proper structural fix is cloud-side
15
+ * (the handler should emit a configured public URL, never `request.url`).
16
+ *
17
+ * Rules:
18
+ * - Map known-bypass hostnames (`origin.agentrelay.cloud`,
19
+ * `*.agentrelay.cloud`) → canonical `https://agentrelay.com/cloud`.
20
+ * - Map the apex `agentrelay.com` (no `/cloud` basePath) → canonical
21
+ * `https://agentrelay.com/cloud` so callers that hardcoded the apex
22
+ * don't land on the Next.js marketing 404 page.
23
+ * - Leave other hostnames untouched (dev `localhost:*`, custom tenants,
24
+ * etc.) — only the cloud-bypass family is remapped.
25
+ * - Strip a trailing slash so equality comparisons in the rest of the
26
+ * deploy code stay stable.
27
+ */
28
+ export declare function canonicalizeCloudUrl(input: string): string;
29
+ /**
30
+ * Single source of truth for "which cloud URL should this CLI invocation
31
+ * talk to?" Resolution order, top wins:
32
+ *
33
+ * 1. Explicit `--cloud-url` flag.
34
+ * 2. `WORKFORCE_DEPLOY_CLOUD_URL` (preferred env override).
35
+ * 3. `WORKFORCE_CLOUD_URL` (legacy env override).
36
+ * 4. `cloudUrl` recorded in `~/.agentworkforce/active.json` by
37
+ * `agentworkforce login`.
38
+ * 5. `defaultApiUrl()` from `@agent-relay/cloud` (the public canonical
39
+ * URL — currently `https://agentrelay.com/cloud`).
40
+ *
41
+ * The result is always run through {@link canonicalizeCloudUrl} so
42
+ * downstream consumers never see an origin-bypass hostname or the
43
+ * `/cloud`-less apex.
44
+ */
45
+ export declare function resolveCloudUrl(context?: CloudUrlContext): string;
46
+ export interface CloudUrlContext {
47
+ /** Explicit `--cloud-url` flag value, if any. */
48
+ flag?: string | undefined;
49
+ /** Process env override; defaults to `process.env`. Pass `{}` to ignore env. */
50
+ env?: NodeJS.ProcessEnv;
51
+ /** Active workspace pointer read from `~/.agentworkforce/active.json`. */
52
+ active?: Pick<ActiveWorkspacePointer, 'cloudUrl'> | null | undefined;
53
+ }
54
+ //# sourceMappingURL=cloud-url.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud-url.d.ts","sourceRoot":"","sources":["../src/cloud-url.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CA2B1D;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAAC,OAAO,GAAE,eAAoB,GAAG,MAAM,CAUrE;AAED,MAAM,WAAW,eAAe;IAC9B,iDAAiD;IACjD,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,gFAAgF;IAChF,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,IAAI,CAAC,sBAAsB,EAAE,UAAU,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;CACtE"}
@@ -0,0 +1,88 @@
1
+ import { defaultApiUrl } from '@agent-relay/cloud';
2
+ /**
3
+ * Canonicalize the workforce cloud URL to the public host the user logged
4
+ * into, regardless of which edge / origin-bypass URL the auth response
5
+ * happened to come from.
6
+ *
7
+ * Why this exists: cloud's auth-result handler currently echoes
8
+ * `request.url` back as `apiUrl`, so when the auth request happens to
9
+ * route through the SST/Cloudflare origin-bypass (`origin.agentrelay.cloud`)
10
+ * the CLI ends up persisting that hostname and sending every subsequent
11
+ * API call to it. Session cookies and Bearer tokens don't validate
12
+ * cross-subdomain, so every call 401s.
13
+ *
14
+ * This is a CLI-side mitigation; the proper structural fix is cloud-side
15
+ * (the handler should emit a configured public URL, never `request.url`).
16
+ *
17
+ * Rules:
18
+ * - Map known-bypass hostnames (`origin.agentrelay.cloud`,
19
+ * `*.agentrelay.cloud`) → canonical `https://agentrelay.com/cloud`.
20
+ * - Map the apex `agentrelay.com` (no `/cloud` basePath) → canonical
21
+ * `https://agentrelay.com/cloud` so callers that hardcoded the apex
22
+ * don't land on the Next.js marketing 404 page.
23
+ * - Leave other hostnames untouched (dev `localhost:*`, custom tenants,
24
+ * etc.) — only the cloud-bypass family is remapped.
25
+ * - Strip a trailing slash so equality comparisons in the rest of the
26
+ * deploy code stay stable.
27
+ */
28
+ export function canonicalizeCloudUrl(input) {
29
+ const trimmed = input.trim();
30
+ if (!trimmed)
31
+ return trimmed;
32
+ let url;
33
+ try {
34
+ url = new URL(trimmed);
35
+ }
36
+ catch {
37
+ // If it doesn't parse as a URL we don't know how to remap it; return
38
+ // the original (trimmed) string so the caller can choose to error
39
+ // downstream.
40
+ return trimmed;
41
+ }
42
+ const host = url.hostname.toLowerCase();
43
+ if (host === 'agentrelay.cloud' || host.endsWith('.agentrelay.cloud')) {
44
+ return 'https://agentrelay.com/cloud';
45
+ }
46
+ if (host === 'agentrelay.com'
47
+ && (url.pathname === '' || url.pathname === '/')) {
48
+ // Apex without the /cloud basePath would route to the marketing site
49
+ // and 404 every API call. Public docs/login flows always include the
50
+ // /cloud prefix — treat the bare apex as a user mistake and fix it
51
+ // before it produces a wall of HTML in error messages.
52
+ return 'https://agentrelay.com/cloud';
53
+ }
54
+ return stripTrailingSlash(url.toString());
55
+ }
56
+ /**
57
+ * Single source of truth for "which cloud URL should this CLI invocation
58
+ * talk to?" Resolution order, top wins:
59
+ *
60
+ * 1. Explicit `--cloud-url` flag.
61
+ * 2. `WORKFORCE_DEPLOY_CLOUD_URL` (preferred env override).
62
+ * 3. `WORKFORCE_CLOUD_URL` (legacy env override).
63
+ * 4. `cloudUrl` recorded in `~/.agentworkforce/active.json` by
64
+ * `agentworkforce login`.
65
+ * 5. `defaultApiUrl()` from `@agent-relay/cloud` (the public canonical
66
+ * URL — currently `https://agentrelay.com/cloud`).
67
+ *
68
+ * The result is always run through {@link canonicalizeCloudUrl} so
69
+ * downstream consumers never see an origin-bypass hostname or the
70
+ * `/cloud`-less apex.
71
+ */
72
+ export function resolveCloudUrl(context = {}) {
73
+ const env = context.env ?? process.env;
74
+ const raw = firstTruthy(context.flag, env.WORKFORCE_DEPLOY_CLOUD_URL, env.WORKFORCE_CLOUD_URL, context.active?.cloudUrl, defaultApiUrl());
75
+ return canonicalizeCloudUrl(raw);
76
+ }
77
+ function firstTruthy(...candidates) {
78
+ for (const candidate of candidates) {
79
+ const trimmed = candidate?.trim();
80
+ if (trimmed)
81
+ return trimmed;
82
+ }
83
+ return '';
84
+ }
85
+ function stripTrailingSlash(value) {
86
+ return value.replace(/\/+$/, '');
87
+ }
88
+ //# sourceMappingURL=cloud-url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud-url.js","sourceRoot":"","sources":["../src/cloud-url.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO;QAAE,OAAO,OAAO,CAAC;IAC7B,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,qEAAqE;QACrE,kEAAkE;QAClE,cAAc;QACd,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;IACxC,IAAI,IAAI,KAAK,kBAAkB,IAAI,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACtE,OAAO,8BAA8B,CAAC;IACxC,CAAC;IACD,IACE,IAAI,KAAK,gBAAgB;WACtB,CAAC,GAAG,CAAC,QAAQ,KAAK,EAAE,IAAI,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,EAChD,CAAC;QACD,qEAAqE;QACrE,qEAAqE;QACrE,mEAAmE;QACnE,uDAAuD;QACvD,OAAO,8BAA8B,CAAC;IACxC,CAAC;IACD,OAAO,kBAAkB,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,eAAe,CAAC,UAA2B,EAAE;IAC3D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACvC,MAAM,GAAG,GAAG,WAAW,CACrB,OAAO,CAAC,IAAI,EACZ,GAAG,CAAC,0BAA0B,EAC9B,GAAG,CAAC,mBAAmB,EACvB,OAAO,CAAC,MAAM,EAAE,QAAQ,EACxB,aAAa,EAAE,CAChB,CAAC;IACF,OAAO,oBAAoB,CAAC,GAAG,CAAC,CAAC;AACnC,CAAC;AAWD,SAAS,WAAW,CAAC,GAAG,UAAqC;IAC3D,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC;QAClC,IAAI,OAAO;YAAE,OAAO,OAAO,CAAC;IAC9B,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa;IACvC,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACnC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=cloud-url.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud-url.test.d.ts","sourceRoot":"","sources":["../src/cloud-url.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,99 @@
1
+ import test from 'node:test';
2
+ import assert from 'node:assert/strict';
3
+ import { canonicalizeCloudUrl, resolveCloudUrl } from './cloud-url.js';
4
+ test('canonicalizeCloudUrl: origin.agentrelay.cloud bare host → public canonical', () => {
5
+ assert.equal(canonicalizeCloudUrl('https://origin.agentrelay.cloud'), 'https://agentrelay.com/cloud');
6
+ });
7
+ test('canonicalizeCloudUrl: origin.agentrelay.cloud/cloud → public canonical', () => {
8
+ assert.equal(canonicalizeCloudUrl('https://origin.agentrelay.cloud/cloud'), 'https://agentrelay.com/cloud');
9
+ });
10
+ test('canonicalizeCloudUrl: staging.agentrelay.cloud → public canonical', () => {
11
+ assert.equal(canonicalizeCloudUrl('https://staging.agentrelay.cloud'), 'https://agentrelay.com/cloud');
12
+ });
13
+ test('canonicalizeCloudUrl: bare agentrelay.cloud/cloud → public canonical', () => {
14
+ assert.equal(canonicalizeCloudUrl('https://agentrelay.cloud/cloud'), 'https://agentrelay.com/cloud');
15
+ });
16
+ test('canonicalizeCloudUrl: public canonical is idempotent', () => {
17
+ assert.equal(canonicalizeCloudUrl('https://agentrelay.com/cloud'), 'https://agentrelay.com/cloud');
18
+ });
19
+ test('canonicalizeCloudUrl: trailing slash is stripped on canonical input', () => {
20
+ assert.equal(canonicalizeCloudUrl('https://agentrelay.com/cloud/'), 'https://agentrelay.com/cloud');
21
+ });
22
+ test('canonicalizeCloudUrl: localhost dev URLs are left untouched', () => {
23
+ assert.equal(canonicalizeCloudUrl('http://localhost:3000'), 'http://localhost:3000');
24
+ });
25
+ test('canonicalizeCloudUrl: unrelated tenant URLs are left untouched', () => {
26
+ assert.equal(canonicalizeCloudUrl('https://some-other-tenant.example.com'), 'https://some-other-tenant.example.com');
27
+ });
28
+ test('canonicalizeCloudUrl: empty input returns empty string', () => {
29
+ assert.equal(canonicalizeCloudUrl(''), '');
30
+ });
31
+ test('canonicalizeCloudUrl: unparseable input is returned untouched (trimmed)', () => {
32
+ assert.equal(canonicalizeCloudUrl(' not-a-url '), 'not-a-url');
33
+ });
34
+ test('canonicalizeCloudUrl: apex agentrelay.com (no /cloud) → public canonical', () => {
35
+ // Previously the CLI's DEFAULT_CLOUD_URL was `https://agentrelay.com`,
36
+ // which sent every API call to the Next.js marketing site and 404'd.
37
+ // canonicalizeCloudUrl normalizes that mistake before it ever leaves
38
+ // the CLI.
39
+ assert.equal(canonicalizeCloudUrl('https://agentrelay.com'), 'https://agentrelay.com/cloud');
40
+ assert.equal(canonicalizeCloudUrl('https://agentrelay.com/'), 'https://agentrelay.com/cloud');
41
+ });
42
+ test('canonicalizeCloudUrl: apex with a non-root path is left untouched', () => {
43
+ // Only the bare apex is remapped — paths like /docs are valid surface area.
44
+ assert.equal(canonicalizeCloudUrl('https://agentrelay.com/docs/runtimes'), 'https://agentrelay.com/docs/runtimes');
45
+ });
46
+ test('resolveCloudUrl: flag wins over env wins over active.json wins over default', () => {
47
+ // Flag wins.
48
+ assert.equal(resolveCloudUrl({
49
+ flag: 'https://flag.example.test',
50
+ env: {
51
+ WORKFORCE_DEPLOY_CLOUD_URL: 'https://env.example.test',
52
+ WORKFORCE_CLOUD_URL: 'https://legacy-env.example.test'
53
+ },
54
+ active: { cloudUrl: 'https://active.example.test' }
55
+ }), 'https://flag.example.test');
56
+ // No flag → preferred env wins.
57
+ assert.equal(resolveCloudUrl({
58
+ env: { WORKFORCE_DEPLOY_CLOUD_URL: 'https://env.example.test' },
59
+ active: { cloudUrl: 'https://active.example.test' }
60
+ }), 'https://env.example.test');
61
+ // Preferred env empty → legacy env wins.
62
+ assert.equal(resolveCloudUrl({
63
+ env: {
64
+ WORKFORCE_DEPLOY_CLOUD_URL: '',
65
+ WORKFORCE_CLOUD_URL: 'https://legacy-env.example.test'
66
+ },
67
+ active: { cloudUrl: 'https://active.example.test' }
68
+ }), 'https://legacy-env.example.test');
69
+ // No env → active.json wins.
70
+ assert.equal(resolveCloudUrl({
71
+ env: {},
72
+ active: { cloudUrl: 'https://active.example.test' }
73
+ }), 'https://active.example.test');
74
+ });
75
+ test('resolveCloudUrl: nothing set → canonical default', () => {
76
+ assert.equal(resolveCloudUrl({ env: {}, active: null }), 'https://agentrelay.com/cloud');
77
+ });
78
+ test('resolveCloudUrl: active.json with bypass hostname is canonicalized', () => {
79
+ // The active.json file may still carry an origin.* hostname written by
80
+ // an older login flow. resolveCloudUrl repairs that on read.
81
+ assert.equal(resolveCloudUrl({
82
+ env: {},
83
+ active: { cloudUrl: 'https://origin.agentrelay.cloud/cloud' }
84
+ }), 'https://agentrelay.com/cloud');
85
+ });
86
+ test('resolveCloudUrl: active.json with bare apex is canonicalized', () => {
87
+ assert.equal(resolveCloudUrl({
88
+ env: {},
89
+ active: { cloudUrl: 'https://agentrelay.com' }
90
+ }), 'https://agentrelay.com/cloud');
91
+ });
92
+ test('resolveCloudUrl: whitespace-only candidates are skipped', () => {
93
+ assert.equal(resolveCloudUrl({
94
+ flag: ' ',
95
+ env: { WORKFORCE_DEPLOY_CLOUD_URL: ' ', WORKFORCE_CLOUD_URL: '' },
96
+ active: { cloudUrl: '\t\n' }
97
+ }), 'https://agentrelay.com/cloud');
98
+ });
99
+ //# sourceMappingURL=cloud-url.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud-url.test.js","sourceRoot":"","sources":["../src/cloud-url.test.ts"],"names":[],"mappings":"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"}
package/dist/connect.d.ts CHANGED
@@ -41,6 +41,18 @@ export interface ProviderSubscriptionResolver {
41
41
  provider: string;
42
42
  }>;
43
43
  }
44
+ /**
45
+ * Called after a cloud integration status check gets a 401. The CLI uses
46
+ * this to run the established browser login flow, refresh the active bearer
47
+ * token, and let the status check retry once.
48
+ */
49
+ export interface IntegrationAuthRecoveryResolver {
50
+ recover(args: {
51
+ workspace: string;
52
+ provider: string;
53
+ reason: string;
54
+ }): Promise<boolean>;
55
+ }
44
56
  /**
45
57
  * Resolver backed by env vars. Used as the default when no higher-level
46
58
  * implementation is plugged in. `isConnected` returns true exactly when
@@ -52,7 +64,7 @@ export declare function envIntegrationResolver(): IntegrationConnectResolver;
52
64
  export declare function relayfileIntegrationResolver(opts: {
53
65
  apiUrl: string;
54
66
  workspaceId: string;
55
- workspaceToken: string;
67
+ workspaceToken: string | (() => string | Promise<string>);
56
68
  io?: Pick<DeployIO, 'info' | 'warn'>;
57
69
  pollIntervalMs?: number;
58
70
  timeoutMs?: number;
@@ -67,6 +79,8 @@ export interface ConnectAllInput {
67
79
  noPrompt?: boolean;
68
80
  io: DeployIO;
69
81
  integrations: IntegrationConnectResolver;
82
+ /** Optional cloud-login recovery for interactive 401s. */
83
+ authRecovery?: IntegrationAuthRecoveryResolver;
70
84
  /** Required only when persona.useSubscription is true. */
71
85
  subscription?: ProviderSubscriptionResolver;
72
86
  }
@@ -84,7 +98,8 @@ export interface ConnectAllResult {
84
98
  * Behavior summary:
85
99
  * - integrations: {} or undefined → returns immediately, no prompts
86
100
  * - already-connected provider → no prompt; emits `already-connected`
87
- * - auth failure while checking status → fails without prompting
101
+ * - 401 while checking status + authRecovery prompts login and retries once
102
+ * - other auth failure while checking status → fails without integration prompts
88
103
  * - not connected + noPrompt=true → fails immediately without prompting
89
104
  * - not connected + noConnect=true → fails the deploy with a clear message
90
105
  * - not connected + noConnect=false → prompts; on yes runs `connect`,
@@ -1 +1 @@
1
- {"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../src/connect.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAkBtE;;;;;;;;;GASG;AACH,MAAM,WAAW,0BAA0B;IACzC,uDAAuD;IACvD,WAAW,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7E,2EAA2E;IAC3E,OAAO,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC3F;AAED;;;;GAIG;AACH,MAAM,WAAW,4BAA4B;IAC3C,WAAW,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAClF,OAAO,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC5F;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,IAAI,0BAA0B,CAcnE;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;IACrC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC,GAAG,0BAA0B,CA2D7B;AAUD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,WAAW,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,EAAE,EAAE,QAAQ,CAAC;IACb,YAAY,EAAE,0BAA0B,CAAC;IACzC,0DAA0D;IAC1D,YAAY,CAAC,EAAE,4BAA4B,CAAC;CAC7C;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,yBAAyB,EAAE,CAAC;IACtC,+DAA+D;IAC/D,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAuH3F"}
1
+ {"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../src/connect.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAkBtE;;;;;;;;;GASG;AACH,MAAM,WAAW,0BAA0B;IACzC,uDAAuD;IACvD,WAAW,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7E,2EAA2E;IAC3E,OAAO,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC3F;AAED;;;;GAIG;AACH,MAAM,WAAW,4BAA4B;IAC3C,WAAW,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAClF,OAAO,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC5F;AAED;;;;GAIG;AACH,MAAM,WAAW,+BAA+B;IAC9C,OAAO,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1F;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,IAAI,0BAA0B,CAcnE;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1D,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;IACrC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC,GAAG,0BAA0B,CAiE7B;AAUD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,WAAW,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,EAAE,EAAE,QAAQ,CAAC;IACb,YAAY,EAAE,0BAA0B,CAAC;IACzC,0DAA0D;IAC1D,YAAY,CAAC,EAAE,+BAA+B,CAAC;IAC/C,0DAA0D;IAC1D,YAAY,CAAC,EAAE,4BAA4B,CAAC;CAC7C;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,yBAAyB,EAAE,CAAC;IACtC,+DAA+D;IAC/D,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA+I3F"}
package/dist/connect.js CHANGED
@@ -43,12 +43,14 @@ export function relayfileIntegrationResolver(opts) {
43
43
  return {
44
44
  async isConnected({ workspace, provider }) {
45
45
  const workspaceId = workspace || opts.workspaceId;
46
- const body = await requestJson(fetchImpl, `${apiUrl}/api/v1/workspaces/${encodeURIComponent(workspaceId)}/integrations`, opts.workspaceToken);
46
+ const token = await resolveWorkspaceToken(opts.workspaceToken);
47
+ const body = await requestJson(fetchImpl, `${apiUrl}/api/v1/workspaces/${encodeURIComponent(workspaceId)}/integrations`, token);
47
48
  return listHasConnectedProvider(body, provider);
48
49
  },
49
50
  async connect({ workspace, provider }) {
50
51
  const workspaceId = workspace || opts.workspaceId;
51
- const session = await requestJson(fetchImpl, `${apiUrl}/api/v1/workspaces/${encodeURIComponent(workspaceId)}/integrations/connect-session`, opts.workspaceToken, {
52
+ const token = await resolveWorkspaceToken(opts.workspaceToken);
53
+ const session = await requestJson(fetchImpl, `${apiUrl}/api/v1/workspaces/${encodeURIComponent(workspaceId)}/integrations/connect-session`, token, {
52
54
  method: 'POST',
53
55
  body: JSON.stringify({ allowedIntegrations: [provider] })
54
56
  });
@@ -72,7 +74,7 @@ export function relayfileIntegrationResolver(opts) {
72
74
  const statusUrl = new URL(`${apiUrl}/api/v1/workspaces/${encodeURIComponent(workspaceId)}/integrations/${encodeURIComponent(provider)}/status`);
73
75
  if (sessionId)
74
76
  statusUrl.searchParams.set('connectionId', sessionId);
75
- const status = await requestJson(fetchImpl, statusUrl.toString(), opts.workspaceToken);
77
+ const status = await requestJson(fetchImpl, statusUrl.toString(), await resolveWorkspaceToken(opts.workspaceToken));
76
78
  if (isConnectedStatus(status)) {
77
79
  const connectionId = readString(status, 'connectionId')
78
80
  ?? readString(status, 'currentConnectionId')
@@ -100,7 +102,8 @@ function providerHasEnvCredentials(provider) {
100
102
  * Behavior summary:
101
103
  * - integrations: {} or undefined → returns immediately, no prompts
102
104
  * - already-connected provider → no prompt; emits `already-connected`
103
- * - auth failure while checking status → fails without prompting
105
+ * - 401 while checking status + authRecovery prompts login and retries once
106
+ * - other auth failure while checking status → fails without integration prompts
104
107
  * - not connected + noPrompt=true → fails immediately without prompting
105
108
  * - not connected + noConnect=true → fails the deploy with a clear message
106
109
  * - not connected + noConnect=false → prompts; on yes runs `connect`,
@@ -112,20 +115,38 @@ export async function connectIntegrations(input) {
112
115
  const outcomes = [];
113
116
  for (const provider of Object.keys(integrations)) {
114
117
  let statusCheckFailure;
115
- const connected = await input.integrations
116
- .isConnected({ workspace: input.workspace, provider })
117
- .catch((err) => {
118
- statusCheckFailure = err instanceof Error ? err.message : String(err);
119
- input.io.warn(`failed to check connection status for ${provider}: ${statusCheckFailure}`);
120
- return false;
118
+ let connected = await checkProviderConnected(input, provider, (message) => {
119
+ statusCheckFailure = message;
121
120
  });
122
121
  if (connected) {
123
122
  input.io.info(`integrations.${provider}: already connected`);
124
123
  outcomes.push({ provider, status: 'already-connected' });
125
124
  continue;
126
125
  }
127
- if (statusCheckFailure && isIntegrationAuthFailure(statusCheckFailure)) {
128
- input.io.error(`integrations.${provider}: auth failed while checking connection status`);
126
+ if (statusCheckFailure
127
+ && isIntegrationUnauthorizedFailure(statusCheckFailure)
128
+ && !input.noPrompt
129
+ && input.authRecovery) {
130
+ const recovered = await input.authRecovery
131
+ .recover({ workspace: input.workspace, provider, reason: statusCheckFailure })
132
+ .catch((err) => {
133
+ input.io.error(`integrations.${provider}: login failed: ${err instanceof Error ? err.message : String(err)}`);
134
+ return false;
135
+ });
136
+ if (recovered) {
137
+ statusCheckFailure = undefined;
138
+ connected = await checkProviderConnected(input, provider, (message) => {
139
+ statusCheckFailure = message;
140
+ });
141
+ if (connected) {
142
+ input.io.info(`integrations.${provider}: already connected`);
143
+ outcomes.push({ provider, status: 'already-connected' });
144
+ continue;
145
+ }
146
+ }
147
+ }
148
+ if (statusCheckFailure) {
149
+ input.io.error(`integrations.${provider}: ${isIntegrationAuthFailure(statusCheckFailure) ? 'auth failed' : 'failed'} while checking connection status`);
129
150
  outcomes.push({
130
151
  provider,
131
152
  status: 'failed',
@@ -202,6 +223,16 @@ export async function connectIntegrations(input) {
202
223
  ...(subscriptionProvider ? { subscriptionProvider } : {})
203
224
  };
204
225
  }
226
+ async function checkProviderConnected(input, provider, onFailure) {
227
+ return await input.integrations
228
+ .isConnected({ workspace: input.workspace, provider })
229
+ .catch((err) => {
230
+ const message = err instanceof Error ? err.message : String(err);
231
+ onFailure(message);
232
+ input.io.warn(`failed to check connection status for ${provider}: ${message}`);
233
+ return false;
234
+ });
235
+ }
205
236
  async function requestJson(fetchImpl, url, token, init = {}) {
206
237
  const res = await fetchImpl(url, {
207
238
  ...init,
@@ -212,10 +243,10 @@ async function requestJson(fetchImpl, url, token, init = {}) {
212
243
  }
213
244
  });
214
245
  if (res.status === 401) {
215
- throw new Error('cloud integration request failed: unauthorized. Open https://origin.agentrelay.cloud/cloud to verify your cloud session, then run `agent-relay cloud whoami` and `agentworkforce login` to refresh the active workspace.');
246
+ throw new Error('cloud integration request failed: unauthorized. Your active workspace session is invalid or expired. Run `agentworkforce login --workspace <id-or-slug>` to refresh, then retry.');
216
247
  }
217
248
  if (res.status === 403) {
218
- throw new Error('cloud integration request failed: forbidden. The active account is not authorized for this workspace; open https://origin.agentrelay.cloud/cloud to verify account/workspace access, then run `agent-relay cloud whoami` and `agentworkforce login` to refresh the active workspace.');
249
+ throw new Error('cloud integration request failed: forbidden. The active account is not authorized for this workspace. Run `agentworkforce login --workspace <id-or-slug>` against an account with access, then retry.');
219
250
  }
220
251
  if (!res.ok) {
221
252
  throw new Error(`cloud integration request failed: ${res.status} ${await res.text().catch(() => '')}`.trim());
@@ -225,6 +256,12 @@ async function requestJson(fetchImpl, url, token, init = {}) {
225
256
  function isIntegrationAuthFailure(message) {
226
257
  return /cloud integration request failed: (unauthorized|forbidden)\b/i.test(message);
227
258
  }
259
+ function isIntegrationUnauthorizedFailure(message) {
260
+ return /cloud integration request failed: unauthorized\b/i.test(message);
261
+ }
262
+ async function resolveWorkspaceToken(token) {
263
+ return typeof token === 'function' ? await token() : token;
264
+ }
228
265
  function listHasConnectedProvider(body, provider) {
229
266
  const candidates = Array.isArray(body)
230
267
  ? body
@@ -1 +1 @@
1
- {"version":3,"file":"connect.js","sourceRoot":"","sources":["../src/connect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connect.js","sourceRoot":"","sources":["../src/connect.ts"],"names":[],"mappings":"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"}