@agent-native/core 0.12.11 → 0.12.13
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/cli/workspace-dev.js +15 -11
- package/dist/cli/workspace-dev.js.map +1 -1
- package/dist/client/NewWorkspaceAppFlow.d.ts.map +1 -1
- package/dist/client/NewWorkspaceAppFlow.js +5 -2
- package/dist/client/NewWorkspaceAppFlow.js.map +1 -1
- package/dist/client/extensions/ExtensionsListPage.d.ts.map +1 -1
- package/dist/client/extensions/ExtensionsListPage.js +2 -2
- package/dist/client/extensions/ExtensionsListPage.js.map +1 -1
- package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
- package/dist/client/settings/SettingsPanel.js +20 -16
- package/dist/client/settings/SettingsPanel.js.map +1 -1
- package/dist/client/settings/useBuilderStatus.d.ts +7 -7
- package/dist/client/settings/useBuilderStatus.d.ts.map +1 -1
- package/dist/client/settings/useBuilderStatus.js +1 -6
- package/dist/client/settings/useBuilderStatus.js.map +1 -1
- package/dist/client/vite-dev-recovery-script.d.ts.map +1 -1
- package/dist/client/vite-dev-recovery-script.js +10 -1
- package/dist/client/vite-dev-recovery-script.js.map +1 -1
- package/dist/server/builder-browser.d.ts +4 -4
- package/dist/server/builder-browser.d.ts.map +1 -1
- package/dist/server/builder-browser.js +1 -0
- package/dist/server/builder-browser.js.map +1 -1
- package/dist/server/core-routes-plugin.d.ts.map +1 -1
- package/dist/server/core-routes-plugin.js +33 -59
- package/dist/server/core-routes-plugin.js.map +1 -1
- package/dist/server/credential-provider.d.ts +20 -14
- package/dist/server/credential-provider.d.ts.map +1 -1
- package/dist/server/credential-provider.js +32 -45
- package/dist/server/credential-provider.js.map +1 -1
- package/dist/templates/default/app/root.tsx +14 -1
- package/dist/templates/default/package.json +0 -1
- package/dist/transcription/builder-transcription.d.ts.map +1 -1
- package/dist/transcription/builder-transcription.js +10 -3
- package/dist/transcription/builder-transcription.js.map +1 -1
- package/dist/vite/client.d.ts +2 -0
- package/dist/vite/client.d.ts.map +1 -1
- package/dist/vite/client.js +2 -0
- package/dist/vite/client.js.map +1 -1
- package/package.json +1 -1
- package/src/templates/default/app/root.tsx +14 -1
- package/src/templates/default/package.json +0 -1
|
@@ -368,39 +368,10 @@ export function createCoreRoutesPlugin(options = {}) {
|
|
|
368
368
|
branchProjectIdConfigured: !!projectId,
|
|
369
369
|
branchProjectId: projectId || undefined,
|
|
370
370
|
};
|
|
371
|
-
//
|
|
372
|
-
//
|
|
373
|
-
//
|
|
374
|
-
//
|
|
375
|
-
// Branch project IDs are still request-scoped above so a Builder.io
|
|
376
|
-
// org secret can enable branches without a deploy env var.
|
|
377
|
-
if (envStatus.envManaged) {
|
|
378
|
-
return withConnectToken(requestStatus);
|
|
379
|
-
}
|
|
380
|
-
// Per-user OAuth mode: read the user's app_secrets-stored creds.
|
|
381
|
-
try {
|
|
382
|
-
const { resolveBuilderCredentials } = await import("./credential-provider.js");
|
|
383
|
-
const creds = await resolveBuilderCredentials();
|
|
384
|
-
if (creds.privateKey) {
|
|
385
|
-
return withConnectToken({
|
|
386
|
-
...requestStatus,
|
|
387
|
-
configured: true,
|
|
388
|
-
privateKeyConfigured: true,
|
|
389
|
-
publicKeyConfigured: !!creds.publicKey,
|
|
390
|
-
userId: creds.userId || envStatus.userId,
|
|
391
|
-
orgName: creds.orgName || envStatus.orgName,
|
|
392
|
-
orgKind: creds.orgKind || envStatus.orgKind,
|
|
393
|
-
});
|
|
394
|
-
}
|
|
395
|
-
}
|
|
396
|
-
catch {
|
|
397
|
-
// Secrets table not ready — fall through to env status
|
|
398
|
-
}
|
|
399
|
-
// Surface a recent OAuth callback failure so the parent's polling
|
|
400
|
-
// stops with a clear message instead of timing out at 5min. The
|
|
401
|
-
// callback handler writes a `builder-connect-error:<email>` row
|
|
402
|
-
// when `writeBuilderCredentials` throws; this read self-clears so
|
|
403
|
-
// the message only fires once.
|
|
371
|
+
// Surface a recent OAuth callback failure before reporting a
|
|
372
|
+
// deployment fallback as "connected"; otherwise a failed personal
|
|
373
|
+
// connect attempt on a deploy that also has BUILDER_PRIVATE_KEY set
|
|
374
|
+
// looks successful even though the user's credentials were not saved.
|
|
404
375
|
try {
|
|
405
376
|
if (userEmail) {
|
|
406
377
|
const errKey = `builder-connect-error:${userEmail}`;
|
|
@@ -428,6 +399,31 @@ export function createCoreRoutesPlugin(options = {}) {
|
|
|
428
399
|
catch {
|
|
429
400
|
// settings store unavailable — fall through
|
|
430
401
|
}
|
|
402
|
+
// Read request-scoped Builder credentials first; deploy env is only
|
|
403
|
+
// the fallback. This keeps a root/local BUILDER_PRIVATE_KEY from
|
|
404
|
+
// blocking a user from connecting their own Builder account.
|
|
405
|
+
try {
|
|
406
|
+
const { resolveBuilderCredentials, resolveBuilderCredentialSource, } = await import("./credential-provider.js");
|
|
407
|
+
const [creds, credentialSource] = await Promise.all([
|
|
408
|
+
resolveBuilderCredentials(),
|
|
409
|
+
resolveBuilderCredentialSource(),
|
|
410
|
+
]);
|
|
411
|
+
if (creds.privateKey) {
|
|
412
|
+
return withConnectToken({
|
|
413
|
+
...requestStatus,
|
|
414
|
+
configured: true,
|
|
415
|
+
privateKeyConfigured: true,
|
|
416
|
+
publicKeyConfigured: !!creds.publicKey,
|
|
417
|
+
userId: creds.userId || envStatus.userId,
|
|
418
|
+
orgName: creds.orgName || envStatus.orgName,
|
|
419
|
+
orgKind: creds.orgKind || envStatus.orgKind,
|
|
420
|
+
credentialSource: credentialSource ?? undefined,
|
|
421
|
+
});
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
catch {
|
|
425
|
+
// Secrets table not ready — fall through to env status
|
|
426
|
+
}
|
|
431
427
|
// Honor legacy disconnect flag for existing deployments.
|
|
432
428
|
try {
|
|
433
429
|
const disconnected = await getSetting("builder-disconnected");
|
|
@@ -529,19 +525,6 @@ export function createCoreRoutesPlugin(options = {}) {
|
|
|
529
525
|
setResponseStatus(event, 401);
|
|
530
526
|
return { error: "Authentication required" };
|
|
531
527
|
}
|
|
532
|
-
// Env-managed mode: per-user OAuth is disabled because the operator
|
|
533
|
-
// already provided a deploy-level Builder identity. Reject the
|
|
534
|
-
// connect attempt — any per-user keys we wrote would be ignored
|
|
535
|
-
// by the resolver, so completing the OAuth flow would be a no-op
|
|
536
|
-
// that misleads the user about the resulting connection state.
|
|
537
|
-
const { isBuilderEnvManaged } = await import("./credential-provider.js");
|
|
538
|
-
if (isBuilderEnvManaged()) {
|
|
539
|
-
setResponseStatus(event, 409);
|
|
540
|
-
return {
|
|
541
|
-
error: "Builder is managed by the deployment (BUILDER_PRIVATE_KEY is set). Per-user connect is disabled.",
|
|
542
|
-
envManaged: true,
|
|
543
|
-
};
|
|
544
|
-
}
|
|
545
528
|
const requestUrl = new URL(`${event.url?.pathname || "/"}${event.url?.search || ""}`, getOrigin(event));
|
|
546
529
|
const connectToken = requestUrl.searchParams.get(BUILDER_CONNECT_PARAM);
|
|
547
530
|
const hasValidConnectToken = verifyBuilderConnectToken(connectToken, ownerEmail);
|
|
@@ -878,10 +861,9 @@ export function createCoreRoutesPlugin(options = {}) {
|
|
|
878
861
|
return createBuilderBrowserCallbackPage(previewUrl);
|
|
879
862
|
}));
|
|
880
863
|
// POST /_agent-native/builder/disconnect — revoke the user's per-user
|
|
881
|
-
// Builder credentials in app_secrets.
|
|
882
|
-
//
|
|
883
|
-
//
|
|
884
|
-
// disconnect a deploy-level identity it doesn't own.
|
|
864
|
+
// or org-scoped Builder credentials in app_secrets. Deploy-level env
|
|
865
|
+
// credentials are never mutated here; if env is configured it remains as
|
|
866
|
+
// the fallback after request-scoped credentials are removed.
|
|
885
867
|
getH3App(nitroApp).use(`${P}/builder/disconnect`, defineEventHandler(async (event) => {
|
|
886
868
|
if (getMethod(event) !== "POST") {
|
|
887
869
|
setResponseStatus(event, 405);
|
|
@@ -892,15 +874,7 @@ export function createCoreRoutesPlugin(options = {}) {
|
|
|
892
874
|
setResponseStatus(event, 401);
|
|
893
875
|
return { error: "unauthorized" };
|
|
894
876
|
}
|
|
895
|
-
const {
|
|
896
|
-
if (isBuilderEnvManaged()) {
|
|
897
|
-
setResponseStatus(event, 409);
|
|
898
|
-
return {
|
|
899
|
-
ok: false,
|
|
900
|
-
error: "Builder is managed by deploy-level BUILDER_PRIVATE_KEY. To disconnect, the operator must remove the env var.",
|
|
901
|
-
envManaged: true,
|
|
902
|
-
};
|
|
903
|
-
}
|
|
877
|
+
const { deleteBuilderCredentials } = await import("./credential-provider.js");
|
|
904
878
|
// Mirror the connect-side scope decision so disconnect undoes
|
|
905
879
|
// exactly what connect wrote: owner/admin connections land at
|
|
906
880
|
// org scope and tear down at org scope; member or no-org
|