@synopackageland/sdk 0.31.4 → 0.32.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.
@@ -147,6 +147,9 @@ export interface Context {
147
147
  locale: string;
148
148
  lang?: string;
149
149
  t?: (key: string, params?: Record<string, unknown>) => string;
150
+ uiUpdate?: {
151
+ check(signal?: AbortSignal): Promise<boolean>;
152
+ };
150
153
  appWindow?: unknown;
151
154
  host: HostAdapter;
152
155
  }
@@ -158,8 +161,8 @@ export type LaunchContext = {
158
161
  fullPage?: boolean;
159
162
  host: Pick<HostAdapter, 'platform'>;
160
163
  };
161
- /** What AppShell reads: the launch, the brand, the signed-in account, the executor to approve and, with app-root, the window to bring to the front. */
162
- export type ShellContext = LaunchContext & Pick<Context, 'displayName' | 'appIcon' | 'user'> & Partial<Pick<Context, 'executor' | 'call' | 'reopen'>> & {
164
+ /** What AppShell reads: the launch, the brand, the signed-in account, the executor to approve, the UI update check and, with app-root, the window to bring to the front. */
165
+ export type ShellContext = LaunchContext & Pick<Context, 'displayName' | 'appIcon' | 'user'> & Partial<Pick<Context, 'executor' | 'call' | 'reopen' | 'uiUpdate'>> & {
163
166
  host?: Partial<Pick<HostAdapter, 'activateWindow'>>;
164
167
  };
165
168
  export declare function isFullPage(ctx: LaunchContext): boolean;
@@ -0,0 +1,27 @@
1
+ import type { Context } from '../context';
2
+ import { type EntryMode } from './check';
3
+ type __VLS_Props = {
4
+ ctx: Pick<Context, 'call'> & Partial<Pick<Context, 'reopen' | 'displayName'>>;
5
+ mode: EntryMode;
6
+ locale?: string;
7
+ messages?: {
8
+ title: string;
9
+ session: string;
10
+ unavailable: string;
11
+ retry: string;
12
+ dismiss: string;
13
+ };
14
+ };
15
+ declare var __VLS_1: {};
16
+ type __VLS_Slots = {} & {
17
+ default?: (props: typeof __VLS_1) => any;
18
+ };
19
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
20
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
21
+ declare const _default: typeof __VLS_export;
22
+ export default _default;
23
+ type __VLS_WithSlots<T, S> = T & {
24
+ new (): {
25
+ $slots: S;
26
+ };
27
+ };
@@ -0,0 +1,13 @@
1
+ import type { Context } from '../context';
2
+ export type EntryMode = 'admin-only' | 'app-privilege';
3
+ export type EntryFailure = {
4
+ code: 'session_required' | 'admin_required' | 'app_privilege_denied' | 'auth_unavailable';
5
+ };
6
+ export interface EntryCheck {
7
+ check(): Promise<void>;
8
+ dispose(): void;
9
+ }
10
+ /** A background presentation check. The CGI's EntryGate is the authority.
11
+ * A fresh app.status traverses its session and entry checks; ctx.user is
12
+ * display metadata and cannot establish the current session's privileges. */
13
+ export declare function createEntryCheck(ctx: Pick<Context, 'call'>, mode: EntryMode, onResult: (failure: EntryFailure | undefined) => void): EntryCheck;
@@ -37,5 +37,6 @@ export { createSharedFolderAccess, sharedFolderAccessFor, type SharedFolderOptio
37
37
  export * from './protocol/v1';
38
38
  export { encodeRequest, decodeResponse, type ProtocolAuth, type ProtocolResponse } from './protocol/codec';
39
39
  export { appDenial, appRefusal, type AppDenial } from './authorization/refusal';
40
+ export { createEntryCheck, type EntryCheck, type EntryFailure, type EntryMode } from './entry/check';
40
41
  export { createClient, type Batch, type BatchCall, type BatchResult, type ClientOptions } from './client';
41
42
  export { readDsmPorts, type DsmPort, type DsmPortRange } from './dsm/service-ports';
@@ -276,7 +276,7 @@ export declare const protocolCodes: {
276
276
  readonly retryable: true;
277
277
  readonly httpStatus: 429;
278
278
  };
279
- /** The file is larger than max_bytes, or root output is larger than its policy max_output. */
279
+ /** The file is larger than max_bytes (files.read) or 100 MiB (files.write), or root output is larger than its policy max_output. */
280
280
  readonly "limit-exceeded": {
281
281
  readonly kind: "refusal";
282
282
  readonly retryable: false;
@@ -518,7 +518,7 @@ export interface FilesTaskStatusParams {
518
518
  job_id: string;
519
519
  task_id: string;
520
520
  }
521
- /** files.write: Publish a staged file synchronously. Since 0.9.0. */
521
+ /** files.write: Publish a staged file synchronously. The staged file may be at most 104857600 bytes (100 MiB); a larger one is refused with limit-exceeded. Since 0.9.0. */
522
522
  export interface FilesWriteParams {
523
523
  delegation_id: string;
524
524
  job_id: string;
@@ -0,0 +1,8 @@
1
+ import type { Context } from '../context';
2
+ type __VLS_Props = {
3
+ locale?: string;
4
+ ctx: Partial<Pick<Context, 'uiUpdate' | 'reopen'>>;
5
+ };
6
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
7
+ declare const _default: typeof __VLS_export;
8
+ export default _default;
@@ -10,5 +10,7 @@ export declare const shellCatalogs: Record<import("..").UiLocale, {
10
10
  notes: string;
11
11
  notesCount: string;
12
12
  loading: string;
13
+ uiUpdated: string;
14
+ uiReload: string;
13
15
  }>;
14
16
  export declare function shellCopy(locale: string): ShellCopy;
package/dist/src/vue.d.ts CHANGED
@@ -4,6 +4,7 @@ export { createSession, type IdentitySession, type SessionSubject } from './iden
4
4
  export { useNasRequest } from './nas/use-request';
5
5
  export { default as AppShell } from './shell/AppShell.vue';
6
6
  export { default as PageActions } from './shell/PageActions.vue';
7
+ export { default as UiUpdateNotice } from './shell/UiUpdateNotice.vue';
7
8
  export { PageActionsTarget } from './shell/page-actions';
8
9
  export { default as PageInfo } from './shell/PageInfo.vue';
9
10
  export { PageInfoTarget } from './shell/page-info';
@@ -25,3 +26,4 @@ export { default as BackgroundSaveSettings } from './delegate/BackgroundSaveSett
25
26
  export { default as AuthorizationGate } from './authorization/AuthorizationGate.vue';
26
27
  export { useAuthorization, type AuthorizationControl, type AuthorizationGateState } from './authorization/use-authorization';
27
28
  export { default as AuthorizationSettings } from './authorization/AuthorizationSettings.vue';
29
+ export { default as EntryGuard } from './entry/EntryGuard.vue';
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- .executor-upgrade[data-v-aa18745e]{padding:var(--ui-space-3,12px);border-radius:var(--ui-radius-md);background:var(--ui-surface-subtle);font-size:var(--ui-font-size,13px);line-height:var(--ui-line-height,20px);color:var(--ui-text);overflow-wrap:anywhere}.executor-upgrade p[data-v-aa18745e]{margin:0}.executor-upgrade p+p[data-v-aa18745e]{margin-top:var(--ui-space-1,4px)}.executor-upgrade .executor-upgrade-title[data-v-aa18745e]{font-weight:600;margin-bottom:var(--ui-space-2,8px)}.executor-upgrade dl[data-v-aa18745e]{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--ui-space-1,4px);margin:var(--ui-space-2,8px) 0 0}.executor-upgrade dt[data-v-aa18745e]{font-weight:600}.executor-upgrade dd[data-v-aa18745e]{margin:0 0 var(--ui-space-1,4px)}.executor-upgrade code[data-v-aa18745e]{font-size:var(--ui-font-size-sm,12px)}.executor-upgrade details[data-v-aa18745e]{margin-top:var(--ui-space-2,8px)}.executor-upgrade summary[data-v-aa18745e]{cursor:pointer;color:var(--ui-primary)}.executor-upgrade ul[data-v-aa18745e]{padding-left:var(--ui-space-4,16px);margin:var(--ui-space-2,8px) 0 0}.executor-upgrade pre[data-v-aa18745e]{white-space:pre-wrap;overflow-wrap:anywhere;margin:var(--ui-space-1,4px) 0}.executor-consent[data-v-f93b77c1]{display:grid;grid-template-columns:32px minmax(0,1fr);column-gap:var(--ui-space-3,12px);max-width:640px;overflow-wrap:anywhere}.executor-consent-icon[data-v-f93b77c1]{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;background:var(--ui-primary-soft);color:var(--ui-primary)}.executor-consent-body[data-v-f93b77c1]{display:flex;flex-direction:column;gap:var(--ui-space-4,16px);min-width:0}.executor-consent-title[data-v-f93b77c1]{margin:6px 0 var(--ui-space-1,4px);font-size:var(--ui-font-size-lg,14px);font-weight:600;line-height:var(--ui-line-height,20px);color:var(--ui-text)}.executor-consent-lead[data-v-f93b77c1]{margin:0;font-size:var(--ui-font-size,13px);line-height:var(--ui-line-height,20px);color:var(--ui-text);text-wrap:pretty}.executor-consent-ask[data-v-f93b77c1]{margin-top:var(--ui-space-2,8px)}.executor-consent-page[data-v-f93b77c1]{grid-template-columns:minmax(0,1fr);justify-items:center;row-gap:var(--ui-space-3,12px);box-sizing:border-box;width:100%;max-width:480px;margin:var(--ui-space-6,24px) auto;padding:var(--ui-space-6,24px);border:1px solid var(--ui-border-subtle);border-radius:var(--ui-radius-lg);background:var(--ui-surface);box-shadow:var(--ui-shadow-card)}.executor-consent-page .executor-consent-icon[data-v-f93b77c1]{width:48px;height:48px}.executor-consent-page .executor-consent-body[data-v-f93b77c1]{width:100%;gap:var(--ui-space-5,20px)}.executor-consent-page .executor-consent-head[data-v-f93b77c1]{text-align:center}.executor-consent-page .executor-consent-title[data-v-f93b77c1]{margin-top:0;font-size:var(--ui-font-size-title,16px);line-height:24px}.executor-consent-more summary[data-v-f93b77c1]{display:inline-flex;align-items:center;gap:var(--ui-space-1,4px);cursor:pointer;list-style:none;font-size:var(--ui-font-size,13px);line-height:var(--ui-line-height,20px);color:var(--ui-primary);border-radius:var(--ui-radius-sm)}.executor-consent-more summary[data-v-f93b77c1]::-webkit-details-marker{display:none}.executor-consent-more summary[data-v-f93b77c1]:focus-visible{outline:none;box-shadow:var(--ui-shadow-focus)}.executor-consent-chevron[data-v-f93b77c1]{transition:transform .15s}.executor-consent-more[open] .executor-consent-chevron[data-v-f93b77c1]{transform:rotate(90deg)}.executor-consent-more ul[data-v-f93b77c1]{margin:var(--ui-space-2,8px) 0 0;padding:var(--ui-space-3,12px) var(--ui-space-4,16px) var(--ui-space-3,12px) 32px;border-radius:var(--ui-radius-md);background:var(--ui-surface-subtle);list-style:disc;font-size:var(--ui-font-size,13px);line-height:var(--ui-line-height,20px);color:var(--ui-text)}.executor-consent-more li+li[data-v-f93b77c1]{margin-top:var(--ui-space-1,4px)}@media(prefers-reduced-motion:reduce){.executor-consent-chevron[data-v-f93b77c1]{transition:none}}.executor-summary[data-v-b666a69c]:not(:last-child){margin-bottom:var(--ui-space-3,12px)}.executor-form[data-v-b666a69c]{max-width:28rem}.executor-summary+.executor-form[data-v-b666a69c],.ui-callout+div>.executor-form[data-v-b666a69c]{margin-top:var(--ui-space-4,16px)}.executor-reason[data-v-b666a69c]{display:block;margin-top:var(--ui-space-1,4px);font-size:var(--ui-font-size-sm,12px)}.executor-alert[data-v-b666a69c]{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--ui-space-2,8px)}.executor-notice-body[data-v-5468feb3]{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--ui-space-2, 8px)}.app-shell[data-v-a2ccb06b]{height:100%;min-width:0}.app-shell[data-v-a2ccb06b]:not([data-ui-navigation=top]){grid-template-rows:minmax(0,1fr)}.app-shell-portal-brand[data-v-a2ccb06b] [data-ui-sidebar-brand]{display:none}.app-shell[data-v-a2ccb06b]>div{min-height:0}.app-shell[data-v-a2ccb06b] main{display:flex;flex-direction:column;overflow:hidden}.app-page[data-v-a2ccb06b]{flex:1 1 auto;min-height:0;overflow-y:auto}.app-denied[data-v-a2ccb06b]{height:100%;overflow-y:auto}.app-page-actions[data-v-a2ccb06b],.app-page-info[data-v-a2ccb06b]{display:contents}.app-shell-fill[data-v-a2ccb06b]{max-height:100dvh}.app-page-fill[data-v-a2ccb06b]{display:flex;flex-direction:column;overflow:hidden}.app-page-fill[data-v-a2ccb06b]>[data-page-content-body]{display:flex;flex:1 1 auto;flex-direction:column;width:100%;min-height:0}.app-page-fill .app-notices[data-v-a2ccb06b]{flex:0 0 auto}.app-page-fill .app-page-content[data-v-a2ccb06b]{display:grid;flex:1 1 auto;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr);min-height:0}.app-notices[data-v-a2ccb06b]{display:flex;flex-direction:column;gap:var(--ui-space-2, 8px)}.app-notices[hidden][data-v-a2ccb06b]{display:none}.app-page-content[data-v-a2ccb06b]{padding-bottom:var(--ui-space-6, 24px)}.page-info-notes[data-v-93861654]{display:grid;gap:6px;margin:0;padding-left:14px;list-style:disc;white-space:pre-line}.file-browser[data-v-8133f935]{min-width:0;color:var(--ui-text)}.file-toolbar[data-v-8133f935]{display:flex;flex-wrap:wrap;gap:var(--ui-space-2, 8px);margin-block:var(--ui-space-3, 12px)}.file-location[data-v-8133f935]{flex-wrap:nowrap;align-items:center;gap:var(--ui-space-1, 4px)}.file-path[data-v-8133f935]{flex:1;min-width:0;margin-inline-start:var(--ui-space-2, 8px)}.file-columns[data-v-8133f935]{display:grid;grid-template-columns:minmax(140px,1fr) minmax(0,3fr);gap:var(--ui-space-3, 12px);height:clamp(240px,60vh,400px)}.file-tree[data-v-8133f935]{min-width:0;overflow:auto;border-inline-end:1px solid var(--ui-border)}.file-content[data-v-8133f935]{display:flex;flex-direction:column;min-width:0;min-height:0;overflow:auto}.file-empty[data-v-8133f935]{display:flex;flex-direction:column;align-items:center;gap:var(--ui-space-2, 8px);padding-block:var(--ui-space-6, 24px);color:var(--ui-text-muted)}.file-name[data-v-8133f935]{display:inline-flex;align-items:center;gap:var(--ui-space-2, 8px);overflow-wrap:anywhere}.file-bytes[data-v-8133f935]{font-variant-numeric:tabular-nums}.file-selection[data-v-8133f935]{overflow-wrap:anywhere}@media(max-width:600px){.file-columns[data-v-8133f935]{grid-template-columns:minmax(0,1fr);height:auto}.file-content[data-v-8133f935] th:nth-child(2),.file-content[data-v-8133f935] td:nth-child(2),.file-content[data-v-8133f935] th:nth-child(3),.file-content[data-v-8133f935] td:nth-child(3){display:none}.file-tree[data-v-8133f935]{height:clamp(96px,25vh,180px);border-inline-end:0;border-bottom:1px solid var(--ui-border)}.file-content[data-v-8133f935]{height:clamp(200px,45vh,360px)}}.nas-picker-content[data-v-08be5e1e]{max-height:65vh;overflow:auto}.save-message[data-v-08be5e1e]{--ui-text-secondary:var(--ui-text)}.save-consent[data-v-08be5e1e]{color:var(--ui-text);margin-block:0 var(--ui-space-4,16px)}.files-actions[data-v-b2e16764]{display:flex;flex-wrap:wrap;gap:var(--ui-space-2, 8px)}.files-path[data-v-b2e16764]{display:flex;min-width:0}.sf-state[data-v-273cff49]{display:flex;flex-wrap:wrap;align-items:center;gap:var(--ui-space-2,8px) var(--ui-space-3,12px);min-width:0;overflow-wrap:anywhere}.sf-notices[data-v-273cff49]{display:grid;gap:var(--ui-space-2,8px);min-width:0;max-width:100%;overflow-wrap:anywhere}.shared-folder-permission-issues[data-v-360e834c]{display:grid;gap:var(--ui-space-3,12px);padding-inline-start:var(--ui-space-5,20px);overflow-wrap:anywhere}.identity-login[data-v-06b2efdb]{max-width:36rem;margin-inline:auto;padding:var(--ui-space-4, 16px);overflow:auto;max-height:100%;color:var(--ui-text);font-family:var(--ui-font-sans);font-size:var(--ui-font-size, 13px);line-height:var(--ui-line-height, 20px)}.identity-login p[data-v-06b2efdb]{margin-block:var(--ui-space-4, 16px);overflow-wrap:anywhere}.bg-cards[data-v-85ff7ec5]{display:grid;gap:var(--ui-space-3,12px);min-width:0;overflow-wrap:anywhere}.bg-card-body[data-v-85ff7ec5]{display:flex;flex-direction:column;align-items:flex-start;gap:var(--ui-space-2,8px);min-width:0}.bg-card-body>span[data-v-85ff7ec5]{min-width:0;max-width:100%}.bg-card-body>.integration-actions[data-v-85ff7ec5]{margin-block:0}.integration-actions[data-v-85ff7ec5]{display:flex;flex-wrap:wrap;gap:var(--ui-space-2,8px);margin-block:var(--ui-space-3,12px)}.bg-schedules[data-v-85ff7ec5]{margin-block-start:var(--ui-space-6,24px);min-width:0;overflow-wrap:anywhere}.bg-schedules p[data-v-85ff7ec5]{min-width:0;max-width:100%}.bg-schedule-form[data-v-85ff7ec5]{margin-block:var(--ui-space-4,16px)}.bg-path[data-v-85ff7ec5]{display:flex;align-items:center;gap:var(--ui-space-2,8px);min-width:0;max-width:100%}.executor-pages[data-v-da0bbc2c]{display:contents}.executor-pages.executor-preloading[data-v-da0bbc2c]{display:block;position:fixed;inset:0;visibility:hidden;overflow:hidden;pointer-events:none}.executor-approval[data-v-da0bbc2c]{padding:var(--ui-space-6, 24px)}.executor-brand[data-v-da0bbc2c]{display:flex;align-items:center;gap:var(--ui-space-2, 8px);margin-bottom:var(--ui-space-4, 16px);font-size:var(--ui-font-size-title, 16px);font-weight:600;color:var(--ui-text)}.executor-brand img[data-v-da0bbc2c]{width:24px;height:24px}.delegate-panel[data-v-27a7b902]{min-width:0;overflow-wrap:anywhere}.delegate-group[data-v-27a7b902]{margin-top:var(--ui-space-6,24px)}.destination[data-v-27a7b902]{min-width:0;max-width:100%;overflow-wrap:anywhere}.destination[data-v-27a7b902]{display:flex;align-items:center;gap:var(--ui-space-2,8px)}.background-save-settings[data-v-cce39b9a]{min-width:0;overflow-wrap:anywhere}.save-help[data-v-cce39b9a]{margin:0 0 var(--ui-space-2,8px);max-width:72ch;color:var(--ui-text-secondary)}.save-form[data-v-cce39b9a]{max-width:28rem}.save-actions[data-v-cce39b9a],.save-alert[data-v-cce39b9a]{display:flex;align-items:center;flex-wrap:wrap;gap:var(--ui-space-2,8px)}.save-alert[data-v-cce39b9a]{justify-content:space-between}.save-actions[data-v-cce39b9a] .ui-path-display{flex:1;min-width:0}.save-none[data-v-cce39b9a]{flex:1;color:var(--ui-text-secondary)}.save-reason[data-v-cce39b9a]{display:block;margin-top:var(--ui-space-1,4px);font-size:var(--ui-font-size-sm,12px)}.background-save-panel[data-v-05618cb8]{min-width:0;overflow-wrap:anywhere}.save-help[data-v-05618cb8]{margin:0 0 var(--ui-space-3,12px);max-width:72ch;color:var(--ui-text-secondary)}.save-actions[data-v-05618cb8]{display:flex;align-items:center;flex-wrap:wrap;gap:var(--ui-space-2,8px);margin-bottom:var(--ui-space-3,12px)}.authorization-view[data-v-e6c8e4e1]{display:flex;flex-direction:column;gap:var(--ui-space-3,12px)}.authorization-body[data-v-e6c8e4e1]{margin:0;font-size:var(--ui-font-size,13px);line-height:var(--ui-line-height,20px);color:var(--ui-text);text-wrap:pretty}.authorization-status[data-v-e6c8e4e1],.authorization-failed[data-v-e6c8e4e1]{color:var(--ui-text)}.authorization-content[data-v-e6c8e4e1]{display:flex;flex-direction:column;height:100%;min-height:0}.authorization-content[data-v-e6c8e4e1] .app-shell{flex:1;min-height:0;height:auto}.authorization-setting[data-v-8452013e]{display:flex;align-items:center;flex-wrap:wrap;gap:var(--ui-space-3,12px)}.authorization-revoke-body[data-v-8452013e]{margin:0;font-size:var(--ui-font-size,13px);line-height:var(--ui-line-height,20px);color:var(--ui-text)}.authorization-state[data-v-8452013e]{display:inline-flex;align-items:center;gap:6px;color:var(--ui-text)}
1
+ .executor-upgrade[data-v-aa18745e]{padding:var(--ui-space-3,12px);border-radius:var(--ui-radius-md);background:var(--ui-surface-subtle);font-size:var(--ui-font-size,13px);line-height:var(--ui-line-height,20px);color:var(--ui-text);overflow-wrap:anywhere}.executor-upgrade p[data-v-aa18745e]{margin:0}.executor-upgrade p+p[data-v-aa18745e]{margin-top:var(--ui-space-1,4px)}.executor-upgrade .executor-upgrade-title[data-v-aa18745e]{font-weight:600;margin-bottom:var(--ui-space-2,8px)}.executor-upgrade dl[data-v-aa18745e]{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--ui-space-1,4px);margin:var(--ui-space-2,8px) 0 0}.executor-upgrade dt[data-v-aa18745e]{font-weight:600}.executor-upgrade dd[data-v-aa18745e]{margin:0 0 var(--ui-space-1,4px)}.executor-upgrade code[data-v-aa18745e]{font-size:var(--ui-font-size-sm,12px)}.executor-upgrade details[data-v-aa18745e]{margin-top:var(--ui-space-2,8px)}.executor-upgrade summary[data-v-aa18745e]{cursor:pointer;color:var(--ui-primary)}.executor-upgrade ul[data-v-aa18745e]{padding-left:var(--ui-space-4,16px);margin:var(--ui-space-2,8px) 0 0}.executor-upgrade pre[data-v-aa18745e]{white-space:pre-wrap;overflow-wrap:anywhere;margin:var(--ui-space-1,4px) 0}.executor-consent[data-v-f93b77c1]{display:grid;grid-template-columns:32px minmax(0,1fr);column-gap:var(--ui-space-3,12px);max-width:640px;overflow-wrap:anywhere}.executor-consent-icon[data-v-f93b77c1]{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;background:var(--ui-primary-soft);color:var(--ui-primary)}.executor-consent-body[data-v-f93b77c1]{display:flex;flex-direction:column;gap:var(--ui-space-4,16px);min-width:0}.executor-consent-title[data-v-f93b77c1]{margin:6px 0 var(--ui-space-1,4px);font-size:var(--ui-font-size-lg,14px);font-weight:600;line-height:var(--ui-line-height,20px);color:var(--ui-text)}.executor-consent-lead[data-v-f93b77c1]{margin:0;font-size:var(--ui-font-size,13px);line-height:var(--ui-line-height,20px);color:var(--ui-text);text-wrap:pretty}.executor-consent-ask[data-v-f93b77c1]{margin-top:var(--ui-space-2,8px)}.executor-consent-page[data-v-f93b77c1]{grid-template-columns:minmax(0,1fr);justify-items:center;row-gap:var(--ui-space-3,12px);box-sizing:border-box;width:100%;max-width:480px;margin:var(--ui-space-6,24px) auto;padding:var(--ui-space-6,24px);border:1px solid var(--ui-border-subtle);border-radius:var(--ui-radius-lg);background:var(--ui-surface);box-shadow:var(--ui-shadow-card)}.executor-consent-page .executor-consent-icon[data-v-f93b77c1]{width:48px;height:48px}.executor-consent-page .executor-consent-body[data-v-f93b77c1]{width:100%;gap:var(--ui-space-5,20px)}.executor-consent-page .executor-consent-head[data-v-f93b77c1]{text-align:center}.executor-consent-page .executor-consent-title[data-v-f93b77c1]{margin-top:0;font-size:var(--ui-font-size-title,16px);line-height:24px}.executor-consent-more summary[data-v-f93b77c1]{display:inline-flex;align-items:center;gap:var(--ui-space-1,4px);cursor:pointer;list-style:none;font-size:var(--ui-font-size,13px);line-height:var(--ui-line-height,20px);color:var(--ui-primary);border-radius:var(--ui-radius-sm)}.executor-consent-more summary[data-v-f93b77c1]::-webkit-details-marker{display:none}.executor-consent-more summary[data-v-f93b77c1]:focus-visible{outline:none;box-shadow:var(--ui-shadow-focus)}.executor-consent-chevron[data-v-f93b77c1]{transition:transform .15s}.executor-consent-more[open] .executor-consent-chevron[data-v-f93b77c1]{transform:rotate(90deg)}.executor-consent-more ul[data-v-f93b77c1]{margin:var(--ui-space-2,8px) 0 0;padding:var(--ui-space-3,12px) var(--ui-space-4,16px) var(--ui-space-3,12px) 32px;border-radius:var(--ui-radius-md);background:var(--ui-surface-subtle);list-style:disc;font-size:var(--ui-font-size,13px);line-height:var(--ui-line-height,20px);color:var(--ui-text)}.executor-consent-more li+li[data-v-f93b77c1]{margin-top:var(--ui-space-1,4px)}@media(prefers-reduced-motion:reduce){.executor-consent-chevron[data-v-f93b77c1]{transition:none}}.executor-summary[data-v-b666a69c]:not(:last-child){margin-bottom:var(--ui-space-3,12px)}.executor-form[data-v-b666a69c]{max-width:28rem}.executor-summary+.executor-form[data-v-b666a69c],.ui-callout+div>.executor-form[data-v-b666a69c]{margin-top:var(--ui-space-4,16px)}.executor-reason[data-v-b666a69c]{display:block;margin-top:var(--ui-space-1,4px);font-size:var(--ui-font-size-sm,12px)}.executor-alert[data-v-b666a69c]{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--ui-space-2,8px)}.executor-notice-body[data-v-5468feb3],.ui-update-notice-body[data-v-8141bcd1]{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--ui-space-2, 8px)}.app-shell[data-v-e20148b9]{height:100%;min-width:0}.app-shell[data-v-e20148b9]:not([data-ui-navigation=top]){grid-template-rows:minmax(0,1fr)}.app-shell-portal-brand[data-v-e20148b9] [data-ui-sidebar-brand]{display:none}.app-shell[data-v-e20148b9]>div{min-height:0}.app-shell[data-v-e20148b9] main{display:flex;flex-direction:column;overflow:hidden}.app-page[data-v-e20148b9]{flex:1 1 auto;min-height:0;overflow-y:auto}.app-denied[data-v-e20148b9]{height:100%;overflow-y:auto}.app-page-actions[data-v-e20148b9],.app-page-info[data-v-e20148b9]{display:contents}.app-shell-fill[data-v-e20148b9]{max-height:100dvh}.app-page-fill[data-v-e20148b9]{display:flex;flex-direction:column;overflow:hidden}.app-page-fill[data-v-e20148b9]>[data-page-content-body]{display:flex;flex:1 1 auto;flex-direction:column;width:100%;min-height:0}.app-page-fill .app-notices[data-v-e20148b9]{flex:0 0 auto}.app-page-fill .app-page-content[data-v-e20148b9]{display:grid;flex:1 1 auto;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr);min-height:0}.app-notices[data-v-e20148b9]{display:flex;flex-direction:column;gap:var(--ui-space-2, 8px)}.app-notices[hidden][data-v-e20148b9]{display:none}.app-page-content[data-v-e20148b9]{padding-bottom:var(--ui-space-6, 24px)}.page-info-notes[data-v-93861654]{display:grid;gap:6px;margin:0;padding-left:14px;list-style:disc;white-space:pre-line}.file-browser[data-v-8133f935]{min-width:0;color:var(--ui-text)}.file-toolbar[data-v-8133f935]{display:flex;flex-wrap:wrap;gap:var(--ui-space-2, 8px);margin-block:var(--ui-space-3, 12px)}.file-location[data-v-8133f935]{flex-wrap:nowrap;align-items:center;gap:var(--ui-space-1, 4px)}.file-path[data-v-8133f935]{flex:1;min-width:0;margin-inline-start:var(--ui-space-2, 8px)}.file-columns[data-v-8133f935]{display:grid;grid-template-columns:minmax(140px,1fr) minmax(0,3fr);gap:var(--ui-space-3, 12px);height:clamp(240px,60vh,400px)}.file-tree[data-v-8133f935]{min-width:0;overflow:auto;border-inline-end:1px solid var(--ui-border)}.file-content[data-v-8133f935]{display:flex;flex-direction:column;min-width:0;min-height:0;overflow:auto}.file-empty[data-v-8133f935]{display:flex;flex-direction:column;align-items:center;gap:var(--ui-space-2, 8px);padding-block:var(--ui-space-6, 24px);color:var(--ui-text-muted)}.file-name[data-v-8133f935]{display:inline-flex;align-items:center;gap:var(--ui-space-2, 8px);overflow-wrap:anywhere}.file-bytes[data-v-8133f935]{font-variant-numeric:tabular-nums}.file-selection[data-v-8133f935]{overflow-wrap:anywhere}@media(max-width:600px){.file-columns[data-v-8133f935]{grid-template-columns:minmax(0,1fr);height:auto}.file-content[data-v-8133f935] th:nth-child(2),.file-content[data-v-8133f935] td:nth-child(2),.file-content[data-v-8133f935] th:nth-child(3),.file-content[data-v-8133f935] td:nth-child(3){display:none}.file-tree[data-v-8133f935]{height:clamp(96px,25vh,180px);border-inline-end:0;border-bottom:1px solid var(--ui-border)}.file-content[data-v-8133f935]{height:clamp(200px,45vh,360px)}}.nas-picker-content[data-v-08be5e1e]{max-height:65vh;overflow:auto}.save-message[data-v-08be5e1e]{--ui-text-secondary:var(--ui-text)}.save-consent[data-v-08be5e1e]{color:var(--ui-text);margin-block:0 var(--ui-space-4,16px)}.files-actions[data-v-b2e16764]{display:flex;flex-wrap:wrap;gap:var(--ui-space-2, 8px)}.files-path[data-v-b2e16764]{display:flex;min-width:0}.sf-state[data-v-273cff49]{display:flex;flex-wrap:wrap;align-items:center;gap:var(--ui-space-2,8px) var(--ui-space-3,12px);min-width:0;overflow-wrap:anywhere}.sf-notices[data-v-273cff49]{display:grid;gap:var(--ui-space-2,8px);min-width:0;max-width:100%;overflow-wrap:anywhere}.shared-folder-permission-issues[data-v-360e834c]{display:grid;gap:var(--ui-space-3,12px);padding-inline-start:var(--ui-space-5,20px);overflow-wrap:anywhere}.identity-login[data-v-06b2efdb]{max-width:36rem;margin-inline:auto;padding:var(--ui-space-4, 16px);overflow:auto;max-height:100%;color:var(--ui-text);font-family:var(--ui-font-sans);font-size:var(--ui-font-size, 13px);line-height:var(--ui-line-height, 20px)}.identity-login p[data-v-06b2efdb]{margin-block:var(--ui-space-4, 16px);overflow-wrap:anywhere}.bg-cards[data-v-85ff7ec5]{display:grid;gap:var(--ui-space-3,12px);min-width:0;overflow-wrap:anywhere}.bg-card-body[data-v-85ff7ec5]{display:flex;flex-direction:column;align-items:flex-start;gap:var(--ui-space-2,8px);min-width:0}.bg-card-body>span[data-v-85ff7ec5]{min-width:0;max-width:100%}.bg-card-body>.integration-actions[data-v-85ff7ec5]{margin-block:0}.integration-actions[data-v-85ff7ec5]{display:flex;flex-wrap:wrap;gap:var(--ui-space-2,8px);margin-block:var(--ui-space-3,12px)}.bg-schedules[data-v-85ff7ec5]{margin-block-start:var(--ui-space-6,24px);min-width:0;overflow-wrap:anywhere}.bg-schedules p[data-v-85ff7ec5]{min-width:0;max-width:100%}.bg-schedule-form[data-v-85ff7ec5]{margin-block:var(--ui-space-4,16px)}.bg-path[data-v-85ff7ec5]{display:flex;align-items:center;gap:var(--ui-space-2,8px);min-width:0;max-width:100%}.executor-pages[data-v-da0bbc2c]{display:contents}.executor-pages.executor-preloading[data-v-da0bbc2c]{display:block;position:fixed;inset:0;visibility:hidden;overflow:hidden;pointer-events:none}.executor-approval[data-v-da0bbc2c]{padding:var(--ui-space-6, 24px)}.executor-brand[data-v-da0bbc2c]{display:flex;align-items:center;gap:var(--ui-space-2, 8px);margin-bottom:var(--ui-space-4, 16px);font-size:var(--ui-font-size-title, 16px);font-weight:600;color:var(--ui-text)}.executor-brand img[data-v-da0bbc2c]{width:24px;height:24px}.delegate-panel[data-v-4f648674]{min-width:0;overflow-wrap:anywhere}.delegate-group[data-v-4f648674]{margin-top:var(--ui-space-6,24px)}.destination[data-v-4f648674]{min-width:0;max-width:100%;overflow-wrap:anywhere}.destination[data-v-4f648674]{display:flex;align-items:center;gap:var(--ui-space-2,8px)}.background-save-settings[data-v-cce39b9a]{min-width:0;overflow-wrap:anywhere}.save-help[data-v-cce39b9a]{margin:0 0 var(--ui-space-2,8px);max-width:72ch;color:var(--ui-text-secondary)}.save-form[data-v-cce39b9a]{max-width:28rem}.save-actions[data-v-cce39b9a],.save-alert[data-v-cce39b9a]{display:flex;align-items:center;flex-wrap:wrap;gap:var(--ui-space-2,8px)}.save-alert[data-v-cce39b9a]{justify-content:space-between}.save-actions[data-v-cce39b9a] .ui-path-display{flex:1;min-width:0}.save-none[data-v-cce39b9a]{flex:1;color:var(--ui-text-secondary)}.save-reason[data-v-cce39b9a]{display:block;margin-top:var(--ui-space-1,4px);font-size:var(--ui-font-size-sm,12px)}.background-save-panel[data-v-05618cb8]{min-width:0;overflow-wrap:anywhere}.save-help[data-v-05618cb8]{margin:0 0 var(--ui-space-3,12px);max-width:72ch;color:var(--ui-text-secondary)}.save-actions[data-v-05618cb8]{display:flex;align-items:center;flex-wrap:wrap;gap:var(--ui-space-2,8px);margin-bottom:var(--ui-space-3,12px)}.authorization-view[data-v-e6c8e4e1]{display:flex;flex-direction:column;gap:var(--ui-space-3,12px)}.authorization-body[data-v-e6c8e4e1]{margin:0;font-size:var(--ui-font-size,13px);line-height:var(--ui-line-height,20px);color:var(--ui-text);text-wrap:pretty}.authorization-status[data-v-e6c8e4e1],.authorization-failed[data-v-e6c8e4e1]{color:var(--ui-text)}.authorization-content[data-v-e6c8e4e1]{display:flex;flex-direction:column;height:100%;min-height:0}.authorization-content[data-v-e6c8e4e1] .app-shell{flex:1;min-height:0;height:auto}.authorization-setting[data-v-8452013e]{display:flex;align-items:center;flex-wrap:wrap;gap:var(--ui-space-3,12px)}.authorization-revoke-body[data-v-8452013e]{margin:0;font-size:var(--ui-font-size,13px);line-height:var(--ui-line-height,20px);color:var(--ui-text)}.authorization-state[data-v-8452013e]{display:inline-flex;align-items:center;gap:6px;color:var(--ui-text)}