deepspace 0.4.2 → 0.4.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/server.d.ts CHANGED
@@ -1,6 +1,7 @@
1
- import { LanguageModel, ModelMessage } from 'ai';
1
+ import { LanguageModel, ToolSet, ModelMessage } from 'ai';
2
2
  import * as Y from 'yjs';
3
3
  import * as better_auth from 'better-auth';
4
+ import { betterAuth } from 'better-auth';
4
5
  import * as better_auth_plugins from 'better-auth/plugins';
5
6
  import { Context } from 'hono';
6
7
 
@@ -31,6 +32,30 @@ type ToolResult = {
31
32
  success: false;
32
33
  error: string;
33
34
  };
35
+ /**
36
+ * Page size the assistant defaults to for `records.query` when it omits
37
+ * `limit`. Keeps a model-issued unbounded scan from blowing the tool-result
38
+ * byte cap and gives the model a usable first page. Raise `limit` to page
39
+ * through more (still subject to the cap; see
40
+ * `DEFAULT_CONTEXT_CONFIG.toolResultCap` / `capToolResultSize`, which truncates
41
+ * oversized pages gracefully rather than dropping them).
42
+ *
43
+ * Applied by the AI tool layer via `applyAiToolDefaults`, never by the shared
44
+ * tools-api dispatch, so internal record readers (chat history, cron, app
45
+ * `actions.query`) stay unbounded.
46
+ */
47
+ declare const DEFAULT_QUERY_LIMIT = 50;
48
+ /**
49
+ * Fill in assistant-only parameter defaults for a built-in tool call.
50
+ *
51
+ * Applied by the AI tool layer (`buildTools`) before a model-issued tool call
52
+ * is dispatched, so the default only affects calls the assistant makes.
53
+ * `records.query` doubles as the SDK's general record-read primitive (chat
54
+ * history, cron, app `actions.query`); those callers reach the tools dispatch
55
+ * directly and must return every row, so this default must not live in the
56
+ * dispatch itself. Pure and non-mutating.
57
+ */
58
+ declare function applyAiToolDefaults(toolName: string, params: Record<string, unknown>): Record<string, unknown>;
34
59
  /**
35
60
  * Built-in tool definitions for storage, record, schema, user, and backup operations
36
61
  */
@@ -470,7 +495,7 @@ interface CronContext {
470
495
  };
471
496
  /**
472
497
  * Call a platform integration endpoint (e.g. "openai/chat-completion",
473
- * "freepik/text-to-image-classic"). Billed to the app owner — the same
498
+ * "fal/run-model"). Billed to the app owner using the same
474
499
  * APP_OWNER_JWT the rest of the SDK uses for server-side billed calls.
475
500
  */
