@xanots/sdk 0.0.10 → 0.0.12
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 +33 -0
- package/README.md +48 -5
- package/dist/.build-fingerprint +1 -1
- package/dist/{agent-file-refresh-QNKN5RYD.js → agent-file-refresh-GQWAAOBV.js} +4 -4
- package/dist/bin.js +12 -11
- package/dist/{branch-commands-2BLOC2GR.js → branch-commands-5KMPAAZV.js} +7 -7
- package/dist/bundle.d.ts +218 -0
- package/dist/bundle.js +143 -0
- package/dist/{capture-4WVJY4DQ.js → capture-YLUVAITI.js} +2 -2
- package/dist/chunk-2VTJSI6X.js +192 -0
- package/dist/{chunk-5XZ744TS.js → chunk-2ZCUO2UG.js} +1 -1
- package/dist/{chunk-OYMR5AMJ.js → chunk-3LQGF2WS.js} +2 -2
- package/dist/{chunk-WP4OZZV4.js → chunk-3VFCKHOB.js} +2 -2
- package/dist/{chunk-XHEXOES3.js → chunk-5YDINUAP.js} +1 -1
- package/dist/{chunk-LU7TRWMC.js → chunk-6VNRMKFJ.js} +2 -2
- package/dist/{chunk-CTD5ZCV6.js → chunk-7WRJPKGK.js} +2 -2
- package/dist/{chunk-3INK4Y4E.js → chunk-AE3PDSDS.js} +1 -1
- package/dist/{chunk-5YCQ2QHH.js → chunk-AG5GCZDD.js} +2 -2
- package/dist/{chunk-DBFU47BJ.js → chunk-AOFFKSJC.js} +2 -2
- package/dist/{chunk-TCFIPDB3.js → chunk-AVGDL6RB.js} +1 -1
- package/dist/{chunk-4BXJGVZ3.js → chunk-DCMANKMX.js} +2 -69
- package/dist/{chunk-WHOJWOSV.js → chunk-EETVJZAZ.js} +1 -1
- package/dist/chunk-EHP3WPEG.js +21 -0
- package/dist/{chunk-W24FJHPD.js → chunk-ELK7UALJ.js} +3 -3
- package/dist/{chunk-VNQM3V2C.js → chunk-EXENFOWE.js} +2 -2
- package/dist/{chunk-P6TAVLOX.js → chunk-GSP2BY4F.js} +17 -10
- package/dist/{chunk-AIZKXUNP.js → chunk-IMLYGQK6.js} +2 -2
- package/dist/{chunk-LBYWGMOA.js → chunk-N74KDCBD.js} +176 -42
- package/dist/{chunk-3IGNIP6R.js → chunk-NDP7OUPS.js} +1 -1
- package/dist/chunk-OHX6MIUZ.js +184 -0
- package/dist/{chunk-EQW3YT5U.js → chunk-P6PVBQL6.js} +2 -2
- package/dist/{chunk-I7DQDJAM.js → chunk-PLE5QQOZ.js} +55 -56
- package/dist/chunk-PR7OXHGZ.js +70 -0
- package/dist/{chunk-VKSOTZK3.js → chunk-QYSQ3UDO.js} +160 -8
- package/dist/{chunk-ZQ2PKR6R.js → chunk-RQ3FXV4K.js} +2 -2
- package/dist/{chunk-Q77KNEUL.js → chunk-RQNMTDXD.js} +1703 -2
- package/dist/{chunk-QKM4U5UK.js → chunk-TJS2AF5Y.js} +2 -2
- package/dist/{chunk-DIA7CT7J.js → chunk-V5Y7D4LH.js} +11 -2
- package/dist/{chunk-KA6G2L7U.js → chunk-VK26K7AY.js} +3 -3
- package/dist/{chunk-YYFXVYPX.js → chunk-VPAWRBK5.js} +12 -16
- package/dist/{chunk-5R73LFWK.js → chunk-VRNZ2NVV.js} +7 -7
- package/dist/{chunk-ACCBOMCB.js → chunk-XT3XQ4PF.js} +32 -27
- package/dist/{chunk-7JDT4PBU.js → chunk-XWFRNJMQ.js} +5 -179
- package/dist/{chunk-7ZYW652H.js → chunk-YHS6VVLJ.js} +2 -2
- package/dist/{chunk-75Z74TA7.js → chunk-YX22LKQE.js} +2 -2
- package/dist/{chunk-F6CYJ7TN.js → chunk-Z2ZIE5CO.js} +2 -2
- package/dist/cli.d.ts +13 -6
- package/dist/cli.js +11 -10
- package/dist/codegen-command-Y2SPMAUW.js +47 -0
- package/dist/codegen.d.ts +5 -4
- package/dist/codegen.js +2 -2
- package/dist/{completion-WF46272M.js → completion-HJU5QEFB.js} +2 -2
- package/dist/{deploy-command-QTIVA22A.js → deploy-command-XHS5PKPV.js} +20 -19
- package/dist/{ephemeral-command-U4AQ3TXX.js → ephemeral-command-2NKPEXUU.js} +8 -8
- package/dist/index.d.ts +88 -102
- package/dist/index.js +13 -12
- package/dist/init-command-23FFNUFT.js +32 -0
- package/dist/internal.d.ts +10 -16
- package/dist/internal.js +76 -54
- package/dist/io-UBDMMDH6.js +12 -0
- package/dist/{live-diff-IXKBVG4K.js → live-diff-HCOTN5WC.js} +3 -3
- package/dist/{lock-GFXD6G2E.js → lock-HQ4KARU2.js} +3 -2
- package/dist/{lock-commands-DQ7CUMIV.js → lock-commands-WCRC56ME.js} +12 -11
- package/dist/{login-command-Z6CHTA57.js → login-command-P7LXD5TE.js} +6 -6
- package/dist/{loop-D5NPL4VH.js → loop-IC5ISSYB.js} +3 -3
- package/dist/{marketplace-command-P4IPLJ6J.js → marketplace-command-T6JCHW7J.js} +4 -4
- package/dist/{meta-client-K2J4XH64.js → meta-client-LKRKR3L2.js} +4 -4
- package/dist/node.d.ts +6 -5
- package/dist/node.js +18 -17
- package/dist/{preflight-command-GZ2GE5RN.js → preflight-command-TZWPHBXY.js} +17 -16
- package/dist/{profile-command-LJSBDV2L.js → profile-command-WBNSMQSI.js} +3 -3
- package/dist/{release-command-YUBTNHVX.js → release-command-WEFYRTCI.js} +27 -26
- package/dist/response-D6xGLEIn.d.ts +839 -0
- package/dist/{routes-manifest-PWZHDOI5.js → routes-manifest-5ZFKUQWA.js} +2 -2
- package/dist/{runtime-V4C3AC3A.js → runtime-LSLIDALK.js} +1 -1
- package/dist/scaffold.d.ts +16 -8
- package/dist/scaffold.js +7 -11
- package/dist/{static-host-3WMV7IZO.js → static-host-4JDQCHUW.js} +1 -1
- package/dist/{status-command-AL47VG7H.js → status-command-VARULAR5.js} +4 -4
- package/dist/{store-BG1UPZ3Z.d.ts → store-DAnUIi1T.d.ts} +95 -87
- package/dist/{test-command-YAZLKLGQ.js → test-command-YCAR4O35.js} +7 -7
- package/dist/{upgrade-command-FB5QJ363.js → upgrade-command-GYEIMJBG.js} +16 -16
- package/dist/{workspace-2COHDBM3.js → workspace-33KHFLX3.js} +2 -2
- package/dist/{workspace-command-43P42FBP.js → workspace-command-2ZTGT26W.js} +28 -27
- package/dist/{workspace-export-DURY5WYL.js → workspace-export-MLYTYZS5.js} +3 -3
- package/dist/{response-CVAE2kMj.d.ts → xdo-ODuJklk6.d.ts} +28 -860
- package/guides/authoring.md +11 -2
- package/guides/typed-frontend.md +5 -5
- package/llms/filters.md +11 -10
- package/llms/kinds-core.md +1 -1
- package/llms/statements-data.md +6 -3
- package/llms/values.md +1 -1
- package/llms-full.txt +53 -42
- package/llms.txt +34 -27
- package/manifest.json +6 -2
- package/package.json +7 -2
- package/dist/chunk-ANUDXFEX.js +0 -881
- package/dist/chunk-JGCWTCA7.js +0 -95
- package/dist/chunk-YBC3IKMF.js +0 -845
- package/dist/codegen-command-GB3H2KQ7.js +0 -46
- package/dist/init-command-MAXULNAD.js +0 -33
- package/dist/io-M7XZEMK7.js +0 -11
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import { ef as Condition, eg as FilterResults, eh as ElementResult, ei as SameArrayResult, ej as GroupedArrayResult, ek as AgentResultOf, b3 as AddonDef, el as OutputPath, cZ as TableDef, em as QualifiedCol, bx as DbEval, cY as SortDirective, bz as DbWhere, en as OutputRoot, bM as InferRow, eo as AggregateRow, ep as EvalFields, eq as OutputAuthored, cb as MicroserviceDef, ah as generated, F as FunctionDef, co as QueryHandle } from './store-
|
|
2
|
-
export { b4 as AddonXdo, A as AdoptChange, a as AdoptResult, b5 as AgentDef, b6 as AgentHandle, b7 as AgentOutput, b8 as AgentSettingsXdo, b9 as AgentXdo, ba as AmbientBindings, bb as AnthropicLlm, bc as ApiGroupDef, bd as ApiGroupXdo, be as AuthRef, bf as Authored, B as Bundle, b as BundlePayload, c as BundleType, bg as Capturable, b0 as CaptureRecord, a_ as CaptureValue, bh as ChannelConversationDef, bi as ChannelDeliveryDef, bj as ChannelDeliveryGuarantee, bk as ChannelPublishDef, bl as ChannelPublishWho, bm as ChannelRateLimitDef, bn as ColumnDef, bo as Comparison, bp as ContainerEnv, bq as ContainerPort, br as ContainerResources, bs as ContainerVolume, bt as CorsConfig, bu as CorsMode, bv as DatabaseActions, bw as DatabaseInputs, by as DbEvalFilter, bA as ErrorInputs, bB as ExceptionPolicy, bC as FieldAccessor, bD as FieldRule, bE as GoogleGenAiLlm, bF as HistoryInput, bG as HttpVerb, bH as IndexDef, bI as IndexLang, bJ as IndexOp, bK as IndexType, bL as IndexXdo, bN as InputDescriptor, bO as InputOptions, bP as IteratingBindings, bQ as KnowledgeDef, bR as KnowledgeDirSource, bS as KnowledgeFileSource, bT as KnowledgeMode, bU as KnowledgeType, bV as LAMBDA_BINDINGS, bW as LAMBDA_CODE_FILTERS, bX as LAMBDA_GLOBALS, bY as LAMBDA_MODULE_GLOBALS, bZ as LAMBDA_STATEMENTS, b1 as LambdaBindings, b_ as LambdaBody, aZ as LambdaOptions, a$ as LambdaSurface, b$ as LlmPrompt, c0 as LlmProvider, c1 as LlmSettings, g as LockEntry, h as LockExportContext, i as LockFile, M as Manifest, j as ManifestField, k as ManifestKind, l as ManifestStatement, c2 as ManifestValue, c3 as McpPathOptions, c4 as McpServerDef, c5 as McpServerHandle, c6 as McpServerXdo, m as MergeResult, c7 as MessageDeliverTo, c8 as MicroserviceChart, c9 as MicroserviceConfig, ca as MicroserviceContainer, cc as MicroserviceDeployment, cd as MicroserviceIngress, ce as MicroserviceRegistryAuth, cf as MicroserviceVolume, cg as MicroserviceXdo, ch as MiddlewareAttach, ci as MiddlewareAttachEntry, cj as MiddlewareDef, ck as MiddlewareXdo, O as ObjectKind, cl as OpenAiLlm, n as PayloadArrayKey, cm as QueryDef, cn as QueryFilterName, cp as QueryResponseType, cq as QueryXdo, cr as RealtimeActions, cs as RealtimeChannelActions, ct as RealtimeChannelDef, cu as RealtimeChannelHandle, cv as RealtimeChannelRef, cw as RealtimeChannelTriggerInputs, cx as RealtimeChannelXdo, cy as RealtimeClient, cz as RealtimeInputs, cA as RealtimeMessageDef, cB as RealtimeMessageXdo, cC as RealtimeServerActions, cD as RealtimeServerDef, cE as RealtimeServerHandle, cF as RealtimeServerRef, cG as RealtimeServerTriggerInputs, cH as RealtimeServerXdo, cI as RealtimeUrlOptions, R as RenameResult, cJ as ResultStrategy, cK as Route, cL as RowOf, cM as ScheduleDef, cN as SchemaCols, cO as SchemaDef, cP as SearchComparison, cQ as SearchGroup, cR as SearchNode, cS as SearchOp, cT as SearchParamValue, cU as SeedFileSource, cV as SeedRow, cW as SeedSource, cX as SortDir, S as StatementSpec, c_ as TableXdo, c$ as TaskDef, d0 as TaskXdo, d1 as ToolDef, d2 as ToolXdo, d3 as ToolsetBaseDef, d4 as ToolsetBaseXdo, d5 as ToolsetInputs, d6 as ToolsetToolEntry, d7 as ToolsetToolRef, d8 as TriggerDef, d9 as TriggerObjType, da as TriggerXdo, db as ViewDef, dc as ViewXdo, dd as WorkflowTestDef, de as WorkflowTestXdo, df as WorkspaceActions, dg as WorkspaceConfigDef, dh as WorkspaceConfigXdo, di as WorkspaceHistoryDef, dj as WorkspaceHistoryXdo, dk as WorkspaceInputs, dl as WorkspaceMiddlewareDef, dm as WorkspaceMiddlewareXdo, b2 as Xano, dn as XanoFreeLlm, dp as addon, dq as agent, dr as agentTrigger, ds as and, dt as apiGroup, du as assertLambdaBody, dv as bitwiseAnd, dw as bitwiseOr, dx as bitwiseXor, dy as cmp, dz as defineFunction, dA as emit, dB as emitBundle, dC as errorTrigger, dD as expr, dE as fl, dF as input, dG as knowledge, dH as knowledgeDir, dI as knowledgeFile, er as lam, dJ as mathAdd, dK as mathDiv, dL as mathMul, dM as mathSub, dN as mcpServer, dO as mcpServerTrigger, dP as microservice, dQ as middleware, dR as mixed, dS as objectEntries, dT as objectKeys, dU as objectValues, dV as or, dW as query, dX as realtimeChannel, dY as realtimeChannelTrigger, dZ as realtimeMessage, d_ as realtimeServer, d$ as realtimeServerTrigger, e0 as realtimeTrigger, e1 as resetLockOverrides, e2 as seedFile, e3 as seedLockOverrides, e4 as table, e5 as tableTrigger, e6 as task, e7 as textAppend, e8 as textPrepend, e9 as toSearchParams, ea as tool, eb as workflowTest, ec as workspace, ed as workspaceConfig, ee as workspaceTrigger } from './store-
|
|
3
|
-
import {
|
|
4
|
-
export { B as BrandOpts,
|
|
1
|
+
import { ef as Condition, eg as FilterResults, eh as ElementResult, ei as SameArrayResult, ej as GroupedArrayResult, ek as AgentResultOf, b3 as AddonDef, el as OutputPath, cZ as TableDef, em as QualifiedCol, bx as DbEval, cY as SortDirective, bz as DbWhere, en as OutputRoot, bM as InferRow, eo as AggregateRow, ep as EvalFields, eq as OutputAuthored, cb as MicroserviceDef, ah as generated, F as FunctionDef, co as QueryHandle } from './store-DAnUIi1T.js';
|
|
2
|
+
export { b4 as AddonXdo, A as AdoptChange, a as AdoptResult, b5 as AgentDef, b6 as AgentHandle, b7 as AgentOutput, b8 as AgentSettingsXdo, b9 as AgentXdo, ba as AmbientBindings, bb as AnthropicLlm, bc as ApiGroupDef, bd as ApiGroupXdo, be as AuthRef, bf as Authored, B as Bundle, b as BundlePayload, c as BundleType, bg as Capturable, b0 as CaptureRecord, a_ as CaptureValue, bh as ChannelConversationDef, bi as ChannelDeliveryDef, bj as ChannelDeliveryGuarantee, bk as ChannelPublishDef, bl as ChannelPublishWho, bm as ChannelRateLimitDef, bn as ColumnDef, bo as Comparison, bp as ContainerEnv, bq as ContainerPort, br as ContainerResources, bs as ContainerVolume, bt as CorsConfig, bu as CorsMode, bv as DatabaseActions, bw as DatabaseInputs, by as DbEvalFilter, bA as ErrorInputs, bB as ExceptionPolicy, bC as FieldAccessor, bD as FieldRule, bE as GoogleGenAiLlm, bF as HistoryInput, bG as HttpVerb, bH as IndexDef, bI as IndexLang, bJ as IndexOp, bK as IndexType, bL as IndexXdo, bN as InputDescriptor, bO as InputOptions, bP as IteratingBindings, bQ as KnowledgeDef, bR as KnowledgeDirSource, bS as KnowledgeFileSource, bT as KnowledgeMode, bU as KnowledgeType, bV as LAMBDA_BINDINGS, bW as LAMBDA_CODE_FILTERS, bX as LAMBDA_GLOBALS, bY as LAMBDA_MODULE_GLOBALS, bZ as LAMBDA_STATEMENTS, b1 as LambdaBindings, b_ as LambdaBody, aZ as LambdaOptions, a$ as LambdaSurface, b$ as LlmPrompt, c0 as LlmProvider, c1 as LlmSettings, g as LockEntry, h as LockExportContext, i as LockFile, M as Manifest, j as ManifestField, k as ManifestKind, l as ManifestStatement, c2 as ManifestValue, c3 as McpPathOptions, c4 as McpServerDef, c5 as McpServerHandle, c6 as McpServerXdo, m as MergeResult, c7 as MessageDeliverTo, c8 as MicroserviceChart, c9 as MicroserviceConfig, ca as MicroserviceContainer, cc as MicroserviceDeployment, cd as MicroserviceIngress, ce as MicroserviceRegistryAuth, cf as MicroserviceVolume, cg as MicroserviceXdo, ch as MiddlewareAttach, ci as MiddlewareAttachEntry, cj as MiddlewareDef, ck as MiddlewareXdo, O as ObjectKind, cl as OpenAiLlm, n as PayloadArrayKey, cm as QueryDef, cn as QueryFilterName, cp as QueryResponseType, cq as QueryXdo, cr as RealtimeActions, cs as RealtimeChannelActions, ct as RealtimeChannelDef, cu as RealtimeChannelHandle, cv as RealtimeChannelRef, cw as RealtimeChannelTriggerInputs, cx as RealtimeChannelXdo, cy as RealtimeClient, cz as RealtimeInputs, cA as RealtimeMessageDef, cB as RealtimeMessageXdo, cC as RealtimeServerActions, cD as RealtimeServerDef, cE as RealtimeServerHandle, cF as RealtimeServerRef, cG as RealtimeServerTriggerInputs, cH as RealtimeServerXdo, cI as RealtimeUrlOptions, R as RenameResult, cJ as ResultStrategy, cK as Route, cL as RowOf, cM as ScheduleDef, cN as SchemaCols, cO as SchemaDef, cP as SearchComparison, cQ as SearchGroup, cR as SearchNode, cS as SearchOp, cT as SearchParamValue, cU as SeedFileSource, cV as SeedRow, cW as SeedSource, cX as SortDir, S as StatementSpec, c_ as TableXdo, c$ as TaskDef, d0 as TaskXdo, d1 as ToolDef, d2 as ToolXdo, d3 as ToolsetBaseDef, d4 as ToolsetBaseXdo, d5 as ToolsetInputs, d6 as ToolsetToolEntry, d7 as ToolsetToolRef, d8 as TriggerDef, d9 as TriggerObjType, da as TriggerXdo, db as ViewDef, dc as ViewXdo, dd as WorkflowTestDef, de as WorkflowTestXdo, df as WorkspaceActions, dg as WorkspaceConfigDef, dh as WorkspaceConfigXdo, di as WorkspaceHistoryDef, dj as WorkspaceHistoryXdo, dk as WorkspaceInputs, dl as WorkspaceMiddlewareDef, dm as WorkspaceMiddlewareXdo, b2 as Xano, dn as XanoFreeLlm, dp as addon, dq as agent, dr as agentTrigger, ds as and, dt as apiGroup, du as assertLambdaBody, dv as bitwiseAnd, dw as bitwiseOr, dx as bitwiseXor, dy as cmp, dz as defineFunction, dA as emit, dB as emitBundle, dC as errorTrigger, dD as expr, dE as fl, dF as input, dG as knowledge, dH as knowledgeDir, dI as knowledgeFile, er as lam, dJ as mathAdd, dK as mathDiv, dL as mathMul, dM as mathSub, dN as mcpServer, dO as mcpServerTrigger, dP as microservice, dQ as middleware, dR as mixed, dS as objectEntries, dT as objectKeys, dU as objectValues, dV as or, dW as query, dX as realtimeChannel, dY as realtimeChannelTrigger, dZ as realtimeMessage, d_ as realtimeServer, d$ as realtimeServerTrigger, e0 as realtimeTrigger, e1 as resetLockOverrides, e2 as seedFile, e3 as seedLockOverrides, e4 as table, e5 as tableTrigger, e6 as task, e7 as textAppend, e8 as textPrepend, e9 as toSearchParams, ea as tool, eb as workflowTest, ec as workspace, ed as workspaceConfig, ee as workspaceTrigger } from './store-DAnUIi1T.js';
|
|
3
|
+
import { y as StatementAnnotations, S as Statement, l as FromFieldMap, u as ObjValue, Y as Prettify, a1 as AsShapeBrand, X as XanoFileRef, z as StatementOptions, v as ObjectRef, O as ObjInput } from './response-D6xGLEIn.js';
|
|
4
|
+
export { B as BrandOpts, b as BrandValue, D as DecimalMethod, E as EmailMethod, c as FieldAccess, f as FieldDescriptor, h as FieldMap, j as FieldOpts, k as FieldStyleType, I as IntMethod, M as MethodArg, m as MethodOpts, n as MethodSpec, o as MockEntry, p as MockMap, q as MockXdo, s as ObjMember, P as PasswordMethod, w as ResponseDef, x as RowFromFieldMap, T as TableRefMethod, A as TextFormat, C as TextMethod, G as TypeBrand, V as ValueOf, H as VectorMethod, J as XanoGeoPosition, K as XanoGeoValue, L as annotate, N as f, Q as obj, U as statements } from './response-D6xGLEIn.js';
|
|
5
|
+
import { h as FilterXdo, V as Value, i as FilteredValue, R as RefValue, F as FunctionXdo } from './xdo-ODuJklk6.js';
|
|
6
|
+
export { C as CacheXdo, a as CaughtField, b as ConditionalContext, c as ConditionalElifContext, E as ExprGroup, d as ExprNode, e as ExprOperand, f as ExprStatement, g as FieldXdo, H as HistoryXdo, I as InputXdo, L as ListBoundsXdo, M as MethodXdo, P as PersistedFunctionRow, j as RegexValue, k as ResultItemXdo, S as StackItemXdo, l as StatementInputXdo, T as TAGS, m as TEST_EXPECT_TYPES, n as Tag, o as TaggedValue, p as TestDef, q as TestExpect, r as TestExpectType, s as TestXdo, t as auth, u as c, v as caught, w as col, x as env, y as expect, z as filter, A as inp, B as out, D as ref, G as resp, J as setting, K as sys, N as test, O as toolset, Q as withFilters } from './xdo-ODuJklk6.js';
|
|
5
7
|
|
|
6
8
|
/** One `else if (when) { then }` branch of a {@link conditional}'s elif stack. */
|
|
7
9
|
interface ConditionalElifArgs extends StatementAnnotations {
|
|
@@ -19,7 +21,7 @@ interface ConditionalArgs extends StatementAnnotations {
|
|
|
19
21
|
declare function conditional(args: ConditionalArgs): Statement;
|
|
20
22
|
|
|
21
23
|
/**
|
|
22
|
-
* `InferInput<Q>`
|
|
24
|
+
* `InferInput<Q>` — the request-payload TS type for a query (or function)
|
|
23
25
|
* def's declared inputs, computed at compile time from the value brands added in
|
|
24
26
|
* U1. No codegen, no build step: the type is derived from the def, so it can
|
|
25
27
|
* never drift from what the endpoint actually accepts.
|
|
@@ -88,7 +90,7 @@ type NameOf<F> = F extends FilterXdo<infer N> ? N : string;
|
|
|
88
90
|
* Apply ONE filter's declared result to `Shape`.
|
|
89
91
|
*
|
|
90
92
|
* Null propagates rather than being erased, matching `IndexShape`'s treatment of
|
|
91
|
-
* a nullable base
|
|
93
|
+
* a nullable base and the engine's runtime, where a filter over a null
|
|
92
94
|
* binding yields null: a `db.get` row is `Row | null`, so counting it is
|
|
93
95
|
* `number | null`, not `number`.
|
|
94
96
|
*
|
|
@@ -107,7 +109,7 @@ type ApplyFilter<Shape, N extends string> = string extends N ? unknown : null ex
|
|
|
107
109
|
type ApplyFilters<Shape, Fs> = Fs extends readonly [infer Head, ...infer Tail] ? ApplyFilters<ApplyFilter<Shape, NameOf<Head>>, Tail> : Fs extends readonly [] ? Shape : unknown;
|
|
108
110
|
|
|
109
111
|
/**
|
|
110
|
-
* `InferResponse<Q>`
|
|
112
|
+
* `InferResponse<Q>` — the response type for a query or function def,
|
|
111
113
|
* the read-side counterpart of `InferInput`. Closes the round trip: rename or
|
|
112
114
|
* retype what an endpoint returns and every consumer that types a response
|
|
113
115
|
* against `InferResponse` lights up at compile time.
|
|
@@ -127,9 +129,9 @@ type ApplyFilters<Shape, Fs> = Fs extends readonly [infer Head, ...infer Tail] ?
|
|
|
127
129
|
* knowable):
|
|
128
130
|
* 1. A declared `responseShape` on the def always wins (the override).
|
|
129
131
|
* 2. Otherwise the shape is auto-derived from `response` + `stack`
|
|
130
|
-
* ({@link DeriveResponse}) — object-literal keys
|
|
131
|
-
* traced to a typed `db.get`/`db.query
|
|
132
|
-
* traces the base variable, then indexes the subpath into its shape
|
|
132
|
+
* ({@link DeriveResponse}) — object-literal keys and a single variable
|
|
133
|
+
* traced to a typed `db.get`/`db.query`. A dotted `ref("var.field")`
|
|
134
|
+
* traces the base variable, then indexes the subpath into its shape.
|
|
133
135
|
* 3. Anything the walk can't resolve (filters, lambdas, control-flow vars,
|
|
134
136
|
* `set_var`, function-produced vars, streams) resolves to `unknown`, which
|
|
135
137
|
* the author narrows or overrides via `responseShape`.
|
|
@@ -160,7 +162,7 @@ type DeclaredResponse<Q> = Q extends {
|
|
|
160
162
|
*/
|
|
161
163
|
/**
|
|
162
164
|
* What a response resolves to when the stack is a plain `Statement[]` rather
|
|
163
|
-
* than a tuple
|
|
165
|
+
* than a tuple.
|
|
164
166
|
*
|
|
165
167
|
* A widened stack has no heads to walk, so EVERY `as` binding in it is invisible
|
|
166
168
|
* and every `ref()` bottoms out. Resolving that to `unknown` made the failure
|
|
@@ -196,12 +198,12 @@ type TraceBinding<Name extends string, S> = S extends readonly [infer Head, ...i
|
|
|
196
198
|
* Walk a dotted subpath `Path` into an already-traced binding `Shape`, one
|
|
197
199
|
* segment at a time: `IndexShape<AgentRunResult<string>, "result">` → `string`.
|
|
198
200
|
*
|
|
199
|
-
* **Null-propagating
|
|
201
|
+
* **Null-propagating**: when the base is nullable (e.g. a `db.get` row,
|
|
200
202
|
* `Row | null`), the null flows *through* the projection rather than erasing it —
|
|
201
203
|
* `IndexShape<Row | null, "slug">` → `string | null`, mirroring the engine's
|
|
202
204
|
* runtime where `$row.slug` on a missed (null) row is itself null. Without this,
|
|
203
205
|
* `keyof (Row | null)` narrows to `never` and every dotted ref into a nullable
|
|
204
|
-
* base would bottom out at `unknown`, silently dropping the
|
|
206
|
+
* base would bottom out at `unknown`, silently dropping the projection.
|
|
205
207
|
*
|
|
206
208
|
* A segment that genuinely isn't a key of the (non-null) shape — including a
|
|
207
209
|
* shape that is already `unknown` (whose `keyof` is `never`) — still bottoms out
|
|
@@ -219,7 +221,7 @@ type IndexShape<Shape, Path extends string> = unknown extends Shape ? IndexStep<
|
|
|
219
221
|
type IndexStep<Shape, Path extends string> = Path extends `${infer Head}.${infer Rest}` ? Head extends keyof Shape ? IndexShape<Shape[Head], Rest> : unknown : Path extends keyof Shape ? Shape[Path] : unknown;
|
|
220
222
|
/**
|
|
221
223
|
* Resolve a `ref` name against the branded stack `S`. A **dotted** name projects
|
|
222
|
-
* a subpath
|
|
224
|
+
* a subpath: the head names the bound variable (traced via
|
|
223
225
|
* {@link TraceBinding}) and the tail indexes into that variable's shape (via
|
|
224
226
|
* {@link IndexShape}), so `ref("generated.result")` types to the completion, not
|
|
225
227
|
* `unknown`. A bare name traces the whole binding. Stack-variable names are
|
|
@@ -249,11 +251,11 @@ type TraceVar<Name extends string, S> = Name extends `${infer Base}.${infer Path
|
|
|
249
251
|
* values, and it is deliberate rather than a gap: typing a constant's key would
|
|
250
252
|
* mean branding the return of every constant constructor, and `Value` is the
|
|
251
253
|
* currency of every statement field in the SDK. Declare `responseShape` when a
|
|
252
|
-
* client needs those keys typed
|
|
254
|
+
* client needs those keys typed.
|
|
253
255
|
*/
|
|
254
256
|
type ResolveValue<V, S> = V extends ObjValue<infer Members> ? ResolveObj<Members, S> : V extends FilteredValue<infer Base, infer Chain> ? ApplyFilters<ResolveValue<Base, S>, Chain> : V extends RefValue<infer Name> ? TraceVar<Name, S> : unknown;
|
|
255
257
|
/**
|
|
256
|
-
* Resolve every member of an {@link ObjValue}'s record
|
|
258
|
+
* Resolve every member of an {@link ObjValue}'s record — the same
|
|
257
259
|
* walk {@link DeriveResponse} runs over a top-level object literal, one level
|
|
258
260
|
* down. `obj()` is the SDK's answer for a nested response object, and it used to
|
|
259
261
|
* cost the caller its types: the members are ordinary {@link Value}s with
|
|
@@ -277,8 +279,7 @@ type ResolveObj<Members, S> = Prettify<{
|
|
|
277
279
|
*
|
|
278
280
|
* The branch order is load-bearing:
|
|
279
281
|
* - a {@link Value} (including a nested `obj()`, a filtered value, or a `ref`)
|
|
280
|
-
* goes to {@link ResolveValue}, so `c.*` constants keep
|
|
281
|
-
* issue #79 documents;
|
|
282
|
+
* goes to {@link ResolveValue}, so `c.*` constants keep their `unknown` floor;
|
|
282
283
|
* - a RAW SCALAR literal types itself — `obj({ count: 3 })` really is a number,
|
|
283
284
|
* and unlike `c.int(3)` the type is right there to read. A boolean is widened
|
|
284
285
|
* explicitly because inference does not treat it like its siblings: `3` and
|
|
@@ -289,7 +290,7 @@ type ResolveObj<Members, S> = Prettify<{
|
|
|
289
290
|
* - an ARRAY resolves element-wise (checked before the record branch, since an
|
|
290
291
|
* array is also an object);
|
|
291
292
|
* - a nested plain RECORD recurses. This is the spelling `response: { user: {
|
|
292
|
-
* id: ref(...) } }` uses — the
|
|
293
|
+
* id: ref(...) } }` uses — the auto-wrap, which `encodeResponse` hands
|
|
293
294
|
* to `obj()` anyway, so the two spellings must and now do infer alike.
|
|
294
295
|
*/
|
|
295
296
|
type ResolveMember<M, S> = M extends Value ? ResolveValue<M, S> : M extends boolean ? boolean : M extends string | number ? M : M extends readonly (infer Element)[] ? ResolveMember<Element, S>[] : M extends object ? ResolveObj<M, S> : unknown;
|
|
@@ -298,7 +299,7 @@ type ResolveMember<M, S> = M extends Value ? ResolveValue<M, S> : M extends bool
|
|
|
298
299
|
* field and branded `stack`. Mirrors the Xano engine's static walk:
|
|
299
300
|
* - a record response (object literal) → an object with **those keys** (each
|
|
300
301
|
* member resolved individually, recursing into a nested `obj()` or plain
|
|
301
|
-
* object literal
|
|
302
|
+
* object literal); keys are known regardless of traceability;
|
|
302
303
|
* - a single {@link Value} response → resolve it against the stack;
|
|
303
304
|
* - no response / an unresolvable shape → `unknown`.
|
|
304
305
|
* Kept separate from {@link DeclaredResponse} so the user override always wins.
|
|
@@ -317,7 +318,7 @@ type DeriveResponse<Q> = Q extends {
|
|
|
317
318
|
type InferResponse<Q> = [DeclaredResponse<Q>] extends [never] ? DeriveResponse<Q> : DeclaredResponse<Q>;
|
|
318
319
|
|
|
319
320
|
/**
|
|
320
|
-
* Addressing a stored file from a client
|
|
321
|
+
* Addressing a stored file from a client.
|
|
321
322
|
*
|
|
322
323
|
* A file column comes back as a {@link XanoFileRef}: a `path` into the vault
|
|
323
324
|
* plus metadata, and an absolute, authoritative-looking `url`. On a
|
|
@@ -371,7 +372,7 @@ declare function setVar(as: string, value: Value, a?: StatementOptions): Stateme
|
|
|
371
372
|
declare function updateVar(name: string, value: Value, a?: StatementAnnotations): Statement;
|
|
372
373
|
|
|
373
374
|
/**
|
|
374
|
-
* Hand-authored `!class` control-flow / terminal statements
|
|
375
|
+
* Hand-authored `!class` control-flow / terminal statements. These carry
|
|
375
376
|
* PHP transforms in the engine, so they're authored by hand and validated
|
|
376
377
|
* against persisted fixtures rather than codegen'd. (`conditional` — also a
|
|
377
378
|
* `!class` special — already lives in `src/statements/conditional.ts`.)
|
|
@@ -405,7 +406,7 @@ declare function foreachContinue(a?: StatementAnnotations): Statement;
|
|
|
405
406
|
declare function foreachRemove(a?: StatementAnnotations): Statement;
|
|
406
407
|
|
|
407
408
|
/**
|
|
408
|
-
* Hand-authored control-flow block statements
|
|
409
|
+
* Hand-authored control-flow block statements. These carry non-trivial
|
|
409
410
|
* transforms in the engine (for, foreach, while, group), so they're authored by
|
|
410
411
|
* hand — like `conditional` — rather than codegen'd. Each nests a `run[]` stack
|
|
411
412
|
* encoded through the shared statement encoder, and `while` reuses the
|
|
@@ -418,7 +419,7 @@ declare function foreachRemove(a?: StatementAnnotations): Statement;
|
|
|
418
419
|
* group → context: { run:[…] }
|
|
419
420
|
*
|
|
420
421
|
* All four are golden-verified: `for`/`foreach` from vendored goldens, and
|
|
421
|
-
* `while`/`group` from live engine captures
|
|
422
|
+
* `while`/`group` from live engine captures. The
|
|
422
423
|
* `while` shape (`expr` comparison + `run[]`) and `group`'s bare `{run}` are
|
|
423
424
|
* confirmed byte-exact.
|
|
424
425
|
*/
|
|
@@ -451,7 +452,7 @@ declare function whileLoop(args: WhileArgs): Statement;
|
|
|
451
452
|
declare function group(body: Statement[], a?: StatementAnnotations): Statement;
|
|
452
453
|
|
|
453
454
|
/**
|
|
454
|
-
* Hand-authored branching block statements
|
|
455
|
+
* Hand-authored branching block statements — `switch` and `try_catch`.
|
|
455
456
|
* Both carry structural control-flow transforms in the engine, so
|
|
456
457
|
* (like `conditional` and the loops) they're authored by hand rather than
|
|
457
458
|
* codegen'd. Each nests `run[]` stacks encoded through the shared statement
|
|
@@ -512,7 +513,7 @@ declare function tryCatch(args: TryCatchArgs): Statement;
|
|
|
512
513
|
* Two families live here. The HTTP-request fields (`api.request`,
|
|
513
514
|
* `stream.from_request`, `webflow.request`, `microservice.request`) were hoisted
|
|
514
515
|
* per the rule of three once the second wrapper landed. The DB row CELL joined
|
|
515
|
-
* them
|
|
516
|
+
* them: it is a self-contained coercion unit that landed in `db.ts`
|
|
516
517
|
* only because that is where its caller is, and its siblings — `coerceScalar`,
|
|
517
518
|
* `coerceObj`, `coerceHeaders` — were already here.
|
|
518
519
|
*/
|
|
@@ -523,7 +524,7 @@ declare function tryCatch(args: TryCatchArgs): Statement;
|
|
|
523
524
|
* spec now carries the same set and rejects a constant outside it.
|
|
524
525
|
*/
|
|
525
526
|
type HttpMethod = "GET" | "POST" | "PUT" | "DELETE" | "HEAD" | "OPTIONS" | "PATCH";
|
|
526
|
-
/** A headers map: full header lines built from `Name: value` pairs
|
|
527
|
+
/** A headers map: full header lines built from `Name: value` pairs. */
|
|
527
528
|
type HeaderMap = Readonly<Record<string, string | Value>>;
|
|
528
529
|
/**
|
|
529
530
|
* A value acceptable in a call/agent `input` map — a raw scalar literal, a nested
|
|
@@ -549,7 +550,7 @@ interface HttpRequestFields {
|
|
|
549
550
|
/**
|
|
550
551
|
* The bare JS literals a row cell accepts for a column whose row type is `V`,
|
|
551
552
|
* mirroring the `Scalar` union `fl.*` arguments and `seed` rows already take
|
|
552
|
-
|
|
553
|
+
*.
|
|
553
554
|
*
|
|
554
555
|
* Keyed on the column's own inferred type, so the widening is STRICTER than the
|
|
555
556
|
* tagged spelling it replaces: `{ is_hidden: "yes" }` on an `f.bool()` column is
|
|
@@ -559,7 +560,7 @@ interface HttpRequestFields {
|
|
|
559
560
|
* `null` is admitted on EVERY column, including the ones that refuse every other
|
|
560
561
|
* literal — an `obj`/`json`/list/`geo`/`vector` column has no bare-literal form
|
|
561
562
|
* and throws for a string, number or boolean, but takes `null`. That asymmetry
|
|
562
|
-
* is the decision, not an oversight
|
|
563
|
+
* is the decision, not an oversight: nulling a cell is a legitimate
|
|
563
564
|
* write whatever the column reads back as, and it matches what a seed row does
|
|
564
565
|
* with a `null` (see `coerceScalarValue` — nullability is the engine's to
|
|
565
566
|
* enforce, and a column config this layer does not fully model is not something
|
|
@@ -618,7 +619,7 @@ interface AsyncRuntime {
|
|
|
618
619
|
}
|
|
619
620
|
|
|
620
621
|
/**
|
|
621
|
-
* Hand-authored call-family block statements
|
|
622
|
+
* Hand-authored call-family block statements — invoking another workspace
|
|
622
623
|
* object from a stack. These carry `!class` transforms in the engine
|
|
623
624
|
* (FunctionRun, FunctionCall, ApiCall, …) so they're authored by hand.
|
|
624
625
|
*
|
|
@@ -652,17 +653,6 @@ interface AsyncRuntime {
|
|
|
652
653
|
* `action.call` / `action.package.call` are the exception to the paragraph
|
|
653
654
|
* above: their target is NOT a workspace object, so no id is derived for them
|
|
654
655
|
* and the author supplies one. See {@link ActionCallArgs} for why.
|
|
655
|
-
*
|
|
656
|
-
* @TODO(byte-verify): `function.run` (mvp:function), `api.call` (context.token
|
|
657
|
-
* confirmed tagged), and — since the workflow-test capture — `function.call`
|
|
658
|
-
* (mvp:workspace_run_function) are golden-verified. Still modeled/unverified:
|
|
659
|
-
* - the remaining `workspace_run_*` (task/tool/trigger/middleware/addon) — no
|
|
660
|
-
* golden, but they share the single-key `id` context two goldens now pin.
|
|
661
|
-
* - `workflow_test` → context.{datasource,id} — decode-accurate, no golden.
|
|
662
|
-
* - action / action_package — the stored shape is pinned against the engine's
|
|
663
|
-
* own authoring schema and its two transforms, and the ids are now carried
|
|
664
|
-
* verbatim rather than derived, so a capture is finally meaningful. It needs
|
|
665
|
-
* an instance with the package actually installed.
|
|
666
656
|
*/
|
|
667
657
|
|
|
668
658
|
/** A call/agent `{name: value}` input map — raw scalar literals coerce to constants. */
|
|
@@ -695,7 +685,7 @@ interface FunctionRunArgs<Fn extends FnRef = FnRef, As extends string = string>
|
|
|
695
685
|
/**
|
|
696
686
|
* `function.run <fn>` — run another function inline.
|
|
697
687
|
*
|
|
698
|
-
* Branded `AsShapeBrand<As, InferResponse<Fn
|
|
688
|
+
* Branded `AsShapeBrand<As, InferResponse<Fn>>`: the bound variable
|
|
699
689
|
* carries the TARGET's response type, so `ref("<as>.field")` in the caller's
|
|
700
690
|
* response types to that field instead of `unknown`. See {@link functionCall}
|
|
701
691
|
* for what the propagation can and cannot see.
|
|
@@ -717,7 +707,7 @@ interface FunctionCallArgs<Fn extends ObjectRef = ObjectRef, As extends string =
|
|
|
717
707
|
/**
|
|
718
708
|
* `function.call <fn>` — invoke a function as a workspace run.
|
|
719
709
|
*
|
|
720
|
-
* Branded `AsShapeBrand<As, InferResponse<Fn
|
|
710
|
+
* Branded `AsShapeBrand<As, InferResponse<Fn>>`. `InferResponse` of
|
|
721
711
|
* the TARGET is exactly what a client would get back from it, so drilling into
|
|
722
712
|
* the binding now types:
|
|
723
713
|
*
|
|
@@ -772,7 +762,7 @@ interface ApiCallArgs<Api extends ObjectRef = ObjectRef, As extends string = str
|
|
|
772
762
|
* entry in {@link ApiCallArgs.headers} instead.
|
|
773
763
|
*
|
|
774
764
|
* The `Value` spelling stays accepted so a pulled workspace holding one
|
|
775
|
-
* round-trips as itself
|
|
765
|
+
* round-trips as itself — it is a shape to carry, not to author.
|
|
776
766
|
*/
|
|
777
767
|
auth?: {
|
|
778
768
|
token: Value | string;
|
|
@@ -808,7 +798,7 @@ interface ToolCallArgs<Tool extends ObjectRef = ObjectRef, As extends string = s
|
|
|
808
798
|
}
|
|
809
799
|
/**
|
|
810
800
|
* `tool.call <tool>` — invoke a tool as a workspace run. Branded with the
|
|
811
|
-
* TARGET's `InferResponse
|
|
801
|
+
* TARGET's `InferResponse`, like {@link functionCall}.
|
|
812
802
|
*/
|
|
813
803
|
declare function toolCall<const Tool extends ObjectRef = ObjectRef, const As extends string = "", const Fs extends readonly FilterXdo[] = readonly []>(args: ToolCallArgs<Tool, As> & {
|
|
814
804
|
asFilters?: Fs;
|
|
@@ -919,14 +909,14 @@ interface WorkflowTestCallArgs extends StatementOptions {
|
|
|
919
909
|
declare function workflowTestCall(args: WorkflowTestCallArgs): Statement;
|
|
920
910
|
|
|
921
911
|
/**
|
|
922
|
-
* Hand-authored AI-agent and cloud-job specials
|
|
912
|
+
* Hand-authored AI-agent and cloud-job specials. All carry `!class`
|
|
923
913
|
* transforms in the engine (AgentRun, CloudJob, CloudJobAwait, CloudJobStatus).
|
|
924
914
|
* The stored shapes here are modeled on those transforms' `decode()` methods
|
|
925
915
|
* (authoritative for the persisted form), so they're grounded — but still have
|
|
926
916
|
* no golden fixture to deep-equal against.
|
|
927
917
|
*
|
|
928
918
|
* call_agent and cloud_job{,_await,_status} are golden-verified against live
|
|
929
|
-
* engine captures
|
|
919
|
+
* engine captures: agent → context.toolset.id +
|
|
930
920
|
* top-level runtime + input[]; cloud jobs → everything in input[] with the
|
|
931
921
|
* captured entry order. `runtime` is omitted at the default "shared" mode, and
|
|
932
922
|
* `await` is passed through as authored.
|
|
@@ -934,7 +924,7 @@ declare function workflowTestCall(args: WorkflowTestCallArgs): Statement;
|
|
|
934
924
|
|
|
935
925
|
/**
|
|
936
926
|
* The rich result object an agent run binds to its `as` variable — modeled on
|
|
937
|
-
* the engine's agent-run result envelope
|
|
927
|
+
* the engine's agent-run result envelope. **The completion is at
|
|
938
928
|
* `.result`**, not the top level; the surrounding fields are run metadata.
|
|
939
929
|
*
|
|
940
930
|
* `R` is the completion type: `string` for a text agent (the default — including
|
|
@@ -994,8 +984,8 @@ interface AiAgentRunArgs<As extends string = "", A extends ObjectRef = ObjectRef
|
|
|
994
984
|
/**
|
|
995
985
|
* Type-only override for the `.result` completion type. Usually unnecessary:
|
|
996
986
|
* when `agent` is a def handle from `agent({ output: { schema } })`, `.result`
|
|
997
|
-
* is inferred straight from that schema via {@link AgentResultOf}
|
|
998
|
-
*
|
|
987
|
+
* is inferred straight from that schema via {@link AgentResultOf}.
|
|
988
|
+
* Pass a witness only to override that inference or to type the
|
|
999
989
|
* `.result` of an agent referenced by bare name (which carries no schema) —
|
|
1000
990
|
* e.g. `resultShape: {} as { sentiment: string }`. Never emitted into the
|
|
1001
991
|
* statement (phantom, like the response brand).
|
|
@@ -1010,8 +1000,8 @@ interface AiAgentRunArgs<As extends string = "", A extends ObjectRef = ObjectRef
|
|
|
1010
1000
|
*
|
|
1011
1001
|
* Branded with `AsShapeBrand<As, AgentRunResult<R>>` (like the `db.*` producers)
|
|
1012
1002
|
* so `ref(as)` traces to the typed {@link AgentRunResult} envelope via
|
|
1013
|
-
* `InferResponse` instead of `unknown` — the completion is at `.result
|
|
1014
|
-
* A dotted `ref("<as>.result")` now projects that completion directly
|
|
1003
|
+
* `InferResponse` instead of `unknown` — the completion is at `.result`.
|
|
1004
|
+
* A dotted `ref("<as>.result")` now projects that completion directly, so
|
|
1015
1005
|
* the common "return just the answer" endpoint no longer needs a `responseShape`.
|
|
1016
1006
|
* The brand is phantom; the emitted statement bytes are unchanged.
|
|
1017
1007
|
*/
|
|
@@ -1023,8 +1013,7 @@ interface CloudJobArgs extends StatementOptions {
|
|
|
1023
1013
|
/**
|
|
1024
1014
|
* Container image to run. REQUIRED — the engine validates the parameter before
|
|
1025
1015
|
* the job launches and answers `400 ERROR_CODE_INPUT_ERROR "Missing param:
|
|
1026
|
-
* image"` without it. Measured on a live
|
|
1027
|
-
* `scripts/probe-special-required.ts`.
|
|
1016
|
+
* image"` without it. Measured on a live engine.
|
|
1028
1017
|
*/
|
|
1029
1018
|
image: Value;
|
|
1030
1019
|
/** Command to run in the container. REQUIRED, the same way `image` is. */
|
|
@@ -1068,7 +1057,7 @@ interface CloudJobStatusArgs extends StatementOptions {
|
|
|
1068
1057
|
declare function cloudJobStatus(a: CloudJobStatusArgs): Statement;
|
|
1069
1058
|
|
|
1070
1059
|
/**
|
|
1071
|
-
* Hand-authored miscellaneous specials
|
|
1060
|
+
* Hand-authored miscellaneous specials — the remaining `!class` /
|
|
1072
1061
|
* `!function` / declarative statements without a generated factory: array
|
|
1073
1062
|
* map/union, the comment & placeholder nodes, raw-input access, post-process,
|
|
1074
1063
|
* realtime events, auth-token creation, and the `expect.to_throw` test
|
|
@@ -1080,8 +1069,8 @@ declare function cloudJobStatus(a: CloudJobStatusArgs): Statement;
|
|
|
1080
1069
|
* later). Block fields map to same-named `context` entries unless the schema's
|
|
1081
1070
|
* declarative transform says otherwise.
|
|
1082
1071
|
*
|
|
1083
|
-
* array_map, array_union, get_input, and test_expect_to_throw are
|
|
1084
|
-
* golden-verified against live engine captures
|
|
1072
|
+
* array_map, array_union, get_input, and test_expect_to_throw are
|
|
1073
|
+
* golden-verified against live engine captures;
|
|
1085
1074
|
* post_process is parser-verified. Remaining unverified spots:
|
|
1086
1075
|
* (1) array_map — the scalar `transform_value` path is byte-exact. The
|
|
1087
1076
|
* object-literal form (`transform_object` + `output_type:"object"`) is now
|
|
@@ -1166,8 +1155,7 @@ interface ArrayUnionArgs extends StatementOptions {
|
|
|
1166
1155
|
* `source` — but the engine has no absent state for it: `right` declares
|
|
1167
1156
|
* `tag?=input` with an undefaulted `value`, so an omitted block resolves as an
|
|
1168
1157
|
* input named `""` and the request dies with
|
|
1169
|
-
* `500 ERROR_FATAL "Unable to locate input: "`. Measured on a live
|
|
1170
|
-
* by `scripts/probe-special-required.ts`.
|
|
1158
|
+
* `500 ERROR_FATAL "Unable to locate input: "`. Measured on a live engine.
|
|
1171
1159
|
*/
|
|
1172
1160
|
with: Value;
|
|
1173
1161
|
as?: string;
|
|
@@ -1371,7 +1359,7 @@ interface ExpectToThrowArgs extends StatementAnnotations {
|
|
|
1371
1359
|
* The matcher is stored as `context.value1` — the numbered slot every
|
|
1372
1360
|
* `expect.*` statement keeps its operands in. It was emitted as
|
|
1373
1361
|
* `context.exception` through 2.0.21, a key the engine never reads, so a
|
|
1374
|
-
* to_throw carrying one accepted ANY error instead of the one named
|
|
1362
|
+
* to_throw carrying one accepted ANY error instead of the one named.
|
|
1375
1363
|
*/
|
|
1376
1364
|
declare function expectToThrow(a: ExpectToThrowArgs): Statement;
|
|
1377
1365
|
interface ExpectToMatchArgs extends StatementAnnotations {
|
|
@@ -1384,7 +1372,7 @@ interface ExpectToMatchArgs extends StatementAnnotations {
|
|
|
1384
1372
|
* `expect.to_match` — assert a value matches a regex (`mvp:test_expect_to_match`).
|
|
1385
1373
|
*
|
|
1386
1374
|
* A typed, guarded pass-through to the generated factory: same bytes, same
|
|
1387
|
-
* fields. What it adds is
|
|
1375
|
+
* fields. What it adds is a refusal. The `value`
|
|
1388
1376
|
* slot is a PHP `preg_*` PATTERN, so a `c.text("^XanoTS.*Engine$")` there is not
|
|
1389
1377
|
* a stricter assertion — it is a pattern the engine cannot run, and the test
|
|
1390
1378
|
* fails against the very string it was written for:
|
|
@@ -1394,14 +1382,14 @@ interface ExpectToMatchArgs extends StatementAnnotations {
|
|
|
1394
1382
|
* ```
|
|
1395
1383
|
*
|
|
1396
1384
|
* The refusal is build-time and inspects the value it was handed, exactly as the
|
|
1397
|
-
* `fl.regex_*` guard does
|
|
1385
|
+
* `fl.regex_*` guard does: a bare `const` is refused and pointed at
|
|
1398
1386
|
* `c.regex`, while a `ref`/`inp`/`env` pattern — whose text is not visible here —
|
|
1399
1387
|
* is passed through untouched.
|
|
1400
1388
|
*/
|
|
1401
1389
|
declare function expectToMatch(a?: ExpectToMatchArgs): Statement;
|
|
1402
1390
|
|
|
1403
1391
|
/**
|
|
1404
|
-
* Hand-authored typed wrapper for `util.ip_lookup`
|
|
1392
|
+
* Hand-authored typed wrapper for `util.ip_lookup` — the geolocation
|
|
1405
1393
|
* statement whose bound variable is a NESTED object that nothing in the
|
|
1406
1394
|
* signature hints at.
|
|
1407
1395
|
*
|
|
@@ -1496,11 +1484,11 @@ declare function ipLookup<const As extends string = "", const Fs extends readonl
|
|
|
1496
1484
|
*
|
|
1497
1485
|
* - the reference field is named `addon` (an {@link ObjectRef}), so the nesting
|
|
1498
1486
|
* field is named `children` to avoid the collision — which also matches the
|
|
1499
|
-
* stored/export key
|
|
1487
|
+
* stored/export key;
|
|
1500
1488
|
* - the target is a guid-native `ObjectRef`, resolved to a guid and emitted under
|
|
1501
1489
|
* the stored `id` key. In a packageExport bundle the engine matches addons by
|
|
1502
1490
|
* guid (`importAddonId` → `guidMatch`), so emitting the guid as `id` is correct
|
|
1503
|
-
* — the same precedent `s.addon.call` uses
|
|
1491
|
+
* — the same precedent `s.addon.call` uses.
|
|
1504
1492
|
*/
|
|
1505
1493
|
|
|
1506
1494
|
/**
|
|
@@ -1545,7 +1533,7 @@ interface AddonSpec<Graft = unknown> {
|
|
|
1545
1533
|
}
|
|
1546
1534
|
|
|
1547
1535
|
/**
|
|
1548
|
-
* Hand-authored database statements
|
|
1536
|
+
* Hand-authored database statements — the `!map:dbo` family: read/delete/
|
|
1549
1537
|
* exists/patch/truncate/schema against a table. Codegen defers these because the
|
|
1550
1538
|
* target table is a `!map:dbo context.dbo.id` reference; with the guid
|
|
1551
1539
|
* foundation (refs/guid.ts) the table resolves to its deterministic guid.
|
|
@@ -1594,7 +1582,7 @@ type EvalAliases<E> = E extends readonly (infer Item)[] ? Item extends {
|
|
|
1594
1582
|
as: infer A extends string;
|
|
1595
1583
|
} ? A : never : never;
|
|
1596
1584
|
/**
|
|
1597
|
-
* The single-row shape a db read yields, for `InferResponse`'s trace
|
|
1585
|
+
* The single-row shape a db read yields, for `InferResponse`'s trace: the
|
|
1598
1586
|
* table's {@link InferRow}, narrowed to the selected `Cols` when an `output`
|
|
1599
1587
|
* list is given, else the full row. A bare-name / raw-`ColumnDef[]` table has no
|
|
1600
1588
|
* field brands, so `InferRow` is `never` → `unknown` (nothing to infer).
|
|
@@ -1667,7 +1655,7 @@ type AddonFields<A> = A extends readonly [infer H, ...infer Rest] ? (H extends {
|
|
|
1667
1655
|
* the field with the addon result at runtime, so when an alias shadows an
|
|
1668
1656
|
* existing column the honest type is the graft (`unknown`), not the base column.
|
|
1669
1657
|
* An intersection would collapse `unknown & string` back to the base column and
|
|
1670
|
-
* silently desync the type from runtime
|
|
1658
|
+
* silently desync the type from runtime.
|
|
1671
1659
|
*/
|
|
1672
1660
|
type WithAddons<Row, A> = [keyof AddonFields<A>] extends [never] ? Row : Prettify<Omit<Row, keyof AddonFields<A>> & AddonFields<A>>;
|
|
1673
1661
|
/**
|
|
@@ -1678,11 +1666,11 @@ type WithAddons<Row, A> = [keyof AddonFields<A>] extends [never] ? Row : Prettif
|
|
|
1678
1666
|
type WithEval<Row, E> = [keyof EvalFields<E>] extends [never] ? Row : Prettify<Omit<Row, keyof EvalFields<E>> & EvalFields<E>>;
|
|
1679
1667
|
/**
|
|
1680
1668
|
* The paging metadata envelope a `db.query` returns when `paging` is set with
|
|
1681
|
-
* metadata on — the engine's `packageListMeta` shape
|
|
1669
|
+
* metadata on — the engine's `packageListMeta` shape. The result
|
|
1682
1670
|
* list lives under `items`; `totals:true` adds `itemsTotal`/`pageTotal`. A query
|
|
1683
1671
|
* with no `paging`, or `paging:{ metadata:false }`, returns the bare list instead.
|
|
1684
1672
|
*
|
|
1685
|
-
* **Has-next signal
|
|
1673
|
+
* **Has-next signal:** read `nextPage` — it is `number` when
|
|
1686
1674
|
* another page exists and `null` on the last page (the engine fetches one extra
|
|
1687
1675
|
* row to decide, so this needs no second scan). For a total count, set
|
|
1688
1676
|
* `paging:{ totals:true }` and read `itemsTotal`/`pageTotal`. Both are typed on
|
|
@@ -1758,7 +1746,7 @@ interface DbAggregatePaging {
|
|
|
1758
1746
|
* (the engine requires the qualified form) and the statement declares that alias
|
|
1759
1747
|
* so the qualified name resolves; pass an already-dotted `name` for a
|
|
1760
1748
|
* `bind`ed/joined column and it is left as-is (and declares nothing, which is
|
|
1761
|
-
* what keeps a pulled workspace byte-exact
|
|
1749
|
+
* what keeps a pulled workspace byte-exact).
|
|
1762
1750
|
*/
|
|
1763
1751
|
interface DbAggregate {
|
|
1764
1752
|
group?: DbEval[];
|
|
@@ -1794,7 +1782,7 @@ type DbTableRef<T extends ObjectRef = ObjectRef> = T | null;
|
|
|
1794
1782
|
* widen what `where`/`sort`/`eval` can address by dotted path (`"author.id"`);
|
|
1795
1783
|
* they do not by themselves change the returned row shape.
|
|
1796
1784
|
*
|
|
1797
|
-
* ⚠ **The two sides of a join condition are spelled differently
|
|
1785
|
+
* ⚠ **The two sides of a join condition are spelled differently**.
|
|
1798
1786
|
* The JOINED column takes the dotted alias path; the query's OWN column stays
|
|
1799
1787
|
* BARE:
|
|
1800
1788
|
*
|
|
@@ -1890,7 +1878,7 @@ interface DbGetArgs<T extends ObjectRef = ObjectRef, As extends string = string,
|
|
|
1890
1878
|
* written row rather than null and so stay non-nullable — a genuine miss throws
|
|
1891
1879
|
* instead of yielding null (`NotFound`/404 for `edit`/`patch`; a
|
|
1892
1880
|
* unique-constraint error for `add`; `add_or_edit` upserts, so it never misses)
|
|
1893
|
-
|
|
1881
|
+
*. */
|
|
1894
1882
|
declare function dbGet<T extends ObjectRef, const As extends string = "", const Cols extends readonly OutputPath<ColsOf<T>>[] = readonly [], const A extends readonly AddonSpec[] = readonly [], const Fs extends readonly FilterXdo[] = readonly []>(args: DbGetArgs<T, As, Cols, A> & {
|
|
1895
1883
|
asFilters?: Fs;
|
|
1896
1884
|
}): DbResult<As, ApplyFilters<WithAddons<RowShapeOf<T, Cols>, A> | null, Fs>>;
|
|
@@ -2045,7 +2033,7 @@ interface DbField {
|
|
|
2045
2033
|
* A row cell: any authored {@link Value} **except** a `col()` reference. A `col()`
|
|
2046
2034
|
* (bare or wrapped in `withFilters`) does not resolve to the row's stored value
|
|
2047
2035
|
* inside a `db.edit`/`db.add` `row` — it evaluates to `null` at runtime and a
|
|
2048
|
-
* following `fl.add(1)` aborts the engine
|
|
2036
|
+
* following `fl.add(1)` aborts the engine. The `__col?: never` bound
|
|
2049
2037
|
* turns that live-only failure into a compile error; read the row first and pipe
|
|
2050
2038
|
* `ref("...")` through the filter instead.
|
|
2051
2039
|
*/
|
|
@@ -2071,9 +2059,9 @@ type RowsOf<T> = T extends TableDef<string, infer Row> ? Row : unknown;
|
|
|
2071
2059
|
/**
|
|
2072
2060
|
* A partial row keyed by column name — the values to write. Unspecified columns
|
|
2073
2061
|
* get a type default on `db.add`; on `db.edit` they are marked `ignore:true` and
|
|
2074
|
-
* keep their stored value instead (
|
|
2062
|
+
* keep their stored value instead (see `expandRow`).
|
|
2075
2063
|
*
|
|
2076
|
-
* A cell is a tagged {@link Value}, a {@link NestedCell}, or
|
|
2064
|
+
* A cell is a tagged {@link Value}, a {@link NestedCell}, or a bare
|
|
2077
2065
|
* JS literal typed against that column ({@link ScalarCell}), which `expandRow`
|
|
2078
2066
|
* coerces to the constant the author would otherwise have written by hand.
|
|
2079
2067
|
*/
|
|
@@ -2163,7 +2151,7 @@ interface DbEditArgs<T extends ObjectRef = ObjectRef, As extends string = string
|
|
|
2163
2151
|
* A **partial** row keyed by column name: only the columns you list are
|
|
2164
2152
|
* written. Columns you omit are emitted with `ignore:true` and keep their
|
|
2165
2153
|
* stored value — a `{ votes }` edit updates `votes` alone and leaves every
|
|
2166
|
-
* other column intact
|
|
2154
|
+
* other column intact. Expanded against the table's declared
|
|
2167
2155
|
* columns. Use `data` for byte-exact control over each entry's `ignore` flag.
|
|
2168
2156
|
*/
|
|
2169
2157
|
row?: RowMap<ColsOf<T>, RowsOf<T>>;
|
|
@@ -2314,7 +2302,7 @@ interface DbBulkAddArgs extends StatementOptions {
|
|
|
2314
2302
|
* ⚠ **Unset/`false` means the engine STRIPS `id` from every item** and assigns
|
|
2315
2303
|
* the next sequence value instead — silently, with no error and no warning.
|
|
2316
2304
|
* The rows then sit at ids nothing else expects, which surfaces much later as
|
|
2317
|
-
* a foreign key pointing at the wrong row
|
|
2305
|
+
* a foreign key pointing at the wrong row.
|
|
2318
2306
|
*
|
|
2319
2307
|
* This is the opposite of a `table` `seed`, where supplying `id` pins it. If
|
|
2320
2308
|
* you are inserting rows whose ids other rows reference, set this to `true`.
|
|
@@ -2328,7 +2316,7 @@ interface DbBulkAddArgs extends StatementOptions {
|
|
|
2328
2316
|
*
|
|
2329
2317
|
* ⚠ An `id` on a row is DISCARDED unless {@link DbBulkAddArgs.allowIdField} is
|
|
2330
2318
|
* `true` — see that field. Literal rows carrying one are rejected here rather
|
|
2331
|
-
* than silently renumbered by the engine
|
|
2319
|
+
* than silently renumbered by the engine.
|
|
2332
2320
|
*/
|
|
2333
2321
|
declare function dbBulkAdd(args: DbBulkAddArgs): Statement;
|
|
2334
2322
|
interface DbBulkDeleteArgs<As extends string = string> extends StatementOptions {
|
|
@@ -2417,7 +2405,7 @@ declare function dbBulkPatch<T extends ObjectRef, const As extends string = "",
|
|
|
2417
2405
|
* replacing rows wholesale. `export()` warns when a STATIC `items` array omits
|
|
2418
2406
|
* columns of the bound table, and `--strict` / `export({ strict: true })` fails
|
|
2419
2407
|
* the build on it — but an `items` built from a `ref`/`inp` cannot be inspected,
|
|
2420
|
-
* so nothing catches that one for you
|
|
2408
|
+
* so nothing catches that one for you.
|
|
2421
2409
|
*
|
|
2422
2410
|
* Left **unbranded** (plain {@link Statement}): the engine declares no output
|
|
2423
2411
|
* schema for `dbo_bulkupdate`/`dbo_bulkadd`, so
|
|
@@ -2432,7 +2420,7 @@ declare function dbBulkUpdate(args: DbBulkWriteArgs): Statement;
|
|
|
2432
2420
|
* mirror the engine schema's `return.list.paging` block: `page=1`, `per_page=25`,
|
|
2433
2421
|
* `offset=0`, `totals=false`, `metadata=true`.
|
|
2434
2422
|
*
|
|
2435
|
-
* **Input-bound (dynamic) paging
|
|
2423
|
+
* **Input-bound (dynamic) paging:** pass a {@link Value} (e.g.
|
|
2436
2424
|
* `inp("page")`) for `page`/`per_page`/`offset` instead of a number and it is
|
|
2437
2425
|
* emitted into `context.simpleExternal.<field>` as a tagged `{value,tag,filters}`
|
|
2438
2426
|
* (byte shape from the `simpleExternal` golden — the inner key is `value`, not
|
|
@@ -2462,7 +2450,7 @@ interface DbPaging {
|
|
|
2462
2450
|
* **Leave this unset.** It defaults to being DERIVED — on whenever a
|
|
2463
2451
|
* `page`/`per_page`/`offset` field or a classic `external` blob is present —
|
|
2464
2452
|
* which is what stops a `search`/`sort`-only `paging` from silently truncating a
|
|
2465
|
-
* result to 25 rows
|
|
2453
|
+
* result to 25 rows. Setting it overrides that derivation.
|
|
2466
2454
|
*
|
|
2467
2455
|
* It exists because a stored query can carry the two apart: real workspaces
|
|
2468
2456
|
* persist a non-default `per_page` with the gate OFF, and a derived-only encoder
|
|
@@ -2544,7 +2532,7 @@ interface DbQueryArgs<T extends ObjectRef = ObjectRef, As extends string = strin
|
|
|
2544
2532
|
* on (the default) the result is wrapped in a paging envelope
|
|
2545
2533
|
* (`{ items, curPage, nextPage, prevPage, offset, perPage, itemsReceived }`,
|
|
2546
2534
|
* plus `itemsTotal`/`pageTotal` when `totals:true`) instead of a bare row list,
|
|
2547
|
-
* and `InferResponse` reflects that
|
|
2535
|
+
* and `InferResponse` reflects that. Pass `metadata:false` to keep
|
|
2548
2536
|
* the bare array.
|
|
2549
2537
|
*/
|
|
2550
2538
|
paging?: P;
|
|
@@ -2610,7 +2598,7 @@ interface DbTransactionArgs extends StatementAnnotations {
|
|
|
2610
2598
|
* Capture the transaction's result into this stack variable.
|
|
2611
2599
|
*
|
|
2612
2600
|
* A transaction returns whatever its sub-stack returned, so the binding is
|
|
2613
|
-
* real state and not decoration — a pulled workspace stores one
|
|
2601
|
+
* real state and not decoration — a pulled workspace stores one.
|
|
2614
2602
|
* The engine's XanoScript schema for this statement declares no `as`
|
|
2615
2603
|
* argument, which is why nothing here modelled it; the statement class
|
|
2616
2604
|
* returns a value all the same, and the stack item carries the binding like
|
|
@@ -2640,7 +2628,7 @@ interface DbExternalQueryArgs extends StatementOptions {
|
|
|
2640
2628
|
* workspace environment variable unless it already looks like a URL, and
|
|
2641
2629
|
* falls back to it whenever the tagged value is empty. The two are separate
|
|
2642
2630
|
* stored fields, so a workspace holding the older one round-trips as the older
|
|
2643
|
-
* one rather than being quietly rewritten
|
|
2631
|
+
* one rather than being quietly rewritten.
|
|
2644
2632
|
*/
|
|
2645
2633
|
connectionString: Value | string;
|
|
2646
2634
|
responseType?: DbResponseType;
|
|
@@ -2659,8 +2647,8 @@ interface DbExternalQueryArgs extends StatementOptions {
|
|
|
2659
2647
|
* Golden-verified against a live postgres capture: the engine persists
|
|
2660
2648
|
* `context.{code,response_type,connection_string_flex,arg}` and does NOT store
|
|
2661
2649
|
* `parser` at its default, so the SDK's omission is correct. The rich envelope
|
|
2662
|
-
* matches.
|
|
2663
|
-
*
|
|
2650
|
+
* matches. Only postgres is capture-verified; the other 4 engines share the
|
|
2651
|
+
* format and stay modeled by analogy.
|
|
2664
2652
|
*/
|
|
2665
2653
|
declare function dbExternalQuery(args: DbExternalQueryArgs): Statement;
|
|
2666
2654
|
|
|
@@ -2818,11 +2806,9 @@ type PortArg<D> = string extends PortsOf<D> ? number | string : [PortsOf<D>] ext
|
|
|
2818
2806
|
* The five request fields this statement shares with the external-HTTP family,
|
|
2819
2807
|
* taken FROM that family's field set rather than restated.
|
|
2820
2808
|
*
|
|
2821
|
-
*
|
|
2822
|
-
*
|
|
2823
|
-
*
|
|
2824
|
-
* second would have left the record spelling silently unavailable here (issue
|
|
2825
|
-
* #92). The per-field docs stay local because the DEFAULTS differ — this
|
|
2809
|
+
* Deriving them keeps the two in step: a widening on the HTTP side (the
|
|
2810
|
+
* `headers` record form, say) reaches here without a second hand-edit.
|
|
2811
|
+
* The per-field docs stay local because the DEFAULTS differ — this
|
|
2826
2812
|
* statement's block schema requires all five, so it emits them (see
|
|
2827
2813
|
* {@link MICROSERVICE_DEFAULTS}) where `api.request` may leave them out.
|
|
2828
2814
|
*/
|
|
@@ -2894,7 +2880,7 @@ declare function microserviceRequest<const As extends string = "", const H exten
|
|
|
2894
2880
|
}): Statement & AsShapeBrand<As, ApplyFilters<ApiRequestResult, Fs>>;
|
|
2895
2881
|
|
|
2896
2882
|
/**
|
|
2897
|
-
* Typed `precondition` / `throw` overrides
|
|
2883
|
+
* Typed `precondition` / `throw` overrides.
|
|
2898
2884
|
*
|
|
2899
2885
|
* `s.throw` raises a generic error the runtime returns with **HTTP 200** and an
|
|
2900
2886
|
* error body — a client checking `res.ok` (or any non-2xx guard) treats a
|
|
@@ -2911,7 +2897,7 @@ declare function microserviceRequest<const As extends string = "", const H exten
|
|
|
2911
2897
|
/**
|
|
2912
2898
|
* The exception a failed {@link precondition} raises, and the HTTP status the
|
|
2913
2899
|
* runtime returns for it. Mirrors the engine's `mvp:precondition` `error_type`
|
|
2914
|
-
* enum
|
|
2900
|
+
* enum:
|
|
2915
2901
|
*
|
|
2916
2902
|
* - `standard` — generic error (the default).
|
|
2917
2903
|
* - `badrequest` — **400** Bad Request.
|
|
@@ -2954,7 +2940,7 @@ interface PreconditionArgs extends StatementAnnotations {
|
|
|
2954
2940
|
* `precondition { … }` — assert a condition and raise a **status-bearing** error
|
|
2955
2941
|
* if it fails (`mvp:precondition`). Prefer this over {@link throwError} (`s.throw`)
|
|
2956
2942
|
* whenever the rejection must be observable via HTTP status — a client guarding
|
|
2957
|
-
* on `res.ok` sees a real 4xx instead of a 200 with an error body.
|
|
2943
|
+
* on `res.ok` sees a real 4xx instead of a 200 with an error body.
|
|
2958
2944
|
*
|
|
2959
2945
|
* @example
|
|
2960
2946
|
* s.precondition({
|
|
@@ -2976,13 +2962,13 @@ interface ThrowArgs extends StatementAnnotations {
|
|
|
2976
2962
|
* ⚠️ The runtime returns a thrown error with **HTTP 200** and an error body, so
|
|
2977
2963
|
* a client checking `res.ok` treats it as success. For a rejection that surfaces
|
|
2978
2964
|
* as a real 4xx status, use {@link precondition} (`s.precondition`) with an
|
|
2979
|
-
* `error_type`.
|
|
2965
|
+
* `error_type`.
|
|
2980
2966
|
*/
|
|
2981
2967
|
declare function throwError(a: ThrowArgs): Statement;
|
|
2982
2968
|
|
|
2983
2969
|
/**
|
|
2984
2970
|
* Typed overrides for statement args the engine declares as a CLOSED SET but the
|
|
2985
|
-
* codegen ships as a bare `string
|
|
2971
|
+
* codegen ships as a bare `string`.
|
|
2986
2972
|
*
|
|
2987
2973
|
* The generated catalog harvests `enum` from the engine's runtime INPUT schemas,
|
|
2988
2974
|
* so a closed set declared on a `context`-routed field arrives untyped. Both
|
|
@@ -3069,7 +3055,7 @@ declare function createVideo(a: CreateVideoArgs): Statement;
|
|
|
3069
3055
|
declare function setHeader(a: SetHeaderArgs): Statement;
|
|
3070
3056
|
|
|
3071
3057
|
/**
|
|
3072
|
-
* Typed refusal of `capture` on `s.lambda
|
|
3058
|
+
* Typed refusal of `capture` on `s.lambda`.
|
|
3073
3059
|
*
|
|
3074
3060
|
* The grounding docs introduce an inline `code:` arrow and then, several
|
|
3075
3061
|
* paragraphs later, `lam.fn(fn, { surface?, capture? })`. Nothing connected the
|
|
@@ -3095,7 +3081,7 @@ type LambdaArgs = Parameters<typeof generated.lambda>[0] & {
|
|
|
3095
3081
|
* `lambda { … }` — run a JavaScript body (`mvp:lambda`).
|
|
3096
3082
|
*
|
|
3097
3083
|
* Delegates to the generated factory unchanged. The only addition is a typed
|
|
3098
|
-
* refusal of `capture
|
|
3084
|
+
* refusal of `capture`: the grounding docs introduce an inline
|
|
3099
3085
|
* `code:` arrow and then `lam.fn(fn, { capture })` several paragraphs later, so
|
|
3100
3086
|
* `capture` reads as a property of lambda bodies generally. The bare
|
|
3101
3087
|
* "does not exist in type" error that produced implies the wrong fix — drop the
|
|
@@ -4448,7 +4434,7 @@ declare const s: {
|
|
|
4448
4434
|
|
|
4449
4435
|
/**
|
|
4450
4436
|
* Wide aliases for the def types that carry generics — the annotation that lets
|
|
4451
|
-
* a workspace be assembled out of independently-authored modules
|
|
4437
|
+
* a workspace be assembled out of independently-authored modules.
|
|
4452
4438
|
*
|
|
4453
4439
|
* The problem is TypeScript's, not the SDK's. `register*` stores defs and does
|
|
4454
4440
|
* not read their brands, so it takes them however they arrive. What fails is the
|
|
@@ -4498,7 +4484,7 @@ type AnyFunctionDef = FunctionDef;
|
|
|
4498
4484
|
type AnyAddonDef = AddonDef;
|
|
4499
4485
|
|
|
4500
4486
|
/**
|
|
4501
|
-
* `compile()` — façade over the `function` object kind
|
|
4487
|
+
* `compile()` — façade over the `function` object kind. The envelope
|
|
4502
4488
|
* encoding now lives in `src/kinds/function.ts`; this keeps the MVP's public
|
|
4503
4489
|
* `compile`/`encodeResponse` surface stable.
|
|
4504
4490
|
*/
|
|
@@ -4522,7 +4508,7 @@ declare function compile(fn: FunctionDef): FunctionXdo;
|
|
|
4522
4508
|
*
|
|
4523
4509
|
* It applies to EVERY spec-routed statement, not only the handful whose stored
|
|
4524
4510
|
* envelope spells the entry members out in full — the lean and full input forms
|
|
4525
|
-
* are two serializations of one entry model
|
|
4511
|
+
* are two serializations of one entry model.
|
|
4526
4512
|
*
|
|
4527
4513
|
* The marker is carried on a non-enumerable property, so it never reaches
|
|
4528
4514
|
* `JSON.stringify` and an ignored value serializes exactly like the value it
|