@xanots/sdk 0.0.10 → 0.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +38 -0
  3. package/dist/.build-fingerprint +1 -1
  4. package/dist/bin.js +7 -6
  5. package/dist/bundle.d.ts +218 -0
  6. package/dist/bundle.js +143 -0
  7. package/dist/{chunk-5YCQ2QHH.js → chunk-22TKBSDV.js} +2 -2
  8. package/dist/{chunk-YYFXVYPX.js → chunk-4IF54NU5.js} +3 -3
  9. package/dist/{chunk-W24FJHPD.js → chunk-4Q7ZOHH7.js} +2 -2
  10. package/dist/{chunk-4BXJGVZ3.js → chunk-BC2C5GVI.js} +2 -69
  11. package/dist/chunk-BSK7ELHU.js +70 -0
  12. package/dist/chunk-EHP3WPEG.js +21 -0
  13. package/dist/{chunk-75Z74TA7.js → chunk-G4EJMQLD.js} +2 -2
  14. package/dist/{chunk-I7DQDJAM.js → chunk-HYBN4H3F.js} +38 -46
  15. package/dist/chunk-OHX6MIUZ.js +184 -0
  16. package/dist/{chunk-VKSOTZK3.js → chunk-OWGCOGKK.js} +155 -3
  17. package/dist/{chunk-LBYWGMOA.js → chunk-QK7ZQJLP.js} +140 -20
  18. package/dist/{chunk-5R73LFWK.js → chunk-QYMAZRAU.js} +7 -7
  19. package/dist/{chunk-ACCBOMCB.js → chunk-RCT7UX7B.js} +12 -12
  20. package/dist/{chunk-P6TAVLOX.js → chunk-UOZMSF4C.js} +15 -8
  21. package/dist/{chunk-7JDT4PBU.js → chunk-VAF6A3YD.js} +5 -179
  22. package/dist/{chunk-OYMR5AMJ.js → chunk-XEOX6AM7.js} +2 -2
  23. package/dist/cli.js +6 -5
  24. package/dist/{codegen-command-GB3H2KQ7.js → codegen-command-FUT2KJB6.js} +15 -12
  25. package/dist/codegen.d.ts +2 -1
  26. package/dist/{deploy-command-QTIVA22A.js → deploy-command-IP7V7GT4.js} +8 -7
  27. package/dist/index.d.ts +6 -4
  28. package/dist/index.js +10 -9
  29. package/dist/{init-command-MAXULNAD.js → init-command-NPVL32L6.js} +8 -7
  30. package/dist/internal.d.ts +4 -4
  31. package/dist/internal.js +62 -40
  32. package/dist/io-P2H75UV2.js +12 -0
  33. package/dist/{lock-GFXD6G2E.js → lock-46FWYE4D.js} +3 -2
  34. package/dist/{lock-commands-DQ7CUMIV.js → lock-commands-ZZKZ4LZJ.js} +8 -7
  35. package/dist/node.d.ts +5 -4
  36. package/dist/node.js +12 -11
  37. package/dist/{preflight-command-GZ2GE5RN.js → preflight-command-K346GPTY.js} +8 -7
  38. package/dist/{release-command-YUBTNHVX.js → release-command-IMNTIVWK.js} +14 -13
  39. package/dist/response-BQVQ24l1.d.ts +844 -0
  40. package/dist/{store-BG1UPZ3Z.d.ts → store-BLyNeQ8S.d.ts} +16 -3
  41. package/dist/{upgrade-command-FB5QJ363.js → upgrade-command-BN3EHAOI.js} +8 -7
  42. package/dist/{workspace-command-43P42FBP.js → workspace-command-MNK7Y7MQ.js} +15 -12
  43. package/dist/{response-CVAE2kMj.d.ts → xdo-BjJj5W_E.d.ts} +1 -837
  44. package/guides/typed-frontend.md +1 -1
  45. package/llms/filters.md +11 -10
  46. package/llms/kinds-core.md +1 -1
  47. package/llms/statements-data.md +3 -1
  48. package/llms/values.md +1 -1
  49. package/llms-full.txt +41 -30
  50. package/llms.txt +25 -17
  51. package/manifest.json +2 -2
  52. package/package.json +7 -2
  53. package/dist/io-M7XZEMK7.js +0 -11
@@ -4,8 +4,7 @@ import {
4
4
  isMissingDependencyError,
5
5
  runInitFromCommand,
6
6
  verifyCrashEntry
7
- } from "./chunk-I7DQDJAM.js";
8
- import "./chunk-3INK4Y4E.js";
7
+ } from "./chunk-HYBN4H3F.js";
9
8
  import "./chunk-ZQ2PKR6R.js";
10
9
  import "./chunk-K5IOND4K.js";
11
10
  import "./chunk-QKM4U5UK.js";
@@ -14,28 +13,32 @@ import "./chunk-7ZYW652H.js";
14
13
  import "./chunk-ZUTSMMAG.js";
15
14
  import "./chunk-X4DVXBFY.js";
16
15
  import "./chunk-3IGNIP6R.js";
17
- import "./chunk-YYFXVYPX.js";
16
+ import "./chunk-4IF54NU5.js";
18
17
  import "./chunk-KA6G2L7U.js";
19
18
  import "./chunk-ZSYZTGJH.js";
20
- import "./chunk-75Z74TA7.js";
19
+ import "./chunk-G4EJMQLD.js";
21
20
  import "./chunk-LU7TRWMC.js";
22
21
  import "./chunk-YBC3IKMF.js";
23
22
  import "./chunk-ANUDXFEX.js";
24
23
  import "./chunk-Q77KNEUL.js";
25
- import "./chunk-4BXJGVZ3.js";
26
- import "./chunk-P6TAVLOX.js";
27
- import "./chunk-ACCBOMCB.js";
24
+ import "./chunk-BSK7ELHU.js";
25
+ import "./chunk-UOZMSF4C.js";
26
+ import "./chunk-EHP3WPEG.js";
27
+ import "./chunk-3INK4Y4E.js";
28
+ import "./chunk-BC2C5GVI.js";
29
+ import "./chunk-RCT7UX7B.js";
28
30
  import "./chunk-CTD5ZCV6.js";
29
- import "./chunk-OYMR5AMJ.js";
31
+ import "./chunk-XEOX6AM7.js";
30
32
  import "./chunk-F6CYJ7TN.js";
31
33
  import "./chunk-GNPVYOPB.js";
32
34
  import "./chunk-EZG76F7R.js";
33
- import "./chunk-VKSOTZK3.js";
35
+ import "./chunk-OWGCOGKK.js";
34
36
  import "./chunk-DIA7CT7J.js";
35
- import "./chunk-LBYWGMOA.js";
37
+ import "./chunk-QK7ZQJLP.js";
36
38
  import "./chunk-WHOJWOSV.js";
39
+ import "./chunk-VAF6A3YD.js";
37
40
  import "./chunk-5XZ744TS.js";