476
501
  integrations: {
@@ -569,6 +594,49 @@ interface DeepSpaceAIOptions {
569
594
  */
570
595
  declare function createDeepSpaceAI(env: DeepSpaceAIEnv, provider: Provider, options?: DeepSpaceAIOptions): DeepSpaceModelFactory;
571
596
 
597
+ /**
598
+ * Composio tools for the Vercel AI SDK.
599
+ *
600
+ * Turns the platform's Composio integration into ready-to-use Vercel AI SDK
601
+ * tools, so an agent (or the DeepSpace AI chat) can take actions on a user's
602
+ * connected apps. Each returned tool's `execute()` calls our own
603
+ * `composio/execute-tool` endpoint through the api-worker proxy, so our auth
604
+ * and per-user billing apply. This is the managed-proxy equivalent of
605
+ * Composio's `@composio/vercel` provider, which talks straight to Composio.
606
+ *
607
+ * `authToken` must be the END USER's JWT: Composio resolves the user's
608
+ * connected accounts by the JWT subject, and that user is billed.
609
+ *
610
+ * Usage (inside a request handler, e.g. /api/ai/chat):
611
+ *
612
+ * import { composioTools, createDeepSpaceAI } from 'deepspace/worker'
613
+ * const jwt = c.req.header('Authorization')!.slice(7)
614
+ * const tools = await composioTools(c.env, { toolkit: 'gmail', authToken: jwt })
615
+ * const ai = createDeepSpaceAI(c.env, 'anthropic', { authToken: jwt })
616
+ * const result = streamText({ model: ai('claude-sonnet-4-6'), prompt, tools })
617
+ *
618
+ * Merge with your own tools: `tools: { ...buildTools(executor), ...composio }`.
619
+ */
620
+
621
+ interface ComposioToolsOptions {
622
+ /** End user's JWT. Required: the tools run as this user and bill them. */
623
+ authToken: string;
624
+ /** Restrict to one toolkit (e.g. 'gmail', 'github'). */
625
+ toolkit?: string;
626
+ /** Explicit tool slugs to expose (e.g. ['GMAIL_SEND_EMAIL']). */
627
+ tools?: string[];
628
+ /** Natural-language search to pick relevant tools. */
629
+ search?: string;
630
+ /** Cap how many tools are exposed (default 20). Keep small: the LLM sees them all. */
631
+ limit?: number;
632
+ }
633
+ /**
634
+ * Fetch Composio tools for the given scope and return them as a Vercel AI SDK
635
+ * `ToolSet`. One `list-tools` call provides each tool's JSON Schema; each tool
636
+ * executes via `composio/execute-tool` as the authenticated user.
637
+ */
638
+ declare function composioTools(env: ApiWorkerEnv, options: ComposioToolsOptions): Promise<ToolSet>;
639
+
572
640
  /**
573
641
  * captureScreenshot — call platform-worker /internal/screenshot.
574
642
  *
@@ -657,8 +725,17 @@ declare function truncateOldToolResults(messages: ChatTurn[], keepRecent: number
657
725
  */
658
726
  declare function applySlidingWindow(messages: ChatTurn[], charCap: number, minKept: number): ChatTurn[];
659
727
  /**
660
- * Replace oversized tool results with an error telling the agent to narrow
661
- * its query. Keeps a small preview so the agent can see what it got.
728
+ * Keep an individual tool result under `byteCap`.
729
+ *
730
+ * If the payload carries a list of items (e.g. a `records.query` result), it is
731
+ * degraded gracefully: as many leading items as fit under the cap are returned,
732
+ * the `success: true` shape is preserved, and `{ truncated, returned, total }`
733
+ * flags are merged in next to the array so callers can still use the partial
734
+ * data and paginate for the rest.
735
+ *
736
+ * Only when there is no array to trim (or even an empty list still overflows
737
+ * because of oversized sibling fields) does it fall back to replacing the
738
+ * result with an error + small preview telling the agent to narrow its query.
662
739
  */
663
740
  declare function capToolResultSize(result: unknown, byteCap: number): unknown;
664
741
  /**
@@ -2019,6 +2096,49 @@ declare abstract class CronRoom<E = Record<string, unknown>> extends BaseRoom<E>
2019
2096
  protected abstract onTask(taskName: string): void | Promise<void>;
2020
2097
  }
2021
2098
 
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
+
2022
2142
  /**
2023
2143
  * JobRoom — Per-app durable background-job execution Durable Object.
2024
2144
  *
@@ -2320,7 +2440,7 @@ declare const ALLOWED_BINDING_TYPES: Set<string>;
2320
2440
  *
2321
2441
  * Includes:
2322
2442
  * - Static-asset + service bindings the platform sets up automatically.
2323
- * - SDK-managed env (auth, identity, owner JWT).
2443
+ * - SDK-managed env (auth, identity, owner JWT, app-secret encryption root).
2324
2444
  * - The auto-attached cost-tracking AE dataset (`USAGE_EVENTS`).
2325
2445
  *
2326
2446
  * DO binding names (RECORD_ROOMS, YJS_ROOMS, etc.) are NOT in this set
@@ -2971,11 +3091,6 @@ declare function timingSafeEqualHex(a: string, b: string): Promise<boolean>;
2971
3091
 
2972
3092
  declare function decodeJwtPayload(token: string | null | undefined): TokenDebugInfo | undefined;
2973
3093
 
2974
- /**
2975
- * Better Auth configuration factory for DeepSpace
2976
- *
2977
- * Provides pre-configured Better Auth instances for Cloudflare Workers + D1.
2978
- */
2979
3094
  interface DeepSpaceAuthConfig {
2980
3095
  /** D1 database binding */
2981
3096
  database: D1Database;
@@ -2993,29 +3108,28 @@ interface DeepSpaceAuthConfig {
2993
3108
  clientId: string;
2994
3109
  clientSecret: string;
2995
3110
  };
3111
+ /** Microsoft (Entra ID) OAuth credentials (optional) */
3112
+ microsoft?: {
3113
+ clientId: string;
3114
+ clientSecret: string;
3115
+ };
3116
+ /**
3117
+ * Apple (Sign in with Apple) credentials (optional). Pass the raw
3118
+ * Sign-in-with-Apple key material; the ES256 client-secret JWT is minted
3119
+ * on demand, so there is no six-month token to rotate by hand.
3120
+ */
3121
+ apple?: {
3122
+ clientId: string;
3123
+ teamId: string;
3124
+ keyId: string;
3125
+ privateKey: string;
3126
+ };
2996
3127
  /** Enable email/password authentication */
2997
3128
  emailAndPassword?: boolean;
2998
3129
  /** Trusted origins for CORS */
2999
3130
  trustedOrigins?: string[];
3000
3131
  }
3001
- /**
3002
- * Create a Better Auth instance configured for DeepSpace.
3003
- *
3004
- * This is called per-request in the auth worker since D1 bindings
3005
- * are request-scoped in Cloudflare Workers.
3006
- */
3007
3132
  declare function createDeepSpaceAuth(config: DeepSpaceAuthConfig): better_auth.Auth<{
3008
- database: D1Database;
3009
- baseURL: string;
3010
- secret: string;
3011
- emailAndPassword: {
3012
- enabled: boolean;
3013
- };
3014
- socialProviders: Record<string, {
3015
- clientId: string;
3016
- clientSecret: string;
3017
- }>;
3018
- trustedOrigins: string[];
3019
3133
  plugins: [{
3020
3134
  id: "organization";
3021
3135
  endpoints: better_auth_plugins.OrganizationEndpoints<better_auth_plugins.OrganizationOptions & {
@@ -3815,9 +3929,74 @@ declare function createDeepSpaceAuth(config: DeepSpaceAuthConfig): better_auth.A
3815
3929
  INVALID_TWO_FACTOR_COOKIE: better_auth.RawError<"INVALID_TWO_FACTOR_COOKIE">;
3816
3930
  };
3817
3931
  }];
3932
+ advanced?: {
3933
+ cookies: {
3934
+ state: {
3935
+ attributes: {
3936
+ sameSite: "none";
3937
+ secure: true;
3938
+ };
3939
+ };
3940
+ oauth_state: {
3941
+ attributes: {
3942
+ sameSite: "none";
3943
+ secure: true;
3944
+ };
3945
+ };
3946
+ };
3947
+ } | undefined;
3948
+ database: D1Database;
3949
+ baseURL: string;
3950
+ secret: string;
3951
+ emailAndPassword: {
3952
+ enabled: boolean;
3953
+ };
3954
+ socialProviders: Parameters<typeof betterAuth>[0]["socialProviders"];
3955
+ trustedOrigins: string[];
3818
3956
  }>;
3819
3957
  type DeepSpaceAuth = ReturnType<typeof createDeepSpaceAuth>;
3820
3958
 
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
+
3821
4000
  /**
3822
4001
  * Subscription primitives shared between client (useSubscription hook) and
3823
4002
  * server (requireSubscription helper). Pulled into a shared module so the
@@ -3971,4 +4150,4 @@ declare class RefundError extends Error {
3971
4150
  constructor(message: string, status: number);
3972
4151
  }
3973
4152
 
3974
- 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 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, 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, applySlidingWindow, authWorkerFetch, bindingManifestFromOutputConfig, broadcastChange, broadcastYjsUpdate, buildCronContext, buildTableSelect, buildUiParts, canCreate, canDelete, canRead, canUpdate, cancelSubscription, capToolResultSize, captureScreenshot, checkFieldPermissions, coerceValue, collectionTableName, columnId, 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 };
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 CreateSecretsOptions, 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 SecretMetadata, type SecretRefreshResult, type SecretsClient, type SecretsEnv, SecretsRoom, 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 WithFreshSecretsContext, type WithFreshSecretsOptions, 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, createSecrets, 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 };