@agent-native/core 0.208.0-nightly-20261013153438 → 0.208.0
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/client/auth/auth-page-helpers.d.ts +6 -0
- package/dist/client/auth/auth-page-helpers.js +17 -0
- package/dist/client/auth/resend-verification-email.d.ts +2 -0
- package/dist/client/auth/resend-verification-email.js +32 -0
- package/dist/client/use-session.d.ts +4 -1
- package/dist/collab/awareness.d.ts +2 -2
- package/dist/file-upload/actions/upload-image.d.ts +1 -1
- package/dist/observability/routes.d.ts +4 -4
- package/dist/provider-api/actions/custom-provider-registration.d.ts +16 -16
- package/dist/provider-api/actions/provider-api.d.ts +14 -14
- package/dist/provider-api/corpus-jobs.d.ts +2 -2
- package/dist/resources/handlers.d.ts +1 -1
- package/dist/secrets/routes.d.ts +4 -4
- package/dist/server/agent-engine-api-key-route.d.ts +1 -1
- package/dist/server/agent-engine-ollama-models-route.d.ts +1 -1
- package/dist/server/auth.d.ts +1 -0
- package/dist/server/auth.js +10 -1
- package/dist/sharing/actions/list-resource-shares.d.ts +1 -1
- package/docs/content/template-clips-features.mdx +21 -16
- package/package.json +5 -4
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
export declare function shouldRetryAuthSessionProbe(response: Pick<Response, "status">, readable: boolean): boolean;
|
|
2
2
|
export declare function isAgentNativeDesktop(userAgent?: string): boolean;
|
|
3
|
+
export declare function identityBootstrapCallbackHref(target: string, options: {
|
|
4
|
+
enabled: boolean;
|
|
5
|
+
bootstrapPath: string;
|
|
6
|
+
origin?: string;
|
|
7
|
+
userAgent?: string;
|
|
8
|
+
}): string;
|
|
3
9
|
export declare function isElectron(userAgent?: string): boolean;
|
|
4
10
|
export declare function isBuilderDesktop(userAgent?: string): boolean;
|
|
5
11
|
export declare function normalizeOAuthReturnPath(target: string, origin?: string): string;
|
|
@@ -4,6 +4,23 @@ export function shouldRetryAuthSessionProbe(response, readable) {
|
|
|
4
4
|
export function isAgentNativeDesktop(userAgent = typeof navigator === "undefined" ? "" : navigator.userAgent) {
|
|
5
5
|
return /AgentNativeDesktop/i.test(userAgent);
|
|
6
6
|
}
|
|
7
|
+
export function identityBootstrapCallbackHref(target, options) {
|
|
8
|
+
const origin = options.origin ??
|
|
9
|
+
(typeof window === "undefined"
|
|
10
|
+
? "http://agent-native.local"
|
|
11
|
+
: window.location.origin);
|
|
12
|
+
const appOrigin = new URL(origin);
|
|
13
|
+
const targetUrl = new URL(target || "/", appOrigin);
|
|
14
|
+
if (targetUrl.origin !== appOrigin.origin) {
|
|
15
|
+
throw new TypeError("Identity callback target must be same-origin");
|
|
16
|
+
}
|
|
17
|
+
const safeTarget = `${targetUrl.pathname}${targetUrl.search}${targetUrl.hash}`;
|
|
18
|
+
if (!options.enabled || isAgentNativeDesktop(options.userAgent))
|
|
19
|
+
return safeTarget;
|
|
20
|
+
const url = new URL(options.bootstrapPath, origin);
|
|
21
|
+
url.searchParams.set("return", safeTarget);
|
|
22
|
+
return `${url.pathname}${url.search}`;
|
|
23
|
+
}
|
|
7
24
|
export function isElectron(userAgent = typeof navigator === "undefined" ? "" : navigator.userAgent) {
|
|
8
25
|
return userAgent.includes("Electron");
|
|
9
26
|
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { agentNativePath } from "../api-path.js";
|
|
2
|
+
function isSuccessfulResendResponse(value) {
|
|
3
|
+
return (value !== null &&
|
|
4
|
+
typeof value === "object" &&
|
|
5
|
+
"status" in value &&
|
|
6
|
+
value.status === true);
|
|
7
|
+
}
|
|
8
|
+
/** Requests another verification message for the signed-in user's email. */
|
|
9
|
+
export async function resendVerificationEmail(email, callbackURL) {
|
|
10
|
+
const response = await fetch(agentNativePath("/_agent-native/auth/ba/send-verification-email"), {
|
|
11
|
+
method: "POST",
|
|
12
|
+
credentials: "include",
|
|
13
|
+
headers: { "Content-Type": "application/json" },
|
|
14
|
+
body: JSON.stringify({
|
|
15
|
+
email,
|
|
16
|
+
...(callbackURL ? { callbackURL } : {}),
|
|
17
|
+
}),
|
|
18
|
+
});
|
|
19
|
+
if (!response.ok) {
|
|
20
|
+
throw new Error("verification email request failed");
|
|
21
|
+
}
|
|
22
|
+
let result;
|
|
23
|
+
try {
|
|
24
|
+
result = await response.json();
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
throw new Error("verification email request failed");
|
|
28
|
+
}
|
|
29
|
+
if (!isSuccessfulResendResponse(result)) {
|
|
30
|
+
throw new Error("verification email request failed");
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import type { AuthSession } from "../server/auth.js";
|
|
2
2
|
export type { AuthSession };
|
|
3
|
+
interface ClientAuthSession extends AuthSession {
|
|
4
|
+
identitySsoEnabled?: boolean;
|
|
5
|
+
}
|
|
3
6
|
export { hasSessionHint, isSessionNavigationPending, } from "../shared/ssr-session-bootstrap.js";
|
|
4
7
|
/**
|
|
5
8
|
* True while the app tree is mounted hidden ahead of the session read (a hinted
|
|
@@ -25,7 +28,7 @@ export type SessionNavigationReason = "signed_out" | "signed_in_app" | "sso_prob
|
|
|
25
28
|
export declare function navigateForSession(href: string, reason?: SessionNavigationReason): boolean;
|
|
26
29
|
export type SessionStatus = "loading" | "authenticated" | "unauthenticated" | "unavailable" | "signing-out";
|
|
27
30
|
interface UseSessionResult {
|
|
28
|
-
session:
|
|
31
|
+
session: ClientAuthSession | null;
|
|
29
32
|
isLoading: boolean;
|
|
30
33
|
status: SessionStatus;
|
|
31
34
|
error: Error | null;
|
|
@@ -38,19 +38,19 @@ export declare const postAwareness: import("h3").EventHandlerWithFetch<import("h
|
|
|
38
38
|
error: string;
|
|
39
39
|
states?: undefined;
|
|
40
40
|
} | {
|
|
41
|
+
error?: undefined;
|
|
41
42
|
states: {
|
|
42
43
|
clientId: number;
|
|
43
44
|
state: string;
|
|
44
45
|
}[];
|
|
45
|
-
error?: undefined;
|
|
46
46
|
}>>;
|
|
47
47
|
export declare const getActiveUsers: import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<{
|
|
48
48
|
error: string;
|
|
49
49
|
users?: undefined;
|
|
50
50
|
} | {
|
|
51
|
+
error?: undefined;
|
|
51
52
|
users: {
|
|
52
53
|
clientId: number;
|
|
53
54
|
lastSeen: number;
|
|
54
55
|
}[];
|
|
55
|
-
error?: undefined;
|
|
56
56
|
}>>;
|
|
@@ -33,26 +33,26 @@ export declare function createObservabilityHandler(): import("h3").EventHandlerW
|
|
|
33
33
|
spans?: undefined;
|
|
34
34
|
ok?: undefined;
|
|
35
35
|
} | {
|
|
36
|
+
error?: undefined;
|
|
36
37
|
message?: undefined;
|
|
37
38
|
summary: import("./types.js").TraceSummary;
|
|
38
39
|
spans: import("./types.js").TraceSpan[];
|
|
39
|
-
error?: undefined;
|
|
40
40
|
ok?: undefined;
|
|
41
41
|
} | {
|
|
42
|
+
error?: undefined;
|
|
42
43
|
message?: undefined;
|
|
43
44
|
summary?: undefined;
|
|
44
45
|
spans?: undefined;
|
|
45
46
|
traceMissing: true;
|
|
46
47
|
id: string;
|
|
47
|
-
error?: undefined;
|
|
48
48
|
ok?: undefined;
|
|
49
49
|
} | {
|
|
50
|
+
error?: undefined;
|
|
50
51
|
message?: undefined;
|
|
51
52
|
summary?: undefined;
|
|
52
53
|
spans?: undefined;
|
|
53
54
|
traceMissing?: undefined;
|
|
54
55
|
id: string;
|
|
55
|
-
error?: undefined;
|
|
56
56
|
ok?: undefined;
|
|
57
57
|
} | {
|
|
58
58
|
message?: undefined;
|
|
@@ -61,9 +61,9 @@ export declare function createObservabilityHandler(): import("h3").EventHandlerW
|
|
|
61
61
|
error: any;
|
|
62
62
|
ok?: undefined;
|
|
63
63
|
} | {
|
|
64
|
+
error?: undefined;
|
|
64
65
|
message?: undefined;
|
|
65
66
|
summary?: undefined;
|
|
66
67
|
spans?: undefined;
|
|
67
|
-
error?: undefined;
|
|
68
68
|
ok: boolean;
|
|
69
69
|
}>>;
|
|
@@ -76,7 +76,9 @@ export declare function createCustomProviderRegistrationAction<TSchema extends Z
|
|
|
76
76
|
}>>;
|
|
77
77
|
}, z.core.$strip>>, {
|
|
78
78
|
message?: undefined;
|
|
79
|
-
|
|
79
|
+
id?: undefined;
|
|
80
|
+
provider?: undefined;
|
|
81
|
+
deleted?: undefined;
|
|
80
82
|
providers: {
|
|
81
83
|
id: string;
|
|
82
84
|
label: string;
|
|
@@ -87,47 +89,45 @@ export declare function createCustomProviderRegistrationAction<TSchema extends Z
|
|
|
87
89
|
updatedAt: number;
|
|
88
90
|
}[];
|
|
89
91
|
count: number;
|
|
90
|
-
|
|
91
|
-
deleted?: undefined;
|
|
92
|
+
found?: undefined;
|
|
92
93
|
registered?: undefined;
|
|
93
|
-
id?: undefined;
|
|
94
94
|
label?: undefined;
|
|
95
95
|
} | {
|
|
96
|
-
count?: undefined;
|
|
97
96
|
message?: undefined;
|
|
97
|
+
id?: undefined;
|
|
98
|
+
deleted?: undefined;
|
|
98
99
|
providers?: undefined;
|
|
100
|
+
count?: undefined;
|
|
99
101
|
found: boolean;
|
|
100
102
|
provider: import("../custom-registry.js").CustomProviderConfig;
|
|
101
|
-
deleted?: undefined;
|
|
102
103
|
registered?: undefined;
|
|
103
|
-
id?: undefined;
|
|
104
104
|
label?: undefined;
|
|
105
105
|
} | {
|
|
106
|
-
count?: undefined;
|
|
107
106
|
message?: undefined;
|
|
108
|
-
providers?: undefined;
|
|
109
107
|
provider?: undefined;
|
|
108
|
+
deleted?: undefined;
|
|
109
|
+
providers?: undefined;
|
|
110
|
+
count?: undefined;
|
|
110
111
|
found: boolean;
|
|
111
112
|
id: string;
|
|
112
|
-
deleted?: undefined;
|
|
113
113
|
registered?: undefined;
|
|
114
114
|
label?: undefined;
|
|
115
115
|
} | {
|
|
116
|
-
count?: undefined;
|
|
117
116
|
message?: undefined;
|
|
118
|
-
found?: undefined;
|
|
119
|
-
providers?: undefined;
|
|
120
117
|
provider?: undefined;
|
|
118
|
+
providers?: undefined;
|
|
119
|
+
count?: undefined;
|
|
120
|
+
found?: undefined;
|
|
121
121
|
deleted: boolean;
|
|
122
122
|
id: string;
|
|
123
123
|
registered?: undefined;
|
|
124
124
|
label?: undefined;
|
|
125
125
|
} | {
|
|
126
|
-
count?: undefined;
|
|
127
|
-
found?: undefined;
|
|
128
|
-
providers?: undefined;
|
|
129
126
|
provider?: undefined;
|
|
130
127
|
deleted?: undefined;
|
|
128
|
+
providers?: undefined;
|
|
129
|
+
count?: undefined;
|
|
130
|
+
found?: undefined;
|
|
131
131
|
registered: boolean;
|
|
132
132
|
id: string;
|
|
133
133
|
label: string;
|
|
@@ -311,9 +311,10 @@ export declare function createProviderApiActions(runtime: Pick<ProviderApiRuntim
|
|
|
311
311
|
notes?: string | undefined;
|
|
312
312
|
scope?: "org" | "user" | undefined;
|
|
313
313
|
}, {
|
|
314
|
+
provider?: undefined;
|
|
315
|
+
deleted?: undefined;
|
|
314
316
|
id?: undefined;
|
|
315
317
|
message?: undefined;
|
|
316
|
-
found?: undefined;
|
|
317
318
|
providers: {
|
|
318
319
|
id: string;
|
|
319
320
|
label: string;
|
|
@@ -324,46 +325,45 @@ export declare function createProviderApiActions(runtime: Pick<ProviderApiRuntim
|
|
|
324
325
|
updatedAt: number;
|
|
325
326
|
}[];
|
|
326
327
|
count: number;
|
|
327
|
-
|
|
328
|
-
deleted?: undefined;
|
|
328
|
+
found?: undefined;
|
|
329
329
|
registered?: undefined;
|
|
330
330
|
label?: undefined;
|
|
331
331
|
} | {
|
|
332
|
+
deleted?: undefined;
|
|
332
333
|
id?: undefined;
|
|
334
|
+
count?: undefined;
|
|
333
335
|
message?: undefined;
|
|
334
336
|
providers?: undefined;
|
|
335
|
-
count?: undefined;
|
|
336
337
|
found: boolean;
|
|
337
338
|
provider: import("../custom-registry.js").CustomProviderConfig;
|
|
338
|
-
deleted?: undefined;
|
|
339
339
|
registered?: undefined;
|
|
340
340
|
label?: undefined;
|
|
341
341
|
} | {
|
|
342
|
+
provider?: undefined;
|
|
343
|
+
deleted?: undefined;
|
|
344
|
+
count?: undefined;
|
|
342
345
|
message?: undefined;
|
|
343
346
|
providers?: undefined;
|
|
344
|
-
count?: undefined;
|
|
345
|
-
provider?: undefined;
|
|
346
347
|
found: boolean;
|
|
347
348
|
id: string;
|
|
348
|
-
deleted?: undefined;
|
|
349
349
|
registered?: undefined;
|
|
350
350
|
label?: undefined;
|
|
351
351
|
} | {
|
|
352
|
+
provider?: undefined;
|
|
353
|
+
count?: undefined;
|
|
352
354
|
message?: undefined;
|
|
353
|
-
found?: undefined;
|
|
354
355
|
providers?: undefined;
|
|
355
|
-
|
|
356
|
-
provider?: undefined;
|
|
356
|
+
found?: undefined;
|
|
357
357
|
deleted: boolean;
|
|
358
358
|
id: string;
|
|
359
359
|
registered?: undefined;
|
|
360
360
|
label?: undefined;
|
|
361
361
|
} | {
|
|
362
|
-
found?: undefined;
|
|
363
|
-
providers?: undefined;
|
|
364
|
-
count?: undefined;
|
|
365
362
|
provider?: undefined;
|
|
366
363
|
deleted?: undefined;
|
|
364
|
+
count?: undefined;
|
|
365
|
+
providers?: undefined;
|
|
366
|
+
found?: undefined;
|
|
367
367
|
registered: boolean;
|
|
368
368
|
id: string;
|
|
369
369
|
label: string;
|
|
@@ -73,7 +73,6 @@ export declare function createProviderCorpusJobAction(options: CreateProviderCor
|
|
|
73
73
|
offset?: unknown;
|
|
74
74
|
limit?: unknown;
|
|
75
75
|
}, {
|
|
76
|
-
deleted?: undefined;
|
|
77
76
|
jobs: {
|
|
78
77
|
id: string;
|
|
79
78
|
name: string;
|
|
@@ -84,6 +83,7 @@ export declare function createProviderCorpusJobAction(options: CreateProviderCor
|
|
|
84
83
|
updatedAt: string;
|
|
85
84
|
}[];
|
|
86
85
|
total: number;
|
|
86
|
+
deleted?: undefined;
|
|
87
87
|
jobId?: undefined;
|
|
88
88
|
} | {
|
|
89
89
|
jobs?: undefined;
|
|
@@ -91,9 +91,9 @@ export declare function createProviderCorpusJobAction(options: CreateProviderCor
|
|
|
91
91
|
deleted: boolean;
|
|
92
92
|
jobId: string;
|
|
93
93
|
} | {
|
|
94
|
-
deleted?: undefined;
|
|
95
94
|
jobs?: undefined;
|
|
96
95
|
total?: undefined;
|
|
96
|
+
deleted?: undefined;
|
|
97
97
|
jobId?: undefined;
|
|
98
98
|
hits: Record<string, unknown>[];
|
|
99
99
|
offset: number;
|
|
@@ -39,8 +39,8 @@ export declare function handleUpdateResource(event: any): Promise<import("./stor
|
|
|
39
39
|
error: string;
|
|
40
40
|
}>;
|
|
41
41
|
export declare function handleDeleteResource(event: any): Promise<{
|
|
42
|
-
ok?: undefined;
|
|
43
42
|
error: string;
|
|
43
|
+
ok?: undefined;
|
|
44
44
|
} | {
|
|
45
45
|
error?: undefined;
|
|
46
46
|
ok: boolean;
|
package/dist/secrets/routes.d.ts
CHANGED
|
@@ -57,31 +57,31 @@ export declare function createWriteSecretHandler(): import("h3").EventHandlerWit
|
|
|
57
57
|
} | {
|
|
58
58
|
error: string;
|
|
59
59
|
errorCode?: undefined;
|
|
60
|
-
ok?: undefined;
|
|
61
60
|
status?: undefined;
|
|
61
|
+
ok?: undefined;
|
|
62
62
|
} | {
|
|
63
63
|
error: string;
|
|
64
64
|
errorCode: string;
|
|
65
|
-
ok?: undefined;
|
|
66
65
|
status?: undefined;
|
|
66
|
+
ok?: undefined;
|
|
67
67
|
} | {
|
|
68
68
|
error?: undefined;
|
|
69
69
|
errorCode?: undefined;
|
|
70
70
|
ok: boolean;
|
|
71
71
|
status: string;
|
|
72
72
|
} | {
|
|
73
|
-
ok?: undefined;
|
|
74
73
|
error: string;
|
|
75
74
|
removed?: undefined;
|
|
75
|
+
ok?: undefined;
|
|
76
76
|
} | {
|
|
77
77
|
error?: undefined;
|
|
78
78
|
ok: boolean;
|
|
79
79
|
removed: boolean;
|
|
80
80
|
}>>;
|
|
81
81
|
export declare function createTestSecretHandler(): import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<{
|
|
82
|
-
ok?: undefined;
|
|
83
82
|
error: string;
|
|
84
83
|
note?: undefined;
|
|
84
|
+
ok?: undefined;
|
|
85
85
|
} | {
|
|
86
86
|
error?: undefined;
|
|
87
87
|
ok: boolean;
|
|
@@ -67,12 +67,12 @@ export declare function createAgentEngineApiKeyHandler(): import("h3").EventHand
|
|
|
67
67
|
code: any;
|
|
68
68
|
} | {
|
|
69
69
|
errorCode?: undefined;
|
|
70
|
-
error?: undefined;
|
|
71
70
|
code?: undefined;
|
|
72
71
|
ok: boolean;
|
|
73
72
|
key: string;
|
|
74
73
|
baseUrlKey?: string;
|
|
75
74
|
scope: AgentEngineApiKeyScope;
|
|
76
75
|
defaultModel?: import("./agent-engine-default-model-route.js").SavedKeyDefaultModelOutcome;
|
|
76
|
+
error?: undefined;
|
|
77
77
|
}>>;
|
|
78
78
|
export {};
|
package/dist/server/auth.d.ts
CHANGED
package/dist/server/auth.js
CHANGED
|
@@ -81,7 +81,7 @@ import { getDeploymentEmailReadiness } from "./email.js";
|
|
|
81
81
|
import { resolveGoogleSignInCredentials } from "./google-oauth-credentials.js";
|
|
82
82
|
import { isElectron as isElectronRequest, getAppBasePath, getAppUrl, getOrigin, encodeOAuthState, decodeOAuthState, logOAuthStateDecodeFailure, createOAuthSession, oauthCallbackResponse, oauthDesktopExchangePage, oauthErrorPage, resolveOAuthRedirectUri, isAllowedOAuthRedirectUri, decodeNetlifyPreviewGoogleOAuthRelayState, isNetlifyPreviewGoogleOAuthCallbackUrl, isNetlifyPreviewGoogleOAuthRelayState, wrapNetlifyPreviewGoogleOAuthState, } from "./google-oauth.js";
|
|
83
83
|
import { clearIdentityGoogleAuthCookie } from "./identity-auth-provider.js";
|
|
84
|
-
import { isCanonicalAgentNativeAppRequest, isCanonicalIdentitySsoClientRequest, isDesktopSsoUserAgent, isIdentitySsoExplicitlyEnabled, isNetlifyDeployPermalinkIdentitySsoClientRequest, } from "./identity-sso-store.js";
|
|
84
|
+
import { isCanonicalAgentNativeAppRequest, isCanonicalIdentitySsoClientRequest, isDesktopSsoUserAgent, isIdentitySsoAvailableForRequest, isIdentitySsoExplicitlyEnabled, isNetlifyDeployPermalinkIdentitySsoClientRequest, } from "./identity-sso-store.js";
|
|
85
85
|
import { healUndecryptableJwks } from "./jwks-secret-rotation.js";
|
|
86
86
|
import { resolveCanonicalUserForLegacySession, } from "./legacy-auth-migration.js";
|
|
87
87
|
import * as loopback from "./loopback.js";
|
|
@@ -90,6 +90,7 @@ import { safeOAuthReturnUrl } from "./oauth-return-url.js";
|
|
|
90
90
|
import { getDeploySettingsRequiredHtml, getOnboardingHtml, getResetPasswordHtml, } from "./onboarding-html.js";
|
|
91
91
|
import { queryEchoSafeRedirect } from "./query-echo-safe-redirect.js";
|
|
92
92
|
import { getRequestContext, markRequestIdentityAuthenticatedAtMs, markVerifiedServiceIdentityForEvent, hasContinuationLocalRequestContext, hasExplicitPersonalOrgScope, markExplicitPersonalOrgScope, runWithRequestContext, } from "./request-context.js";
|
|
93
|
+
import { getForwardedRequestOrigin } from "./request-origin.js";
|
|
93
94
|
import { captureAuthError } from "./sentry.js";
|
|
94
95
|
import { isTestIdentity } from "./test-identity.js";
|
|
95
96
|
import { isWorkspaceOAuthCallbackRelayEnabled } from "./workspace-oauth.js";
|
|
@@ -3627,6 +3628,13 @@ function setFrameworkSessionHintCookie(event) {
|
|
|
3627
3628
|
maxAge: sessionMaxAge,
|
|
3628
3629
|
});
|
|
3629
3630
|
}
|
|
3631
|
+
function identitySsoEnabledForRequest(event) {
|
|
3632
|
+
const requestOrigin = new URL(getForwardedRequestOrigin(event));
|
|
3633
|
+
return isIdentitySsoAvailableForRequest({
|
|
3634
|
+
requestHost: requestOrigin.host,
|
|
3635
|
+
requestProtocol: requestOrigin.protocol.slice(0, -1),
|
|
3636
|
+
});
|
|
3637
|
+
}
|
|
3630
3638
|
export const authSessionHandler = defineEventHandler(async (event) => {
|
|
3631
3639
|
setResponseHeader(event, "Cache-Control", "no-store");
|
|
3632
3640
|
if (!isReadMethod(event)) {
|
|
@@ -3646,6 +3654,7 @@ export const authSessionHandler = defineEventHandler(async (event) => {
|
|
|
3646
3654
|
const response = {
|
|
3647
3655
|
...session,
|
|
3648
3656
|
testIdentity: isTestIdentity(session.email),
|
|
3657
|
+
identitySsoEnabled: identitySsoEnabledForRequest(event),
|
|
3649
3658
|
};
|
|
3650
3659
|
return response;
|
|
3651
3660
|
});
|
|
@@ -2,6 +2,7 @@ declare const _default: import("../../action.js").ActionDefinition<{
|
|
|
2
2
|
resourceType: string;
|
|
3
3
|
resourceId: string;
|
|
4
4
|
}, {
|
|
5
|
+
role?: undefined;
|
|
5
6
|
ownerEmail: any;
|
|
6
7
|
visibility: any;
|
|
7
8
|
shares: any[];
|
|
@@ -11,7 +12,6 @@ declare const _default: import("../../action.js").ActionDefinition<{
|
|
|
11
12
|
supportsGroupShares?: boolean;
|
|
12
13
|
};
|
|
13
14
|
orgId?: undefined;
|
|
14
|
-
role?: undefined;
|
|
15
15
|
agentReadable?: undefined;
|
|
16
16
|
} | {
|
|
17
17
|
ownerEmail: string;
|
|
@@ -136,29 +136,34 @@ Turn Rewind on under the Rewind tab in Settings. Once it's on, you can ask the a
|
|
|
136
136
|
|
|
137
137
|
### Earlier screen time {#earlier-screen-time}
|
|
138
138
|
|
|
139
|
-
Earlier screen time
|
|
139
|
+
Earlier screen time attaches up to five minutes of local screen history from before a recording as its own context. It never becomes part of the video's footage.
|
|
140
140
|
|
|
141
|
-
|
|
141
|
+
<WireframeBlock id="clips-earlier-screen-time-popover">
|
|
142
|
+
<Screen
|
|
143
|
+
surface="popover"
|
|
144
|
+
frame="show"
|
|
145
|
+
html={
|
|
146
|
+
"<div style='display:flex;flex-direction:column;gap:10px;padding:16px;box-sizing:border-box'><div style='display:flex;align-items:center;gap:8px;padding:8px'><span>Include last</span><div style='flex:1'></div><span>Off</span><span data-icon='chevronDown'></span></div><div class='wf-card' style='display:flex;flex-direction:column;gap:8px'><strong>Turn on Rewind</strong><small class='wf-muted'>Off by default. Screen history stays on this device until you add it to a recording or approve a request to share it.</small><button class='primary'>Turn on Rewind</button><button style='width:100%;display:flex;justify-content:center;background:transparent;border:0'>What is this?</button></div></div>"
|
|
147
|
+
}
|
|
148
|
+
/>
|
|
149
|
+
</WireframeBlock>
|
|
142
150
|
|
|
143
|
-
|
|
151
|
+
**Include it with a recording**
|
|
144
152
|
|
|
145
|
-
|
|
153
|
+
- **Include earlier screen time** is an optional lab, on by default. Turn it off under **Settings > Labs** in the Clips web or desktop app. In the desktop tray, choose **Off** (default), **30 s**, **5 min**, or **Custom…** up to five minutes. Rewind must be on and running; if it is off, choosing a duration opens the **Turn on Rewind** explanation.
|
|
154
|
+
- When you start a recording, Clips requests the selected window from Rewind on this device and uploads it. **Off** makes no request.
|
|
146
155
|
|
|
147
|
-
|
|
156
|
+
**Review before upload**
|
|
148
157
|
|
|
149
|
-
|
|
158
|
+
- In the Clips desktop app, choose **Edit** when it's ready to review an on-device preview of up to five minutes. It is never uploaded, starts at the selected window, and ends at recording start. Drag the handles to trim it, or use **Play selection** to play that range.
|
|
159
|
+
- **Save** uploads only the selection. Cancel or close the editor to discard the preview. Readouts show the start offset, length, and recording start; when the range starts with the recording, the offset reads **From recording start**.
|
|
150
160
|
|
|
151
|
-
**
|
|
161
|
+
**Privacy and removal**
|
|
152
162
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
While a clip has earlier screen time, it stays private. Requesting it makes the clip private, and the request is refused if the clip is still shared directly with other people. Sharing is blocked until you remove the earlier screen time: making the clip public or visible to your organization, or giving someone access, is refused.
|
|
158
|
-
|
|
159
|
-
On the clip page, the Transcript tab shows earlier screen time above the transcript, with its window and an inline player. Editing happens in the Clips desktop app; the same panel can remove it. The agent can read the window and its status.
|
|
160
|
-
|
|
161
|
-
Limits: earlier screen time is five minutes at most. The history is only what Rewind still keeps on this device, so older moments may no longer be available.
|
|
163
|
+
- Earlier screen time stays private while attached. Requesting it makes the clip private, and a request is refused while the clip is shared directly with others. Sharing, public or organization visibility, and new access stay blocked until you remove it.
|
|
164
|
+
- The clip's **Transcript** tab shows the attached window above the transcript with an inline player. Remove it from the desktop edit view or that panel, then confirm. Its footage moves to Trash and the clip no longer includes it. Discarding the recording removes it too. The agent can read its window and status, and can remove it.
|
|
165
|
+
- If another device captured the recording, it waits for that device to save the footage; only that device can export it, and other devices skip it. If no recording device is on file, the desktop app that captured the recording processes it.
|
|
166
|
+
- The limit is five minutes, and only history Rewind still keeps on this device is available.
|
|
162
167
|
|
|
163
168
|
### Chrome extension browser logs
|
|
164
169
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-native/core",
|
|
3
|
-
"version": "0.208.0
|
|
3
|
+
"version": "0.208.0",
|
|
4
4
|
"description": "The agentic application framework for building autonomous agents with intuitive UIs",
|
|
5
5
|
"homepage": "https://github.com/BuilderIO/agent-native#readme",
|
|
6
6
|
"bugs": {
|
|
@@ -499,6 +499,7 @@
|
|
|
499
499
|
"./client/app-model-default": "./dist/client/app-model-default.js",
|
|
500
500
|
"./client/appearance": "./dist/client/appearance.js",
|
|
501
501
|
"./client/auth/change-email": "./dist/client/auth/change-email.js",
|
|
502
|
+
"./client/auth/resend-verification-email": "./dist/client/auth/resend-verification-email.js",
|
|
502
503
|
"./client/auth/two-factor": "./dist/client/auth/two-factor.js",
|
|
503
504
|
"./client/browser-tab-id": "./dist/client/browser-tab-id.js",
|
|
504
505
|
"./client/builder-frame": "./dist/client/builder-frame.js",
|
|
@@ -702,8 +703,8 @@
|
|
|
702
703
|
"yaml": "^2.9.0",
|
|
703
704
|
"yjs": "^13.6.33",
|
|
704
705
|
"zod": "^4.3.6",
|
|
705
|
-
"@agent-native/agentkit": "^0.208.0
|
|
706
|
-
"@agent-native/recap-cli": "^0.5.
|
|
706
|
+
"@agent-native/agentkit": "^0.208.0",
|
|
707
|
+
"@agent-native/recap-cli": "^0.5.71"
|
|
707
708
|
},
|
|
708
709
|
"devDependencies": {
|
|
709
710
|
"@ai-sdk/anthropic": "^3.0.71",
|
|
@@ -773,7 +774,7 @@
|
|
|
773
774
|
"xlsx": "^0.18.5"
|
|
774
775
|
},
|
|
775
776
|
"peerDependencies": {
|
|
776
|
-
"@agent-native/core-corpus": "0.
|
|
777
|
+
"@agent-native/core-corpus": ">=0.196.0",
|
|
777
778
|
"@ai-sdk/anthropic": ">=3",
|
|
778
779
|
"@ai-sdk/cohere": ">=3",
|
|
779
780
|
"@ai-sdk/google": ">=3",
|