@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
@@ -28,6 +28,28 @@ test('relayfileIntegrationResolver isConnected reads the cloud integration list'
28
28
  'https://cloud.example.test/api/v1/workspaces/ws-runtime/integrations'
29
29
  ]);
30
30
  });
31
+ test('relayfileIntegrationResolver reads the latest workspace token for each request', async () => {
32
+ let token = 'old-token';
33
+ const authHeaders = [];
34
+ const resolver = relayfileIntegrationResolver({
35
+ apiUrl: 'https://cloud.example.test',
36
+ workspaceId: 'ws-1',
37
+ workspaceToken: () => token,
38
+ fetch: async (_url, init) => {
39
+ authHeaders.push(String(new Headers(init?.headers).get('authorization')));
40
+ if (authHeaders.length === 1) {
41
+ return okJson({ error: 'Unauthorized' }, 401);
42
+ }
43
+ return okJson([
44
+ { provider: 'github', status: 'ready', connectionId: 'conn-1' }
45
+ ]);
46
+ }
47
+ });
48
+ await assert.rejects(resolver.isConnected({ workspace: 'ws-runtime', provider: 'github' }), /unauthorized/);
49
+ token = 'new-token';
50
+ assert.equal(await resolver.isConnected({ workspace: 'ws-runtime', provider: 'github' }), true);
51
+ assert.deepEqual(authHeaders, ['Bearer old-token', 'Bearer new-token']);
52
+ });
31
53
  test('relayfileIntegrationResolver connect opens a session and polls until connected', async () => {
32
54
  let polls = 0;
33
55
  const opened = [];
@@ -111,7 +133,7 @@ test('connectIntegrations fails fast on auth errors without prompting to connect
111
133
  io,
112
134
  integrations: {
113
135
  async isConnected() {
114
- 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.');
136
+ 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.');
115
137
  },
116
138
  async connect() {
117
139
  connectCalled = true;
@@ -121,15 +143,149 @@ test('connectIntegrations fails fast on auth errors without prompting to connect
121
143
  });
122
144
  assert.equal(confirmCalled, false);
123
145
  assert.equal(connectCalled, false);
146
+ assert.equal(result.outcomes.length, 1);
147
+ const [outcome] = result.outcomes;
148
+ assert.equal(outcome.provider, 'notion');
149
+ assert.equal(outcome.status, 'failed');
150
+ // Future-proofed against copy-edits: the message must point users at the
151
+ // workforce CLI's own login and must NOT instruct them to reach for the
152
+ // upstream `agent-relay` binary.
153
+ assert.match(outcome.message ?? '', /agentworkforce login/i);
154
+ assert.doesNotMatch(outcome.message ?? '', /agent-relay cloud/);
155
+ assert.ok(io.messages.some((message) => message.level === 'warn' && message.message.includes('failed to check connection status for notion')));
156
+ assert.ok(io.messages.some((message) => message.level === 'error' && message.message.includes('auth failed')));
157
+ });
158
+ test('relayfileIntegrationResolver surfaces the agentworkforce-native error on 401', async () => {
159
+ const resolver = relayfileIntegrationResolver({
160
+ apiUrl: 'https://cloud.example.test',
161
+ workspaceId: 'ws-1',
162
+ workspaceToken: 'tok',
163
+ fetch: async () => new Response('Unauthorized', { status: 401 })
164
+ });
165
+ await assert.rejects(resolver.isConnected({ workspace: 'ws-1', provider: 'notion' }), (err) => {
166
+ const message = err instanceof Error ? err.message : String(err);
167
+ assert.match(message, /unauthorized/i);
168
+ assert.match(message, /agentworkforce login/i);
169
+ assert.doesNotMatch(message, /agent-relay cloud/);
170
+ assert.doesNotMatch(message, /origin\.agentrelay\.cloud/);
171
+ return true;
172
+ });
173
+ });
174
+ test('connectIntegrations prompts auth recovery on unauthorized status checks and retries', async () => {
175
+ const io = createBufferedIO();
176
+ let checks = 0;
177
+ let recoverCalled = false;
178
+ let connectCalled = false;
179
+ const result = await connectIntegrations({
180
+ persona: {
181
+ id: 'essay',
182
+ intent: 'essay',
183
+ description: 'test persona',
184
+ tags: ['implementation'],
185
+ integrations: { notion: {} }
186
+ },
187
+ workspace: 'ws-1',
188
+ noConnect: false,
189
+ io,
190
+ integrations: {
191
+ async isConnected() {
192
+ checks += 1;
193
+ if (checks === 1) {
194
+ 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.');
195
+ }
196
+ return true;
197
+ },
198
+ async connect() {
199
+ connectCalled = true;
200
+ throw new Error('connect should not be called after auth recovery');
201
+ }
202
+ },
203
+ authRecovery: {
204
+ async recover({ workspace, provider }) {
205
+ recoverCalled = true;
206
+ assert.equal(workspace, 'ws-1');
207
+ assert.equal(provider, 'notion');
208
+ return true;
209
+ }
210
+ }
211
+ });
212
+ assert.equal(recoverCalled, true);
213
+ assert.equal(connectCalled, false);
214
+ assert.equal(checks, 2);
215
+ assert.deepEqual(result.outcomes, [{ provider: 'notion', status: 'already-connected' }]);
216
+ });
217
+ test('connectIntegrations does not prompt auth recovery when --no-prompt is set', async () => {
218
+ const io = createBufferedIO();
219
+ let recoverCalled = false;
220
+ const result = await connectIntegrations({
221
+ persona: {
222
+ id: 'essay',
223
+ intent: 'essay',
224
+ description: 'test persona',
225
+ tags: ['implementation'],
226
+ integrations: { notion: {} }
227
+ },
228
+ workspace: 'ws-1',
229
+ noConnect: true,
230
+ noPrompt: true,
231
+ io,
232
+ integrations: {
233
+ async isConnected() {
234
+ 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.');
235
+ },
236
+ async connect() {
237
+ throw new Error('connect should not be called after auth failure');
238
+ }
239
+ },
240
+ authRecovery: {
241
+ async recover() {
242
+ recoverCalled = true;
243
+ return true;
244
+ }
245
+ }
246
+ });
247
+ assert.equal(recoverCalled, false);
248
+ assert.deepEqual(result.outcomes, [
249
+ {
250
+ provider: 'notion',
251
+ status: 'failed',
252
+ message: 'cloud integration request failed: unauthorized. Your active workspace session is invalid or expired. Run `agentworkforce login --workspace <id-or-slug>` to refresh, then retry.'
253
+ }
254
+ ]);
255
+ });
256
+ test('connectIntegrations fails status-check errors without opening a connect flow', async () => {
257
+ const io = createBufferedIO();
258
+ let connectCalled = false;
259
+ const result = await connectIntegrations({
260
+ persona: {
261
+ id: 'essay',
262
+ intent: 'essay',
263
+ description: 'test persona',
264
+ tags: ['implementation'],
265
+ integrations: { notion: {} }
266
+ },
267
+ workspace: 'ws-1',
268
+ noConnect: false,
269
+ io,
270
+ integrations: {
271
+ async isConnected() {
272
+ throw new Error('cloud integration request failed: 503 Service Unavailable');
273
+ },
274
+ async connect() {
275
+ connectCalled = true;
276
+ throw new Error('connect should not be called after status-check failure');
277
+ }
278
+ }
279
+ });
280
+ assert.equal(connectCalled, false);
124
281
  assert.deepEqual(result.outcomes, [
125
282
  {
126
283
  provider: 'notion',
127
284
  status: 'failed',
128
- message: '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.'
285
+ message: 'cloud integration request failed: 503 Service Unavailable'
129
286
  }
130
287
  ]);
131
- assert.ok(io.messages.some((message) => message.level === 'warn' && message.message.includes('failed to check connection status for notion')));
132
- assert.ok(io.messages.some((message) => message.level === 'error' && message.message.includes('auth failed')));
288
+ assert.ok(io.messages.some((message) => message.level === 'error' && message.message.includes('failed while checking connection status')));
133
289
  });
134
290
  test('connectIntegrations honors --no-prompt for subscription provider setup', async () => {
135
291
  const io = createBufferedIO();
@@ -1 +1 @@
1
- {"version":3,"file":"connect.test.js","sourceRoot":"","sources":["../src/connect.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connect.test.js","sourceRoot":"","sources":["../src/connect.test.ts"],"names":[],"mappings":"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"}
package/dist/deploy.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { type IntegrationConnectResolver, type ProviderSubscriptionResolver } from './connect.js';
2
2
  import { type WorkspaceAuth } from './login.js';
3
- import type { BundleStager, DeployMode, DeployOptions, DeployResult, ModeLauncher } from './types.js';
3
+ import type { BundleStager, DeployIO, DeployMode, DeployOptions, DeployResult, ModeLauncher } from './types.js';
4
4
  /**
5
5
  * External-resolver bundle the orchestrator depends on. Each field has a
6
6
  * real default backed by env (or, for `bundle`/`modes`, the real
@@ -12,10 +12,22 @@ import type { BundleStager, DeployMode, DeployOptions, DeployResult, ModeLaunche
12
12
  export interface DeployResolvers {
13
13
  workspaceAuth?: WorkspaceAuth;
14
14
  integrations?: IntegrationConnectResolver;
15
+ authRecovery?: CloudAuthRecoveryResolver;
15
16
  subscription?: ProviderSubscriptionResolver;
16
17
  bundle?: BundleStager;
17
18
  modes?: Partial<Record<DeployMode, ModeLauncher>>;
18
19
  }
20
+ export interface CloudAuthRecoveryResolver {
21
+ recover(args: {
22
+ workspace: string;
23
+ cloudUrl: string;
24
+ io: DeployIO;
25
+ provider: string;
26
+ reason: string;
27
+ }): Promise<{
28
+ token: string;
29
+ } | false | null | undefined>;
30
+ }
19
31
  /**
20
32
  * Pick the run mode for this deploy. Per the deploy-v1 spec:
21
33
  * - Explicit `--mode` always wins.
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../src/deploy.ts"],"names":[],"mappings":"AAIA,OAAO,EAKL,KAAK,0BAA0B,EAC/B,KAAK,4BAA4B,EAClC,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAKlE,OAAO,KAAK,EACV,YAAY,EAEZ,UAAU,EACV,aAAa,EACb,YAAY,EACZ,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,CAAC,EAAE,0BAA0B,CAAC;IAC1C,YAAY,CAAC,EAAE,4BAA4B,CAAC;IAC5C,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC;CACnD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,aAAa,GAAG,UAAU,CAQxD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,SAAS,GAAE,eAAoB,GAAG,OAAO,CAAC,YAAY,CAAC,CAqHxG"}
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../src/deploy.ts"],"names":[],"mappings":"AAKA,OAAO,EAML,KAAK,0BAA0B,EAC/B,KAAK,4BAA4B,EAClC,MAAM,cAAc,CAAC;AAEtB,OAAO,EAGL,KAAK,aAAa,EACnB,MAAM,YAAY,CAAC;AAKpB,OAAO,KAAK,EACV,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,aAAa,EACb,YAAY,EACZ,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,CAAC,EAAE,0BAA0B,CAAC;IAC1C,YAAY,CAAC,EAAE,yBAAyB,CAAC;IACzC,YAAY,CAAC,EAAE,4BAA4B,CAAC;IAC5C,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC;CACnD;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,CAAC,IAAI,EAAE;QACZ,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,EAAE,EAAE,QAAQ,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;CAC3D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,aAAa,GAAG,UAAU,CAQxD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,SAAS,GAAE,eAAoB,GAAG,OAAO,CAAC,YAAY,CAAC,CA0JxG"}
package/dist/deploy.js CHANGED
@@ -2,9 +2,10 @@ import path from 'node:path';
2
2
  import { mkdir } from 'node:fs/promises';
3
3
  import { defaultApiUrl } from '@agent-relay/cloud';
4
4
  import { bundleStager } from './bundle.js';
5
+ import { resolveCloudUrl } from './cloud-url.js';
5
6
  import { connectIntegrations, envIntegrationResolver, relayfileIntegrationResolver } from './connect.js';
6
7
  import { createTerminalIO } from './io.js';
7
- import { envWorkspaceAuth } from './login.js';
8
+ import { readActiveWorkspace, resolveWorkspaceToken } from './login.js';
8
9
  import { devLauncher } from './modes/dev.js';
9
10
  import { sandboxLauncher } from './modes/sandbox.js';
10
11
  import { cloudLauncher } from './modes/cloud.js';
@@ -94,11 +95,34 @@ export async function deploy(opts, resolvers = {}) {
94
95
  };
95
96
  }
96
97
  const mode = opts.mode ?? pickMode(opts);
97
- const { workspace, token } = await (resolvers.workspaceAuth ?? envWorkspaceAuth()).resolveWorkspace({
98
- override: opts.workspace,
99
- io
98
+ const active = await readActiveWorkspace().catch(() => null);
99
+ const cloudUrl = resolveCloudUrl({
100
+ ...(opts.cloudUrl ? { flag: opts.cloudUrl } : {}),
101
+ active
100
102
  });
103
+ // Auth resolution: an explicit `resolvers.workspaceAuth` (used by tests
104
+ // and bespoke harnesses) wins. Otherwise consult the shared resolver
105
+ // that walks env → cloud-auth.json → active.json → legacy keychain,
106
+ // which is the same path `list`/`destroy` and the cloud launcher use.
107
+ // The orchestrator historically called `envWorkspaceAuth()` directly,
108
+ // which only honoured WORKFORCE_WORKSPACE_TOKEN + a long-dead keychain —
109
+ // a user who freshly ran `agentworkforce login` would hit "no workspace
110
+ // resolved" because that flow only writes the shared accessToken and
111
+ // active.json pointer.
112
+ const resolvedAuth = resolvers.workspaceAuth
113
+ ? await resolvers.workspaceAuth.resolveWorkspace({ override: opts.workspace, io })
114
+ : await resolveWorkspaceToken({
115
+ ...(opts.workspace ? { workspace: opts.workspace } : {}),
116
+ cloudUrl,
117
+ io,
118
+ ...(opts.noPrompt ? { noPrompt: true } : {})
119
+ });
120
+ const workspace = (resolvedAuth.workspace ?? opts.workspace ?? '').trim();
121
+ if (!workspace) {
122
+ throw new Error('workspace is required for deploy: pass --workspace, set WORKFORCE_WORKSPACE_ID, or run `agentworkforce login`');
123
+ }
101
124
  io.info(`workspace: ${workspace}`);
125
+ let activeToken = resolvedAuth.token;
102
126
  const connectedIntegrations = await connectAndCollectIntegrations({
103
127
  persona: preflight.persona,
104
128
  workspace,
@@ -108,10 +132,15 @@ export async function deploy(opts, resolvers = {}) {
108
132
  integrations: resolvers.integrations ?? defaultIntegrationResolver({
109
133
  mode,
110
134
  workspace,
111
- token,
112
- cloudUrl: opts.cloudUrl,
135
+ token: () => activeToken,
136
+ cloudUrl,
113
137
  io
114
138
  }),
139
+ ...(resolvers.authRecovery
140
+ ? {
141
+ authRecovery: authRecoveryForIntegrations(resolvers.authRecovery, () => activeToken, (nextToken) => { activeToken = nextToken; }, cloudUrl, io)
142
+ }
143
+ : {}),
115
144
  ...(resolvers.subscription ? { subscription: resolvers.subscription } : {})
116
145
  });
117
146
  const bundleDir = path.resolve(path.join(preflight.personaDir, '.workforce', 'build', preflight.persona.id));
@@ -130,10 +159,10 @@ export async function deploy(opts, resolvers = {}) {
130
159
  bundle,
131
160
  workspace,
132
161
  io,
133
- ...(token ? { workspaceToken: token } : {}),
162
+ ...(activeToken ? { workspaceToken: activeToken } : {}),
134
163
  ...(opts.detach ? { detach: true } : {}),
135
164
  ...(opts.byoSandbox ? { byoSandbox: true } : {}),
136
- ...(opts.cloudUrl ? { cloudUrl: opts.cloudUrl } : {}),
165
+ ...(cloudUrl ? { cloudUrl } : {}),
137
166
  ...(opts.noPrompt ? { noPrompt: true } : {}),
138
167
  ...(opts.harnessSource ? { harnessSource: opts.harnessSource } : {}),
139
168
  ...(opts.byokKey ? { byokKey: opts.byokKey } : {}),
@@ -184,15 +213,31 @@ function defaultIntegrationResolver(args) {
184
213
  if (args.mode !== 'cloud')
185
214
  return envIntegrationResolver();
186
215
  return relayfileIntegrationResolver({
187
- apiUrl: normalizeCloudUrl(args.cloudUrl
188
- ?? process.env.WORKFORCE_DEPLOY_CLOUD_URL
189
- ?? process.env.WORKFORCE_CLOUD_URL
190
- ?? defaultApiUrl()),
216
+ apiUrl: normalizeCloudUrl(args.cloudUrl ?? defaultApiUrl()),
191
217
  workspaceId: args.workspace,
192
218
  workspaceToken: args.token,
193
219
  io: args.io
194
220
  });
195
221
  }
222
+ function authRecoveryForIntegrations(resolver, currentToken, setToken, cloudUrl, io) {
223
+ return {
224
+ async recover({ workspace, provider, reason }) {
225
+ const result = await resolver.recover({
226
+ workspace,
227
+ cloudUrl,
228
+ io,
229
+ provider,
230
+ reason
231
+ });
232
+ if (!result)
233
+ return false;
234
+ if (result.token && result.token !== currentToken()) {
235
+ setToken(result.token);
236
+ }
237
+ return true;
238
+ }
239
+ };
240
+ }
196
241
  function normalizeCloudUrl(url) {
197
242
  const trimmed = url.trim();
198
243
  return trimmed ? trimmed.replace(/\/+$/, '') : defaultApiUrl().replace(/\/+$/, '');
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../src/deploy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../src/deploy.ts"],"names":[],"mappings":"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"}
@@ -104,6 +104,12 @@ function successfulDevLauncher(onLaunch) {
104
104
  }
105
105
  };
106
106
  }
107
+ function jsonResponse(body, status = 200) {
108
+ return new Response(JSON.stringify(body), {
109
+ status,
110
+ headers: { 'content-type': 'application/json' }
111
+ });
112
+ }
107
113
  test('preflightPersona accepts a valid deploy-shaped persona', async () => {
108
114
  const { personaPath, cleanup } = await withTempPersona(basePersonaJson());
109
115
  try {
@@ -303,6 +309,66 @@ test('deploy treats --no-prompt as fail-fast for missing integration connects',
303
309
  await cleanup();
304
310
  }
305
311
  });
312
+ test('deploy can recover cloud integration auth by logging in and retrying with the fresh token', async () => {
313
+ const { personaPath, cleanup } = await withTempPersona(basePersonaJson({ integrations: { notion: {} } }));
314
+ const io = createBufferedIO();
315
+ const originalFetch = globalThis.fetch;
316
+ const authHeaders = [];
317
+ let recovered = false;
318
+ let launchedToken;
319
+ const workspaceAuth = {
320
+ async resolveWorkspace() {
321
+ return { workspace: 'ws-test', token: 'stale-token' };
322
+ }
323
+ };
324
+ const authRecovery = {
325
+ async recover({ workspace, provider, reason }) {
326
+ recovered = true;
327
+ assert.equal(workspace, 'ws-test');
328
+ assert.equal(provider, 'notion');
329
+ assert.match(reason, /unauthorized/);
330
+ return { token: 'fresh-token' };
331
+ }
332
+ };
333
+ globalThis.fetch = (async (_input, init) => {
334
+ authHeaders.push(String(new Headers(init?.headers).get('authorization')));
335
+ if (authHeaders.length === 1) {
336
+ return jsonResponse({ error: 'Unauthorized' }, 401);
337
+ }
338
+ return jsonResponse([
339
+ { provider: 'notion', status: 'ready', connectionId: 'conn-notion' }
340
+ ]);
341
+ });
342
+ try {
343
+ const result = await deploy({ personaPath, mode: 'cloud', io }, {
344
+ workspaceAuth,
345
+ authRecovery,
346
+ bundle: successfulBundleStager(),
347
+ modes: {
348
+ cloud: {
349
+ async launch(input) {
350
+ launchedToken = input.workspaceToken;
351
+ return {
352
+ id: 'cloud-1',
353
+ async stop() {
354
+ /* no-op */
355
+ },
356
+ done: Promise.resolve({ code: 0 })
357
+ };
358
+ }
359
+ }
360
+ }
361
+ });
362
+ assert.equal(recovered, true);
363
+ assert.deepEqual(authHeaders, ['Bearer stale-token', 'Bearer fresh-token']);
364
+ assert.equal(launchedToken, 'fresh-token');
365
+ assert.deepEqual(result.connectedIntegrations, ['notion']);
366
+ }
367
+ finally {
368
+ globalThis.fetch = originalFetch;
369
+ await cleanup();
370
+ }
371
+ });
306
372
  test('deploy stages a bundle and hands off to the resolved launcher', async () => {
307
373
  const { personaPath, dir, cleanup } = await withTempPersona(basePersonaJson());
308
374
  const io = createBufferedIO();
@@ -553,4 +619,67 @@ test('--mode cloud uses the workspace token resolver before launching', async ()
553
619
  await cleanup();
554
620
  }
555
621
  });
