deepspace 0.20.0 → 0.22.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.
Files changed (43) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/{chunk-A7UFIOWO.js → chunk-7TDBFEB7.js} +7 -2
  3. package/dist/chunk-7TDBFEB7.js.map +1 -0
  4. package/dist/cli.js +288 -120
  5. package/dist/cli.js.map +1 -1
  6. package/dist/documentation-client-core.d.ts +3 -2
  7. package/dist/documentation-client-core.js +1 -1
  8. package/dist/documentation-default-renderer.cjs +48 -48
  9. package/dist/documentation-react.d.ts +2 -1
  10. package/dist/documentation-react.js +1 -1
  11. package/dist/documentation-runtime.js +7 -7
  12. package/dist/documentation-server-core.d.ts +3 -2
  13. package/dist/documentation-server-core.js +1 -1
  14. package/dist/documentation.d.ts +40 -12
  15. package/dist/documentation.js +40 -7
  16. package/dist/documentation.js.map +1 -1
  17. package/dist/index.d.ts +225 -21
  18. package/dist/index.js +239 -100
  19. package/dist/index.js.map +1 -1
  20. package/dist/{public-CFAj1hL2.d.ts → public-DenQ1TsZ.d.ts} +36 -11
  21. package/dist/server.d.ts +32 -4
  22. package/dist/server.js +177 -43
  23. package/dist/server.js.map +1 -1
  24. package/dist/testing-mcp.d.ts +69 -0
  25. package/dist/testing-mcp.js +99 -0
  26. package/dist/testing-mcp.js.map +1 -0
  27. package/dist/testing.d.ts +17 -20
  28. package/dist/testing.js +47 -25
  29. package/dist/testing.js.map +1 -1
  30. package/dist/worker.d.ts +57 -5
  31. package/dist/worker.js +262 -62
  32. package/dist/worker.js.map +1 -1
  33. package/features/ai-chat/feature.json +2 -2
  34. package/features/ai-chat/src/AiChatPage.tsx +56 -21
  35. package/features/ai-chat/src/ChatPanel.tsx +33 -10
  36. package/features/ai-chat/src/__tests__/ChatPanel.lifecycle.test.tsx +156 -0
  37. package/features/cron/src/CronLogPage.tsx +107 -69
  38. package/features/file-attachments/feature.json +2 -1
  39. package/features/file-manager/feature.json +2 -1
  40. package/features/file-manager/src/FileManagerPage.tsx +227 -194
  41. package/features/integration-test/src/IntegrationTestPage.tsx +54 -34
  42. package/package.json +5 -1
  43. package/dist/chunk-A7UFIOWO.js.map +0 -1
