deepspace 0.19.5 → 0.21.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/CHANGELOG.md +24 -0
- package/dist/{chunk-A7UFIOWO.js → chunk-KDCDRHBA.js} +7 -2
- package/dist/chunk-KDCDRHBA.js.map +1 -0
- package/dist/cli.js +219 -94
- package/dist/cli.js.map +1 -1
- package/dist/documentation-client-core.d.ts +3 -2
- package/dist/documentation-client-core.js +1 -1
- package/dist/documentation-default-renderer.cjs +48 -48
- package/dist/documentation-react.d.ts +2 -1
- package/dist/documentation-react.js +1 -1
- package/dist/documentation-runtime.js +7 -7
- package/dist/documentation-server-core.d.ts +3 -2
- package/dist/documentation-server-core.js +1 -1
- package/dist/documentation.d.ts +40 -12
- package/dist/documentation.js +40 -7
- package/dist/documentation.js.map +1 -1
- package/dist/index.d.ts +225 -21
- package/dist/index.js +262 -112
- package/dist/index.js.map +1 -1
- package/dist/{public-CFAj1hL2.d.ts → public-DenQ1TsZ.d.ts} +36 -11
- package/dist/server.d.ts +46 -29
- package/dist/server.js +1041 -254
- package/dist/server.js.map +1 -1
- package/dist/testing-mcp.d.ts +69 -0
- package/dist/testing-mcp.js +99 -0
- package/dist/testing-mcp.js.map +1 -0
- package/dist/testing.d.ts +17 -20
- package/dist/testing.js +47 -25
- package/dist/testing.js.map +1 -1
- package/dist/worker.d.ts +73 -32
- package/dist/worker.js +1094 -244
- package/dist/worker.js.map +1 -1
- package/features/ai-chat/feature.json +2 -2
- package/features/ai-chat/src/AiChatPage.tsx +56 -21
- package/features/ai-chat/src/ChatPanel.tsx +33 -10
- package/features/ai-chat/src/__tests__/ChatPanel.lifecycle.test.tsx +156 -0
- package/features/cron/src/CronLogPage.tsx +107 -69
- package/features/file-attachments/feature.json +2 -1
- package/features/file-manager/feature.json +2 -1
- package/features/file-manager/src/FileManagerPage.tsx +227 -194
- package/features/integration-test/src/IntegrationTestPage.tsx +54 -34
- package/package.json +5 -1
- 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
|
|
3364
|
-
* controls. Reading tasks/history stays
|
|
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
|
-
/**
|
|
3368
|
-
|
|
3369
|
-
|
|
3370
|
-
|
|
3371
|
-
|
|
3372
|
-
|
|
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
|
-
/**
|
|
3580
|
-
|
|
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
|
-
|
|
4254
|
-
|
|
4255
|
-
|
|
4256
|
-
|
|
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 };
|