38
- import "./chunk-7JDT4PBU.js";
41
+ import "./chunk-OHX6MIUZ.js";
39
42
  export {
40
43
  blameGeneratedFile,
41
44
  fetchWorkspaceBundle,
@@ -43,4 +46,4 @@ export {
43
46
  runInitFromCommand,
44
47
  verifyCrashEntry
45
48
  };
46
- //# sourceMappingURL=codegen-command-GB3H2KQ7.js.map
49
+ //# sourceMappingURL=codegen-command-FUT2KJB6.js.map
package/dist/codegen.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- import { a1 as Statement, a8 as Tag, w as FilterXdo, a9 as TaggedValue, p as FieldDescriptor, Z as ResponseDef } from './response-CVAE2kMj.js';
1
+ import { S as Statement, f as FieldDescriptor, w as ResponseDef } from './response-BQVQ24l1.js';
2
+ import { n as Tag, h as FilterXdo, o as TaggedValue } from './xdo-BjJj5W_E.js';
2
3
 
3
4
  /** A stored statement envelope as it appears in a Xano bundle's `run[]`. */
4
5
  type RawEnvelope = Record<string, unknown>;
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  assertBundleInput,
6
6
  loadBundleText
7
- } from "./chunk-W24FJHPD.js";
7
+ } from "./chunk-4Q7ZOHH7.js";
8
8
  import {
9
9
  microserviceLine,
10
10
  readyRatio,
@@ -38,9 +38,9 @@ import {
38
38
  } from "./chunk-ZUTSMMAG.js";
39
39
  import "./chunk-X4DVXBFY.js";
40
40
  import "./chunk-3IGNIP6R.js";
41
- import "./chunk-ACCBOMCB.js";
41
+ import "./chunk-RCT7UX7B.js";
42
42
  import "./chunk-CTD5ZCV6.js";
43
- import "./chunk-OYMR5AMJ.js";
43
+ import "./chunk-XEOX6AM7.js";
44
44
  import {
45
45
  assertNoEnv
46
46
  } from "./chunk-F6CYJ7TN.js";
@@ -59,12 +59,13 @@ import {
59
59
  warn,
60
60
  withSpinner
61
61
  } from "./chunk-EZG76F7R.js";
62
- import "./chunk-VKSOTZK3.js";
62
+ import "./chunk-OWGCOGKK.js";
63
63
  import "./chunk-DIA7CT7J.js";
64
- import "./chunk-LBYWGMOA.js";
64
+ import "./chunk-QK7ZQJLP.js";
65
65
  import "./chunk-WHOJWOSV.js";
66
+ import "./chunk-VAF6A3YD.js";
66
67
  import "./chunk-5XZ744TS.js";
67
- import "./chunk-7JDT4PBU.js";
68
+ import "./chunk-OHX6MIUZ.js";
68
69
 
69
70
  // src/emit/deploy-command.ts
70
71
  import { basename } from "path";
@@ -416,4 +417,4 @@ export {
416
417
  runDeployedTests,
417
418
  verifyMicroservices
418
419
  };
419
- //# sourceMappingURL=deploy-command-QTIVA22A.js.map
420
+ //# sourceMappingURL=deploy-command-IP7V7GT4.js.map
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-BG1UPZ3Z.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-BG1UPZ3Z.js';
3
- import { a2 as StatementAnnotations, a1 as Statement, y as FromFieldMap, w as FilterXdo, V as Value, S as ObjValue, aH as Prettify, x as FilteredValue, X as RefValue, aM as AsShapeBrand, aj as XanoFileRef, a4 as StatementOptions, T as ObjectRef, P as ObjInput, F as FunctionXdo } from './response-CVAE2kMj.js';
4
- export { B as BrandOpts, c as BrandValue, C as CacheXdo, f as CaughtField, h as ConditionalContext, j as ConditionalElifContext, D as DecimalMethod, E as EmailMethod, k as ExprGroup, l as ExprNode, m as ExprOperand, n as ExprStatement, o as FieldAccess, p as FieldDescriptor, q as FieldMap, s as FieldOpts, u as FieldStyleType, v as FieldXdo, H as HistoryXdo, I as InputXdo, z as IntMethod, L as ListBoundsXdo, M as MethodArg, A as MethodOpts, G as MethodSpec, J as MethodXdo, K as MockEntry, N as MockMap, O as MockXdo, Q as ObjMember, U as PasswordMethod, W as PersistedFunctionRow, Y as RegexValue, Z as ResponseDef, _ as ResultItemXdo, $ as RowFromFieldMap, a0 as StackItemXdo, a3 as StatementInputXdo, a5 as TAGS, a6 as TEST_EXPECT_TYPES, a7 as TableRefMethod, a8 as Tag, a9 as TaggedValue, aa as TestDef, ab as TestExpect, ac as TestExpectType, ad as TestXdo, ae as TextFormat, af as TextMethod, ag as TypeBrand, ah as ValueOf, ai as VectorMethod, ak as XanoGeoPosition, al as XanoGeoValue, am as annotate, an as auth, ao as c, ap as caught, aq as col, ar as env, as as expect, at as f, au as filter, av as inp, aw as obj, ax as out, ay as ref, az as resp, aA as setting, aB as statements, aC as sys, aD as test, aE as toolset, aF as withFilters } from './response-CVAE2kMj.js';
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-BLyNeQ8S.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-BLyNeQ8S.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-BQVQ24l1.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-BQVQ24l1.js';
5
+ import { h as FilterXdo, V as Value, i as FilteredValue, R as RefValue, F as FunctionXdo } from './xdo-BjJj5W_E.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-BjJj5W_E.js';
5
7
 
6
8
  /** One `else if (when) { then }` branch of a {@link conditional}'s elif stack. */
7
9
  interface ConditionalElifArgs extends StatementAnnotations {
package/dist/index.js CHANGED
@@ -5,7 +5,7 @@ import {
5
5
  import {
6
6
  TEST_EXPECT_TYPES,
7
7
  expect
8
- } from "./chunk-75Z74TA7.js";
8
+ } from "./chunk-G4EJMQLD.js";
9
9
  import {
10
10
  addon,
11
11
  agent,
@@ -17,7 +17,7 @@ import {
17
17
  task,
18
18
  tool,
19
19
  workflowTest
20
- } from "./chunk-5R73LFWK.js";
20
+ } from "./chunk-QYMAZRAU.js";
21
21
  import {
22
22
  actionCall,
23
23
  actionPackageCall,
@@ -100,11 +100,11 @@ import {
100
100
  workflowTestCall,
101
101
  workspaceConfig,
102
102
  workspaceTrigger
103
- } from "./chunk-P6TAVLOX.js";
103
+ } from "./chunk-UOZMSF4C.js";
104
104
  import {
105
105
  Xano,
106
106
  workspace
107
- } from "./chunk-VKSOTZK3.js";
107
+ } from "./chunk-OWGCOGKK.js";
108
108
  import {
109
109
  LAMBDA_BINDINGS,
110
110
  LAMBDA_CODE_FILTERS,
@@ -148,16 +148,17 @@ import {
148
148
  toSearchParams,
149
149
  toolset,
150
150
  withFilters
151
- } from "./chunk-LBYWGMOA.js";
151
+ } from "./chunk-QK7ZQJLP.js";
152
152
  import "./chunk-WHOJWOSV.js";
153
+ import {
154
+ resetLockOverrides,
155
+ seedLockOverrides
156
+ } from "./chunk-VAF6A3YD.js";
153
157
  import {
154
158
  annotate,
155
159
  statements
156
160
  } from "./chunk-5XZ744TS.js";
157
- import {
158
- resetLockOverrides,
159
- seedLockOverrides
160
- } from "./chunk-7JDT4PBU.js";
161
+ import "./chunk-OHX6MIUZ.js";
161
162
  export {
162
163
  LAMBDA_BINDINGS,
163
164
  LAMBDA_CODE_FILTERS,
@@ -3,7 +3,7 @@ import {
3
3
  resolveFromSource,
4
4
  runInitCommand,
5
5
  sanitizeAppName
6
- } from "./chunk-YYFXVYPX.js";
6
+ } from "./chunk-4IF54NU5.js";
7
7
  import {
8
8
  resolveAiFlags
9
9
  } from "./chunk-KA6G2L7U.js";
@@ -11,18 +11,19 @@ import "./chunk-ZSYZTGJH.js";
11
11
  import "./chunk-YBC3IKMF.js";
12
12
  import "./chunk-ANUDXFEX.js";
13
13
  import "./chunk-Q77KNEUL.js";
14
- import "./chunk-ACCBOMCB.js";
14
+ import "./chunk-RCT7UX7B.js";
15
15
  import "./chunk-CTD5ZCV6.js";
16
- import "./chunk-OYMR5AMJ.js";
16
+ import "./chunk-XEOX6AM7.js";
17
17
  import "./chunk-F6CYJ7TN.js";
18
18
  import "./chunk-GNPVYOPB.js";
19
19
  import "./chunk-EZG76F7R.js";
20
- import "./chunk-VKSOTZK3.js";
20
+ import "./chunk-OWGCOGKK.js";
21
21
  import "./chunk-DIA7CT7J.js";
22
- import "./chunk-LBYWGMOA.js";
22
+ import "./chunk-QK7ZQJLP.js";
23
23
  import "./chunk-WHOJWOSV.js";
24
+ import "./chunk-VAF6A3YD.js";
24
25
  import "./chunk-5XZ744TS.js";
25
- import "./chunk-7JDT4PBU.js";
26
+ import "./chunk-OHX6MIUZ.js";
26
27
  export {
27
28
  projectShellFiles,
28
29
  resolveAiFlags,
@@ -30,4 +31,4 @@ export {
30
31
  runInitCommand,
31
32
  sanitizeAppName
32
33
  };
33
- //# sourceMappingURL=init-command-MAXULNAD.js.map
34
+ //# sourceMappingURL=init-command-NPVL32L6.js.map
@@ -1,7 +1,7 @@
1
- import { F as FunctionXdo } from './response-CVAE2kMj.js';
2
- export { a as FIELD_METHODS, R as REFERENCEABLE_KINDS, d as deriveGuid, e as encodeResponse, b as encodeStatement, g as getStatementFactory, i as isRegisteredStatement, r as resolveRef, t as toNestedFields } from './response-CVAE2kMj.js';
3
- import { S as StatementSpec, F as FunctionDef, O as ObjectKind } from './store-BG1UPZ3Z.js';
4
- export { A as AdoptChange, a as AdoptResult, B as Bundle, b as BundlePayload, c as BundleType, d as FILTER_NAMES, G as GENERATED_STATEMENT_NAMES, K as KNOWLEDGE_DIR, e as KNOWLEDGE_FILE, L as LLMS_TXT, f as LOCK_VERSION, g as LockEntry, h as LockExportContext, i as LockFile, M as Manifest, j as ManifestField, k as ManifestKind, l as ManifestStatement, m as MergeResult, P as PAYLOAD_ARRAY_KEYS, n as PayloadArrayKey, Q as QUERY_EXPRESSION_FILTERS, R as RenameResult, T as TOTAL_OBJECT_KINDS, V as VECTOR_FILTERS, W as WORKSPACE_KEY, o as addonKind, p as adoptFromBundle, q as agentKind, r as apiGroupKind, s as buildBundle, t as buildManifest, u as buildMiddlewareBlock, v as buildWorkspaceHistory, w as calcSignatureJson, x as channelPathParams, y as createLockContext, z as declaredServicePorts, C as emptyLock, D as encodeAddon, E as encodeAgent, H as encodeApiGroup, I as encodeColumn, J as encodeContainerHistory, N as encodeFromSpec, U as encodeHistory, X as encodeIndex, Y as encodeKnowledge, Z as encodeMcpServer, _ as encodeMicroservice, $ as encodeMiddleware, a0 as encodeMiddlewareEntry, a1 as encodeMiddlewareList, a2 as encodeObject, a3 as encodeQuery, a4 as encodeRealtimeChannel, a5 as encodeRealtimeMessage, a6 as encodeRealtimeServer, a7 as encodeSchedule, a8 as encodeTable, a9 as encodeTask, aa as encodeTool, ab as encodeToolRefs, ac as encodeToolsetBase, ad as encodeTrigger, ae as encodeView, af as encodeWorkflowTest, ag as encodeWorkspaceConfig, ah as generatedStatements, ai as getKind, aj as getLockedCanonical, ak as getLockedGuid, al as isKnowledgeDirSource, am as isKnowledgeFileSource, an as isLockSeeded, ao as isQueryExpressionFilter, ap as isRegisteredKind, aq as knowledgeKind, ar as lockKey, as as mcpServerKind, at as mergeObserved, au as microserviceKind, av as middlewareKind, aw as mintCanonical, ax as parseLock, ay as phpJsonEncode, az as queryKind, aA as realtimeChannelGuid, aB as realtimeChannelKind, aC as realtimeMessageGuid, aD as realtimeMessageKind, aE as realtimeServerKind, aF as recordObserved, aG as registerKind, aH as registerSpec, aI as registeredKinds, aJ as renameLockEntry, aK as renderDocs, aL as renderLlmsTxt, aM as resolveAuthRef, aN as resolvePayloadKey, aO as resolveRealtimeServerCanonical, aP as resolveToolsetCanonical, aQ as serializeBundle, aR as serializeLock, aS as tableKind, aT as taskKind, aU as toolKind, aV as triggerKind, aW as validateLockModel, aX as workflowTestKind, aY as workspaceKind } from './store-BG1UPZ3Z.js';
1
+ export { F as FIELD_METHODS, R as REFERENCEABLE_KINDS, d as deriveGuid, e as encodeResponse, a as encodeStatement, g as getStatementFactory, i as isRegisteredStatement, r as resolveRef, t as toNestedFields } from './response-BQVQ24l1.js';
2
+ import { S as StatementSpec, F as FunctionDef, O as ObjectKind } from './store-BLyNeQ8S.js';
3
+ export { A as AdoptChange, a as AdoptResult, B as Bundle, b as BundlePayload, c as BundleType, d as FILTER_NAMES, G as GENERATED_STATEMENT_NAMES, K as KNOWLEDGE_DIR, e as KNOWLEDGE_FILE, L as LLMS_TXT, f as LOCK_VERSION, g as LockEntry, h as LockExportContext, i as LockFile, M as Manifest, j as ManifestField, k as ManifestKind, l as ManifestStatement, m as MergeResult, P as PAYLOAD_ARRAY_KEYS, n as PayloadArrayKey, Q as QUERY_EXPRESSION_FILTERS, R as RenameResult, T as TOTAL_OBJECT_KINDS, V as VECTOR_FILTERS, W as WORKSPACE_KEY, o as addonKind, p as adoptFromBundle, q as agentKind, r as apiGroupKind, s as buildBundle, t as buildManifest, u as buildMiddlewareBlock, v as buildWorkspaceHistory, w as calcSignatureJson, x as channelPathParams, y as createLockContext, z as declaredServicePorts, C as emptyLock, D as encodeAddon, E as encodeAgent, H as encodeApiGroup, I as encodeColumn, J as encodeContainerHistory, N as encodeFromSpec, U as encodeHistory, X as encodeIndex, Y as encodeKnowledge, Z as encodeMcpServer, _ as encodeMicroservice, $ as encodeMiddleware, a0 as encodeMiddlewareEntry, a1 as encodeMiddlewareList, a2 as encodeObject, a3 as encodeQuery, a4 as encodeRealtimeChannel, a5 as encodeRealtimeMessage, a6 as encodeRealtimeServer, a7 as encodeSchedule, a8 as encodeTable, a9 as encodeTask, aa as encodeTool, ab as encodeToolRefs, ac as encodeToolsetBase, ad as encodeTrigger, ae as encodeView, af as encodeWorkflowTest, ag as encodeWorkspaceConfig, ah as generatedStatements, ai as getKind, aj as getLockedCanonical, ak as getLockedGuid, al as isKnowledgeDirSource, am as isKnowledgeFileSource, an as isLockSeeded, ao as isQueryExpressionFilter, ap as isRegisteredKind, aq as knowledgeKind, ar as lockKey, as as mcpServerKind, at as mergeObserved, au as microserviceKind, av as middlewareKind, aw as mintCanonical, ax as parseLock, ay as phpJsonEncode, az as queryKind, aA as realtimeChannelGuid, aB as realtimeChannelKind, aC as realtimeMessageGuid, aD as realtimeMessageKind, aE as realtimeServerKind, aF as recordObserved, aG as registerKind, aH as registerSpec, aI as registeredKinds, aJ as renameLockEntry, aK as renderDocs, aL as renderLlmsTxt, aM as resolveAuthRef, aN as resolvePayloadKey, aO as resolveRealtimeServerCanonical, aP as resolveToolsetCanonical, aQ as serializeBundle, aR as serializeLock, aS as tableKind, aT as taskKind, aU as toolKind, aV as triggerKind, aW as validateLockModel, aX as workflowTestKind, aY as workspaceKind } from './store-BLyNeQ8S.js';
4
+ import { F as FunctionXdo } from './xdo-BjJj5W_E.js';
5
5
 
6
6
  /**
7
7
  * AUTO-GENERATED by scripts/codegen.ts — DO NOT EDIT BY HAND.
package/dist/internal.js CHANGED
@@ -1,11 +1,7 @@
1
1
  import {
2
2
  FIELD_METHODS,
3
- IMPLEMENTED_STATEMENTS,
4
- STATEMENT_SURFACES,
5
- SUPERSEDED_STATEMENTS,
6
- TOTAL_STATEMENTS,
7
- sPathOf
8
- } from "./chunk-4BXJGVZ3.js";
3
+ SUPERSEDED_STATEMENTS
4
+ } from "./chunk-BSK7ELHU.js";
9
5
  import {
10
6
  addonKind,
11
7
  agentKind,
@@ -33,7 +29,7 @@ import {
33
29
  taskKind,
34
30
  toolKind,
35
31
  workflowTestKind
36
- } from "./chunk-5R73LFWK.js";
32
+ } from "./chunk-QYMAZRAU.js";
37
33
  import {
38
34
  GENERATED_SPECS,
39
35
  GENERATED_STATEMENT_NAMES,
@@ -55,7 +51,13 @@ import {
55
51
  registerSpec,
56
52
  triggerKind,
57
53
  workspaceKind
58
- } from "./chunk-P6TAVLOX.js";
54
+ } from "./chunk-UOZMSF4C.js";
55
+ import {
56
+ IMPLEMENTED_STATEMENTS,
57
+ STATEMENT_SURFACES,
58
+ TOTAL_STATEMENTS,
59
+ sPathOf
60
+ } from "./chunk-BC2C5GVI.js";
59
61
  import {
60
62
  COMMANDS,
61
63
  FLAGS,
@@ -109,13 +111,8 @@ import {
109
111
  serializeBundle,
110
112
  tableKind,
111
113
  toNestedFields
112
- } from "./chunk-LBYWGMOA.js";
114
+ } from "./chunk-QK7ZQJLP.js";
113
115
  import "./chunk-WHOJWOSV.js";
114
- import {
115
- encodeStatement,
116
- getStatementFactory,
117
- isRegisteredStatement
118
- } from "./chunk-5XZ744TS.js";
119
116
  import {
120
117
  LOCK_VERSION,
121
118
  REFERENCEABLE_KINDS,
@@ -137,7 +134,13 @@ import {
137
134
  resolveRef,
138
135
  serializeLock,
139
136
  validateLockModel
140
- } from "./chunk-7JDT4PBU.js";
137
+ } from "./chunk-VAF6A3YD.js";
138
+ import {
139
+ encodeStatement,
140
+ getStatementFactory,
141
+ isRegisteredStatement
142
+ } from "./chunk-5XZ744TS.js";
143
+ import "./chunk-OHX6MIUZ.js";
141
144
 
142
145
  // src/statements/byte-evidence.ts
143
146
  var UNCONFIRMED_STATEMENTS = /* @__PURE__ */ new Set([]);
@@ -313,7 +316,7 @@ var VALUE_CONSTRUCTORS = [
313
316
  { name: "c.expression", signature: "(source: string) => Value", description: `Xano Expression Engine source, passed through VERBATIM \u2192 tag "const:expr2". The string IS the expression: c.expression('"Hi, " ~ $input.name'), c.expression("$var.price * $var.qty"). \u26A0\uFE0F NOT VALIDATED \u2014 never parsed or type-checked, invisible to InferResponse, and untouched by a rename that updates every typed ref(); a typo surfaces at runtime or as a wrong answer. Use it ONLY for syntax the typed surfaces cannot express (~ concatenation, inline arithmetic, conditionals) \u2014 prefer ref/inp/col, withFilters+fl.*, and obj() (which BUILDS a checked expression). Not the expr() condition builder.` },
314
317
  { name: "c.expressionLegacy", signature: "(source: string) => Value", legacy: true, description: "the older `const:expr` expression form, emitted by codegen for workspaces that still hold one \u2014 author `c.expression` instead." },
315
318
  { name: "c.now", signature: "() => Value", description: "Current time as epoch-ms \u2014 the engine-native const:epochms constant (no filter). Valid inline as a where/cmp operand. For cutoff math (cutoff = now - max_age) either compare inline or, for reuse/readability, hoist it into an s.set_var and compare against the var." },
316
- { name: "obj", signature: "(fields: Record<string, Value | nested>) => ObjValue<typeof fields>", description: 'Dynamic object value \u2192 tag "const:expr2" (an object-literal expression string). The dynamic sibling of c.obj: members may be inp/ref/auth/col values, env()/setting()/sys.*, c.now(), c.* constants, nested records, or arrays \u2014 and each member may carry a FILTER CHAIN (withFilters + fl.*), which renders as the expression pipe `$var.row|get:"a.b"`. That matters most for the null-safe drill: db.get binds null on a miss, so ref(path, { safe: true }) inside an obj() is the normal shape, not a workaround \u2014 you do NOT need a preceding s.set_var to hoist it. The member record rides the return type, so InferResponse resolves each member the way it resolves a top-level response key \u2014 `response: { user: obj({ id: ref("row.id") }) }` derives `{ user: { id: Col | null } }`, and a raw nested object literal (`response: { user: { id: ref("row.id") } }`, auto-wrapped through this) derives the same. NEST WITH A RAW RECORD, not an inner obj() call: an inner call yields a const:expr2 value, which the expression serializer has no spelling for and THROWS. Still rejected: a filter ARGUMENT carrying its own chain (a trailing | binds to the whole value, not one argument), a DISABLED filter (an expression string cannot record that), and the output/response/toolset/reg tags \u2014 build those in a prior step and ref() them. Use for e.g. s.ai.agent.run args.' },
319
+ { name: "obj", signature: "(fields: Record<string, Value | nested>) => ObjValue<typeof fields>", description: 'Dynamic object value \u2192 tag "const:expr2" (an object-literal expression string). The dynamic sibling of c.obj: members may be inp/ref/auth/col values, env()/setting()/sys.*, c.now(), c.* constants, nested records, or arrays \u2014 and each member may carry a FILTER CHAIN (withFilters + fl.*), which renders as the expression pipe `$var.row|get:"a.b"`. That matters most for the null-safe drill: db.get binds null on a miss, so ref(path, { safe: true }) inside an obj() is the normal shape, not a workaround \u2014 you do NOT need a preceding s.set_var to hoist it. The member record rides the return type, so InferResponse resolves each member the way it resolves a top-level response key \u2014 `response: { user: obj({ id: ref("row.id") }) }` derives `{ user: { id: Col | null } }`, and a raw nested object literal (`response: { user: { id: ref("row.id") } }`, auto-wrapped through this) derives the same. A constant record or list has two spellings that both work and render identically: bare (`{ a: 1 }`, `[]`) or `c.obj(...)`/`c.array([...])` \u2014 reach for the bare form, it is shorter. NEST WITH A RAW RECORD, not an inner obj() call: an inner call yields a const:expr2 value, which the expression serializer has no spelling for and THROWS. The legacy blank `c.obj(null)` is refused here (it evaluates to null, not {}) \u2014 write c.null() or c.obj(). Still rejected: a filter ARGUMENT carrying its own chain (a trailing | binds to the whole value, not one argument), a DISABLED filter (an expression string cannot record that), and the output/response/toolset/reg tags \u2014 build those in a prior step and ref() them. Use for e.g. s.ai.agent.run args.' },
317
320
  { name: "ref", signature: "(name: string, opts?: { safe?: boolean }) => Value", description: 'Reference a stack variable \u2192 tag "var". Pass { safe: true } for null-safe nested access \u2014 a dotted ref("owner.user_id", { safe: true }) compiles through the get filter so it resolves to null instead of raising "Unable to locate var" when the base is null.' },
318
321
  {
319
322
  name: "inp",
@@ -541,6 +544,14 @@ var FILTER_NOTES = {
541
544
  ends_with: "piped value is the subject text; the arg is the substring searched for",
542
545
  starts_with: "piped value is the subject text; the arg is the substring searched for",
543
546
  icontains: "case-insensitive; piped value is the subject, the arg is the substring",
547
+ // The regex family REVERSES that direction, which is the whole reason it needs
548
+ // its own note: the pattern is piped and the subject is the argument. Written
549
+ // the other way round it reads correctly, type-checks, and answers false for
550
+ // every input, so the note has to state the order and the symptom.
551
+ regex_test: 'piped value is the PATTERN (build it with `c.regex(...)`); the arg is the subject \u2014 the REVERSE of `contains`/`starts_with`. Swapped, it answers false for every input with no error, so write `withFilters(c.regex("^a+$"), fl.regex_test(inp("s")))` (or name the arg: `fl.regex_test({ subject: inp("s") })`). A pattern found in the subject slot is refused at build time',
552
+ regex_match: "piped value is the PATTERN, the arg is the subject \u2014 see `regex_test`",
553
+ regex_match_all: "piped value is the PATTERN, the arg is the subject \u2014 see `regex_test`",
554
+ regex_replace: "piped value is the PATTERN, `subject` is the text searched \u2014 see `regex_test`. The replacement comes FIRST",
544
555
  iends_with: "case-insensitive; piped value is the subject, the arg is the substring",
545
556
  istarts_with: "case-insensitive; piped value is the subject, the arg is the substring",
546
557
  // "empty" is a specific set of values, not just null.
@@ -811,7 +822,9 @@ function renderSections(m) {
811
822
  "below \u2014 open the one whose condition matches the task, and skip the rest. For",
812
823
  "exhaustive per-entry detail in NEITHER \u2014 a statement's full field schema with engine",
813
824
  "defaults, a filter's complete argument list, the engine `storedName` mapping \u2014 do a",
814
- "TARGETED lookup in the shipped `manifest.json` (grep or `jq` the one entry you need;",
825
+ "TARGETED lookup in the shipped `manifest.json` (a program imports it as",
826
+ '`@xanots/sdk/manifest.json`, which Node ESM needs `with { type: "json" }` on;',
827
+ "grep or `jq` the one entry you need;",
815
828
  "it is ~65k tokens, so never read it whole). Its top-level keys are `" + Object.keys(m).join("`, `") + "`. `statements` and `filters` are ARRAYS, not maps \u2014 SELECT, do not index:",
816
829
  ` jq '.statements[] | select(.sPath=="db.get")' manifest.json`,
817
830
  ` jq '.filters[] | select(.name=="json_decode")' manifest.json`,
@@ -1034,6 +1047,10 @@ function renderSections(m) {
1034
1047
  ' check-in \u2014 use `db.query({ where: [expr(col("habit"), "=", ...), expr(col("date"), "=", ...)], as })`',
1035
1048
  " (a `where` array is ANDed) and branch on the result, rather than pushing the",
1036
1049
  " check to the client.",
1050
+ "- **A column named `run` is reserved.** The table deploys and reads back fine, then",
1051
+ " EVERY `s.db.add` into it 400s \u2014 at any column type, with or without a value \u2014 and",
1052
+ " the error names the column while complaining about the VALUE. Use `run_id`. Exact,",
1053
+ " case-sensitive, one name: `Run`/`runs`/`run_id` are fine. `--strict` fails on it.",
1037
1054
  "- **System columns are auto-injected.** `id` + `created_at` are prepended to",
1038
1055
  " every table (`system: true` by default); declaring them by hand is redundant.",
1039
1056
  ' `id` is an `int` PK by default; pass `idType: "uuid"` on the table for a uuid key.',
@@ -1088,18 +1105,19 @@ function renderSections(m) {
1088
1105
  " `xanots export`/`deploy` CLI path. Seed rows are never emitted into the bundle",
1089
1106
  " either way; only `deploy` ships them. The `node:fs` writers",
1090
1107
  " (`writeBundle`/`writeArtifact`) and lock-file I/O import from `@xanots/sdk/node`,",
1091
- " NOT the browser-safe `@xanots/sdk` entry (which a frontend can import query",
1092
- " defs from to use `getPath()`/`InferInput` with no Node built-ins in the bundle).",
1108
+ " NOT the browser-safe `@xanots/sdk` entry (a frontend imports defs from it for",
1109
+ " `getPath()`/`InferInput`).",
1093
1110
  " The compiler machinery (per-kind `encode*`, the registries, the bundle serializer,",
1094
1111
  " the lock model) is on `@xanots/sdk/internal` and is never needed to author.",
1112
+ " READING a bundle back is `@xanots/sdk/bundle` \u2014 a statement walker (`2.if.0` paths),",
1113
+ " a structural hash, `mvp:*` catalog, `tableRefOf`.",
1095
1114
  "- **Client bundle size / tree-shaking.** `@xanots/sdk` is `sideEffects: false` and pulls",
1096
1115
  " no Node built-ins, so a bundler drops unused SDK exports. But importing a **def** for its",
1097
1116
  " `getPath()`/`verb`/`getUrl()`/`getChannel()` also pulls whatever its `stack` references:",
1098
1117
  " the `s.*`/`c.*` factory CALLS run at module load to BUILD it. Types are free.",
1099
1118
  " \u26A0 A FLOOR \u2014 **~289 kB minified (~57 kB gzipped)** for the FIRST def; splitting modules",
1100
1119
  " never removes it. The floor is the RUNTIME, not the def: a second def, or a much richer",
1101
- " one, adds ~1 kB. So the cost is paid by importing ANY def at all, and reducing what a",
1102
- " def does will not reduce it.",
1120
+ " one, adds ~1 kB \u2014 so reducing what a def does will not reduce it.",
1103
1121
  " Fix: `xanots routes <entry> --emit xano/routes.gen.ts` (`paths` is an accepted alias) \u2014 verbs, paths, and sockets as",
1104
1122
  ' plain data importing NOTHING, still compile-checked: `routePath("blog/{slug}", { slug })`,',
1105
1123
  ' `channelPath("rooms/{room_id}", { room_id })`, `socketUrl("chat", baseUrl)` (tenant base',
@@ -1153,17 +1171,18 @@ function renderSections(m) {
1153
1171
  " return.",
1154
1172
  "- **Build regex-filter patterns with `c.regex(body, flags?)`, never `c.text`.**",
1155
1173
  " The regex filters (`regex_test`/`regex_match`/`regex_replace`/\u2026) are pattern-piped",
1156
- " PHP `preg_*`: the piped value is the PATTERN and must be delimiter-wrapped. A bare",
1157
- ' `c.text("^[^@\\s]+@...$")` is an invalid pattern that matches *nothing* for every',
1158
- " input, so a precondition on it silently rejects all values (valid ones included).",
1159
- ' `c.regex("^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$", "i")` wraps + escapes it for you (accepts a',
1160
- " JS `RegExp` too: `c.regex(/^\u2026$/i)`), and `withFilters` throws on a bare `c.text`",
1161
- " pattern pointing here \u2014 from ANY position in the chain, so a normalizer in front",
1162
- ' (`withFilters(c.text("^hi"), fl.trim(), fl.regex_test(...))`) is refused too; nothing',
1163
- " upstream adds the delimiters. `s.expect.to_match`'s `value` is the same PATTERN slot,",
1164
- " refused the same way; a `ref`/`inp` pattern is passed through untouched, either place.",
1165
- " Better still, prefer a native typed input",
1166
- " (`input.email({...})`) over hand-rolled validation.",
1174
+ " PHP `preg_*`: the piped value is the PATTERN and must be delimiter-wrapped, and the",
1175
+ ' ARGUMENT is the subject. A bare `c.text("^\u2026$")` is an invalid pattern that matches',
1176
+ " *nothing* for every input, so a precondition on it silently rejects all values.",
1177
+ ' `c.regex(body, "i")` wraps + escapes it for you (a JS `RegExp` too: `c.regex(/^\u2026$/i)`).',
1178
+ " Reversed \u2014 subject piped, pattern in the argument \u2014 reads correctly, type-checks, and",
1179
+ " answers false for EVERY input, so an `if (matches) reject` guard admits what it",
1180
+ " refuses. `withFilters` throws on a bare `c.text` pattern from ANY position in",
1181
+ " the chain (a normalizer in front of the regex filter is refused too; nothing upstream",
1182
+ " adds the delimiters) and on a pattern found in the subject slot; `s.expect.to_match`",
1183
+ " is the same PATTERN slot, refused both ways; a `ref`/`inp` pattern is passed through untouched.",
1184
+ " `export()` warns on a reversed pair in stored bytes. Better still:",
1185
+ " a native typed input (`input.email`) over hand-rolled validation.",
1167
1186
  "- **Compose a rule set as SIBLINGS, not a folded chain.** `and(...rules)` takes any",
1168
1187
  " number of terms and encodes flat; `rules.reduce((acc, r) => and(acc, r))` nests one",
1169
1188
  " container per rule, which costs quadratic bytes (512 terms: 394 KiB flat, 21 MiB",
@@ -1243,7 +1262,7 @@ function renderSections(m) {
1243
1262
  ' - `verb`: `"GET" | "POST" | "PUT" | "PATCH" | "DELETE" | "HEAD"` (required), UPPERCASE. Anything else \u2014 most often a lowercase `"post"` \u2014 makes `query()` THROW, because Xano does NOT reject it: it stores the verb as NULL, a null verb serves as GET, and the endpoint then answers on the wrong method while the one you meant 404s `Unable to locate request.`',
1244
1263
  " - `apiGroup`: an `apiGroup()` def handle (or its name) \u2014 binds by guid, stable across syncs. Raw numeric `apiGroupId?` is the escape hatch and wins if both given.",
1245
1264
  ' - `auth`: `false` (no auth) or an auth-table id; `responseType`: `"standard" | "stream"` (default `standard`) \u2014 any other spelling THROWS, since Xano stores an unrecognized one as NULL and a null buffers as `standard`, so a misspelled stream quietly does not stream.',
1246
- ' - `name` is the endpoint PATH within the group. A `{param}` segment is a URL PATH PARAM bound to the input of the same name, and segments chain: `name: "blog/{slug}/review/{review_id}"` + `input: { slug: input.text(), review_id: input.int() }`. Read it with `inp("slug")` like any other input. Every `{param}` MUST have a matching input or `query()` THROWS \u2014 Xano treats an unbound marker as inert route text, so the endpoint would answer on the path and see nothing. A `{param}` need NOT be a whole segment (`"blog/post-{slug}"` routes fine), but its type must fit one segment (no object/list/json/file/geo/vector); there are no wildcards or patterns. `required: true` is NOT demanded (the engine\'s editor leaves path inputs unmarked). Inputs absent from the path are ordinary query-string/body params. Name charset is ONLY `A-Za-z0-9_-/{}`, max 200: a `.` (`"export.zip"`) is NOT rejected by Xano \u2014 it stores an EMPTY name that deploys clean then 404s forever, so `query()` THROWS. Use `"export_zip"` and set the extension in the response headers.',
1265
+ ' - `name` is the endpoint PATH within the group. A `{param}` segment is a URL PATH PARAM bound to the input of the same name, and segments chain: `name: "blog/{slug}/review/{review_id}"` + `input: { slug: input.text(), review_id: input.int() }`. Read it with `inp("slug")` like any other input. Every `{param}` MUST have a matching input or `query()` THROWS \u2014 Xano treats an unbound marker as inert route text, so the endpoint would answer on the path and see nothing. A `{param}` need NOT be a whole segment (`"blog/post-{slug}"` routes fine), but its type must fit one segment (no object/list/json/file/geo/vector); there are no wildcards or patterns. `required: true` is NOT demanded (the engine\'s editor leaves path inputs unmarked). The CONVERSE is warned, not enforced: an input a `GET`/`DELETE`/`HEAD` looks ONE ROW up by (`s.db.get`/`get_by_id`/`has`/by-field edit/patch/delete) belongs in the path \u2014 `export()` warns `query.path-segment-candidate`. It still serves `?blog_id=1`, but the route is not addressable and `getPath()` types STATIC, so a caller cannot pass the value positionally. A segment is any value naming WHICH resource is wanted, not just an id (`"shop/{country}"`). An input that NARROWS A LIST (`s.db.query`) stays a query-string param. Inputs absent from the path are ordinary query-string/body params. Name charset is ONLY `A-Za-z0-9_-/{}`, max 200: a `.` (`"export.zip"`) is NOT rejected by Xano \u2014 it stores an EMPTY name that deploys clean then 404s forever, so `query()` THROWS. Use `"export_zip"` and set the extension in the response headers.',
1247
1266
  ' - **Client recipe:** `q.getPath({ params: { slug: "hello" } })` \u2192 `/api:<canonical>/blog/hello` \u2014 never interpolate by hand. `getPath` percent-encodes each value (so `?`/`#`/spaces stay in their segment) and throws on what encoding cannot contain: a `/`, and a value that IS `.`/`..` (a URL parser drops those before routing \u2014 `%2e` counts \u2014 addressing a different endpoint). The keys are typed from the literal `name`, so a typo is a compile error. The HANDLE\'s `q.toSearchParams(input)` drops path params for a GET; the free `query.toSearchParams(input)` has no view of the route and keeps every key.',
1248
1267
  "- `apiGroup({ name, guid?, canonical?, description?, docs?, swagger?, apiGroupEnabled?, documentation?, cors? })` \u2014 a query container; register it and bind queries to it via their `apiGroup`.",
1249
1268
  " - `cors?`: `{ mode?, allowOrigins?: string[], allowHeaders?: string[], allowCredentials?, maxAge?, allowMethods?: { get?, post?, put?, patch?, delete?, head? } }`.",
@@ -1568,12 +1587,13 @@ function renderSections(m) {
1568
1587
  "which the DB applies atomically. Reserve the pipeline form for low-contention counters",
1569
1588
  "where a rare lost update is acceptable.",
1570
1589
  "\u26A0 `direct_query` needs the table's PHYSICAL Postgres name, which the typed surface",
1571
- "does NOT expose: the engine derives a physical name from workspace + table ids (of the",
1572
- "form `x<workspace_id>_<table_id>`, e.g. `x6_203970`), ids assigned at import \u2014 not knowable",
1573
- "from a `table()` def (identity is a name + guid, not the numeric id), and `sql_name`",
1574
- "persists empty. So the safe counter drops out of the typed surface: hardcode",
1575
- "the physical name after inspecting the deployed table. A typed atomic path needs an",
1576
- "engine change.",
1590
+ "does NOT expose: the engine derives it from ids assigned at import \u2014 not knowable from a",
1591
+ "`table()` def (identity is a name + guid, not the numeric id) \u2014 and `sql_name` persists",
1592
+ "empty. The derived name is also NOT STABLE: a deploy is a full replace, so every table is",
1593
+ "created afresh and the id in its name moves each time, on the same unchanged project. So",
1594
+ "the safe counter drops out of the typed surface: resolve the physical name from",
1595
+ "`information_schema` inside the request that uses it, and never store, cache or hardcode",
1596
+ "one. A typed atomic path needs an engine change.",
1577
1597
  ""
1578
1598
  );
1579
1599
  const argFilters = m.filters.filter((fl) => fl.args?.length);
@@ -1644,7 +1664,7 @@ function renderSections(m) {
1644
1664
  "",
1645
1665
  "- `s.db.get({ table, fieldName?, fieldValue, lock?, output?, as? })` \u2014 one row by field match; `output` restricts returned columns (and overrides column visibility \u2014 it can pull `internal` columns like a password hash).",
1646
1666
  "- `s.db.get_by_id({ table, id, output?, addon?, tableAlias?, as? })` \u2014 get by primary key. Takes `id`, NOT `fieldName`/`fieldValue`; binds the row or `null` for an id that names no row. Both spellings are live in pulled workspaces.",
1647
- ' - \u26A0 `id` is validated `>= 1`, so the `0` sentinel an optional `f.tableRef` stores fails the request with HTTP 400 `Value is less than the minimum value of 1` \u2014 it does NOT bind `null`. The throw is not scoped to the lookup: inside a `foreach` it kills the whole request, so one unset FK loses every other row\'s work. Read a nullable FK with the field-match form, which binds `null` on `0` and lets the loop finish: `s.db.get({ table, fieldName: "id", fieldValue: ref("row.fk"), as })`.',
1667
+ ' - \u26A0 `id` is validated `>= 1`, so the `0` sentinel an optional `f.tableRef` stores fails the request with HTTP 400 `Value is less than the minimum value of 1` \u2014 it does NOT bind `null`. The throw is not scoped to the lookup: inside a `foreach` it kills the whole request, so one unset FK loses every other row\'s work. Read a nullable FK with the field-match form, which binds `null` on `0` and lets the loop finish: `s.db.get({ table, fieldName: "id", fieldValue: ref("row.fk"), as })`. `export()` warns when the `id` is statically a `0` \u2014 the literal `c.int(0)`, an `inp()` whose declared input default is `0`, or a `ref()` to a column declared `default: 0` \u2014 and `--strict` fails the build.',
1648
1668
  "- `s.db.has({ table, fieldName?, fieldValue, as? })` \u2014 existence test.",
1649
1669
  "- `s.db.del({ table, fieldName?, fieldValue, as? })` \u2014 delete by field match.",
1650
1670
  "- `s.db.add({ table, row?, data?, output?, as? })` \u2014 insert; `row` is a partial keyed by column.",
@@ -1686,6 +1706,8 @@ function renderSections(m) {
1686
1706
  ' - `distinct` \u2014 `"auto"` (default) | `"yes"` | `"no"`, riding `context.return.<list|stream>.distinct`.',
1687
1707
  "- `s.db.truncate({ table, reset?, as? })` \xB7 `s.db.schema({ table, path, as? })`.",
1688
1708
  '- `s.db.direct_query({ sql, responseType?, args?, parser?, as? })` \u2014 `sql` is a **raw string** (not a `Value`); binds go in `args: Value[]`. `parser: "template_engine"` renders the body as a template first \u2014 how a query interpolates a column or table name a bound arg cannot carry; omit it for the default.',
1709
+ " - Template placeholders are Twig over the request scope: `{{ $input.name }}` for an input, `{{ $var.name }}` for a stack variable. \u26A0 A BARE `{{ name }}` renders as the empty string \u2014 HTTP 200, no error, a query that silently ran with a blank where the value belonged. A bound `?` arg carries a VALUE without the template at all.",
1710
+ " - \u26A0 A table's PHYSICAL name is **not stable across deploys**. A deploy is a full replace, so every table is created afresh and the id in its name moves every time \u2014 the same unchanged project redeployed three times gave one table three different names. Never store, cache, hardcode or fixture one: resolve it from `information_schema` inside the same request that uses it.",
1689
1711
  "- `s.db.external.<engine>.direct_query({ sql, connectionString, responseType?, args?, parser?, as? })` \u2014 same shape against an EXTERNAL database; `<engine>` is `postgres`/`mysql`/`mssql`/`oracle`/`snowflake`. `connectionString` is a `Value` \u2014 reach for `env(...)`, not a literal \u2014 stored as `context.connection_string_flex`. A bare string stores the older `context.connection_string` instead (an env-var name unless it looks like a URL); each form round-trips as itself.",
1690
1712
  "- `s.db.transaction({ body, as? })` \u2014 run a `Statement[]` atomically. `as` binds whatever the block returned.",
1691
1713
  "- `s.db.bulk.add({ table, items, allowIdField?, as? })` / `s.db.bulk.update` / `s.db.bulk.patch` \u2014 `items` is an array `Value`.",
@@ -0,0 +1,12 @@
1
+ import {
2
+ readLockFile,
3
+ writeLockFile
4
+ } from "./chunk-XEOX6AM7.js";
5
+ import "./chunk-GNPVYOPB.js";
6
+ import "./chunk-VAF6A3YD.js";
7
+ import "./chunk-OHX6MIUZ.js";
8
+ export {
9
+ readLockFile,
10
+ writeLockFile
11
+ };
12
+ //# sourceMappingURL=io-P2H75UV2.js.map
@@ -17,7 +17,8 @@ import {
17
17
  resolvePayloadKey,
18
18
  serializeLock,
19
19
  validateLockModel
20
- } from "./chunk-7JDT4PBU.js";
20
+ } from "./chunk-VAF6A3YD.js";
21
+ import "./chunk-OHX6MIUZ.js";
21
22
  export {
22
23
  CANONICAL_PAYLOAD_KEYS,
23
24
  LOCK_PAYLOAD_KEYS,
@@ -38,4 +39,4 @@ export {
38
39
  serializeLock,
39
40
  validateLockModel
40
41
  };
41
- //# sourceMappingURL=lock-GFXD6G2E.js.map
42
+ //# sourceMappingURL=lock-46FWYE4D.js.map
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  loadDefault
3
- } from "./chunk-ACCBOMCB.js";
3
+ } from "./chunk-RCT7UX7B.js";
4
4
  import "./chunk-CTD5ZCV6.js";
5
5
  import {
6
6
  readLockFile,
7
7
  writeLockFile
8
- } from "./chunk-OYMR5AMJ.js";
8
+ } from "./chunk-XEOX6AM7.js";
9
9
  import {
10
10
  UsageError,
11
11
  missingArgument,
@@ -15,11 +15,10 @@ import "./chunk-GNPVYOPB.js";
15
15
  import "./chunk-EZG76F7R.js";
16
16
  import {
17
17
  Xano
18
- } from "./chunk-VKSOTZK3.js";
18
+ } from "./chunk-OWGCOGKK.js";
19
19
  import "./chunk-DIA7CT7J.js";
20
- import "./chunk-LBYWGMOA.js";
20
+ import "./chunk-QK7ZQJLP.js";
21
21
  import "./chunk-WHOJWOSV.js";
22
- import "./chunk-5XZ744TS.js";
23
22
  import {
24
23
  adoptFromBundle,
25
24
  createLockContext,
@@ -28,7 +27,9 @@ import {
28
27
  resetLockOverrides,
29
28
  resolvePayloadKey,
30
29
  seedLockOverrides
31
- } from "./chunk-7JDT4PBU.js";
30
+ } from "./chunk-VAF6A3YD.js";
31
+ import "./chunk-5XZ744TS.js";
32
+ import "./chunk-OHX6MIUZ.js";
32
33
 
33
34
  // src/emit/lock-commands.ts
34
35
  import { existsSync, readFileSync } from "fs";
@@ -230,4 +231,4 @@ ${lines}
230
231
  export {
231
232
  runLockCommand
232
233
  };
233
- //# sourceMappingURL=lock-commands-DQ7CUMIV.js.map
234
+ //# sourceMappingURL=lock-commands-ZZKZ4LZJ.js.map