@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.
- package/dist/cloud-url.d.ts +54 -0
- package/dist/cloud-url.d.ts.map +1 -0
- package/dist/cloud-url.js +88 -0
- package/dist/cloud-url.js.map +1 -0
- package/dist/cloud-url.test.d.ts +2 -0
- package/dist/cloud-url.test.d.ts.map +1 -0
- package/dist/cloud-url.test.js +99 -0
- package/dist/cloud-url.test.js.map +1 -0
- package/dist/connect.d.ts +17 -2
- package/dist/connect.d.ts.map +1 -1
- package/dist/connect.js +51 -14
- package/dist/connect.js.map +1 -1
- package/dist/connect.test.js +160 -4
- package/dist/connect.test.js.map +1 -1
- package/dist/deploy.d.ts +13 -1
- package/dist/deploy.d.ts.map +1 -1
- package/dist/deploy.js +57 -12
- package/dist/deploy.js.map +1 -1
- package/dist/deploy.test.js +129 -0
- package/dist/deploy.test.js.map +1 -1
- package/dist/error-format.d.ts +17 -0
- package/dist/error-format.d.ts.map +1 -0
- package/dist/error-format.js +36 -0
- package/dist/error-format.js.map +1 -0
- package/dist/error-format.test.d.ts +2 -0
- package/dist/error-format.test.d.ts.map +1 -0
- package/dist/error-format.test.js +51 -0
- package/dist/error-format.test.js.map +1 -0
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/login.d.ts.map +1 -1
- package/dist/login.js +28 -2
- package/dist/login.js.map +1 -1
- package/dist/modes/cloud.d.ts.map +1 -1
- package/dist/modes/cloud.js +41 -20
- package/dist/modes/cloud.js.map +1 -1
- package/dist/modes/cloud.test.js +107 -6
- package/dist/modes/cloud.test.js.map +1 -1
- package/package.json +3 -3
package/dist/connect.test.js
CHANGED
|
@@ -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.
|
|
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:
|
|
285
|
+
message: 'cloud integration request failed: 503 Service Unavailable'
|
|
129
286
|
}
|
|
130
287
|
]);
|
|
131
|
-
assert.ok(io.messages.some((message) => message.level === '
|
|
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();
|
package/dist/connect.test.js.map
CHANGED
|
@@ -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.
|
package/dist/deploy.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../src/deploy.ts"],"names":[],"mappings":"
|
|
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 {
|
|
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
|
|
98
|
-
|
|
99
|
-
|
|
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
|
|
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
|
-
...(
|
|
162
|
+
...(activeToken ? { workspaceToken: activeToken } : {}),
|
|
134
163
|
...(opts.detach ? { detach: true } : {}),
|
|
135
164
|
...(opts.byoSandbox ? { byoSandbox: true } : {}),
|
|
136
|
-
...(
|
|
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(/\/+$/, '');
|
package/dist/deploy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../src/deploy.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,4BAA4B,
|
|
1
|
+
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../src/deploy.ts"],"names":[],"mappings":"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"}
|
package/dist/deploy.test.js
CHANGED
|
@@ -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
|