package/dist/index.d.ts CHANGED
@@ -628,6 +628,7 @@ declare const MSG: {
628
628
  readonly CRON_PAUSE: "cron.pause";
629
629
  readonly CRON_RESUME: "cron.resume";
630
630
  readonly CRON_STATUS: "cron.status";
631
+ readonly CRON_ACK: "cron.ack";
631
632
  readonly JOB_ENQUEUE: "job.enqueue";
632
633
  readonly JOB_CANCEL: "job.cancel";
633
634
  readonly JOB_RETRY: "job.retry";
@@ -791,10 +792,13 @@ type ClientMessage = BaseMessage<typeof MSG.SUBSCRIBE, {
791
792
  props: Record<string, unknown>;
792
793
  }> | BaseMessage<typeof MSG.CANVAS_VIEWPORT, unknown> | BaseMessage<typeof MSG.CANVAS_UNDO, EmptyPayload> | BaseMessage<typeof MSG.CANVAS_REDO, EmptyPayload> | BaseMessage<typeof MSG.CRON_TRIGGER, {
793
794
  taskName: string;
795
+ requestId?: string;
794
796
  }> | BaseMessage<typeof MSG.CRON_PAUSE, {
795
797
  taskName: string;
798
+ requestId?: string;
796
799
  }> | BaseMessage<typeof MSG.CRON_RESUME, {
797
800
  taskName: string;
801
+ requestId?: string;
798
802
  }> | BaseMessage<typeof MSG.JOB_ENQUEUE, {
799
803
  requestId: string;
800
804
  type: string;
@@ -881,6 +885,16 @@ type ServerMessage = BaseMessage<typeof MSG.QUERY_RESULT, {
881
885
  }> | BaseMessage<typeof MSG.CRON_STATUS, {
882
886
  tasks: unknown;
883
887
  recentHistory: unknown;
888
+ }> | BaseMessage<typeof MSG.CRON_ACK, {
889
+ requestId: string;
890
+ taskName: string;
891
+ ok: true;
892
+ } | {
893
+ requestId: string;
894
+ taskName?: string;
895
+ ok: false;
896
+ reason: 'read_only' | 'unknown_task' | 'failed';
897
+ error?: string;
884
898
  }> | BaseMessage<typeof MSG.JOB_UPDATE, {
885
899
  kind: 'snapshot' | 'enqueued' | 'progress' | 'succeeded' | 'failed' | 'canceled' | 'retried';
886
900
  job?: unknown;
@@ -1021,22 +1035,25 @@ declare const clientBuild: {
1021
1035
  readonly type: "canvas.redo";
1022
1036
  readonly payload: EmptyPayload;
1023
1037
  };
1024
- cronTrigger: (taskName: string) => {
1038
+ cronTrigger: (taskName: string, requestId?: string) => {
1025
1039
  readonly type: "cron.trigger";
1026
1040
  readonly payload: {
1027
1041
  readonly taskName: string;
1042
+ readonly requestId: string | undefined;
1028
1043
  };
1029
1044
  };
1030
- cronPause: (taskName: string) => {
1045
+ cronPause: (taskName: string, requestId?: string) => {
1031
1046
  readonly type: "cron.pause";
1032
1047
  readonly payload: {
1033
1048
  readonly taskName: string;
1049
+ readonly requestId: string | undefined;
1034
1050
  };
1035
1051
  };
1036
- cronResume: (taskName: string) => {
1052
+ cronResume: (taskName: string, requestId?: string) => {
1037
1053
  readonly type: "cron.resume";
1038
1054
  readonly payload: {
1039
1055
  readonly taskName: string;
1056
+ readonly requestId: string | undefined;
1040
1057
  };
1041
1058
  };
1042
1059
  jobEnqueue: (requestId: string, type: string, payload?: unknown, maxAttempts?: number) => {
@@ -1234,6 +1251,24 @@ declare const serverBuild: {
1234
1251
  readonly recentHistory: unknown;
1235
1252
  };
1236
1253
  };
1254
+ cronAckSuccess: (requestId: string, taskName: string) => {
1255
+ readonly type: "cron.ack";
1256
+ readonly payload: {
1257
+ readonly requestId: string;
1258
+ readonly taskName: string;
1259
+ readonly ok: true;
1260
+ };
1261
+ };
1262
+ cronAckFailure: (requestId: string, reason: "read_only" | "unknown_task" | "failed", error?: string, taskName?: string) => {
1263
+ readonly type: "cron.ack";
1264
+ readonly payload: {
1265
+ readonly requestId: string;
1266
+ readonly taskName: string | undefined;
1267
+ readonly ok: false;
1268
+ readonly reason: "read_only" | "unknown_task" | "failed";
1269
+ readonly error: string | undefined;
1270
+ };
1271
+ };
1237
1272
  jobSnapshot: (jobs: unknown[]) => {
1238
1273
  readonly type: "job.update";
1239
1274
  readonly payload: {
@@ -2633,6 +2668,8 @@ declare function clearAuthToken(): void;
2633
2668
  * Primary: OAuth (GitHub, Google).
2634
2669
  * Secondary: Email/password sign-in (for test accounts created via CLI/API).
2635
2670
  * Styled with shadcn semantic tokens so it themes along with the host app.
2671
+ * Hosts can brand the card via `title` / `description` / `logo` and re-tint
2672
+ * the backdrop by defining `--ds-auth-backdrop` (defaults to black/55).
2636
2673
  */
2637
2674
 
2638
2675
  interface AuthOverlayProps {
@@ -2640,8 +2677,14 @@ interface AuthOverlayProps {
2640
2677
  onClose?: () => void;
2641
2678
  /** Which OAuth providers to show. Defaults to both. */
2642
2679
  providers?: Array<'github' | 'google'>;
2680
+ /** Card heading. Defaults to "Sign in to DeepSpace". */
2681
+ title?: string;
2682
+ /** Line under the heading. Defaults to "Sync your data across devices". */
2683
+ description?: string;
2684
+ /** Optional brand mark rendered above the heading. Defaults to none (the current look). */
2685
+ logo?: React__default.ReactNode;
2643
2686
  }
2644
- declare function AuthOverlay({ onClose, providers, }?: AuthOverlayProps): React__default.ReactElement | null;
2687
+ declare function AuthOverlay({ onClose, providers, title, description, logo, }?: AuthOverlayProps): React__default.ReactElement | null;
2645
2688
 
2646
2689
  /** Conditional renderers, the route gate, and a display-name hook. */
2647
2690
 
@@ -3332,6 +3375,11 @@ declare function useCanvas(roomId: string): UseCanvasResult;
3332
3375
  *
3333
3376
  * @example
3334
3377
  * const { tasks, history, trigger, pause, resume } = useCronMonitor('cron')
3378
+ *
3379
+ * async function onRunNow() {
3380
+ * const receipt = await trigger('daily-digest')
3381
+ * if (!receipt.ok) toast(receipt.error ?? receipt.reason)
3382
+ * }
3335
3383
  */
3336
3384
  interface CronTaskState {
3337
3385
  name: string;
@@ -3350,6 +3398,24 @@ interface CronHistoryEntry {
3350
3398
  durationMs: number;
3351
3399
  error?: string;
3352
3400
  }
3401
+ /**
3402
+ * Outcome of a cron mutation (trigger / pause / resume). Failures are
3403
+ * typed by origin: `read_only` and `not_connected` short-circuit locally
3404
+ * without sending a frame; `unknown_task` and `failed` come back in the
3405
+ * server's CRON_ACK receipt. Triggers execute synchronously in the DO
3406
+ * before the receipt is sent, so an ok trigger result means the run
3407
+ * completed — its execution record (duration, errors) arrives via
3408
+ * `history`.
3409
+ */
3410
+ type CronMutationResult = {
3411
+ ok: true;
3412
+ taskName: string;
3413
+ requestId: string;
3414
+ } | {
3415
+ ok: false;
3416
+ reason: 'read_only' | 'not_connected' | 'unknown_task' | 'failed';
3417
+ error?: string;
3418
+ };
3353
3419
  interface UseCronMonitorResult {
3354
3420
  /** Current task states */
3355
3421
  tasks: CronTaskState[];
@@ -3360,16 +3426,22 @@ interface UseCronMonitorResult {
3360
3426
  /**
3361
3427
  * Whether this connection can mutate cron state (trigger / pause /
3362
3428
  * resume). False for viewers and unauthenticated connections — the
3363
- * mutation callbacks below no-op and UIs should disable those
3364
- * controls. Reading tasks/history stays available either way.
3429
+ * mutation callbacks below resolve `{ ok: false, reason: 'read_only' }`
3430
+ * and UIs should disable those controls. Reading tasks/history stays
3431
+ * available either way.
3365
3432
  */
3366
3433
  canWrite: boolean;
3367
- /** Manually trigger a task (no-op when canWrite is false) */
3368
- trigger: (taskName: string) => void;
3369
- /** Pause a task (no-op when canWrite is false) */
3370
- pause: (taskName: string) => void;
3371
- /** Resume a paused task (no-op when canWrite is false) */
3372
- resume: (taskName: string) => void;
3434
+ /**
3435
+ * Most recent ERROR frame from the room (e.g. a write rejected by a
3436
+ * concurrent role change). Null until one arrives.
3437
+ */
3438
+ lastError: string | null;
3439
+ /** Manually trigger a task; resolves once the run completes. */
3440
+ trigger: (taskName: string) => Promise<CronMutationResult>;
3441
+ /** Pause a task; resolves once the server applies it. */
3442
+ pause: (taskName: string) => Promise<CronMutationResult>;
3443
+ /** Resume a paused task; resolves once the server applies it. */
3444
+ resume: (taskName: string) => Promise<CronMutationResult>;
3373
3445
  }
3374
3446
  declare function useCronMonitor(roomId: string): UseCronMonitorResult;
3375
3447
 
@@ -3526,22 +3598,49 @@ declare function toConnectionStatus(queryStatus: string): ConnectionStatus;
3526
3598
  interface R2UploadResult {
3527
3599
  success: boolean;
3528
3600
  key?: string;
3601
+ /**
3602
+ * `key` minus the scope prefix — the spelling that works with `list(prefix)`
3603
+ * filters and `upload(..., { key })` upserts, which never see the prefix.
3604
+ * Older servers omit it.
3605
+ */
3606
+ relativeKey?: string;
3529
3607
  url?: string;
3530
3608
  name?: string;
3531
3609
  error?: string;
3532
3610
  }
3533
3611
  interface R2FileInfo {
3534
3612
  key: string;
3613
+ /** `key` minus the scope prefix (see {@link R2UploadResult.relativeKey}). Older servers omit it. */
3614
+ relativeKey?: string;
3535
3615
  size: number;
3536
3616
  uploaded: string;
3537
3617
  url: string;
3538
3618
  originalName?: string;
3539
3619
  uploadedBy?: string;
3540
3620
  }
3621
+ /** One page of a listing: the entries plus the continuation state. */
3622
+ interface R2FileListPage {
3623
+ files: R2FileInfo[];
3624
+ /**
3625
+ * Opaque continuation token — pass it back as `cursor` to fetch the next
3626
+ * page. Present only while `truncated`; older servers never send one.
3627
+ */
3628
+ cursor?: string;
3629
+ /** Whether entries exist past this page. */
3630
+ truncated: boolean;
3631
+ }
3541
3632
  /** Told after each part lands, so a long upload can drive a progress bar. */
3542
3633
  type UploadProgress = (sent: number, total: number) => void;
3543
3634
  interface UploadOptions {
3544
3635
  onProgress?: UploadProgress;
3636
+ /**
3637
+ * Exact key for the file within the scope (slashes allowed), so
3638
+ * `upload(file, 'report.csv', { key: 'showcase/report.csv' })` is found by
3639
+ * `list('showcase')` and uploading to the same key again replaces the file.
3640
+ * Without it the server generates a unique key per upload — a location no
3641
+ * prefix you choose can address. `name` stays display metadata either way.
3642
+ */
3643
+ key?: string;
3545
3644
  }
3546
3645
  interface UseR2FilesReturn {
3547
3646
  /**
@@ -3561,7 +3660,7 @@ interface UseR2FilesReturn {
3561
3660
  * `MAX_BASE64_UPLOAD_BYTES` (~18.75 MiB decoded), not the full 25 MiB. Send a
3562
3661
  * Blob through `upload` for anything larger; it chunks.
3563
3662
  */
3564
- uploadBase64: (base64Data: string, name: string, mimeType?: string) => Promise<R2UploadResult>;
3663
+ uploadBase64: (base64Data: string, name: string, mimeType?: string, options?: Pick<UploadOptions, 'key'>) => Promise<R2UploadResult>;
3565
3664
  /**
3566
3665
  * Delete a file. Accepts an R2FileInfo from `list()` or a raw key string.
3567
3666
  *
@@ -3576,8 +3675,37 @@ interface UseR2FilesReturn {
3576
3675
  success: boolean;
3577
3676
  error?: string;
3578
3677
  }>;
3579
- /** List files, optionally filtered by a sub-prefix within the scope. */
3580
- list: (prefix?: string) => Promise<R2FileInfo[]>;
3678
+ /**
3679
+ * List files, optionally filtered by a sub-prefix within the scope.
3680
+ * `limit` caps how many entries come back; `cursor` continues from an
3681
+ * earlier page (use `listPage` to obtain one).
3682
+ *
3683
+ * Throws on a failed response — "not authorized" is an error, not an
3684
+ * empty account.
3685
+ */
3686
+ list: (prefix?: string, options?: {
3687
+ limit?: number;
3688
+ cursor?: string;
3689
+ }) => Promise<R2FileInfo[]>;
3690
+ /**
3691
+ * Like `list`, but returns the page envelope `list` flattens away:
3692
+ * `truncated` says whether more entries exist, and `cursor` (present only
3693
+ * while `truncated`) feeds the next call to fetch them.
3694
+ *
3695
+ * @example
3696
+ * ```tsx
3697
+ * let cursor: string | undefined
3698
+ * do {
3699
+ * const page = await listPage('showcase', { cursor })
3700
+ * render(page.files)
3701
+ * cursor = page.cursor
3702
+ * } while (cursor)
3703
+ * ```
3704
+ */
3705
+ listPage: (prefix?: string, options?: {
3706
+ limit?: number;
3707
+ cursor?: string;
3708
+ }) => Promise<R2FileListPage>;
3581
3709
  /**
3582
3710
  * Download a file. Accepts an R2FileInfo from `list()` or a raw key string.
3583
3711
  * Uses an authenticated fetch and triggers a browser download via blob URL.
@@ -4235,6 +4363,64 @@ declare function usePlatformWS<S extends {
4235
4363
  status: ConnectionStatus;
4236
4364
  }>(options: PlatformWSOptions<S>): PlatformWSResult<S>;
4237
4365
 
4366
+ /**
4367
+ * Platform API error normalization — the one chokepoint that turns the
4368
+ * api-worker's error envelope into a render-safe + branch-safe shape.
4369
+ *
4370
+ * The platform emits errors as `{ error: <machine slug>, message?: <human>,
4371
+ * ...details }` (e.g. 402 `{ error: 'insufficient_credits', message:
4372
+ * 'Insufficient credits.', availableCredits, requiredCredits }`; some routes
4373
+ * send the bare slug with no `message` at all, e.g. 409
4374
+ * `{ error: 'owner_connect_not_ready' }`). Consumers must never show the slug
4375
+ * to a person or make an agent parse the sentence — this module separates the
4376
+ * two once, for the integration client, the billing hooks, and the CLI.
4377
+ */
4378
+ /** One structured validation issue (Zod shape) from a `validation_failed` response. */
4379
+ interface ApiErrorIssue {
4380
+ path?: string[];
4381
+ message: string;
4382
+ code?: string;
4383
+ }
4384
+ /** A platform error response, normalized. */
4385
+ interface NormalizedApiError {
4386
+ /**
4387
+ * Human-readable text, safe to render:
4388
+ * `message ?? non-slug error ?? humanized(slug) ?? slug`.
4389
+ */
4390
+ error: string;
4391
+ /** The machine slug (e.g. 'insufficient_credits') for branching — never render it. */
4392
+ code?: string;
4393
+ /** HTTP status of the response; 0 when no HTTP response arrived (transport failure). */
4394
+ status: number;
4395
+ /** Structured fields the server sent alongside the error (e.g. `availableCredits`). */
4396
+ details?: Record<string, unknown>;
4397
+ /** Zod issues accompanying a `validation_failed` response. */
4398
+ issues?: ApiErrorIssue[];
4399
+ }
4400
+ /**
4401
+ * The error the billing hooks (`useCheckout`, `useSubscription`) throw for a
4402
+ * platform refusal. `message` is human text safe to render; branch on `code`:
4403
+ *
4404
+ * try {
4405
+ * await subscribe('pro')
4406
+ * } catch (e) {
4407
+ * if (e instanceof PlatformApiError && e.code === 'owner_connect_not_ready') {
4408
+ * // owner hasn't finished payment onboarding
4409
+ * }
4410
+ * }
4411
+ */
4412
+ declare class PlatformApiError extends Error {
4413
+ /** The machine slug (e.g. 'owner_connect_not_ready'), when the server sent one. */
4414
+ readonly code?: string;
4415
+ /** HTTP status of the response; 0 when no HTTP response arrived. */
4416
+ readonly status: number;
4417
+ /** Structured fields the server sent alongside the error. */
4418
+ readonly details?: Record<string, unknown>;
4419
+ /** Zod issues accompanying a `validation_failed` response. */
4420
+ readonly issues?: ApiErrorIssue[];
4421
+ constructor(normalized: NormalizedApiError);
4422
+ }
4423
+
4238
4424
  /**
4239
4425
  * Integration API client.
4240
4426
  *
@@ -4246,15 +4432,19 @@ declare function usePlatformWS<S extends {
4246
4432
  * import { integration } from 'deepspace'
4247
4433
  * const result = await integration.post('openai/chat-completion', { messages })
4248
4434
  */
4435
+
4249
4436
  interface IntegrationResponse<T = unknown> {
4250
4437
  success: boolean;
4251
4438
  data?: T;
4439
+ /** Human-readable error, safe to render directly. */
4252
4440
  error?: string;
4253
- issues?: Array<{
4254
- path?: string[];
4255
- message: string;
4256
- code?: string;
4257
- }>;
4441
+ /** Machine slug (e.g. 'insufficient_credits') for branching — never render it. */
4442
+ code?: string;
4443
+ /** HTTP status of the failed response; 0 when no response arrived (timeout, abort, network). */
4444
+ status?: number;
4445
+ /** Structured fields the server sent alongside the error (e.g. `availableCredits`). */
4446
+ details?: Record<string, unknown>;
4447
+ issues?: ApiErrorIssue[];
4258
4448
  }
4259
4449
  interface RequestOptions {
4260
4450
  headers?: Record<string, string>;
@@ -4601,7 +4791,14 @@ interface UseSubscriptionReturn {
4601
4791
  cancelAtPeriodEnd: boolean;
4602
4792
  trialEndsAt: number | null;
4603
4793
  isLoading: boolean;
4794
+ /** Human-readable text of the last load failure, safe to render. */
4604
4795
  error: string | null;
4796
+ /**
4797
+ * Machine slug of the last load failure (e.g. 'owner_connect_not_ready')
4798
+ * for branching — never render it. Null when there is no error or the
4799
+ * failure carried no slug (e.g. a network drop).
4800
+ */
4801
+ errorCode: string | null;
4605
4802
  /**
4606
4803
  * Returns true only when `tier === slug` AND the subscription is currently
4607
4804
  * entitled (status ∈ {active, trialing}). A `past_due` / `canceled` /
@@ -4697,7 +4894,14 @@ interface UseCheckoutOpts {
4697
4894
  interface UseCheckoutReturn {
4698
4895
  chargeOnce: (opts: ChargeOnceOpts) => Promise<ChargeOnceResult>;
4699
4896
  isLoading: boolean;
4897
+ /** Human-readable text of the last failure, safe to render. */
4700
4898
  error: string | null;
4899
+ /**
4900
+ * Machine slug of the last failure (e.g. 'owner_connect_not_ready') for
4901
+ * branching — never render it. Null when there is no error or the
4902
+ * failure carried no slug (e.g. a network drop).
4903
+ */
4904
+ errorCode: string | null;
4701
4905
  purchases: Purchase[];
4702
4906
  /** True iff `opts.productId` was provided and a non-fully-refunded row matches. */
4703
4907
  owned: boolean;
@@ -4853,4 +5057,4 @@ declare const ACCOUNT_STORAGE_LIMIT_BYTES: {
4853
5057
  declare function storageLimitForTier(tier: string | null | undefined): number;
4854
5058
  declare function formatBytes(bytes: number): string;
4855
5059
 
4856
- export { ACCOUNT_STORAGE_LIMIT_BYTES, APP_LOG_EVENT_KEYS, ASYNC_RESOURCE_DEFAULTS, type AdHocChargeOpts, type AiStreamAction, type AiStreamChunk, type AppLogEvent, type AppLogEventKey, type AppLogsResponse, type AppMigrationIdsValidation, type AsyncResourceDefaults, type AsyncResourceState, type AsyncResourceStatus, AuthGate, type AuthGateProps, AuthOverlay, Awareness, type AwarenessState, type AwarenessStates, type BaseMessage, type CanvasShapeClient, type Channel, type ChannelInvitation, type ChannelMember, type ChargeOnceOpts, type ChargeOnceResult, type ClientErrorKind, type ClientErrorReport, type ClientErrorReporterOptions, type ClientMessage, type CollectionSchema, type ConnectionAttachment, type ConnectionStatus, type ContentSegment, type ConversationObject, type CronHistoryEntry, type CronTaskState, DEEPSPACE_AGENT_PROFILES, DEEPSPACE_AI_DEFAULTS, DEEPSPACE_AI_MODELS, DEEPSPACE_MODEL_CATALOG_PROVENANCE, DEEPSPACE_THEME_PROPERTIES, DEFAULT_USER_COLORS, type DeepSpaceAIModel, type DeepSpaceAIModelId, type DeepSpaceAIProvider, type DeepSpaceAgentProfile, type DeepSpaceAgentProfileId, type DeepSpaceAgentSupport, DeepSpaceAuthProvider, type DeepSpaceThemeConfig, DeepSpaceThemeProvider, type DeepSpaceThemeProviderProps, type DeriveLoadStateInput, ENV, type Environment, type FileAttachment, type GroupedReaction, GuestBanner, type HandlerContext, type InboxEntry, type IntegrationResponse, type JobStatusView, type JobView, LOG_LEVELS, type LinkPreviewData, type LoadState, type LoadStateAuthInput, type LoadStateStatusInput, type LogLevel, MSG, MSG_AWARENESS, MSG_SYNC, MSG_SYNC_STEP1, MSG_SYNC_STEP2, MSG_SYNC_UPDATE, MSG_YJS_AWARENESS, MSG_YJS_SYNC, type MemberRecord, type Message, type MessageHandlers, type MessageRecord, type MsgType, type PagedResourceFetchArgs, type PagedResourcePage, type PagedResourceState, type PagedResourceStatus, type PlanInfo, PlatformContext, type PlatformContextValue, PlatformProvider, type PlatformWSOptions, type PlatformWSResult, type PresencePeerClient, PricingTable, type PricingTablePlan, type PricingTablePrice, type ProductChargeOpts, type ProtocolMessage, type Purchase, type Query, type R2FileInfo, type R2Scope, type R2UploadResult, ROLES, ROLE_ADMIN, ROLE_ANONYMOUS, ROLE_CONFIG, ROLE_DEFAULT, type Reaction, type ReactionRecord, type ReadCursorRecord, type ReadReceipt, type RecordData, RecordProvider, type RecordProviderProps, RecordRoomNotReadyError, RecordScope, type RequestOptions, type ResolvedDeepSpaceAgentModel, type Role, type RoomUser, SECURE_ROOM_BOUNDARIES_MIGRATION_ID, type ScopeEntry, ScopeRegistryProvider, type ServerMessage, SignedIn, SignedOut, type SubscribeOpts, type SubscribeResult, type SubscriptionState, type SubscriptionStatus, type SyncResult, type UseAsyncResourceOptions, type UseAuthProfileReadyOptions, type UseAuthStatusOptions, type UseCanvasResult, type UseCheckoutOpts, type UseCronMonitorResult, type UseJobsResult, type UsePagedResourceOptions, type UsePresenceRoomResult, type UseR2FilesReturn, type UseVoiceAgentOptions, type UseVoiceAgentResult, type UseYjsFieldResult, type UseYjsRoomResult, type UseYjsTextResult, type User, type UserCredits, type UserInfo, type UserKarma, type UserProfile, type ViewportClient, type VoiceStatus, type VoiceTranscriptEntry, WORKER_OWNED_NOT_FOUND_MIGRATION_ID, type WriteError, applyDeepSpaceTheme, applyUIThemeTokens, authClient, canAutoLoadPagedResource, clampPagedResourceItems, clearAuthToken, clearDeepSpaceTheme, clientBuild, createDecoder, createEncoder, decodeAiStreamChunk, deriveLoadState, detectEnvironment, dispatch, encode, encodeAwarenessMessage, encodeSyncStep1, encodeSyncStep2, encodeUpdate, formatBytes, formatFileSize, formatFullTimestamp, formatMessageTime, getApiUrl, getAuthToken, getAuthUrl, getConversationDisplayName, getConversationParticipantIds, getDeepSpaceAIModel, getEnvironmentConfig, getMessageType, getPagedResourceCooldownMs, getPlatformWorkerUrl, getThreadCounts, getUserColor, groupReactionsForMessage, handleAwarenessMessage, handleSyncMessage, hasContent, installClientErrorReporter, integration, isAsyncResourceSlow, isDMConversation, isDarkColor, isImageFile, isLocalDev, isProduction, listDeepSpaceAgentModels, parseMessageMetadata, parseSseLine, readThemeFromDOM, readVarUint, readVarUint8Array, reportClientError, resetEnvironmentCache, resolveDeepSpaceAgentModel, serverBuild, shouldGroupMessages, signIn, signOut, storageLimitForTier, toConnectionStatus, toUint8Array, useAsyncResource, useAuth, useAuthProfileReady, useAuthStatus, useAuthUser, useCanvas, useChannelMembers, useChannels, useCheckout, useCommunities, useConversation, useConversations, useCronMonitor, useDisplayName, useInbox, useIsDarkTheme, useJobs, useMessages, useMutations, usePagedResource, usePlatform, usePlatformWS, usePosts, usePresence, usePresenceRoom, useQuery, useR2Files, useReactions, useReadReceipts, useRecordContext, useSession, useSubscription, useUser, useUserLookup, useUsers, useVoiceAgent, useYjsField, useYjsRoom, useYjsText, validateAppMigrationIds, writeVarUint, writeVarUint8Array };
5060
+ export { ACCOUNT_STORAGE_LIMIT_BYTES, APP_LOG_EVENT_KEYS, ASYNC_RESOURCE_DEFAULTS, type AdHocChargeOpts, type AiStreamAction, type AiStreamChunk, type ApiErrorIssue, type AppLogEvent, type AppLogEventKey, type AppLogsResponse, type AppMigrationIdsValidation, type AsyncResourceDefaults, type AsyncResourceState, type AsyncResourceStatus, AuthGate, type AuthGateProps, AuthOverlay, Awareness, type AwarenessState, type AwarenessStates, type BaseMessage, type CanvasShapeClient, type Channel, type ChannelInvitation, type ChannelMember, type ChargeOnceOpts, type ChargeOnceResult, type ClientErrorKind, type ClientErrorReport, type ClientErrorReporterOptions, type ClientMessage, type CollectionSchema, type ConnectionAttachment, type ConnectionStatus, type ContentSegment, type ConversationObject, type CronHistoryEntry, type CronMutationResult, type CronTaskState, DEEPSPACE_AGENT_PROFILES, DEEPSPACE_AI_DEFAULTS, DEEPSPACE_AI_MODELS, DEEPSPACE_MODEL_CATALOG_PROVENANCE, DEEPSPACE_THEME_PROPERTIES, DEFAULT_USER_COLORS, type DeepSpaceAIModel, type DeepSpaceAIModelId, type DeepSpaceAIProvider, type DeepSpaceAgentProfile, type DeepSpaceAgentProfileId, type DeepSpaceAgentSupport, DeepSpaceAuthProvider, type DeepSpaceThemeConfig, DeepSpaceThemeProvider, type DeepSpaceThemeProviderProps, type DeriveLoadStateInput, ENV, type Environment, type FileAttachment, type GroupedReaction, GuestBanner, type HandlerContext, type InboxEntry, type IntegrationResponse, type JobStatusView, type JobView, LOG_LEVELS, type LinkPreviewData, type LoadState, type LoadStateAuthInput, type LoadStateStatusInput, type LogLevel, MSG, MSG_AWARENESS, MSG_SYNC, MSG_SYNC_STEP1, MSG_SYNC_STEP2, MSG_SYNC_UPDATE, MSG_YJS_AWARENESS, MSG_YJS_SYNC, type MemberRecord, type Message, type MessageHandlers, type MessageRecord, type MsgType, type NormalizedApiError, type PagedResourceFetchArgs, type PagedResourcePage, type PagedResourceState, type PagedResourceStatus, type PlanInfo, PlatformApiError, PlatformContext, type PlatformContextValue, PlatformProvider, type PlatformWSOptions, type PlatformWSResult, type PresencePeerClient, PricingTable, type PricingTablePlan, type PricingTablePrice, type ProductChargeOpts, type ProtocolMessage, type Purchase, type Query, type R2FileInfo, type R2FileListPage, type R2Scope, type R2UploadResult, ROLES, ROLE_ADMIN, ROLE_ANONYMOUS, ROLE_CONFIG, ROLE_DEFAULT, type Reaction, type ReactionRecord, type ReadCursorRecord, type ReadReceipt, type RecordData, RecordProvider, type RecordProviderProps, RecordRoomNotReadyError, RecordScope, type RequestOptions, type ResolvedDeepSpaceAgentModel, type Role, type RoomUser, SECURE_ROOM_BOUNDARIES_MIGRATION_ID, type ScopeEntry, ScopeRegistryProvider, type ServerMessage, SignedIn, SignedOut, type SubscribeOpts, type SubscribeResult, type SubscriptionState, type SubscriptionStatus, type SyncResult, type UseAsyncResourceOptions, type UseAuthProfileReadyOptions, type UseAuthStatusOptions, type UseCanvasResult, type UseCheckoutOpts, type UseCronMonitorResult, type UseJobsResult, type UsePagedResourceOptions, type UsePresenceRoomResult, type UseR2FilesReturn, type UseVoiceAgentOptions, type UseVoiceAgentResult, type UseYjsFieldResult, type UseYjsRoomResult, type UseYjsTextResult, type User, type UserCredits, type UserInfo, type UserKarma, type UserProfile, type ViewportClient, type VoiceStatus, type VoiceTranscriptEntry, WORKER_OWNED_NOT_FOUND_MIGRATION_ID, type WriteError, applyDeepSpaceTheme, applyUIThemeTokens, authClient, canAutoLoadPagedResource, clampPagedResourceItems, clearAuthToken, clearDeepSpaceTheme, clientBuild, createDecoder, createEncoder, decodeAiStreamChunk, deriveLoadState, detectEnvironment, dispatch, encode, encodeAwarenessMessage, encodeSyncStep1, encodeSyncStep2, encodeUpdate, formatBytes, formatFileSize, formatFullTimestamp, formatMessageTime, getApiUrl, getAuthToken, getAuthUrl, getConversationDisplayName, getConversationParticipantIds, getDeepSpaceAIModel, getEnvironmentConfig, getMessageType, getPagedResourceCooldownMs, getPlatformWorkerUrl, getThreadCounts, getUserColor, groupReactionsForMessage, handleAwarenessMessage, handleSyncMessage, hasContent, installClientErrorReporter, integration, isAsyncResourceSlow, isDMConversation, isDarkColor, isImageFile, isLocalDev, isProduction, listDeepSpaceAgentModels, parseMessageMetadata, parseSseLine, readThemeFromDOM, readVarUint, readVarUint8Array, reportClientError, resetEnvironmentCache, resolveDeepSpaceAgentModel, serverBuild, shouldGroupMessages, signIn, signOut, storageLimitForTier, toConnectionStatus, toUint8Array, useAsyncResource, useAuth, useAuthProfileReady, useAuthStatus, useAuthUser, useCanvas, useChannelMembers, useChannels, useCheckout, useCommunities, useConversation, useConversations, useCronMonitor, useDisplayName, useInbox, useIsDarkTheme, useJobs, useMessages, useMutations, usePagedResource, usePlatform, usePlatformWS, usePosts, usePresence, usePresenceRoom, useQuery, useR2Files, useReactions, useReadReceipts, useRecordContext, useSession, useSubscription, useUser, useUserLookup, useUsers, useVoiceAgent, useYjsField, useYjsRoom, useYjsText, validateAppMigrationIds, writeVarUint, writeVarUint8Array };