622
+ test('deploy: default auth resolver honors env credentials without a workspaceAuth resolver', async () => {
623
+ // Regression guard for the orchestrator wiring change in this PR. The
624
+ // previous default (`envWorkspaceAuth()`) only consulted env vars and a
625
+ // long-dead keychain; the new default delegates to `resolveWorkspaceToken`,
626
+ // which still honors WORKFORCE_WORKSPACE_TOKEN + WORKFORCE_WORKSPACE_ID
627
+ // as Tier 1 but additionally falls through to the shared cloud-auth +
628
+ // active.json pointer. This test exercises the Tier 1 path end-to-end
629
+ // through `deploy()` with no resolver injection — proving the wiring is
630
+ // intact for CI users while the filesystem-fallback paths stay covered
631
+ // by `login.test.ts`.
632
+ const { personaPath, cleanup } = await withTempPersona(basePersonaJson({ integrations: {} }));
633
+ await withWorkspaceEnv({ workspace: 'env-ws', token: 'env-tok' }, async () => {
634
+ let launched = false;
635
+ const result = await deploy({ personaPath, mode: 'dev', noConnect: true, io: createBufferedIO() }, {
636
+ bundle: successfulBundleStager(),
637
+ modes: { dev: successfulDevLauncher(() => { launched = true; }) }
638
+ });
639
+ assert.equal(result.workspace, 'env-ws');
640
+ assert.equal(launched, true);
641
+ });
642
+ await cleanup();
643
+ });
644
+ test('deploy: clear error when nothing resolves and noPrompt is set', async () => {
645
+ // Without env or an explicit resolver, the orchestrator must surface
646
+ // an actionable error rather than wedging in a prompt loop. Setting
647
+ // `noPrompt` forces `resolveWorkspaceToken` to throw at Tier 3 instead
648
+ // of opening a browser, so we get a deterministic error path to assert.
649
+ const { personaPath, cleanup } = await withTempPersona(basePersonaJson({ integrations: {} }));
650
+ await withWorkspaceEnv({ workspace: undefined, token: undefined }, async () => {
651
+ // Point filesystem-backed auth at definitely-missing/disabled paths so the
652
+ // test doesn't accidentally pick up host credentials.
653
+ const previousActiveFile = process.env.WORKFORCE_ACTIVE_WORKSPACE_FILE;
654
+ const previousLoginFile = process.env.WORKFORCE_LOGIN_FILE;
655
+ const previousDisableShared = process.env.WORKFORCE_DISABLE_SHARED_AUTH;
656
+ process.env.WORKFORCE_ACTIVE_WORKSPACE_FILE = path.join(os.tmpdir(), 'wf-deploy-test-missing-active.json');
657
+ process.env.WORKFORCE_LOGIN_FILE = path.join(os.tmpdir(), 'wf-deploy-test-missing-login.json');
658
+ process.env.WORKFORCE_DISABLE_SHARED_AUTH = '1';
659
+ try {
660
+ await assert.rejects(deploy({ personaPath, mode: 'dev', noConnect: true, noPrompt: true, io: createBufferedIO() }, { bundle: successfulBundleStager(), modes: { dev: successfulDevLauncher() } }), /no workspace credentials resolved|workspace is required for deploy/);
661
+ }
662
+ finally {
663
+ if (previousActiveFile === undefined) {
664
+ delete process.env.WORKFORCE_ACTIVE_WORKSPACE_FILE;
665
+ }
666
+ else {
667
+ process.env.WORKFORCE_ACTIVE_WORKSPACE_FILE = previousActiveFile;
668
+ }
669
+ if (previousLoginFile === undefined) {
670
+ delete process.env.WORKFORCE_LOGIN_FILE;
671
+ }
672
+ else {
673
+ process.env.WORKFORCE_LOGIN_FILE = previousLoginFile;
674
+ }
675
+ if (previousDisableShared === undefined) {
676
+ delete process.env.WORKFORCE_DISABLE_SHARED_AUTH;
677
+ }
678
+ else {
679
+ process.env.WORKFORCE_DISABLE_SHARED_AUTH = previousDisableShared;
680
+ }
681
+ }
682
+ });
683
+ await cleanup();
684
+ });
556
685
  //# sourceMappingURL=deploy.test.js.map