@lunora/codegen 1.0.0-alpha.250 → 1.0.0-alpha.251

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -2412,8 +2412,8 @@ declare const formatAdvisories: (findings: ReadonlyArray<Finding>) => string;
2412
2412
  * The canonical capability list. **Order is load-bearing** — every consumer
2413
2413
  * emits in row order (see the module doc). The `appMethod` rows reproduce the
2414
2414
  * original `LONG_TAIL` builder sequence (ai, aiSearch, analytics, artifacts, browser, hyperdrive,
2415
- * images, kv, payment, x402, r2sql, vectors), and the same order places the
2416
- * `ctx.*` fields and the ShardDO wiring.
2415
+ * images, kv, payment, x402, r2sql — `.vectors()` follows them, emitted off the
2416
+ * declaration), and the same order places the `ctx.*` fields and the ShardDO wiring.
2417
2417
  */
2418
2418
  declare const CAPABILITY_ROWS: readonly [{
2419
2419
  readonly contextProperty: "access";
@@ -2433,6 +2433,7 @@ declare const CAPABILITY_ROWS: readonly [{
2433
2433
  readonly key: "ai";
2434
2434
  readonly moduleSpecifier: "@lunora/ai";
2435
2435
  readonly requiredPackage: "@lunora/ai";
2436
+ readonly serverCtxField: "\n readonly ai: import(\"@lunora/ai\").LunoraAi;";
2436
2437
  readonly shardBinding: "bespoke";
2437
2438
  readonly tier: "action";
2438
2439
  }, {
@@ -2451,7 +2452,7 @@ declare const CAPABILITY_ROWS: readonly [{
2451
2452
  readonly envName: "AI_SEARCH";
2452
2453
  };
2453
2454
  readonly clientType: "AiSearch";
2454
- readonly missingMessage: "ctx.aiSearch: no AI Search binding found. Add an \\`ai_search_namespaces\\` binding (env.AI_SEARCH) to wrangler.jsonc, or point \\`defineApp().aiSearch((env) => …)\\` at yours.";
2455
+ readonly missingMessage: "ctx.aiSearch: no AI Search binding found. Add an `ai_search_namespaces` binding (env.AI_SEARCH) to wrangler.jsonc, or point `defineApp().aiSearch((env) => …)` at yours.";
2455
2456
  readonly stubMethods: readonly ["chatCompletions", "create", "delete", "get", "list", "search"];
2456
2457
  readonly syncStubMethods: readonly ["get"];
2457
2458
  };
@@ -2476,7 +2477,7 @@ declare const CAPABILITY_ROWS: readonly [{
2476
2477
  };
2477
2478
  };
2478
2479
  readonly clientType: "AnalyticsClient";
2479
- readonly missingMessage: "ctx.analytics: no Analytics Engine binding found. Add an \\`analytics_engine_datasets\\` binding (env.ANALYTICS) to wrangler.jsonc, or pass \\`analytics\\` to createShardDO().";
2480
+ readonly missingMessage: "ctx.analytics: no Analytics Engine binding found. Add an `analytics_engine_datasets` binding (env.ANALYTICS) to wrangler.jsonc, or pass `analytics` to createShardDO().";
2480
2481
  readonly stubMethods: readonly ["track", "writeDataPoint"];
2481
2482
  readonly syncStubMethods: readonly ["track", "writeDataPoint"];
2482
2483
  };
@@ -2502,7 +2503,7 @@ declare const CAPABILITY_ROWS: readonly [{
2502
2503
  };
2503
2504
  };
2504
2505
  readonly clientType: "ArtifactsClient";
2505
- readonly missingMessage: "ctx.artifacts: no Artifacts binding found. Add an \\`artifacts\\` binding ({ binding: \\\"ARTIFACTS\\\", namespace }) to wrangler.jsonc, or point ctx.artifacts at another binding with defineApp().artifacts((env) => env.<BINDING>).";
2506
+ readonly missingMessage: "ctx.artifacts: no Artifacts binding found. Add an `artifacts` binding ({ binding: \"ARTIFACTS\", namespace }) to wrangler.jsonc, or point ctx.artifacts at another binding with defineApp().artifacts((env) => env.<BINDING>).";
2506
2507
  readonly stubMethods: readonly ["authenticatedRemote", "create", "delete", "import", "info", "list", "withRepo"];
2507
2508
  readonly syncStubMethods: readonly ["authenticatedRemote"];
2508
2509
  };
@@ -2520,7 +2521,7 @@ declare const CAPABILITY_ROWS: readonly [{
2520
2521
  readonly serverCtxField: "\n /** Browser Rendering (screenshots/PDF/scrape). Non-deterministic — available only in actions. */\n readonly browser: import(\"@lunora/browser\").Browser;";
2521
2522
  readonly shardBinding: {
2522
2523
  readonly clientType: "Browser";
2523
- readonly missingMessage: "ctx.browser: provide a \\`browser\\` config thunk, e.g. \\`browser: (env) => createBrowser({ binding: env.BROWSER, launch })\\` with \\`import { launch } from '@cloudflare/playwright'\\`. Session reuse (connect/sessions) additionally needs those two exports passed the same way.";
2524
+ readonly missingMessage: "ctx.browser: provide a `browser` config thunk, e.g. `browser: (env) => createBrowser({ binding: env.BROWSER, launch })` with `import { launch } from '@cloudflare/playwright'`. Session reuse (connect/sessions) additionally needs those two exports passed the same way.";
2524
2525
  readonly stubMethods: readonly ["cancelCrawl", "connect", "content", "crawl", "crawlResult", "launch", "pdf", "quickAction", "scrape", "screenshot", "sessions"];
2525
2526
  };
2526
2527
  readonly tier: "action";
@@ -2545,7 +2546,7 @@ declare const CAPABILITY_ROWS: readonly [{
2545
2546
  readonly serverCtxField: "\n /**\n * External database access via Hyperdrive. Non-deterministic — available only in actions. Writes here are NOT tracked by Lunora live queries; subscriptions will not re-run on external DB changes.\n */\n readonly sql: import(\"@lunora/hyperdrive\").SqlClient;";
2546
2547
  readonly shardBinding: {
2547
2548
  readonly clientType: "SqlClient";
2548
- readonly missingMessage: "ctx.sql: provide a \\`sql\\` config thunk that builds a SqlClient from your driver, e.g. \\`sql: (env) => fromPostgresJs(postgres(env.HYPERDRIVE.connectionString))\\`.";
2549
+ readonly missingMessage: "ctx.sql: provide a `sql` config thunk that builds a SqlClient from your driver, e.g. `sql: (env) => fromPostgresJs(postgres(env.HYPERDRIVE.connectionString))`.";
2549
2550
  readonly stubMethods: readonly ["query"];
2550
2551
  };
2551
2552
  readonly tier: "action";
@@ -2570,7 +2571,7 @@ declare const CAPABILITY_ROWS: readonly [{
2570
2571
  };
2571
2572
  };
2572
2573
  readonly clientType: "Images";
2573
- readonly missingMessage: "ctx.images: no Images binding found. Add an \\`images\\` binding (env.IMAGES) to wrangler.jsonc, or pass \\`images\\` to createShardDO().";
2574
+ readonly missingMessage: "ctx.images: no Images binding found. Add an `images` binding (env.IMAGES) to wrangler.jsonc, or pass `images` to createShardDO().";
2574
2575
  readonly stubMethods: readonly ["info", "transform"];
2575
2576
  };
2576
2577
  readonly tier: "action";
@@ -2596,7 +2597,7 @@ declare const CAPABILITY_ROWS: readonly [{
2596
2597
  readonly unvouchableReads: readonly ["get", "getRaw", "getWithMetadata", "list"];
2597
2598
  };
2598
2599
  readonly clientType: "Kv";
2599
- readonly missingMessage: "ctx.kv: no KV binding found. Add a \\`kv_namespaces\\` binding (env.KV) to wrangler.jsonc, or pass \\`kv\\` to createShardDO().";
2600
+ readonly missingMessage: "ctx.kv: no KV binding found. Add a `kv_namespaces` binding (env.KV) to wrangler.jsonc, or pass `kv` to createShardDO().";
2600
2601
  readonly stubMethods: readonly ["delete", "get", "getRaw", "getWithMetadata", "list", "put"];
2601
2602
  };
2602
2603
  readonly tier: "every";
@@ -2627,6 +2628,9 @@ declare const CAPABILITY_ROWS: readonly [{
2627
2628
  readonly key: "x402";
2628
2629
  readonly moduleSpecifier: "@lunora/x402/pay";
2629
2630
  readonly requiredPackage: "@lunora/x402";
2631
+ readonly serverCtxField: "\n readonly x402: import(\"@lunora/x402/pay\").X402Pay;";
2632
+ readonly shardBinding: "bespoke";
2633
+ readonly tier: "action";
2630
2634
  }, {
2631
2635
  readonly contextProperty: "pipelines";
2632
2636
  readonly key: "pipelines";
@@ -2643,7 +2647,7 @@ declare const CAPABILITY_ROWS: readonly [{
2643
2647
  };
2644
2648
  };
2645
2649
  readonly clientType: "PipelineClient";
2646
- readonly missingMessage: "ctx.pipelines: no Pipelines binding found. Add a \\`pipelines\\` binding (env.PIPELINES) to wrangler.jsonc, or pass \\`pipelines\\` to createShardDO().";
2650
+ readonly missingMessage: "ctx.pipelines: no Pipelines binding found. Add a `pipelines` binding (env.PIPELINES) to wrangler.jsonc, or pass `pipelines` to createShardDO().";
2647
2651
  readonly stubMethods: readonly ["send"];
2648
2652
  };
2649
2653
  readonly tier: "action";
@@ -2669,11 +2673,6 @@ declare const CAPABILITY_ROWS: readonly [{
2669
2673
  readonly key: "storage";
2670
2674
  readonly moduleSpecifier: "@lunora/storage";
2671
2675
  }, {
2672
- readonly appMethod: {
2673
- readonly configKey: "vectors";
2674
- readonly doc: "Wire the Vectorize index map backing `ctx.vectors`.";
2675
- readonly method: "vectors";
2676
- };
2677
2676
  readonly contextProperty: "vectors";
2678
2677
  readonly key: "vectors";
2679
2678
  readonly moduleSpecifier: "@lunora/bindings/vectors";
@@ -2685,50 +2684,30 @@ declare const CAPABILITY_ROWS: readonly [{
2685
2684
  /** The literal union of every capability id — the single source of truth for `FeatureUsage`'s keys (so they cannot drift). */
2686
2685
  type CapabilityKey = (typeof CAPABILITY_ROWS)[number]["key"];
2687
2686
  /**
2688
- * Code-usage signals for every optional, package-backed feature, in a single
2689
- * pass over the `lunora/` source set. Each flag is `true` when a source imports
2690
- * the feature's `@lunora/*` package or reads its generated `ctx.*` helper. This
2691
- * is the one detection path for all of them — it subsumes the old standalone
2692
- * `discoverAiUsage` / `discoverPaymentUsage` probes (which were line-for-line
2693
- * copies of this same import-or-`ctx.X` check).
2694
- *
2695
- * The key set is derived from the {@link CAPABILITIES} table (its
2696
- * {@link CapabilityKey} union), so a capability added there is automatically
2697
- * probed here — the two can't drift. `ai` and `payments` gate whether codegen
2698
- * wires the SDK into the generated worker (so a non-AI app never imports
2699
- * `@lunora/ai`); the rest additionally feed the studio's nav gating via
2700
- * `buildStudioFeatures`. `mail` is import-only — it has no `ctx.mail`
2701
- * helper (mail is reached through its own client), so only a `@lunora/mail`
2702
- * import flips it here; a worker-entry wiring outside `lunora/` is caught
2703
- * instead by the package-dependency signal in `buildStudioFeatures`.
2704
- */
2705
- type FeatureUsage = Record<CapabilityKey, boolean>;
2706
- /**
2707
- * The set of `ctx` helper names the source reaches — a direct `ctx.PROPERTY`
2708
- * access, or a destructuring of the property off the context (`const { kv } =
2709
- * ctx`, `async ({ ctx: { kv } }) => …`).
2710
- *
2711
- * The context is resolved by BINDING, not by the identifier text `ctx`. A
2712
- * handler receives it as a property of one destructured argument, so the local
2713
- * name it lands under is the handler's to pick: `{ ctx }`, `{ ctx: context }`
2714
- * and `{ ctx: { secrets } }` are the same read. Matching the text `ctx`
2715
- * recognised only the first — and for `secrets`, which has no import arm and no
2716
- * {@link CAPABILITIES} row, nothing else covered the other two, so a renamed or
2717
- * destructured read built green on a host that rates the Secrets Store
2718
- * unsupported and threw on first use.
2719
- *
2720
- * Three descendant walks (bindings, then accesses and `const … = ctx` patterns),
2721
- * collected once per file: each context-bearing {@link CAPABILITIES} entry then
2722
- * just tests membership in this set, so detection is O(files × nodes) rather
2723
- * than O(files × features × nodes).
2687
+ * The usage-probe facets of every row, read-only — the view a consumer outside
2688
+ * codegen keys its own capability detection off (`@lunora/config`'s binding
2689
+ * inference), so the two cannot disagree on which import or `ctx.<property>`
2690
+ * read marks a capability used.
2724
2691
  */
2725
- declare const contextPropertiesRead: (sourceFile: SourceFile) => Set<string>;
2692
+ declare const CAPABILITY_PROBES: ReadonlyArray<{
2693
+ readonly contextProperty: string | undefined;
2694
+ readonly key: CapabilityKey;
2695
+ readonly moduleSpecifier: string;
2696
+ }>;
2697
+ /** The two per-file signals the capability probe reads. */
2698
+ interface SourceCapabilitySignals {
2699
+ /** The `ctx` helper names the file reads — see {@link contextPropertiesRead}. */
2700
+ contextReads: ReadonlySet<string>;
2701
+ /** Module specifiers of the file's static imports that survive compilation (type-only ones dropped — see {@link isTypeOnlyImport}). */
2702
+ valueImports: ReadonlySet<string>;
2703
+ }
2726
2704
  /**
2727
- * Detect code-usage of every package-backed feature across the function files
2728
- * under `lunora/`, in a single pass. The result feeds both worker gating (`ai` /
2729
- * `payments`) and — via `buildStudioFeatures` — the studio nav.
2705
+ * The capability signals of one source file: its value-import specifiers and its
2706
+ * `ctx.<property>` reads. The single reading behind codegen's usage probe —
2707
+ * exported so `@lunora/config`'s binding inference marks a capability used on
2708
+ * exactly the same imports and reads (matched against `CAPABILITY_PROBES`).
2730
2709
  */
2731
- declare const discoverFeatureUsage: (project: Project, lunoraDirectory: string) => FeatureUsage;
2710
+ declare const sourceCapabilitySignals: (sourceFile: SourceFile) => SourceCapabilitySignals;
2732
2711
  /** The default codegen target — today's behavior, byte-identical goldens. */
2733
2712
  declare const DEFAULT_TARGET = "cloudflare";
2734
2713
  /**
@@ -3527,8 +3506,8 @@ interface EmitServerOptions {
3527
3506
  /**
3528
3507
  * The package-backed capabilities the app uses (post platform gate). Each
3529
3508
  * used row of the `CAPABILITIES` table with a `serverCtxField` lands on the
3530
- * ctx interfaces its `tier` names; `ai` / `payments` / `x402` gate their
3531
- * bespoke ActionCtx fields off the same set.
3509
+ * ctx interfaces its `tier` names; `payments` gates its bespoke ActionCtx
3510
+ * field, and `ai` the `env.AI` binding field, off the same set.
3532
3511
  */
3533
3512
  capabilities?: ReadonlySet<CapabilityKey>;
3534
3513
  containers?: ReadonlyArray<ContainerIR>;
@@ -3662,8 +3641,8 @@ interface EmitAppOptions {
3662
3641
  * `defineApp` method (`.ai()`, `.kv()`, `.payment()`, …), which sets the
3663
3642
  * matching `createShardDO` config key. Usage-driven on purpose: each method's
3664
3643
  * parameter reads `ShardConfig[configKey]`, and the shard emits that config
3665
- * field on the same usage signal. `vectors` is the exception — its method
3666
- * follows {@link EmitAppOptions.hasVectors} + `vectorIndexCount`, not usage.
3644
+ * field on the same usage signal. `.vectors()` is not among them — it is
3645
+ * declaration-gated on {@link EmitAppOptions.hasVectors} + `vectorIndexCount`.
3667
3646
  */
3668
3647
  capabilities: ReadonlySet<CapabilityKey>;
3669
3648
  /**
@@ -4431,4 +4410,4 @@ declare const secretKindOf: (value: string) => string | undefined;
4431
4410
  /** A redacted preview of a secret value — first 4 chars plus its length, never the full value. */
4432
4411
  declare const redact: (value: string) => string;
4433
4412
  declare const VERSION = "0.0.0";
4434
- export { AGENTS_FILENAME, type AgentIR, type AuthApiCallIR, CONTAINERS_FILENAME, CodegenDiagnosticError, type CodegenOptions, type CodegenResult, type ContainerIR, type ContainerImageIR, type ContainerNamedImageIR, type ContextPropertyCallIR, type CronJobIR, DEFAULT_TARGET, type DefaultScheduledContainerIR, type DriftChange, type DriftRemediation, type DriftScope, type DurableObjectScheduledContainerIR, type EmitAppOptions, FLAGS_FILENAME, type FeatureUsage, type FieldSnapshot, type FlagsIR, type FunctionIR, GENERATED_HEADER, type HttpRouteIR, type IndexIR, type IndexSnapshot, type InsertWriteIR, LUNORA_ERROR_CODES, type LintSchemaOptions, type LoadedProjectConfig, type LunoraProjectConfig, MUTATORS_FILENAME, type MaskProcedureIR, type MigrationIR, type MutatorIR, NOTIFY_FILENAME, OPENRPC_VERSION, type OpenApiEmitInput, type OpenRpcDocument, type OpenRpcEmitInput, type OpenRpcMethod, PROJECT_CONFIG_FILENAMES, type PlatformDiagnostic, type ProjectConfigLiterals, type ProjectIR, QUEUES_FILENAME, type QueryReadIR, type QueueIR, type RelationSnapshot, type RlsMetadataIR, type RlsPolicyIR, type RlsProcedureIR, type RlsRoleIR, type RuntimeVerb, SCHEMA_SNAPSHOT_FILENAME, SCHEMA_SNAPSHOT_VERSION, SDK_LANGUAGES, SDK_TARGETS, SHAPES_FILENAME, type SandboxUsage, type SchemaDrift, type SchemaDriftDecision, type SchemaIR, type SchemaSnapshot, SchemaSnapshotParseError, type SdkFiles, type SdkMethod, type SdkNamespace, type SdkRenderInput, type SdkResult, type SdkTarget, type ServiceBindingIR, type ServiceLiteral, type ShapeIR, type StorageRuleIR, type StorageRulesMetadataIR, type TableIR, type TableSnapshot, type TopicIR, VERSION, type ValidatorIR, type VectorIndexIR, WORKFLOWS_FILENAME, type WorkflowIR, type WranglerVariableIR, buildOpenApiDocument, buildOpenRpcDocument, buildSchemaSnapshot, contextPropertiesRead, createCodegenProject, describeErrorLevelFindings, diagnosticAt, diffSchemaSnapshots, discoverAgents, discoverAuthApiCalls, discoverContainers, discoverCrons, discoverFeatureUsage, discoverFlags, discoverFunctions, discoverHttpRoutes, discoverHyperdriveCalls, discoverInserts, discoverMaskProcedures, discoverMigrations, discoverMutators, discoverNondeterministicCalls, discoverNotifyCalls, discoverNotifyConfig, discoverQueries, discoverQueues, discoverR2sqlCalls, discoverRlsMetadata, discoverRlsProcedures, discoverSandboxUsage, discoverSchema, discoverShapes, discoverStorageRulesMetadata, discoverWorkflows, emitAgents, emitApi, emitApp, emitCollections, emitContainers, emitCrons, emitDataModel, emitDrizzleSchema, emitFunctions, emitOpenApi, emitOpenApiModule, emitOpenRpc, emitOpenRpcModule, emitScheduler, emitServer, emitShard, emitVectors, emitWorkflows, emitWranglerCronTriggers, errorAdvisoryNames, errorPlatformDiagnosticNames, evaluateSchemaDrift, findProjectConfigFile, findTsconfig, fingerprintSchemaSources, formatAdvisories, generateSdk, isD1GlobalTable, isHyperdriveGlobalTable, isTypedSchema, lintSchema, listLunoraSourceFiles, loadProjectConfig, parseSchemaSnapshot, platformMatrixIds, readPackageDependencies, readProjectConfigLiterals, readProjectTarget, readServiceBindings, redact, refreshCodegenProject, resolveCodegenTarget, resolveServiceBindings, runCodegen, schemaFromIr, secretKindOf, serializeSchemaSnapshot, sortedUniqueNames, toAdvisorContext, validatorIrToJsonSchema };
4413
+ export { AGENTS_FILENAME, type AgentIR, type AuthApiCallIR, CAPABILITY_PROBES, CONTAINERS_FILENAME, type CapabilityKey, CodegenDiagnosticError, type CodegenOptions, type CodegenResult, type ContainerIR, type ContainerImageIR, type ContainerNamedImageIR, type ContextPropertyCallIR, type CronJobIR, DEFAULT_TARGET, type DefaultScheduledContainerIR, type DriftChange, type DriftRemediation, type DriftScope, type DurableObjectScheduledContainerIR, type EmitAppOptions, FLAGS_FILENAME, type FieldSnapshot, type FlagsIR, type FunctionIR, GENERATED_HEADER, type HttpRouteIR, type IndexIR, type IndexSnapshot, type InsertWriteIR, LUNORA_ERROR_CODES, type LintSchemaOptions, type LoadedProjectConfig, type LunoraProjectConfig, MUTATORS_FILENAME, type MaskProcedureIR, type MigrationIR, type MutatorIR, NOTIFY_FILENAME, OPENRPC_VERSION, type OpenApiEmitInput, type OpenRpcDocument, type OpenRpcEmitInput, type OpenRpcMethod, PROJECT_CONFIG_FILENAMES, type PlatformDiagnostic, type ProjectConfigLiterals, type ProjectIR, QUEUES_FILENAME, type QueryReadIR, type QueueIR, type RelationSnapshot, type RlsMetadataIR, type RlsPolicyIR, type RlsProcedureIR, type RlsRoleIR, type RuntimeVerb, SCHEMA_SNAPSHOT_FILENAME, SCHEMA_SNAPSHOT_VERSION, SDK_LANGUAGES, SDK_TARGETS, SHAPES_FILENAME, type SandboxUsage, type SchemaDrift, type SchemaDriftDecision, type SchemaIR, type SchemaSnapshot, SchemaSnapshotParseError, type SdkFiles, type SdkMethod, type SdkNamespace, type SdkRenderInput, type SdkResult, type SdkTarget, type ServiceBindingIR, type ServiceLiteral, type ShapeIR, type SourceCapabilitySignals, type StorageRuleIR, type StorageRulesMetadataIR, type TableIR, type TableSnapshot, type TopicIR, VERSION, type ValidatorIR, type VectorIndexIR, WORKFLOWS_FILENAME, type WorkflowIR, type WranglerVariableIR, buildOpenApiDocument, buildOpenRpcDocument, buildSchemaSnapshot, createCodegenProject, describeErrorLevelFindings, diagnosticAt, diffSchemaSnapshots, discoverAgents, discoverAuthApiCalls, discoverContainers, discoverCrons, discoverFlags, discoverFunctions, discoverHttpRoutes, discoverHyperdriveCalls, discoverInserts, discoverMaskProcedures, discoverMigrations, discoverMutators, discoverNondeterministicCalls, discoverNotifyCalls, discoverNotifyConfig, discoverQueries, discoverQueues, discoverR2sqlCalls, discoverRlsMetadata, discoverRlsProcedures, discoverSandboxUsage, discoverSchema, discoverShapes, discoverStorageRulesMetadata, discoverWorkflows, emitAgents, emitApi, emitApp, emitCollections, emitContainers, emitCrons, emitDataModel, emitDrizzleSchema, emitFunctions, emitOpenApi, emitOpenApiModule, emitOpenRpc, emitOpenRpcModule, emitScheduler, emitServer, emitShard, emitVectors, emitWorkflows, emitWranglerCronTriggers, errorAdvisoryNames, errorPlatformDiagnosticNames, evaluateSchemaDrift, findProjectConfigFile, findTsconfig, fingerprintSchemaSources, formatAdvisories, generateSdk, isD1GlobalTable, isHyperdriveGlobalTable, isTypedSchema, lintSchema, listLunoraSourceFiles, loadProjectConfig, parseSchemaSnapshot, platformMatrixIds, readPackageDependencies, readProjectConfigLiterals, readProjectTarget, readServiceBindings, redact, refreshCodegenProject, resolveCodegenTarget, resolveServiceBindings, runCodegen, schemaFromIr, secretKindOf, serializeSchemaSnapshot, sortedUniqueNames, sourceCapabilitySignals, toAdvisorContext, validatorIrToJsonSchema };
package/dist/index.d.ts CHANGED
@@ -2412,8 +2412,8 @@ declare const formatAdvisories: (findings: ReadonlyArray<Finding>) => string;
2412
2412
  * The canonical capability list. **Order is load-bearing** — every consumer
2413
2413
  * emits in row order (see the module doc). The `appMethod` rows reproduce the
2414
2414
  * original `LONG_TAIL` builder sequence (ai, aiSearch, analytics, artifacts, browser, hyperdrive,
2415
- * images, kv, payment, x402, r2sql, vectors), and the same order places the
2416
- * `ctx.*` fields and the ShardDO wiring.
2415
+ * images, kv, payment, x402, r2sql — `.vectors()` follows them, emitted off the
2416
+ * declaration), and the same order places the `ctx.*` fields and the ShardDO wiring.
2417
2417
  */
2418
2418
  declare const CAPABILITY_ROWS: readonly [{
2419
2419
  readonly contextProperty: "access";
@@ -2433,6 +2433,7 @@ declare const CAPABILITY_ROWS: readonly [{
2433
2433
  readonly key: "ai";
2434
2434
  readonly moduleSpecifier: "@lunora/ai";
2435
2435
  readonly requiredPackage: "@lunora/ai";
2436
+ readonly serverCtxField: "\n readonly ai: import(\"@lunora/ai\").LunoraAi;";
2436
2437
  readonly shardBinding: "bespoke";
2437
2438
  readonly tier: "action";
2438
2439
  }, {
@@ -2451,7 +2452,7 @@ declare const CAPABILITY_ROWS: readonly [{
2451
2452
  readonly envName: "AI_SEARCH";
2452
2453
  };
2453
2454
  readonly clientType: "AiSearch";
2454
- readonly missingMessage: "ctx.aiSearch: no AI Search binding found. Add an \\`ai_search_namespaces\\` binding (env.AI_SEARCH) to wrangler.jsonc, or point \\`defineApp().aiSearch((env) => …)\\` at yours.";
2455
+ readonly missingMessage: "ctx.aiSearch: no AI Search binding found. Add an `ai_search_namespaces` binding (env.AI_SEARCH) to wrangler.jsonc, or point `defineApp().aiSearch((env) => …)` at yours.";
2455
2456
  readonly stubMethods: readonly ["chatCompletions", "create", "delete", "get", "list", "search"];
2456
2457
  readonly syncStubMethods: readonly ["get"];
2457
2458
  };
@@ -2476,7 +2477,7 @@ declare const CAPABILITY_ROWS: readonly [{
2476
2477
  };
2477
2478
  };
2478
2479
  readonly clientType: "AnalyticsClient";
2479
- readonly missingMessage: "ctx.analytics: no Analytics Engine binding found. Add an \\`analytics_engine_datasets\\` binding (env.ANALYTICS) to wrangler.jsonc, or pass \\`analytics\\` to createShardDO().";
2480
+ readonly missingMessage: "ctx.analytics: no Analytics Engine binding found. Add an `analytics_engine_datasets` binding (env.ANALYTICS) to wrangler.jsonc, or pass `analytics` to createShardDO().";
2480
2481
  readonly stubMethods: readonly ["track", "writeDataPoint"];
2481
2482
  readonly syncStubMethods: readonly ["track", "writeDataPoint"];
2482
2483
  };
@@ -2502,7 +2503,7 @@ declare const CAPABILITY_ROWS: readonly [{
2502
2503
  };
2503
2504
  };
2504
2505
  readonly clientType: "ArtifactsClient";
2505
- readonly missingMessage: "ctx.artifacts: no Artifacts binding found. Add an \\`artifacts\\` binding ({ binding: \\\"ARTIFACTS\\\", namespace }) to wrangler.jsonc, or point ctx.artifacts at another binding with defineApp().artifacts((env) => env.<BINDING>).";
2506
+ readonly missingMessage: "ctx.artifacts: no Artifacts binding found. Add an `artifacts` binding ({ binding: \"ARTIFACTS\", namespace }) to wrangler.jsonc, or point ctx.artifacts at another binding with defineApp().artifacts((env) => env.<BINDING>).";
2506
2507
  readonly stubMethods: readonly ["authenticatedRemote", "create", "delete", "import", "info", "list", "withRepo"];
2507
2508
  readonly syncStubMethods: readonly ["authenticatedRemote"];
2508
2509
  };
@@ -2520,7 +2521,7 @@ declare const CAPABILITY_ROWS: readonly [{
2520
2521
  readonly serverCtxField: "\n /** Browser Rendering (screenshots/PDF/scrape). Non-deterministic — available only in actions. */\n readonly browser: import(\"@lunora/browser\").Browser;";
2521
2522
  readonly shardBinding: {
2522
2523
  readonly clientType: "Browser";
2523
- readonly missingMessage: "ctx.browser: provide a \\`browser\\` config thunk, e.g. \\`browser: (env) => createBrowser({ binding: env.BROWSER, launch })\\` with \\`import { launch } from '@cloudflare/playwright'\\`. Session reuse (connect/sessions) additionally needs those two exports passed the same way.";
2524
+ readonly missingMessage: "ctx.browser: provide a `browser` config thunk, e.g. `browser: (env) => createBrowser({ binding: env.BROWSER, launch })` with `import { launch } from '@cloudflare/playwright'`. Session reuse (connect/sessions) additionally needs those two exports passed the same way.";
2524
2525
  readonly stubMethods: readonly ["cancelCrawl", "connect", "content", "crawl", "crawlResult", "launch", "pdf", "quickAction", "scrape", "screenshot", "sessions"];
2525
2526
  };
2526
2527
  readonly tier: "action";
@@ -2545,7 +2546,7 @@ declare const CAPABILITY_ROWS: readonly [{
2545
2546
  readonly serverCtxField: "\n /**\n * External database access via Hyperdrive. Non-deterministic — available only in actions. Writes here are NOT tracked by Lunora live queries; subscriptions will not re-run on external DB changes.\n */\n readonly sql: import(\"@lunora/hyperdrive\").SqlClient;";
2546
2547
  readonly shardBinding: {
2547
2548
  readonly clientType: "SqlClient";
2548
- readonly missingMessage: "ctx.sql: provide a \\`sql\\` config thunk that builds a SqlClient from your driver, e.g. \\`sql: (env) => fromPostgresJs(postgres(env.HYPERDRIVE.connectionString))\\`.";
2549
+ readonly missingMessage: "ctx.sql: provide a `sql` config thunk that builds a SqlClient from your driver, e.g. `sql: (env) => fromPostgresJs(postgres(env.HYPERDRIVE.connectionString))`.";
2549
2550
  readonly stubMethods: readonly ["query"];
2550
2551
  };
2551
2552
  readonly tier: "action";
@@ -2570,7 +2571,7 @@ declare const CAPABILITY_ROWS: readonly [{
2570
2571
  };
2571
2572
  };
2572
2573
  readonly clientType: "Images";
2573
- readonly missingMessage: "ctx.images: no Images binding found. Add an \\`images\\` binding (env.IMAGES) to wrangler.jsonc, or pass \\`images\\` to createShardDO().";
2574
+ readonly missingMessage: "ctx.images: no Images binding found. Add an `images` binding (env.IMAGES) to wrangler.jsonc, or pass `images` to createShardDO().";
2574
2575
  readonly stubMethods: readonly ["info", "transform"];
2575
2576
  };
2576
2577
  readonly tier: "action";
@@ -2596,7 +2597,7 @@ declare const CAPABILITY_ROWS: readonly [{
2596
2597
  readonly unvouchableReads: readonly ["get", "getRaw", "getWithMetadata", "list"];
2597
2598
  };
2598
2599
  readonly clientType: "Kv";
2599
- readonly missingMessage: "ctx.kv: no KV binding found. Add a \\`kv_namespaces\\` binding (env.KV) to wrangler.jsonc, or pass \\`kv\\` to createShardDO().";
2600
+ readonly missingMessage: "ctx.kv: no KV binding found. Add a `kv_namespaces` binding (env.KV) to wrangler.jsonc, or pass `kv` to createShardDO().";
2600
2601
  readonly stubMethods: readonly ["delete", "get", "getRaw", "getWithMetadata", "list", "put"];
2601
2602
  };
2602
2603
  readonly tier: "every";
@@ -2627,6 +2628,9 @@ declare const CAPABILITY_ROWS: readonly [{
2627
2628
  readonly key: "x402";
2628
2629
  readonly moduleSpecifier: "@lunora/x402/pay";
2629
2630
  readonly requiredPackage: "@lunora/x402";
2631
+ readonly serverCtxField: "\n readonly x402: import(\"@lunora/x402/pay\").X402Pay;";
2632
+ readonly shardBinding: "bespoke";
2633
+ readonly tier: "action";
2630
2634
  }, {
2631
2635
  readonly contextProperty: "pipelines";
2632
2636
  readonly key: "pipelines";
@@ -2643,7 +2647,7 @@ declare const CAPABILITY_ROWS: readonly [{
2643
2647
  };
2644
2648
  };
2645
2649
  readonly clientType: "PipelineClient";
2646
- readonly missingMessage: "ctx.pipelines: no Pipelines binding found. Add a \\`pipelines\\` binding (env.PIPELINES) to wrangler.jsonc, or pass \\`pipelines\\` to createShardDO().";
2650
+ readonly missingMessage: "ctx.pipelines: no Pipelines binding found. Add a `pipelines` binding (env.PIPELINES) to wrangler.jsonc, or pass `pipelines` to createShardDO().";
2647
2651
  readonly stubMethods: readonly ["send"];
2648
2652
  };
2649
2653
  readonly tier: "action";
@@ -2669,11 +2673,6 @@ declare const CAPABILITY_ROWS: readonly [{
2669
2673
  readonly key: "storage";
2670
2674
  readonly moduleSpecifier: "@lunora/storage";
2671
2675
  }, {
2672
- readonly appMethod: {
2673
- readonly configKey: "vectors";
2674
- readonly doc: "Wire the Vectorize index map backing `ctx.vectors`.";
2675
- readonly method: "vectors";
2676
- };
2677
2676
  readonly contextProperty: "vectors";
2678
2677
  readonly key: "vectors";
2679
2678
  readonly moduleSpecifier: "@lunora/bindings/vectors";
@@ -2685,50 +2684,30 @@ declare const CAPABILITY_ROWS: readonly [{
2685
2684
  /** The literal union of every capability id — the single source of truth for `FeatureUsage`'s keys (so they cannot drift). */
2686
2685
  type CapabilityKey = (typeof CAPABILITY_ROWS)[number]["key"];
2687
2686
  /**
2688
- * Code-usage signals for every optional, package-backed feature, in a single
2689
- * pass over the `lunora/` source set. Each flag is `true` when a source imports
2690
- * the feature's `@lunora/*` package or reads its generated `ctx.*` helper. This
2691
- * is the one detection path for all of them — it subsumes the old standalone
2692
- * `discoverAiUsage` / `discoverPaymentUsage` probes (which were line-for-line
2693
- * copies of this same import-or-`ctx.X` check).
2694
- *
2695
- * The key set is derived from the {@link CAPABILITIES} table (its
2696
- * {@link CapabilityKey} union), so a capability added there is automatically
2697
- * probed here — the two can't drift. `ai` and `payments` gate whether codegen
2698
- * wires the SDK into the generated worker (so a non-AI app never imports
2699
- * `@lunora/ai`); the rest additionally feed the studio's nav gating via
2700
- * `buildStudioFeatures`. `mail` is import-only — it has no `ctx.mail`
2701
- * helper (mail is reached through its own client), so only a `@lunora/mail`
2702
- * import flips it here; a worker-entry wiring outside `lunora/` is caught
2703
- * instead by the package-dependency signal in `buildStudioFeatures`.
2704
- */
2705
- type FeatureUsage = Record<CapabilityKey, boolean>;
2706
- /**
2707
- * The set of `ctx` helper names the source reaches — a direct `ctx.PROPERTY`
2708
- * access, or a destructuring of the property off the context (`const { kv } =
2709
- * ctx`, `async ({ ctx: { kv } }) => …`).
2710
- *
2711
- * The context is resolved by BINDING, not by the identifier text `ctx`. A
2712
- * handler receives it as a property of one destructured argument, so the local
2713
- * name it lands under is the handler's to pick: `{ ctx }`, `{ ctx: context }`
2714
- * and `{ ctx: { secrets } }` are the same read. Matching the text `ctx`
2715
- * recognised only the first — and for `secrets`, which has no import arm and no
2716
- * {@link CAPABILITIES} row, nothing else covered the other two, so a renamed or
2717
- * destructured read built green on a host that rates the Secrets Store
2718
- * unsupported and threw on first use.
2719
- *
2720
- * Three descendant walks (bindings, then accesses and `const … = ctx` patterns),
2721
- * collected once per file: each context-bearing {@link CAPABILITIES} entry then
2722
- * just tests membership in this set, so detection is O(files × nodes) rather
2723
- * than O(files × features × nodes).
2687
+ * The usage-probe facets of every row, read-only — the view a consumer outside
2688
+ * codegen keys its own capability detection off (`@lunora/config`'s binding
2689
+ * inference), so the two cannot disagree on which import or `ctx.<property>`
2690
+ * read marks a capability used.
2724
2691
  */
2725
- declare const contextPropertiesRead: (sourceFile: SourceFile) => Set<string>;
2692
+ declare const CAPABILITY_PROBES: ReadonlyArray<{
2693
+ readonly contextProperty: string | undefined;
2694
+ readonly key: CapabilityKey;
2695
+ readonly moduleSpecifier: string;
2696
+ }>;
2697
+ /** The two per-file signals the capability probe reads. */
2698
+ interface SourceCapabilitySignals {
2699
+ /** The `ctx` helper names the file reads — see {@link contextPropertiesRead}. */
2700
+ contextReads: ReadonlySet<string>;
2701
+ /** Module specifiers of the file's static imports that survive compilation (type-only ones dropped — see {@link isTypeOnlyImport}). */
2702
+ valueImports: ReadonlySet<string>;
2703
+ }
2726
2704
  /**
2727
- * Detect code-usage of every package-backed feature across the function files
2728
- * under `lunora/`, in a single pass. The result feeds both worker gating (`ai` /
2729
- * `payments`) and — via `buildStudioFeatures` — the studio nav.
2705
+ * The capability signals of one source file: its value-import specifiers and its
2706
+ * `ctx.<property>` reads. The single reading behind codegen's usage probe —
2707
+ * exported so `@lunora/config`'s binding inference marks a capability used on
2708
+ * exactly the same imports and reads (matched against `CAPABILITY_PROBES`).
2730
2709
  */
2731
- declare const discoverFeatureUsage: (project: Project, lunoraDirectory: string) => FeatureUsage;
2710
+ declare const sourceCapabilitySignals: (sourceFile: SourceFile) => SourceCapabilitySignals;
2732
2711
  /** The default codegen target — today's behavior, byte-identical goldens. */
2733
2712
  declare const DEFAULT_TARGET = "cloudflare";
2734
2713
  /**
@@ -3527,8 +3506,8 @@ interface EmitServerOptions {
3527
3506
  /**
3528
3507
  * The package-backed capabilities the app uses (post platform gate). Each
3529
3508
  * used row of the `CAPABILITIES` table with a `serverCtxField` lands on the
3530
- * ctx interfaces its `tier` names; `ai` / `payments` / `x402` gate their
3531
- * bespoke ActionCtx fields off the same set.
3509
+ * ctx interfaces its `tier` names; `payments` gates its bespoke ActionCtx
3510
+ * field, and `ai` the `env.AI` binding field, off the same set.
3532
3511
  */
3533
3512
  capabilities?: ReadonlySet<CapabilityKey>;
3534
3513
  containers?: ReadonlyArray<ContainerIR>;
@@ -3662,8 +3641,8 @@ interface EmitAppOptions {
3662
3641
  * `defineApp` method (`.ai()`, `.kv()`, `.payment()`, …), which sets the
3663
3642
  * matching `createShardDO` config key. Usage-driven on purpose: each method's
3664
3643
  * parameter reads `ShardConfig[configKey]`, and the shard emits that config
3665
- * field on the same usage signal. `vectors` is the exception — its method
3666
- * follows {@link EmitAppOptions.hasVectors} + `vectorIndexCount`, not usage.
3644
+ * field on the same usage signal. `.vectors()` is not among them — it is
3645
+ * declaration-gated on {@link EmitAppOptions.hasVectors} + `vectorIndexCount`.
3667
3646
  */
3668
3647
  capabilities: ReadonlySet<CapabilityKey>;
3669
3648
  /**
@@ -4431,4 +4410,4 @@ declare const secretKindOf: (value: string) => string | undefined;
4431
4410
  /** A redacted preview of a secret value — first 4 chars plus its length, never the full value. */
4432
4411
  declare const redact: (value: string) => string;
4433
4412
  declare const VERSION = "0.0.0";
4434
- export { AGENTS_FILENAME, type AgentIR, type AuthApiCallIR, CONTAINERS_FILENAME, CodegenDiagnosticError, type CodegenOptions, type CodegenResult, type ContainerIR, type ContainerImageIR, type ContainerNamedImageIR, type ContextPropertyCallIR, type CronJobIR, DEFAULT_TARGET, type DefaultScheduledContainerIR, type DriftChange, type DriftRemediation, type DriftScope, type DurableObjectScheduledContainerIR, type EmitAppOptions, FLAGS_FILENAME, type FeatureUsage, type FieldSnapshot, type FlagsIR, type FunctionIR, GENERATED_HEADER, type HttpRouteIR, type IndexIR, type IndexSnapshot, type InsertWriteIR, LUNORA_ERROR_CODES, type LintSchemaOptions, type LoadedProjectConfig, type LunoraProjectConfig, MUTATORS_FILENAME, type MaskProcedureIR, type MigrationIR, type MutatorIR, NOTIFY_FILENAME, OPENRPC_VERSION, type OpenApiEmitInput, type OpenRpcDocument, type OpenRpcEmitInput, type OpenRpcMethod, PROJECT_CONFIG_FILENAMES, type PlatformDiagnostic, type ProjectConfigLiterals, type ProjectIR, QUEUES_FILENAME, type QueryReadIR, type QueueIR, type RelationSnapshot, type RlsMetadataIR, type RlsPolicyIR, type RlsProcedureIR, type RlsRoleIR, type RuntimeVerb, SCHEMA_SNAPSHOT_FILENAME, SCHEMA_SNAPSHOT_VERSION, SDK_LANGUAGES, SDK_TARGETS, SHAPES_FILENAME, type SandboxUsage, type SchemaDrift, type SchemaDriftDecision, type SchemaIR, type SchemaSnapshot, SchemaSnapshotParseError, type SdkFiles, type SdkMethod, type SdkNamespace, type SdkRenderInput, type SdkResult, type SdkTarget, type ServiceBindingIR, type ServiceLiteral, type ShapeIR, type StorageRuleIR, type StorageRulesMetadataIR, type TableIR, type TableSnapshot, type TopicIR, VERSION, type ValidatorIR, type VectorIndexIR, WORKFLOWS_FILENAME, type WorkflowIR, type WranglerVariableIR, buildOpenApiDocument, buildOpenRpcDocument, buildSchemaSnapshot, contextPropertiesRead, createCodegenProject, describeErrorLevelFindings, diagnosticAt, diffSchemaSnapshots, discoverAgents, discoverAuthApiCalls, discoverContainers, discoverCrons, discoverFeatureUsage, discoverFlags, discoverFunctions, discoverHttpRoutes, discoverHyperdriveCalls, discoverInserts, discoverMaskProcedures, discoverMigrations, discoverMutators, discoverNondeterministicCalls, discoverNotifyCalls, discoverNotifyConfig, discoverQueries, discoverQueues, discoverR2sqlCalls, discoverRlsMetadata, discoverRlsProcedures, discoverSandboxUsage, discoverSchema, discoverShapes, discoverStorageRulesMetadata, discoverWorkflows, emitAgents, emitApi, emitApp, emitCollections, emitContainers, emitCrons, emitDataModel, emitDrizzleSchema, emitFunctions, emitOpenApi, emitOpenApiModule, emitOpenRpc, emitOpenRpcModule, emitScheduler, emitServer, emitShard, emitVectors, emitWorkflows, emitWranglerCronTriggers, errorAdvisoryNames, errorPlatformDiagnosticNames, evaluateSchemaDrift, findProjectConfigFile, findTsconfig, fingerprintSchemaSources, formatAdvisories, generateSdk, isD1GlobalTable, isHyperdriveGlobalTable, isTypedSchema, lintSchema, listLunoraSourceFiles, loadProjectConfig, parseSchemaSnapshot, platformMatrixIds, readPackageDependencies, readProjectConfigLiterals, readProjectTarget, readServiceBindings, redact, refreshCodegenProject, resolveCodegenTarget, resolveServiceBindings, runCodegen, schemaFromIr, secretKindOf, serializeSchemaSnapshot, sortedUniqueNames, toAdvisorContext, validatorIrToJsonSchema };
4413
+ export { AGENTS_FILENAME, type AgentIR, type AuthApiCallIR, CAPABILITY_PROBES, CONTAINERS_FILENAME, type CapabilityKey, CodegenDiagnosticError, type CodegenOptions, type CodegenResult, type ContainerIR, type ContainerImageIR, type ContainerNamedImageIR, type ContextPropertyCallIR, type CronJobIR, DEFAULT_TARGET, type DefaultScheduledContainerIR, type DriftChange, type DriftRemediation, type DriftScope, type DurableObjectScheduledContainerIR, type EmitAppOptions, FLAGS_FILENAME, type FieldSnapshot, type FlagsIR, type FunctionIR, GENERATED_HEADER, type HttpRouteIR, type IndexIR, type IndexSnapshot, type InsertWriteIR, LUNORA_ERROR_CODES, type LintSchemaOptions, type LoadedProjectConfig, type LunoraProjectConfig, MUTATORS_FILENAME, type MaskProcedureIR, type MigrationIR, type MutatorIR, NOTIFY_FILENAME, OPENRPC_VERSION, type OpenApiEmitInput, type OpenRpcDocument, type OpenRpcEmitInput, type OpenRpcMethod, PROJECT_CONFIG_FILENAMES, type PlatformDiagnostic, type ProjectConfigLiterals, type ProjectIR, QUEUES_FILENAME, type QueryReadIR, type QueueIR, type RelationSnapshot, type RlsMetadataIR, type RlsPolicyIR, type RlsProcedureIR, type RlsRoleIR, type RuntimeVerb, SCHEMA_SNAPSHOT_FILENAME, SCHEMA_SNAPSHOT_VERSION, SDK_LANGUAGES, SDK_TARGETS, SHAPES_FILENAME, type SandboxUsage, type SchemaDrift, type SchemaDriftDecision, type SchemaIR, type SchemaSnapshot, SchemaSnapshotParseError, type SdkFiles, type SdkMethod, type SdkNamespace, type SdkRenderInput, type SdkResult, type SdkTarget, type ServiceBindingIR, type ServiceLiteral, type ShapeIR, type SourceCapabilitySignals, type StorageRuleIR, type StorageRulesMetadataIR, type TableIR, type TableSnapshot, type TopicIR, VERSION, type ValidatorIR, type VectorIndexIR, WORKFLOWS_FILENAME, type WorkflowIR, type WranglerVariableIR, buildOpenApiDocument, buildOpenRpcDocument, buildSchemaSnapshot, createCodegenProject, describeErrorLevelFindings, diagnosticAt, diffSchemaSnapshots, discoverAgents, discoverAuthApiCalls, discoverContainers, discoverCrons, discoverFlags, discoverFunctions, discoverHttpRoutes, discoverHyperdriveCalls, discoverInserts, discoverMaskProcedures, discoverMigrations, discoverMutators, discoverNondeterministicCalls, discoverNotifyCalls, discoverNotifyConfig, discoverQueries, discoverQueues, discoverR2sqlCalls, discoverRlsMetadata, discoverRlsProcedures, discoverSandboxUsage, discoverSchema, discoverShapes, discoverStorageRulesMetadata, discoverWorkflows, emitAgents, emitApi, emitApp, emitCollections, emitContainers, emitCrons, emitDataModel, emitDrizzleSchema, emitFunctions, emitOpenApi, emitOpenApiModule, emitOpenRpc, emitOpenRpcModule, emitScheduler, emitServer, emitShard, emitVectors, emitWorkflows, emitWranglerCronTriggers, errorAdvisoryNames, errorPlatformDiagnosticNames, evaluateSchemaDrift, findProjectConfigFile, findTsconfig, fingerprintSchemaSources, formatAdvisories, generateSdk, isD1GlobalTable, isHyperdriveGlobalTable, isTypedSchema, lintSchema, listLunoraSourceFiles, loadProjectConfig, parseSchemaSnapshot, platformMatrixIds, readPackageDependencies, readProjectConfigLiterals, readProjectTarget, readServiceBindings, redact, refreshCodegenProject, resolveCodegenTarget, resolveServiceBindings, runCodegen, schemaFromIr, secretKindOf, serializeSchemaSnapshot, sortedUniqueNames, sourceCapabilitySignals, toAdvisorContext, validatorIrToJsonSchema };
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{SCHEMA_SNAPSHOT_VERSION as t,diffSchemaSnapshots as s,serializeSchemaSnapshot as a}from"./packem_shared/SCHEMA_SNAPSHOT_VERSION-C0oHwiJZ.mjs";import{formatAdvisories as m,lintSchema as f,toAdvisorContext as d}from"./packem_shared/formatAdvisories-DwmUKYuc.mjs";import{describeErrorLevelFindings as c,errorAdvisoryNames as n,errorPlatformDiagnosticNames as l,sortedUniqueNames as x}from"./packem_shared/describeErrorLevelFindings-vzaGS9KL.mjs";import{CodegenDiagnosticError as u,diagnosticAt as E}from"./packem_shared/CodegenDiagnosticError-BUXlG3P-.mjs";import{AGENTS_FILENAME as v,discoverAgents as N}from"./packem_shared/AGENTS_FILENAME-D8SgT3OR.mjs";import{listLunoraSourceFiles as C}from"./packem_shared/listLunoraSourceFiles-CSlcBYlo.mjs";import{default as R}from"./packem_shared/discoverAuthApiCalls-DoSN_yc3.mjs";import{CONTAINERS_FILENAME as T,discoverContainers as _}from"./packem_shared/CONTAINERS_FILENAME-C13yKxas.mjs";import{default as F}from"./packem_shared/discoverCrons-BEALHx1S.mjs";import{contextPropertiesRead as I,discoverFeatureUsage as P}from"./packem_shared/contextPropertiesRead-BGy4tGCY.mjs";import{FLAGS_FILENAME as U,discoverFlags as G}from"./packem_shared/FLAGS_FILENAME-W5XQz_Po.mjs";import{default as H}from"./packem_shared/discoverFunctions-BcBzcG5x.mjs";import{default as j}from"./packem_shared/discoverHttpRoutes-CJHS4llq.mjs";import{default as W}from"./packem_shared/discoverHyperdriveCalls-Bkbh4tG7.mjs";import{default as V}from"./packem_shared/discoverInserts-DpuLYPPd.mjs";import{d as B}from"./packem_shared/index-D7dKfGPh.mjs";import{default as q}from"./packem_shared/discoverMigrations-Dt7ywfZv.mjs";import{MUTATORS_FILENAME as J,discoverMutators as Y}from"./packem_shared/MUTATORS_FILENAME-DqWOgC5Z.mjs";import{default as Z}from"./packem_shared/discoverNondeterministicCalls-CNJV2BiP.mjs";import{NOTIFY_FILENAME as ee,discoverNotifyCalls as re,discoverNotifyConfig as oe}from"./packem_shared/NOTIFY_FILENAME-C1J_47et.mjs";import{default as se}from"./packem_shared/readPackageDependencies-C6h6FZuP.mjs";import{default as ie}from"./packem_shared/discoverQueries-BcdqjYky.mjs";import{QUEUES_FILENAME as fe,discoverQueues as de}from"./packem_shared/QUEUES_FILENAME-RGwht3Xu.mjs";import{default as ce}from"./packem_shared/discoverR2sqlCalls-30Wtbc0P.mjs";import{default as le}from"./packem_shared/discoverRlsProcedures-F4Cy-kSi.mjs";import{default as Se}from"./packem_shared/discoverRlsMetadata-mXBmPOGj.mjs";import{discoverSandboxUsage as Ee}from"./packem_shared/discoverSandboxUsage-BnsPld5I.mjs";import{default as ve}from"./packem_shared/discoverSchema-D5R60b4F.mjs";import{readServiceBindings as ge,resolveServiceBindings as Ce}from"./packem_shared/readServiceBindings-CeQvSswr.mjs";import{SHAPES_FILENAME as Re,discoverShapes as Me}from"./packem_shared/SHAPES_FILENAME-DRUFomCj.mjs";import{default as _e}from"./packem_shared/discoverStorageRulesMetadata-D3Ot9g5f.mjs";import{WORKFLOWS_FILENAME as Fe,discoverWorkflows as Le}from"./packem_shared/WORKFLOWS_FILENAME-4-ib4HH-.mjs";import{emitApp as Pe}from"./packem_shared/emitApp-T_My13i6.mjs";import{isD1GlobalTable as Ue,isHyperdriveGlobalTable as Ge}from"./packem_shared/isD1GlobalTable-udvHAAzD.mjs";import{buildOpenApiDocument as He,emitOpenApi as ye,emitOpenApiModule as je}from"./packem_shared/buildOpenApiDocument-SxfElVzK.mjs";import{OPENRPC_VERSION as We,buildOpenRpcDocument as Ke,emitOpenRpc as Ve,emitOpenRpcModule as ze}from"./packem_shared/OPENRPC_VERSION-Cr7Zzp6s.mjs";import{DEFAULT_TARGET as Qe,platformMatrixIds as qe,readProjectTarget as we,resolveCodegenTarget as Je}from"./packem_shared/DEFAULT_TARGET-vMWzRzRF.mjs";import{loadProjectConfig as Xe,readProjectConfigLiterals as Ze}from"./packem_shared/loadProjectConfig-nNIDOrlR.mjs";import{SCHEMA_SNAPSHOT_FILENAME as er,createCodegenProject as rr,findTsconfig as or,refreshCodegenProject as tr,runCodegen as sr}from"./packem_shared/SCHEMA_SNAPSHOT_FILENAME-jefy8GTn.mjs";import{SchemaSnapshotParseError as ir,buildSchemaSnapshot as mr,evaluateSchemaDrift as fr,parseSchemaSnapshot as dr}from"./packem_shared/SchemaSnapshotParseError-CPOXlFhI.mjs";import{default as cr}from"./packem_shared/fingerprintSchemaSources-Cl1CJFeh.mjs";import{schemaFromIr as lr}from"./packem_shared/schemaFromIr-BWFnvCVg.mjs";import{LUNORA_ERROR_CODES as Sr,validatorIrToJsonSchema as ur}from"./packem_shared/LUNORA_ERROR_CODES-C2s0xWQD.mjs";import{SDK_LANGUAGES as Ar,SDK_TARGETS as vr,generateSdk as Nr}from"./packem_shared/SDK_LANGUAGES-Df_CnJx5.mjs";import{redact as Cr,secretKindOf as Or}from"./packem_shared/redact-Cy14LEnc.mjs";import{default as Mr}from"./packem_shared/emitDrizzleSchema-Cv0HtLR3.mjs";import{default as _r}from"./packem_shared/emitFunctions-BgNeOZt_.mjs";import{default as Fr}from"./packem_shared/emitServer-DQxwHVPM.mjs";import{e as Ir}from"./packem_shared/shard-f7coQFS9.mjs";import{G as Dr}from"./packem_shared/shared-DjUziztz.mjs";import{MESSAGE_SOLUTIONS as Gr,findSolutionByMessage as br}from"@lunora/errors";import{PROJECT_CONFIG_FILENAMES as yr,findProjectConfigFile as jr}from"./packem_shared/PROJECT_CONFIG_FILENAMES-DzOu-lSc.mjs";import{t as Wr,u as Kr,v as Vr}from"./packem_shared/shard-runtime-CyEbIjPA.mjs";import{emitApi as Br,emitCollections as Qr}from"./packem_shared/emitApi-DdW9RyGG.mjs";import{emitCrons as wr,emitScheduler as Jr,emitVectors as Yr,emitWranglerCronTriggers as Xr}from"./packem_shared/emitCrons-BRKXFGFu.mjs";import{emitDataModel as $r}from"./packem_shared/emitDataModel-D3WuEZ4b.mjs";import{isTypedSchema as ro}from"./packem_shared/isTypedSchema-CKzc3ioR.mjs";const e="0.0.0";export{v as AGENTS_FILENAME,T as CONTAINERS_FILENAME,u as CodegenDiagnosticError,Qe as DEFAULT_TARGET,U as FLAGS_FILENAME,Dr as GENERATED_HEADER,Sr as LUNORA_ERROR_CODES,Gr as LUNORA_SOLUTION_RULES,J as MUTATORS_FILENAME,ee as NOTIFY_FILENAME,We as OPENRPC_VERSION,yr as PROJECT_CONFIG_FILENAMES,fe as QUEUES_FILENAME,er as SCHEMA_SNAPSHOT_FILENAME,t as SCHEMA_SNAPSHOT_VERSION,Ar as SDK_LANGUAGES,vr as SDK_TARGETS,Re as SHAPES_FILENAME,ir as SchemaSnapshotParseError,e as VERSION,Fe as WORKFLOWS_FILENAME,He as buildOpenApiDocument,Ke as buildOpenRpcDocument,mr as buildSchemaSnapshot,I as contextPropertiesRead,rr as createCodegenProject,c as describeErrorLevelFindings,E as diagnosticAt,s as diffSchemaSnapshots,N as discoverAgents,R as discoverAuthApiCalls,_ as discoverContainers,F as discoverCrons,P as discoverFeatureUsage,G as discoverFlags,H as discoverFunctions,j as discoverHttpRoutes,W as discoverHyperdriveCalls,V as discoverInserts,B as discoverMaskProcedures,q as discoverMigrations,Y as discoverMutators,Z as discoverNondeterministicCalls,re as discoverNotifyCalls,oe as discoverNotifyConfig,ie as discoverQueries,de as discoverQueues,ce as discoverR2sqlCalls,Se as discoverRlsMetadata,le as discoverRlsProcedures,Ee as discoverSandboxUsage,ve as discoverSchema,Me as discoverShapes,_e as discoverStorageRulesMetadata,Le as discoverWorkflows,Wr as emitAgents,Br as emitApi,Pe as emitApp,Qr as emitCollections,Kr as emitContainers,wr as emitCrons,$r as emitDataModel,Mr as emitDrizzleSchema,_r as emitFunctions,ye as emitOpenApi,je as emitOpenApiModule,Ve as emitOpenRpc,ze as emitOpenRpcModule,Jr as emitScheduler,Fr as emitServer,Ir as emitShard,Yr as emitVectors,Vr as emitWorkflows,Xr as emitWranglerCronTriggers,n as errorAdvisoryNames,l as errorPlatformDiagnosticNames,fr as evaluateSchemaDrift,br as findLunoraSolution,jr as findProjectConfigFile,or as findTsconfig,cr as fingerprintSchemaSources,m as formatAdvisories,Nr as generateSdk,Ue as isD1GlobalTable,Ge as isHyperdriveGlobalTable,ro as isTypedSchema,f as lintSchema,C as listLunoraSourceFiles,Xe as loadProjectConfig,dr as parseSchemaSnapshot,qe as platformMatrixIds,se as readPackageDependencies,Ze as readProjectConfigLiterals,we as readProjectTarget,ge as readServiceBindings,Cr as redact,tr as refreshCodegenProject,Je as resolveCodegenTarget,Ce as resolveServiceBindings,sr as runCodegen,lr as schemaFromIr,Or as secretKindOf,a as serializeSchemaSnapshot,x as sortedUniqueNames,d as toAdvisorContext,ur as validatorIrToJsonSchema};
1
+ import{SCHEMA_SNAPSHOT_VERSION as t,diffSchemaSnapshots as s,serializeSchemaSnapshot as a}from"./packem_shared/SCHEMA_SNAPSHOT_VERSION-C0oHwiJZ.mjs";import{formatAdvisories as m,lintSchema as f,toAdvisorContext as d}from"./packem_shared/formatAdvisories-DwmUKYuc.mjs";import{describeErrorLevelFindings as c,errorAdvisoryNames as n,errorPlatformDiagnosticNames as l,sortedUniqueNames as x}from"./packem_shared/describeErrorLevelFindings-vzaGS9KL.mjs";import{CAPABILITY_PROBES as E}from"./packem_shared/CAPABILITY_PROBES-BbW-W0N2.mjs";import{CodegenDiagnosticError as A,diagnosticAt as v}from"./packem_shared/CodegenDiagnosticError-BUXlG3P-.mjs";import{AGENTS_FILENAME as g,discoverAgents as C}from"./packem_shared/AGENTS_FILENAME-D8SgT3OR.mjs";import{listLunoraSourceFiles as R}from"./packem_shared/listLunoraSourceFiles-CSlcBYlo.mjs";import{default as _}from"./packem_shared/discoverAuthApiCalls-DoSN_yc3.mjs";import{CONTAINERS_FILENAME as L,discoverContainers as M}from"./packem_shared/CONTAINERS_FILENAME-C13yKxas.mjs";import{default as F}from"./packem_shared/discoverCrons-BEALHx1S.mjs";import{sourceCapabilitySignals as D}from"./packem_shared/sourceCapabilitySignals-oZFprILA.mjs";import{FLAGS_FILENAME as U,discoverFlags as b}from"./packem_shared/FLAGS_FILENAME-W5XQz_Po.mjs";import{default as y}from"./packem_shared/discoverFunctions-BcBzcG5x.mjs";import{default as k}from"./packem_shared/discoverHttpRoutes-CJHS4llq.mjs";import{default as W}from"./packem_shared/discoverHyperdriveCalls-Bkbh4tG7.mjs";import{default as V}from"./packem_shared/discoverInserts-DpuLYPPd.mjs";import{d as Q}from"./packem_shared/index-D7dKfGPh.mjs";import{default as w}from"./packem_shared/discoverMigrations-Dt7ywfZv.mjs";import{MUTATORS_FILENAME as Y,discoverMutators as X}from"./packem_shared/MUTATORS_FILENAME-DqWOgC5Z.mjs";import{default as $}from"./packem_shared/discoverNondeterministicCalls-CNJV2BiP.mjs";import{NOTIFY_FILENAME as re,discoverNotifyCalls as oe,discoverNotifyConfig as te}from"./packem_shared/NOTIFY_FILENAME-C1J_47et.mjs";import{default as ae}from"./packem_shared/readPackageDependencies-C6h6FZuP.mjs";import{default as me}from"./packem_shared/discoverQueries-BcdqjYky.mjs";import{QUEUES_FILENAME as de,discoverQueues as pe}from"./packem_shared/QUEUES_FILENAME-RGwht3Xu.mjs";import{default as ne}from"./packem_shared/discoverR2sqlCalls-30Wtbc0P.mjs";import{default as xe}from"./packem_shared/discoverRlsProcedures-F4Cy-kSi.mjs";import{default as Ee}from"./packem_shared/discoverRlsMetadata-mXBmPOGj.mjs";import{discoverSandboxUsage as Ae}from"./packem_shared/discoverSandboxUsage-BnsPld5I.mjs";import{default as Ne}from"./packem_shared/discoverSchema-D5R60b4F.mjs";import{readServiceBindings as Ce,resolveServiceBindings as Oe}from"./packem_shared/readServiceBindings-CeQvSswr.mjs";import{SHAPES_FILENAME as Te,discoverShapes as _e}from"./packem_shared/SHAPES_FILENAME-DRUFomCj.mjs";import{default as Le}from"./packem_shared/discoverStorageRulesMetadata-D3Ot9g5f.mjs";import{WORKFLOWS_FILENAME as he,discoverWorkflows as Fe}from"./packem_shared/WORKFLOWS_FILENAME-4-ib4HH-.mjs";import{emitApp as De}from"./packem_shared/emitApp-Cp0kB4-N.mjs";import{isD1GlobalTable as Ue,isHyperdriveGlobalTable as be}from"./packem_shared/isD1GlobalTable-udvHAAzD.mjs";import{buildOpenApiDocument as ye,emitOpenApi as je,emitOpenApiModule as ke}from"./packem_shared/buildOpenApiDocument-SxfElVzK.mjs";import{OPENRPC_VERSION as We,buildOpenRpcDocument as Ke,emitOpenRpc as Ve,emitOpenRpcModule as ze}from"./packem_shared/OPENRPC_VERSION-Cr7Zzp6s.mjs";import{DEFAULT_TARGET as qe,platformMatrixIds as we,readProjectTarget as Je,resolveCodegenTarget as Ye}from"./packem_shared/DEFAULT_TARGET-vMWzRzRF.mjs";import{loadProjectConfig as Ze,readProjectConfigLiterals as $e}from"./packem_shared/loadProjectConfig-nNIDOrlR.mjs";import{SCHEMA_SNAPSHOT_FILENAME as rr,createCodegenProject as or,findTsconfig as tr,refreshCodegenProject as sr,runCodegen as ar}from"./packem_shared/SCHEMA_SNAPSHOT_FILENAME-qrQnFo7L.mjs";import{SchemaSnapshotParseError as mr,buildSchemaSnapshot as fr,evaluateSchemaDrift as dr,parseSchemaSnapshot as pr}from"./packem_shared/SchemaSnapshotParseError-CPOXlFhI.mjs";import{default as nr}from"./packem_shared/fingerprintSchemaSources-Cl1CJFeh.mjs";import{schemaFromIr as xr}from"./packem_shared/schemaFromIr-BWFnvCVg.mjs";import{LUNORA_ERROR_CODES as Er,validatorIrToJsonSchema as ur}from"./packem_shared/LUNORA_ERROR_CODES-C2s0xWQD.mjs";import{SDK_LANGUAGES as vr,SDK_TARGETS as Nr,generateSdk as gr}from"./packem_shared/SDK_LANGUAGES-Df_CnJx5.mjs";import{redact as Or,secretKindOf as Rr}from"./packem_shared/redact-Cy14LEnc.mjs";import{default as _r}from"./packem_shared/emitDrizzleSchema-Cv0HtLR3.mjs";import{default as Lr}from"./packem_shared/emitFunctions-BgNeOZt_.mjs";import{default as hr}from"./packem_shared/emitServer-BOpHpi8r.mjs";import{e as Pr}from"./packem_shared/shard-CyNCZP7J.mjs";import{G as Gr}from"./packem_shared/shared-DjUziztz.mjs";import{MESSAGE_SOLUTIONS as br,findSolutionByMessage as Hr}from"@lunora/errors";import{PROJECT_CONFIG_FILENAMES as jr,findProjectConfigFile as kr}from"./packem_shared/PROJECT_CONFIG_FILENAMES-DzOu-lSc.mjs";import{s as Wr,t as Kr,u as Vr}from"./packem_shared/shard-runtime-DMN3MgIM.mjs";import{emitApi as Qr,emitCollections as qr}from"./packem_shared/emitApi-DdW9RyGG.mjs";import{emitCrons as Jr,emitScheduler as Yr,emitVectors as Xr,emitWranglerCronTriggers as Zr}from"./packem_shared/emitCrons-BRKXFGFu.mjs";import{emitDataModel as eo}from"./packem_shared/emitDataModel-D3WuEZ4b.mjs";import{isTypedSchema as oo}from"./packem_shared/isTypedSchema-CKzc3ioR.mjs";const e="0.0.0";export{g as AGENTS_FILENAME,E as CAPABILITY_PROBES,L as CONTAINERS_FILENAME,A as CodegenDiagnosticError,qe as DEFAULT_TARGET,U as FLAGS_FILENAME,Gr as GENERATED_HEADER,Er as LUNORA_ERROR_CODES,br as LUNORA_SOLUTION_RULES,Y as MUTATORS_FILENAME,re as NOTIFY_FILENAME,We as OPENRPC_VERSION,jr as PROJECT_CONFIG_FILENAMES,de as QUEUES_FILENAME,rr as SCHEMA_SNAPSHOT_FILENAME,t as SCHEMA_SNAPSHOT_VERSION,vr as SDK_LANGUAGES,Nr as SDK_TARGETS,Te as SHAPES_FILENAME,mr as SchemaSnapshotParseError,e as VERSION,he as WORKFLOWS_FILENAME,ye as buildOpenApiDocument,Ke as buildOpenRpcDocument,fr as buildSchemaSnapshot,or as createCodegenProject,c as describeErrorLevelFindings,v as diagnosticAt,s as diffSchemaSnapshots,C as discoverAgents,_ as discoverAuthApiCalls,M as discoverContainers,F as discoverCrons,b as discoverFlags,y as discoverFunctions,k as discoverHttpRoutes,W as discoverHyperdriveCalls,V as discoverInserts,Q as discoverMaskProcedures,w as discoverMigrations,X as discoverMutators,$ as discoverNondeterministicCalls,oe as discoverNotifyCalls,te as discoverNotifyConfig,me as discoverQueries,pe as discoverQueues,ne as discoverR2sqlCalls,Ee as discoverRlsMetadata,xe as discoverRlsProcedures,Ae as discoverSandboxUsage,Ne as discoverSchema,_e as discoverShapes,Le as discoverStorageRulesMetadata,Fe as discoverWorkflows,Wr as emitAgents,Qr as emitApi,De as emitApp,qr as emitCollections,Kr as emitContainers,Jr as emitCrons,eo as emitDataModel,_r as emitDrizzleSchema,Lr as emitFunctions,je as emitOpenApi,ke as emitOpenApiModule,Ve as emitOpenRpc,ze as emitOpenRpcModule,Yr as emitScheduler,hr as emitServer,Pr as emitShard,Xr as emitVectors,Vr as emitWorkflows,Zr as emitWranglerCronTriggers,n as errorAdvisoryNames,l as errorPlatformDiagnosticNames,dr as evaluateSchemaDrift,Hr as findLunoraSolution,kr as findProjectConfigFile,tr as findTsconfig,nr as fingerprintSchemaSources,m as formatAdvisories,gr as generateSdk,Ue as isD1GlobalTable,be as isHyperdriveGlobalTable,oo as isTypedSchema,f as lintSchema,R as listLunoraSourceFiles,Ze as loadProjectConfig,pr as parseSchemaSnapshot,we as platformMatrixIds,ae as readPackageDependencies,$e as readProjectConfigLiterals,Je as readProjectTarget,Ce as readServiceBindings,Or as redact,sr as refreshCodegenProject,Ye as resolveCodegenTarget,Oe as resolveServiceBindings,ar as runCodegen,xr as schemaFromIr,Rr as secretKindOf,a as serializeSchemaSnapshot,x as sortedUniqueNames,D as sourceCapabilitySignals,d as toAdvisorContext,ur as validatorIrToJsonSchema};
@@ -0,0 +1,22 @@
1
+ const n=[{contextProperty:"access",key:"access",moduleSpecifier:"@lunora/cloudflare-access",requiredPackage:"@lunora/cloudflare-access",serverCtxField:`
2
+ /** Verified Cloudflare Access identity — a synchronous facade over the resolved claims (email / groups / hasGroup / claims). Anonymous when no Access token is present. */
3
+ readonly access: import("@lunora/cloudflare-access/context").AccessFacade;`,shardBinding:"bespoke",tier:"every"},{appMethod:{configKey:"ai",doc:"Override the Workers AI binding backing `ctx.ai` (defaults to `env.AI`).",method:"ai"},contextProperty:"ai",key:"ai",moduleSpecifier:"@lunora/ai",requiredPackage:"@lunora/ai",serverCtxField:`
4
+ readonly ai: import("@lunora/ai").LunoraAi;`,shardBinding:"bespoke",tier:"action"},{appMethod:{configKey:"aiSearch",doc:"Override the AI Search namespace binding backing `ctx.aiSearch` (defaults to `env.AI_SEARCH`).",method:"aiSearch"},contextProperty:"aiSearch",key:"aiSearch",moduleSpecifier:"@lunora/bindings/ai-search",requiredPackage:"@lunora/bindings",serverCtxField:'\n /** Cloudflare AI Search namespace (`ai_search_namespaces`): `.get(name)` an instance, then `search` / `chatCompletions`. Billed, non-deterministic network I/O — available only in actions. */\n readonly aiSearch: import("@lunora/bindings/ai-search").AiSearch;',shardBinding:{binding:{envName:"AI_SEARCH"},clientType:"AiSearch",missingMessage:"ctx.aiSearch: no AI Search binding found. Add an `ai_search_namespaces` binding (env.AI_SEARCH) to wrangler.jsonc, or point `defineApp().aiSearch((env) => …)` at yours.",stubMethods:["chatCompletions","create","delete","get","list","search"],syncStubMethods:["get"]},tier:"action"},{appMethod:{configKey:"analytics",doc:"Override the Analytics Engine dataset backing `ctx.analytics` (defaults to `env.ANALYTICS`).",method:"analytics"},contextProperty:"analytics",key:"analytics",moduleSpecifier:"@lunora/bindings/analytics",requiredPackage:"@lunora/bindings",serverCtxField:`
5
+ /** Analytics Engine telemetry sink. Fire-and-forget and sampled; do not read it back in-handler. */
6
+ readonly analytics: import("@lunora/bindings/analytics").AnalyticsClient;`,shardBinding:{binding:{bindingType:"AnalyticsEngineDatasetLike",envName:"ANALYTICS",factory:{name:"createAnalytics"}},clientType:"AnalyticsClient",missingMessage:"ctx.analytics: no Analytics Engine binding found. Add an `analytics_engine_datasets` binding (env.ANALYTICS) to wrangler.jsonc, or pass `analytics` to createShardDO().",stubMethods:["track","writeDataPoint"],syncStubMethods:["track","writeDataPoint"]},tier:"every"},{appMethod:{configKey:"artifacts",doc:"Override the Artifacts binding backing `ctx.artifacts` (defaults to `env.ARTIFACTS`).",method:"artifacts"},contextProperty:"artifacts",key:"artifacts",moduleSpecifier:"@lunora/bindings/artifacts",requiredPackage:"@lunora/bindings",serverCtxField:'\n /** Cloudflare Artifacts repos (create/import/fork, Git tokens, read commits and files). Non-deterministic — available only in actions. Writes go through `git push` with a token, not this client. */\n readonly artifacts: import("@lunora/bindings/artifacts").ArtifactsClient;',shardBinding:{binding:{bindingType:"ArtifactsBindingLike",envName:"ARTIFACTS",factory:{name:"createArtifacts",option:"binding"}},clientType:"ArtifactsClient",missingMessage:'ctx.artifacts: no Artifacts binding found. Add an `artifacts` binding ({ binding: "ARTIFACTS", namespace }) to wrangler.jsonc, or point ctx.artifacts at another binding with defineApp().artifacts((env) => env.<BINDING>).',stubMethods:["authenticatedRemote","create","delete","import","info","list","withRepo"],syncStubMethods:["authenticatedRemote"]},tier:"action"},{appMethod:{configKey:"browser",doc:"Build the `ctx.browser` helper, e.g. `(env) => createBrowser({ binding: env.BROWSER, launch })`. REQUIRED: unlike the binding-backed capabilities, `ctx.browser` is not auto-constructed — without this thunk every method throws, because the generated worker deliberately stays free of the optional `@cloudflare/playwright` peer.",method:"browser"},contextProperty:"browser",key:"browser",moduleSpecifier:"@lunora/browser",requiredPackage:"@lunora/browser",serverCtxField:`
7
+ /** Browser Rendering (screenshots/PDF/scrape). Non-deterministic — available only in actions. */
8
+ readonly browser: import("@lunora/browser").Browser;`,shardBinding:{clientType:"Browser",missingMessage:"ctx.browser: provide a `browser` config thunk, e.g. `browser: (env) => createBrowser({ binding: env.BROWSER, launch })` with `import { launch } from '@cloudflare/playwright'`. Session reuse (connect/sessions) additionally needs those two exports passed the same way.",stubMethods:["cancelCrawl","connect","content","crawl","crawlResult","launch","pdf","quickAction","scrape","screenshot","sessions"]},tier:"action"},{contextProperty:"containers",key:"container",moduleSpecifier:"@lunora/container"},{contextProperty:"flags",key:"flags",moduleSpecifier:"@lunora/flags"},{appMethod:{configKey:"sql",doc:"Wire the Hyperdrive SQL client backing `ctx.sql` — build it with `createHyperdrive` + `fromPostgresJs`/`fromNodePg`/`fromMysql2`.",method:"hyperdrive"},contextProperty:"sql",key:"hyperdrive",moduleSpecifier:"@lunora/hyperdrive",requiredPackage:"@lunora/hyperdrive",serverCtxField:`
9
+ /**
10
+ * External database access via Hyperdrive. Non-deterministic — available only in actions. Writes here are NOT tracked by Lunora live queries; subscriptions will not re-run on external DB changes.
11
+ */
12
+ readonly sql: import("@lunora/hyperdrive").SqlClient;`,shardBinding:{clientType:"SqlClient",missingMessage:"ctx.sql: provide a `sql` config thunk that builds a SqlClient from your driver, e.g. `sql: (env) => fromPostgresJs(postgres(env.HYPERDRIVE.connectionString))`.",stubMethods:["query"]},tier:"action"},{appMethod:{configKey:"images",doc:"Override the Images binding backing `ctx.images` (defaults to `env.IMAGES`).",method:"images"},contextProperty:"images",key:"images",moduleSpecifier:"@lunora/bindings/images",requiredPackage:"@lunora/bindings",serverCtxField:`
13
+ /** Cloudflare Images transforms (resize/format/optimize). Non-deterministic — available only in actions. */
14
+ readonly images: import("@lunora/bindings/images").Images;`,shardBinding:{binding:{bindingType:"ImagesBindingLike",envName:"IMAGES",factory:{name:"createImages",option:"binding"}},clientType:"Images",missingMessage:"ctx.images: no Images binding found. Add an `images` binding (env.IMAGES) to wrangler.jsonc, or pass `images` to createShardDO().",stubMethods:["info","transform"]},tier:"action"},{appMethod:{configKey:"kv",doc:"Override the Workers KV binding backing `ctx.kv` (defaults to `env.KV`).",method:"kv"},contextProperty:"kv",key:"kv",moduleSpecifier:"@lunora/bindings/kv",requiredPackage:"@lunora/bindings",serverCtxField:`
15
+ readonly kv: import("@lunora/bindings/kv").Kv;`,shardBinding:{binding:{bindingType:"KVNamespaceLike",envName:"KV",factory:{name:"createKv",option:"namespace"},unvouchableReads:["get","getRaw","getWithMetadata","list"]},clientType:"Kv",missingMessage:"ctx.kv: no KV binding found. Add a `kv_namespaces` binding (env.KV) to wrangler.jsonc, or pass `kv` to createShardDO().",stubMethods:["delete","get","getRaw","getWithMetadata","list","put"]},tier:"every"},{key:"mail",moduleSpecifier:"@lunora/mail"},{contextProperty:"notify",key:"notify",moduleSpecifier:"@lunora/notify"},{appMethod:{configKey:"payment",doc:"Wire the payment options backing `ctx.payments`.",method:"payment"},contextProperty:"payments",key:"payments",moduleSpecifier:"@lunora/payment",requiredPackage:"@lunora/payment"},{appMethod:{configKey:"x402",doc:"Wire the x402 agent-wallet pay rail backing `ctx.x402` — a payment-enabled `fetch` that answers `402` challenges under a mandatory spend policy (ActionCtx-only; spends real funds).",method:"x402"},contextProperty:"x402",key:"x402",moduleSpecifier:"@lunora/x402/pay",requiredPackage:"@lunora/x402",serverCtxField:`
16
+ readonly x402: import("@lunora/x402/pay").X402Pay;`,shardBinding:"bespoke",tier:"action"},{contextProperty:"pipelines",key:"pipelines",moduleSpecifier:"@lunora/bindings/pipelines",requiredPackage:"@lunora/bindings",serverCtxField:`
17
+ /** Pipelines ingestion sink (durable, R2-backed). Fire-and-forget and batched; do not read it back in-handler. */
18
+ readonly pipelines: import("@lunora/bindings/pipelines").PipelineClient;`,shardBinding:{binding:{bindingType:"PipelineBindingLike",envName:"PIPELINES",factory:{name:"createPipelines",option:"binding"}},clientType:"PipelineClient",missingMessage:"ctx.pipelines: no Pipelines binding found. Add a `pipelines` binding (env.PIPELINES) to wrangler.jsonc, or pass `pipelines` to createShardDO().",stubMethods:["send"]},tier:"action"},{appMethod:{configKey:"r2sql",doc:"Wire the R2 SQL client backing `ctx.r2sql` — build it with `createR2Sql({ accountId, apiToken, bucket })` (defaults to env `R2_SQL_TOKEN` / `R2_SQL_ACCOUNT_ID` / `R2_SQL_BUCKET`).",method:"r2sql"},contextProperty:"r2sql",key:"r2sql",moduleSpecifier:"@lunora/bindings/r2sql",requiredPackage:"@lunora/bindings",serverCtxField:`
19
+ /**
20
+ * R2 SQL over Apache Iceberg tables (window functions, DISTINCT, set operations). Non-deterministic — available only in actions. Reads here are NOT tracked by Lunora live queries.
21
+ */
22
+ readonly r2sql: import("@lunora/bindings/r2sql").R2SqlClient;`,shardBinding:"bespoke",tier:"action"},{contextProperty:"scheduler",key:"scheduler",moduleSpecifier:"@lunora/scheduler"},{contextProperty:"storage",key:"storage",moduleSpecifier:"@lunora/storage"},{contextProperty:"vectors",key:"vectors",moduleSpecifier:"@lunora/bindings/vectors"},{contextProperty:"workflows",key:"workflows",moduleSpecifier:"@lunora/workflow"}],a=n,r=n.flatMap(e=>"appMethod"in e?[{appMethod:e.appMethod,key:e.key}]:[]),o=a.map(({contextProperty:e,key:i,moduleSpecifier:t})=>({contextProperty:e,key:i,moduleSpecifier:t})),s=e=>new Set(a.filter(i=>e[i.key]).map(i=>i.key));export{r as APP_METHOD_CAPABILITIES,a as CAPABILITIES,o as CAPABILITY_PROBES,s as usedCapabilities};