deepspace 0.4.4 → 0.5.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/README.md +90 -0
- package/dist/cli.js +2912 -1984
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +31 -4
- package/dist/index.js +511 -366
- package/dist/index.js.map +1 -1
- package/dist/server.d.ts +29 -108
- package/dist/server.js +126 -589
- package/dist/server.js.map +1 -1
- package/dist/testing.js.map +1 -1
- package/dist/worker.d.ts +29 -108
- package/dist/worker.js +126 -589
- package/dist/worker.js.map +1 -1
- package/features/admin-page/src/AdminPage.tsx +3 -5
- package/features/canvas/src/CanvasEditorPage.tsx +0 -2
- package/features/canvas/src/components/CanvasView.tsx +1 -1
- package/features/docs/src/LibrarySidebar.tsx +7 -1
- package/features/docs/src/use-yjs-room-with-awareness.ts +4 -0
- package/features/file-attachments/src/AttachmentsPage.tsx +7 -1
- package/features/file-attachments/src/useFilePreview.ts +7 -5
- package/features/file-manager/src/FileManagerPage.tsx +2 -3
- package/features/integration-test/feature.json +10 -3
- package/features/integration-test/src/IntegrationTestPage.tsx +15 -12
- package/features/landing/src/LandingPage.tsx +1 -1
- package/features/landing/src/sections/FeaturesGridSection.tsx +0 -92
- package/features/messaging/src/components/chat/MessageItem.tsx +5 -1
- package/features/messaging/src/hooks/useChatChannel.ts +5 -1
- package/features/presence-test/feature.json +2 -1
- package/features/sidebar/src/AppSidebar.tsx +1 -1
- package/features/tasks/src/TasksPage.tsx +1 -1
- package/features/testing/feature.json +2 -1
- package/features/testing/src/TestPage.tsx +8 -8
- package/package.json +4 -4
- package/scripts/add-feature.cjs +277 -272
package/dist/server.d.ts
CHANGED
|
@@ -488,10 +488,10 @@ interface CronContext {
|
|
|
488
488
|
query(collection: string, opts?: {
|
|
489
489
|
where?: Record<string, unknown>;
|
|
490
490
|
limit?: number;
|
|
491
|
-
}): Promise<
|
|
492
|
-
create(collection: string, data: Record<string, unknown>): Promise<
|
|
493
|
-
update(collection: string, recordId: string, data: Record<string, unknown>): Promise<
|
|
494
|
-
delete(collection: string, recordId: string): Promise<
|
|
491
|
+
}): Promise<unknown[]>;
|
|
492
|
+
create(collection: string, data: Record<string, unknown>): Promise<unknown>;
|
|
493
|
+
update(collection: string, recordId: string, data: Record<string, unknown>): Promise<unknown>;
|
|
494
|
+
delete(collection: string, recordId: string): Promise<unknown>;
|
|
495
495
|
};
|
|
496
496
|
/**
|
|
497
497
|
* Call a platform integration endpoint (e.g. "openai/chat-completion",
|
|
@@ -499,7 +499,7 @@ interface CronContext {
|
|
|
499
499
|
* APP_OWNER_JWT the rest of the SDK uses for server-side billed calls.
|
|
500
500
|
*/
|
|
501
501
|
integrations: {
|
|
502
|
-
call(endpoint: string, params?: Record<string, unknown>): Promise<
|
|
502
|
+
call(endpoint: string, params?: Record<string, unknown>): Promise<unknown>;
|
|
503
503
|
};
|
|
504
504
|
/** App owner's user ID */
|
|
505
505
|
ownerUserId: string;
|
|
@@ -1390,7 +1390,7 @@ declare abstract class BaseRoom<E = Record<string, unknown>> {
|
|
|
1390
1390
|
fetch(request: Request): Promise<Response>;
|
|
1391
1391
|
private handleWebSocketUpgrade;
|
|
1392
1392
|
webSocketMessage(ws: WebSocket, message: ArrayBuffer | string): Promise<void>;
|
|
1393
|
-
webSocketClose(ws: WebSocket,
|
|
1393
|
+
webSocketClose(ws: WebSocket, _code: number, _reason: string): Promise<void>;
|
|
1394
1394
|
webSocketError(ws: WebSocket, error: unknown): Promise<void>;
|
|
1395
1395
|
alarm(): Promise<void>;
|
|
1396
1396
|
/**
|
|
@@ -1398,7 +1398,7 @@ declare abstract class BaseRoom<E = Record<string, unknown>> {
|
|
|
1398
1398
|
* Return an augmented attachment to serialize on the WebSocket,
|
|
1399
1399
|
* or void to use the default attachment.
|
|
1400
1400
|
*/
|
|
1401
|
-
protected onConnect(
|
|
1401
|
+
protected onConnect(_ws: WebSocket, _user: UserAttachment): UserAttachment | void | Promise<UserAttachment | void>;
|
|
1402
1402
|
/**
|
|
1403
1403
|
* Called for each parsed JSON message.
|
|
1404
1404
|
*/
|
|
@@ -1413,7 +1413,7 @@ declare abstract class BaseRoom<E = Record<string, unknown>> {
|
|
|
1413
1413
|
/**
|
|
1414
1414
|
* Called when a WebSocket disconnects.
|
|
1415
1415
|
*/
|
|
1416
|
-
protected onDisconnect(
|
|
1416
|
+
protected onDisconnect(_ws: WebSocket, _user: UserAttachment): void | Promise<void>;
|
|
1417
1417
|
/**
|
|
1418
1418
|
* Called for HTTP requests that are NOT WebSocket upgrades.
|
|
1419
1419
|
*/
|
|
@@ -1670,7 +1670,6 @@ declare class SchemaRegistry {
|
|
|
1670
1670
|
registerTrusted(schema: CollectionSchema): void;
|
|
1671
1671
|
get(name: string): CollectionSchema | undefined;
|
|
1672
1672
|
has(name: string): boolean;
|
|
1673
|
-
hasTrusted(name: string): boolean;
|
|
1674
1673
|
all(): CollectionSchema[];
|
|
1675
1674
|
names(): string[];
|
|
1676
1675
|
}
|
|
@@ -1742,6 +1741,12 @@ declare class RecordRoom<E = Record<string, unknown>> extends BaseRoom<E> {
|
|
|
1742
1741
|
private ownerUserId;
|
|
1743
1742
|
/** True until the first fetch() completes — detects hibernation wake-up */
|
|
1744
1743
|
private freshConstruct;
|
|
1744
|
+
/**
|
|
1745
|
+
* Per-connection `[DO Perf]` timing logs are noisy on every hot path, so
|
|
1746
|
+
* they're gated behind a `DEEPSPACE_DO_PERF` env binding (set it to any
|
|
1747
|
+
* truthy value on the worker to opt in). Off by default.
|
|
1748
|
+
*/
|
|
1749
|
+
private get perfLogEnabled();
|
|
1745
1750
|
constructor(state: DurableObjectState, env: unknown, schemas?: CollectionSchema[], config?: RecordRoomConfig);
|
|
1746
1751
|
private getPermissionContext;
|
|
1747
1752
|
fetch(request: Request): Promise<Response>;
|
|
@@ -1754,12 +1759,13 @@ declare class RecordRoom<E = Record<string, unknown>> extends BaseRoom<E> {
|
|
|
1754
1759
|
private ensureCollectionTable;
|
|
1755
1760
|
private ensureAllCollectionTables;
|
|
1756
1761
|
protected onConnect(ws: WebSocket, user: UserAttachment): Promise<ConnectionAttachment>;
|
|
1757
|
-
|
|
1758
|
-
|
|
1759
|
-
|
|
1760
|
-
|
|
1761
|
-
|
|
1762
|
-
|
|
1762
|
+
/**
|
|
1763
|
+
* Required to satisfy BaseRoom's abstract contract, but never invoked:
|
|
1764
|
+
* RecordRoom overrides `webSocketMessage`/`webSocketClose` directly (below),
|
|
1765
|
+
* so the BaseRoom dispatch path that would call this never runs. All real
|
|
1766
|
+
* message handling lives in `handleRecordMessage`.
|
|
1767
|
+
*/
|
|
1768
|
+
protected onMessage(): void;
|
|
1763
1769
|
webSocketMessage(ws: WebSocket, message: ArrayBuffer | string): Promise<void>;
|
|
1764
1770
|
webSocketClose(ws: WebSocket, code: number, reason: string): Promise<void>;
|
|
1765
1771
|
webSocketError(ws: WebSocket, error: unknown): Promise<void>;
|
|
@@ -1803,12 +1809,12 @@ declare class YjsRoom<E = Record<string, unknown>> extends BaseRoom<E> {
|
|
|
1803
1809
|
private getDoc;
|
|
1804
1810
|
private persistDoc;
|
|
1805
1811
|
protected onConnect(ws: WebSocket, user: UserAttachment): YjsAttachment;
|
|
1806
|
-
protected onMessage(
|
|
1812
|
+
protected onMessage(_ws: WebSocket, _user: UserAttachment, _message: {
|
|
1807
1813
|
type: string;
|
|
1808
1814
|
[key: string]: unknown;
|
|
1809
1815
|
}): void;
|
|
1810
1816
|
protected onBinaryMessage(ws: WebSocket, user: UserAttachment, data: ArrayBuffer): void;
|
|
1811
|
-
protected onDisconnect(ws: WebSocket,
|
|
1817
|
+
protected onDisconnect(ws: WebSocket, _user: UserAttachment): void;
|
|
1812
1818
|
private handleSync;
|
|
1813
1819
|
private handleAwareness;
|
|
1814
1820
|
private readAwarenessUpdates;
|
|
@@ -1890,13 +1896,13 @@ declare abstract class GameRoom<E = Record<string, unknown>> extends BaseRoom<E>
|
|
|
1890
1896
|
*/
|
|
1891
1897
|
protected abstract onTick(state: Record<string, unknown>, inputs: GameInput[], tick: number): Record<string, unknown> | undefined | Promise<Record<string, unknown> | undefined>;
|
|
1892
1898
|
/** Called when a player connects */
|
|
1893
|
-
protected onPlayerJoin(
|
|
1899
|
+
protected onPlayerJoin(_player: Player): void;
|
|
1894
1900
|
/** Called when a player disconnects */
|
|
1895
|
-
protected onPlayerLeave(
|
|
1901
|
+
protected onPlayerLeave(_player: Player): void;
|
|
1896
1902
|
/** Called when the game starts */
|
|
1897
1903
|
protected onGameStart(): void;
|
|
1898
1904
|
/** Called when the game ends */
|
|
1899
|
-
protected onGameEnd(
|
|
1905
|
+
protected onGameEnd(_finalState: Record<string, unknown>): void;
|
|
1900
1906
|
/**
|
|
1901
1907
|
* Called once when the DO first hydrates persisted state from storage.
|
|
1902
1908
|
* Receives the parsed state blob as it was written by a previous build.
|
|
@@ -2096,49 +2102,6 @@ declare abstract class CronRoom<E = Record<string, unknown>> extends BaseRoom<E>
|
|
|
2096
2102
|
protected abstract onTask(taskName: string): void | Promise<void>;
|
|
2097
2103
|
}
|
|
2098
2104
|
|
|
2099
|
-
interface SecretMetadata {
|
|
2100
|
-
name: string;
|
|
2101
|
-
version: number;
|
|
2102
|
-
createdAt: string;
|
|
2103
|
-
updatedAt: string;
|
|
2104
|
-
updatedBy: string | null;
|
|
2105
|
-
}
|
|
2106
|
-
declare class SecretsRoom<E extends {
|
|
2107
|
-
APP_SECRETS_KEY?: string;
|
|
2108
|
-
} = {
|
|
2109
|
-
APP_SECRETS_KEY?: string;
|
|
2110
|
-
}> extends BaseRoom<E> {
|
|
2111
|
-
private initialized;
|
|
2112
|
-
protected onMessage(_ws: WebSocket, _user: UserAttachment, _message: {
|
|
2113
|
-
type: string;
|
|
2114
|
-
}): void;
|
|
2115
|
-
fetch(request: Request): Promise<Response>;
|
|
2116
|
-
protected onRequest(request: Request): Promise<Response>;
|
|
2117
|
-
list(): Promise<SecretMetadata[]>;
|
|
2118
|
-
pull(): Promise<Record<string, string>>;
|
|
2119
|
-
patch(body: {
|
|
2120
|
-
set?: Record<string, string>;
|
|
2121
|
-
delete?: string[];
|
|
2122
|
-
updatedBy?: string;
|
|
2123
|
-
}): Promise<{
|
|
2124
|
-
version: number;
|
|
2125
|
-
secrets: SecretMetadata[];
|
|
2126
|
-
}>;
|
|
2127
|
-
replace(body: {
|
|
2128
|
-
secrets?: Record<string, string>;
|
|
2129
|
-
updatedBy?: string;
|
|
2130
|
-
}): Promise<{
|
|
2131
|
-
version: number;
|
|
2132
|
-
secrets: SecretMetadata[];
|
|
2133
|
-
}>;
|
|
2134
|
-
private transaction;
|
|
2135
|
-
private migrateLegacyProductionSecrets;
|
|
2136
|
-
private ensureInitialized;
|
|
2137
|
-
private requireKey;
|
|
2138
|
-
private storeVersion;
|
|
2139
|
-
private bumpStoreVersion;
|
|
2140
|
-
}
|
|
2141
|
-
|
|
2142
2105
|
/**
|
|
2143
2106
|
* JobRoom — Per-app durable background-job execution Durable Object.
|
|
2144
2107
|
*
|
|
@@ -2440,7 +2403,7 @@ declare const ALLOWED_BINDING_TYPES: Set<string>;
|
|
|
2440
2403
|
*
|
|
2441
2404
|
* Includes:
|
|
2442
2405
|
* - Static-asset + service bindings the platform sets up automatically.
|
|
2443
|
-
* - SDK-managed env (auth, identity, owner JWT
|
|
2406
|
+
* - SDK-managed env (auth, identity, owner JWT).
|
|
2444
2407
|
* - The auto-attached cost-tracking AE dataset (`USAGE_EVENTS`).
|
|
2445
2408
|
*
|
|
2446
2409
|
* DO binding names (RECORD_ROOMS, YJS_ROOMS, etc.) are NOT in this set
|
|
@@ -3048,8 +3011,7 @@ interface VerifiedAuth {
|
|
|
3048
3011
|
userId: string;
|
|
3049
3012
|
claims: JwtClaims;
|
|
3050
3013
|
}
|
|
3051
|
-
|
|
3052
|
-
}
|
|
3014
|
+
type VerifyResult = VerifiedAuth;
|
|
3053
3015
|
interface TokenDebugInfo {
|
|
3054
3016
|
iss?: string | null;
|
|
3055
3017
|
aud?: string | string[] | null;
|
|
@@ -3956,47 +3918,6 @@ declare function createDeepSpaceAuth(config: DeepSpaceAuthConfig): better_auth.A
|
|
|
3956
3918
|
}>;
|
|
3957
3919
|
type DeepSpaceAuth = ReturnType<typeof createDeepSpaceAuth>;
|
|
3958
3920
|
|
|
3959
|
-
interface SecretsEnv {
|
|
3960
|
-
SECRETS_ROOMS?: DurableObjectNamespace;
|
|
3961
|
-
APP_SECRETS_KEY?: string;
|
|
3962
|
-
APP_SECRETS_LOCAL_FALLBACK?: string;
|
|
3963
|
-
}
|
|
3964
|
-
interface SecretRefreshResult {
|
|
3965
|
-
changed: boolean;
|
|
3966
|
-
version: number;
|
|
3967
|
-
}
|
|
3968
|
-
interface WithFreshSecretsContext {
|
|
3969
|
-
secrets: SecretsClient;
|
|
3970
|
-
attempt: number;
|
|
3971
|
-
refreshed: boolean;
|
|
3972
|
-
}
|
|
3973
|
-
interface WithFreshSecretsOptions {
|
|
3974
|
-
/**
|
|
3975
|
-
* By default the operation retries only when a forced refresh observes a
|
|
3976
|
-
* changed secret version after an auth-like failure. Set this for idempotent
|
|
3977
|
-
* operations that should retry after a successful refresh even when the
|
|
3978
|
-
* version is unchanged.
|
|
3979
|
-
*/
|
|
3980
|
-
retryWhenUnchanged?: boolean;
|
|
3981
|
-
}
|
|
3982
|
-
interface SecretsClient {
|
|
3983
|
-
get(name: string): Promise<string | undefined>;
|
|
3984
|
-
require(name: string): Promise<string>;
|
|
3985
|
-
getMany(names: string[]): Promise<Record<string, string | undefined>>;
|
|
3986
|
-
preload(names: string[]): Promise<void>;
|
|
3987
|
-
refresh(options?: {
|
|
3988
|
-
force?: boolean;
|
|
3989
|
-
}): Promise<SecretRefreshResult>;
|
|
3990
|
-
checkForUpdates(): Promise<SecretRefreshResult>;
|
|
3991
|
-
invalidate(): void;
|
|
3992
|
-
withFreshSecrets<T>(operation: (ctx: WithFreshSecretsContext) => Promise<T>, options?: WithFreshSecretsOptions): Promise<T>;
|
|
3993
|
-
}
|
|
3994
|
-
interface CreateSecretsOptions {
|
|
3995
|
-
refreshIntervalMs?: number;
|
|
3996
|
-
now?: () => number;
|
|
3997
|
-
}
|
|
3998
|
-
declare function createSecrets(env: SecretsEnv, options?: CreateSecretsOptions): SecretsClient;
|
|
3999
|
-
|
|
4000
3921
|
/**
|
|
4001
3922
|
* Subscription primitives shared between client (useSubscription hook) and
|
|
4002
3923
|
* server (requireSubscription helper). Pulled into a shared module so the
|
|
@@ -4150,4 +4071,4 @@ declare class RefundError extends Error {
|
|
|
4150
4071
|
constructor(message: string, status: number);
|
|
4151
4072
|
}
|
|
4152
4073
|
|
|
4153
|
-
export { AI_CHATS_SCHEMA, AI_MESSAGES_SCHEMA, ALLOWED_BINDING_TYPES, APP_NAME_RULES, AUTO_PROVISIONABLE_TYPES, AUTO_PROVISION_SENTINEL, type ActionContext, type ActionHandler, type ActionResult, type ActionTools, type ApiWorkerEnv, type AppNameResolution, type AppNameValidation, type AuthWorkerEnv, BASE_USERS_SCHEMA, BUILT_IN_TOOLS, BaseRoom, CHANNELS_SCHEMA, CHANNEL_INVITATIONS_SCHEMA, CHANNEL_MEMBERS_SCHEMA, CONVERSATION_SCHEMAS, COST_RATES, CancelSubscriptionError, type CancelSubscriptionOpts, type CancelSubscriptionResult, CanvasRoom, type CanvasShape, type ChatContextConfig, type ChatMessageRow, type ChatRow, type ChatTurn, type CollectionPermissionSummary, type CollectionSchema, type ColumnDefinition, type ColumnInterpretation, type ComposioToolsOptions, type ConvMemberData, type ConvMessageData, type ConvReactionData, type ConvReadCursorData, type ConvVoteData, type ConversationStateData, type
|
|
4074
|
+
export { AI_CHATS_SCHEMA, AI_MESSAGES_SCHEMA, ALLOWED_BINDING_TYPES, APP_NAME_RULES, AUTO_PROVISIONABLE_TYPES, AUTO_PROVISION_SENTINEL, type ActionContext, type ActionHandler, type ActionResult, type ActionTools, type ApiWorkerEnv, type AppNameResolution, type AppNameValidation, type AuthWorkerEnv, BASE_USERS_SCHEMA, BUILT_IN_TOOLS, BaseRoom, CHANNELS_SCHEMA, CHANNEL_INVITATIONS_SCHEMA, CHANNEL_MEMBERS_SCHEMA, CONVERSATION_SCHEMAS, COST_RATES, CancelSubscriptionError, type CancelSubscriptionOpts, type CancelSubscriptionResult, CanvasRoom, type CanvasShape, type ChatContextConfig, type ChatMessageRow, type ChatRow, type ChatTurn, type CollectionPermissionSummary, type CollectionSchema, type ColumnDefinition, type ColumnInterpretation, type ComposioToolsOptions, type ConvMemberData, type ConvMessageData, type ConvReactionData, type ConvReadCursorData, type ConvVoteData, type ConversationStateData, type CronContext, type CronExecution, CronRoom, type CronRoomConfig, type CronTask, type CustomBinding, type CustomBindingManifest, DEFAULT_CONTEXT_CONFIG, DEFAULT_DO_MANIFEST, DEFAULT_QUERY_LIMIT, DIRECTORY_SCHEMAS, type DOBindings, type DOManifest, type DOManifestEntry, type DebugApiContext, type DeepSpaceAIEnv, type DeepSpaceAIOptions, type DeepSpaceAuth, type DeepSpaceAuthConfig, type DirectoryCommunityData, type DirectoryConversationData, type DirectoryMembershipData, type DirectoryPostData, type DoMigrationDirective, type DoMigrationPlan, type ExistingDOBinding, GLOBAL_DO_TYPES, GLOBAL_DO_TYPE_NAMES, type GameInput, GameRoom, type GameRoomConfig, type GetActionData, type GlobalDOType, type Job, type JobContext, JobRoom, type JobRoomConfig, type JobStatus, type JwtClaims, type JwtVerifierConfig, MESSAGES_SCHEMA, type MutateActionData, type PermissionAnalysis, type PermissionContext, type PermissionLevel, type PermissionSource, type PlanInfo, type PlatformWorkerEnv, type Player, type PrefixResult, type PresencePeer, PresenceRoom, type QueryActionData, REACTIONS_SCHEMA, READ_RECEIPTS_SCHEMA, RESERVED_BINDING_NAMES, RESERVED_COLLECTION_NAMES, type RecordContext, RecordRoom, type RecordRoomConfig, RefundError, type RefundOpts, type RefundResult, type ResolvedColumn, type ResolvedPermission, type RolePermissions, type RunMigrationsResult, SYSTEM_COLLECTION_SCHEMAS, SYSTEM_MANAGED_COLUMNS, SchemaRegistry, type ScopeContext, type ScopedR2Auth, type ScopedR2Config, type ScopedR2Handler, type ScreenshotEnv, type ScreenshotOptions, type ScreenshotResult, type SharedConnection, type StoredRecord, SubscriptionAuthError, type SubscriptionContext, type SubscriptionRead, SubscriptionRequiredError, type SubscriptionStatus, type Summarizer, type TokenDebugInfo, type ToolResult, type ToolSchema, type ToolsApiContext, USERS_COLUMNS, type User, type UserAttachment, type UserContext, VOTING_SCHEMAS, type ValidationError, type VerifiedAuth, type VerifyOutcome, type VerifyResult, type Viewport, WORKSPACE_SCHEMAS, type YjsContext, YjsRoom, analyzePermissions, apiWorkerFetch, appendMessage, applyAiToolDefaults, applySlidingWindow, authWorkerFetch, bindingManifestFromOutputConfig, broadcastChange, broadcastYjsUpdate, buildCronContext, buildTableSelect, buildUiParts, canCreate, canDelete, canRead, canUpdate, cancelSubscription, capToolResultSize, captureScreenshot, checkFieldPermissions, coerceValue, collectionTableName, columnId, composioTools, computeDoMigration, computeHmacHex, createChat, createDeepSpaceAI, createDeepSpaceAuth, createScopedR2Handler, dataToColumnValues, decodeJwtPayload, deleteChatCascade, deleteRecord, enqueueJob, executeQuery, getAllUsers, getChat, getGlobalDOSchemas, getGlobalDOType, getOrCreateYjsDoc, getRecord, getRolePermissions, getSubscription, getUser, getYjsDocKey, handleApiRequest, handleDelete, handlePut, handleSetRole, handleSubscribe, handleToolsRequest, handleUnsubscribe, handleUserList, handleUserUpdate, handleYjsBinaryMessage, handleYjsJoin, handleYjsLeave, isAutoProvision, isOwner, lintSchema, loadMessages, makeDefaultSummarizer, meterAi, meterUsage, meterVectorize, noopPermissionContext, platformWorkerFetch, prepareMessagesWithCompaction, priceBindingUsageEvent, putRecord, readRecord, recordMatchesSubscription, refundInvoice, registerUser, requireSubscription, resolveAppName, resolveColumn, rowToData, runMigrations, saveYjsDoc, timingSafeEqualHex, totalChars, truncateOldToolResults, turnsToCoreMessages, unwrapToolOutput, updateChat, validateAppName, validateBindingManifest, validateDoManifest, verifyJwt, workspaceAccountsSchema, workspaceContentSharesSchema, workspaceEmailHandlesSchema, workspaceFormResponsesSchema, workspacePeopleSchema, workspaceProjectsSchema, workspaceTagsSchema, workspaceTasksSchema, workspaceTeamMembersSchema, workspaceTeamsSchema, workspaceTransactionsSchema };
|