@nwire/forge 0.8.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/README.md +132 -71
  2. package/dist/__tests__/actor-workflow-hooks.test.js +3 -1
  3. package/dist/__tests__/actor-workflow-hooks.test.js.map +1 -1
  4. package/dist/__tests__/lifecycle-logging.test.js.map +1 -1
  5. package/dist/__tests__/plugin-app-narrow.test.d.ts +12 -0
  6. package/dist/__tests__/plugin-app-narrow.test.d.ts.map +1 -0
  7. package/dist/__tests__/plugin-app-narrow.test.js +77 -0
  8. package/dist/__tests__/plugin-app-narrow.test.js.map +1 -0
  9. package/dist/__tests__/plugin-stress.test.js +9 -9
  10. package/dist/__tests__/plugin-stress.test.js.map +1 -1
  11. package/dist/__tests__/public-marker.test.js +7 -3
  12. package/dist/__tests__/public-marker.test.js.map +1 -1
  13. package/dist/__tests__/workflow-saga.test.js +26 -0
  14. package/dist/__tests__/workflow-saga.test.js.map +1 -1
  15. package/dist/actor-store.d.ts +20 -2
  16. package/dist/actor-store.d.ts.map +1 -1
  17. package/dist/actor-store.js +30 -2
  18. package/dist/actor-store.js.map +1 -1
  19. package/dist/create-app.d.ts +10 -2
  20. package/dist/create-app.d.ts.map +1 -1
  21. package/dist/create-app.js +36 -17
  22. package/dist/create-app.js.map +1 -1
  23. package/dist/define-action.d.ts +85 -9
  24. package/dist/define-action.d.ts.map +1 -1
  25. package/dist/define-action.js +101 -27
  26. package/dist/define-action.js.map +1 -1
  27. package/dist/define-actor.js.map +1 -1
  28. package/dist/define-handler.d.ts +21 -4
  29. package/dist/define-handler.d.ts.map +1 -1
  30. package/dist/define-handler.js +7 -0
  31. package/dist/define-handler.js.map +1 -1
  32. package/dist/define-plugin.d.ts +21 -0
  33. package/dist/define-plugin.d.ts.map +1 -1
  34. package/dist/define-plugin.js +66 -0
  35. package/dist/define-plugin.js.map +1 -1
  36. package/dist/define-query.d.ts +70 -12
  37. package/dist/define-query.d.ts.map +1 -1
  38. package/dist/define-query.js +49 -18
  39. package/dist/define-query.js.map +1 -1
  40. package/dist/define-upcaster.d.ts +25 -0
  41. package/dist/define-upcaster.d.ts.map +1 -0
  42. package/dist/define-upcaster.js +31 -0
  43. package/dist/define-upcaster.js.map +1 -0
  44. package/dist/define-workflow.d.ts +4 -4
  45. package/dist/define-workflow.d.ts.map +1 -1
  46. package/dist/define-workflow.js +40 -10
  47. package/dist/define-workflow.js.map +1 -1
  48. package/dist/dev-logger.d.ts.map +1 -1
  49. package/dist/dev-logger.js +5 -2
  50. package/dist/dev-logger.js.map +1 -1
  51. package/dist/event-message.d.ts +9 -2
  52. package/dist/event-message.d.ts.map +1 -1
  53. package/dist/event-message.js +10 -3
  54. package/dist/event-message.js.map +1 -1
  55. package/dist/index.d.ts +5 -5
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js +4 -4
  58. package/dist/index.js.map +1 -1
  59. package/dist/runtime.d.ts +53 -123
  60. package/dist/runtime.d.ts.map +1 -1
  61. package/dist/runtime.js +166 -289
  62. package/dist/runtime.js.map +1 -1
  63. package/package.json +11 -11
@@ -1 +1 @@
1
- {"version":3,"file":"define-action.d.ts","sourceRoot":"","sources":["../src/define-action.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"define-action.d.ts","sourceRoot":"","sources":["../src/define-action.ts"],"names":[],"mappings":"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"}
@@ -11,45 +11,119 @@
11
11
  * })
12
12
  *
13
13
  * An action carries a `name` (its routing key) and a `schema` (input type).
14
- * Pass it by reference to `defineHandler(action, fn)`, `ctx.request(action, ...)`,
15
- * or `ctx.send(action, ...)`. The name is the identity everywhere — Studio,
16
- * telemetry, OpenAPI, and the event graph all key off it.
14
+ * It is BOTH a meta record (`.name`, `.schema`, …) AND a callable factory:
15
+ *
16
+ * execute(submitAnswer({ studentId, attemptId, choice })) // dispatch
17
+ * defineHandler(submitAnswer, fn) // bind handler
18
+ * ctx.send(submitAnswer, input) // also valid
19
+ *
20
+ * Calling the action mints a typed `CommandMessage` with input validated
21
+ * against the zod schema — the dispatch site can't pass bad data. Mirrors
22
+ * the `defineEvent → EventMessage` pattern (Phase 41.9).
17
23
  *
18
24
  * Inline shorthand: `defineAction({ ..., handler })` synthesizes a handler
19
25
  * alongside the contract. For cross-module orchestration where the handler
20
26
  * lives elsewhere, leave `handler` undefined and wire via `defineHandler`.
21
27
  */
22
28
  import { captureSourceLocation } from "@nwire/messages";
23
- import { defineHandler } from "./define-handler.js";
24
- import { markable } from "./public-marker.js";
29
+ import { defineHandler, } from "./define-handler.js";
25
30
  export function defineAction(nameOrMeta, maybeMeta) {
26
31
  const $source = captureSourceLocation();
27
32
  const meta = typeof nameOrMeta === "string"
28
33
  ? { ...(maybeMeta ?? {}), name: nameOrMeta }
29
34
  : nameOrMeta;
30
- const action = {
31
- $kind: "action",
32
- name: meta.name,
33
- description: meta.description,
34
- schema: meta.schema,
35
- retry: meta.retry,
36
- policy: meta.policy,
37
- persona: meta.persona,
38
- journeyStep: meta.journeyStep,
39
- capability: meta.capability,
40
- slo: meta.slo,
41
- tags: meta.tags,
42
- emits: meta.emits,
43
- $source,
44
- };
35
+ return buildAction(meta, $source, false);
36
+ }
37
+ /**
38
+ * Internal — build the callable action with all meta props attached.
39
+ * Separated so `.public()` can re-build a clone with `$public: true` while
40
+ * sharing one construction path (avoids drift between fresh-defined and
41
+ * cloned actions).
42
+ */
43
+ function buildAction(meta, $source, isPublic) {
44
+ const factory = (input) => ({
45
+ $kind: "command",
46
+ actionName: meta.name,
47
+ input: meta.schema.parse(input),
48
+ });
49
+ // Inline handler — delegate to `defineHandler` so there is a single
50
+ // construction path for HandlerDefinition.
51
+ let handler;
52
+ if (meta.handler) {
53
+ // Will be patched onto `factory` below; build the handler def first so it
54
+ // references the action contract (factory itself, post-property-attach).
55
+ handler = undefined; // placeholder, set after props attach
56
+ }
57
+ Object.defineProperties(factory, {
58
+ $kind: { value: "action", enumerable: true },
59
+ name: { value: meta.name, enumerable: true, configurable: true },
60
+ description: { value: meta.description, enumerable: true },
61
+ schema: { value: meta.schema, enumerable: true },
62
+ retry: { value: meta.retry, enumerable: true },
63
+ policy: { value: meta.policy, enumerable: true },
64
+ persona: { value: meta.persona, enumerable: true },
65
+ journeyStep: { value: meta.journeyStep, enumerable: true },
66
+ capability: { value: meta.capability, enumerable: true },
67
+ slo: { value: meta.slo, enumerable: true },
68
+ tags: { value: meta.tags, enumerable: true },
69
+ emits: { value: meta.emits, enumerable: true },
70
+ toString: { value: () => meta.name, enumerable: false },
71
+ $source: { value: $source, enumerable: false, configurable: true },
72
+ });
73
+ if (isPublic) {
74
+ Object.defineProperty(factory, "$public", {
75
+ value: true,
76
+ enumerable: false,
77
+ configurable: true,
78
+ });
79
+ }
80
+ // Now that `factory` carries all action metadata, defineHandler can bind
81
+ // to it as a proper ActionDefinition reference.
45
82
  if (meta.handler) {
46
- // Inline form is sugar — delegate to `defineHandler` so there is a
47
- // single construction path for HandlerDefinition. Anything that
48
- // future-touches handler shape (kind tag, telemetry hooks, schema
49
- // binding) only has to be updated in one place.
50
- const handler = defineHandler(action, meta.handler);
51
- return markable({ ...action, handler });
83
+ handler = defineHandler(factory, meta.handler);
84
+ Object.defineProperty(factory, "handler", {
85
+ value: handler,
86
+ enumerable: true,
87
+ configurable: true,
88
+ });
89
+ }
90
+ Object.defineProperty(factory, "public", {
91
+ value: function publicMarker() {
92
+ return buildAction(meta, $source, true);
93
+ },
94
+ enumerable: false,
95
+ configurable: true,
96
+ });
97
+ return factory;
98
+ }
99
+ /**
100
+ * Type guard for `CommandMessage`. Runtime accepts either `(action, input)`
101
+ * positional or `command` shorthand; transports + execute() use this to
102
+ * disambiguate.
103
+ */
104
+ export function isCommandMessage(x) {
105
+ return (typeof x === "object" &&
106
+ x !== null &&
107
+ x.$kind === "command" &&
108
+ typeof x.actionName === "string");
109
+ }
110
+ /**
111
+ * Resolve either dispatch form into `(action, input)`. Centralised so every
112
+ * transport surface (execute, send, ctx.request) accepts both call shapes
113
+ * with one helper. When the caller passes a `CommandMessage`, the resolver
114
+ * looks up the action by name on the runtime; when they pass an
115
+ * `ActionDefinition` + input, it short-circuits.
116
+ */
117
+ export function resolveDispatch(actionOrCmd, input, lookup) {
118
+ if (isCommandMessage(actionOrCmd)) {
119
+ const action = lookup(actionOrCmd.actionName);
120
+ if (!action) {
121
+ throw new Error(`dispatch: action "${actionOrCmd.actionName}" is not registered. ` +
122
+ `If you used the callable form (\`execute(myAction(input))\`), make ` +
123
+ `sure the action is included in a module's \`actions\` array.`);
124
+ }
125
+ return { action, input: actionOrCmd.input };
52
126
  }
53
- return markable(action);
127
+ return { action: actionOrCmd, input };
54
128
  }
55
129
  //# sourceMappingURL=define-action.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"define-action.js","sourceRoot":"","sources":["../src/define-action.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAKH,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAmE,MAAM,kBAAkB,CAAC;AAClH,OAAO,EAAE,QAAQ,EAAqB,MAAM,iBAAiB,CAAC;AA6I9D,MAAM,UAAU,YAAY,CAC1B,UAAwC,EACxC,SAA6C;IAE7C,MAAM,OAAO,GAAG,qBAAqB,EAAE,CAAC;IACxC,MAAM,IAAI,GACR,OAAO,UAAU,KAAK,QAAQ;QAC5B,CAAC,CAAE,EAAE,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAA0B;QACrE,CAAC,CAAC,UAAU,CAAC;IAEjB,MAAM,MAAM,GAAG;QACb,KAAK,EAAE,QAAiB;QACxB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,OAAO;KACR,CAAC;IACF,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,mEAAmE;QACnE,gEAAgE;QAChE,kEAAkE;QAClE,gDAAgD;QAChD,MAAM,OAAO,GAAG,aAAa,CAC3B,MAAmC,EACnC,IAAI,CAAC,OAAgD,CACtD,CAAC;QACF,OAAO,QAAQ,CAAC,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,CAA8B,CAAC;IACvE,CAAC;IACD,OAAO,QAAQ,CAAC,MAAM,CAA8B,CAAC;AACvD,CAAC"}
1
+ {"version":3,"file":"define-action.js","sourceRoot":"","sources":["../src/define-action.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"define-actor.js","sourceRoot":"","sources":["../src/define-actor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"define-actor.js","sourceRoot":"","sources":["../src/define-actor.ts"],"names":[],"mappings":"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"}
@@ -18,13 +18,20 @@
18
18
  * returned events route to actors + workflows and commit atomically.
19
19
  *
20
20
  * If the handler does pure side effects (no events to commit), return `void`.
21
+ *
22
+ * For CRUD-style handlers that don't emit events but want to surface a small
23
+ * record to the caller (e.g. `{ userId }` for the HTTP layer to echo back),
24
+ * return a plain object. The runtime treats it as a non-event return: nothing
25
+ * is published, and the value flows through `runtime.dispatch`'s return + the
26
+ * `ActionCompleted` framework event. Events vs records are disambiguated by
27
+ * the `eventName` + `payload` shape — plain objects pass straight through.
21
28
  */
22
29
  import type { z } from "zod";
23
30
  import type { ZodTypeAny, SourceLocation } from "@nwire/messages";
24
31
  import type { Container } from "@nwire/container";
25
32
  import type { MessageEnvelope } from "@nwire/envelope";
26
33
  import type { EventMessage } from "./event-message.js";
27
- import type { ActionDefinition } from "./define-action.js";
34
+ import type { ActionDefinition, ActionInput, ActionResult } from "./define-action.js";
28
35
  import type { ActorDefinition, ActorInstanceView } from "./define-actor.js";
29
36
  import type { QueryDefinition } from "./define-query.js";
30
37
  import type { ExternalCallDefinition } from "./define-external-call.js";
@@ -64,7 +71,7 @@ export interface HandlerContext {
64
71
  * result. The framework derives a child envelope (same correlationId,
65
72
  * causationId = this handler's messageId) and handles transport routing.
66
73
  */
67
- request<TInput, TResult>(action: ActionDefinition<ZodTypeAny>, input: TInput): Promise<TResult>;
74
+ request<A extends ActionDefinition>(action: A, input: ActionInput<A>): Promise<ActionResult<A>>;
68
75
  /**
69
76
  * Read-during-handler — invoke a query (projection-backed read function)
70
77
  * scoped to the envelope's tenant. Used by reactions that need to look up
@@ -79,7 +86,7 @@ export interface HandlerContext {
79
86
  * Fire-and-forget dispatch of another action. Returns when the message is
80
87
  * accepted by the transport, not when the handler completes.
81
88
  */
82
- send<TInput>(action: ActionDefinition<ZodTypeAny>, input: TInput): Promise<void>;
89
+ send<A extends ActionDefinition>(action: A, input: ActionInput<A>): Promise<void>;
83
90
  /**
84
91
  * Load an actor instance by id (envelope.tenant-scoped) and return a view
85
92
  * with `state`, `stateName`, `key`, plus every method declared on the actor
@@ -105,7 +112,17 @@ export interface HandlerContext {
105
112
  */
106
113
  externalCall<TRequest extends ZodTypeAny, TResponse extends ZodTypeAny>(call: ExternalCallDefinition<TRequest, TResponse>, request: z.output<TRequest>): Promise<z.output<TResponse>>;
107
114
  }
108
- export type HandlerReturn = void | EventMessage | EventMessage[] | null;
115
+ /**
116
+ * What a handler may return.
117
+ *
118
+ * - `void` / `null` / `undefined` — pure side-effect handler, nothing to publish.
119
+ * - `EventMessage` / `EventMessage[]` — events the runtime publishes atomically.
120
+ * - `Record<string, unknown>` — a plain data record (e.g. `{ userId }`) that
121
+ * is NOT published. It flows out via `runtime.dispatch`'s return value and
122
+ * the `ActionCompleted` framework event. Distinguished from `EventMessage`
123
+ * at runtime by the missing `eventName` + `payload` shape.
124
+ */
125
+ export type HandlerReturn = void | EventMessage | EventMessage[] | Record<string, unknown> | null;
109
126
  export interface HandlerDefinition<TSchema extends ZodTypeAny = ZodTypeAny> {
110
127
  readonly $kind: "handler";
111
128
  readonly action: ActionDefinition<TSchema>;
@@ -1 +1 @@
1
- {"version":3,"file":"define-handler.d.ts","sourceRoot":"","sources":["../src/define-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"define-handler.d.ts","sourceRoot":"","sources":["../src/define-handler.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,13 @@
18
18
  * returned events route to actors + workflows and commit atomically.
19
19
  *
20
20
  * If the handler does pure side effects (no events to commit), return `void`.
21
+ *
22
+ * For CRUD-style handlers that don't emit events but want to surface a small
23
+ * record to the caller (e.g. `{ userId }` for the HTTP layer to echo back),
24
+ * return a plain object. The runtime treats it as a non-event return: nothing
25
+ * is published, and the value flows through `runtime.dispatch`'s return + the
26
+ * `ActionCompleted` framework event. Events vs records are disambiguated by
27
+ * the `eventName` + `payload` shape — plain objects pass straight through.
21
28
  */
22
29
  import { captureSourceLocation } from "@nwire/messages";
23
30
  export function defineHandler(action, handler) {
@@ -1 +1 @@
1
- {"version":3,"file":"define-handler.js","sourceRoot":"","sources":["../src/define-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AA8GxD,MAAM,UAAU,aAAa,CAC3B,MAAiC,EACjC,OAA8C;IAE9C,OAAO;QACL,KAAK,EAAE,SAAS;QAChB,MAAM;QACN,OAAO;QACP,OAAO,EAAE,qBAAqB,EAAE;KACjC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"define-handler.js","sourceRoot":"","sources":["../src/define-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAIH,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAwHxD,MAAM,UAAU,aAAa,CAC3B,MAAiC,EACjC,OAA8C;IAE9C,OAAO;QACL,KAAK,EAAE,SAAS;QAChB,MAAM;QACN,OAAO;QACP,OAAO,EAAE,qBAAqB,EAAE;KACjC,CAAC;AACJ,CAAC"}
@@ -53,6 +53,7 @@ import type { ActorDefinition } from "./define-actor.js";
53
53
  import type { MessageEnvelope } from "@nwire/envelope";
54
54
  import type { FrameworkEventDefinition } from "./framework-events.js";
55
55
  import type { FrameworkEventHandler } from "./framework-event-bus.js";
56
+ import type { AppPluginDefinition } from "@nwire/app";
56
57
  /** Hook fired by the runtime after an actor transitions to a new state. */
57
58
  export type ActorTransitionHook = (actor: ActorDefinition, key: string, fromState: string, toState: string, event: EventMessage, envelope: MessageEnvelope) => Promise<void> | void;
58
59
  export interface PluginActorHooks {
@@ -171,4 +172,24 @@ export declare function buildPluginContext(container: Container, runtime: Runtim
171
172
  readonly boots: Array<() => Promise<void> | void>;
172
173
  readonly shutdowns: Array<() => Promise<void> | void>;
173
174
  };
175
+ /**
176
+ * Adapt a narrow `@nwire/app` plugin into the rich forge `PluginDefinition`
177
+ * createApp expects. The narrow shape (provide / on / boot / shutdown) is a
178
+ * strict subset of the rich shape, so the adaptation is straight forwarding:
179
+ *
180
+ * - `provide(name, lifecycle)` becomes a `bind` whose factory invokes the
181
+ * lifecycle's `boot()` once, plus a shutdown step that runs
182
+ * `lifecycle.shutdown(value)` against the resolved value if it was ever
183
+ * materialized. Lazy resolution matches the rich `bind` contract — a
184
+ * value nobody asks for is never booted (and therefore never torn down).
185
+ * - `on(FrameworkEvent, handler, prio?)` maps 1:1 onto `runtime.onFramework`,
186
+ * which is what the rich `api.on` already does internally.
187
+ * - `boot(fn)` / `shutdown(fn)` map 1:1.
188
+ *
189
+ * The narrow plugin's `setup` may be async; we honor that by returning a
190
+ * Promise from the rich setup. createApp's sync register loop rejects async
191
+ * rich setups today, so app-plugin authors who need async work should put it
192
+ * inside `api.boot(...)` — same rule as forge's closure form.
193
+ */
194
+ export declare function adaptAppPlugin(app: AppPluginDefinition): PluginDefinition;
174
195
  //# sourceMappingURL=define-plugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"define-plugin.d.ts","sourceRoot":"","sources":["../src/define-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAyB,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEnE,2EAA2E;AAC3E,MAAM,MAAM,mBAAmB,GAAG,CAChC,KAAK,EAAE,eAAe,EACtB,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,eAAe,KACtB,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAE1B,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,eAAe,CAAC,EAAE,mBAAmB,CAAC;CAChD;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAE1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAErC;;;;OAIG;IACH,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC;IAEhD,0EAA0E;IAC1E,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC;IAE5B;;;;OAIG;IACH,EAAE,CAAC,QAAQ,EACT,KAAK,EAAE,wBAAwB,CAAC,QAAQ,CAAC,EACzC,OAAO,EAAE,qBAAqB,CAAC,QAAQ,CAAC,EACxC,QAAQ,CAAC,EAAE,MAAM,GAChB,IAAI,CAAC;IAER;;;;;;;OAOG;IACH,MAAM,CACJ,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,CAAC,OAAO,EAAE;QACjB,QAAQ,CAAC,MAAM,EAAE,OAAO,oBAAoB,EAAE,gBAAgB,CAAC;QAC/D,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;QACxB,QAAQ,CAAC,GAAG,EAAE,OAAO,qBAAqB,EAAE,cAAc,CAAC;KAC5D,KAAK,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,IAAI,GAAG,OAAO,GAC7C,IAAI,CAAC;IAER;;;OAGG;IACH,KAAK,CACH,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,CAAC,OAAO,EAAE;QACjB,QAAQ,CAAC,MAAM,EAAE,OAAO,oBAAoB,EAAE,gBAAgB,CAAC;QAC/D,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;QACxB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;QACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;KAC7B,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GACzB,IAAI,CAAC;IAER,uEAAuE;IACvE,UAAU,CAAC,EAAE,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAEzC,6EAA6E;IAC7E,SAAS,CAAC,IAAI,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAE3C,yEAAyE;IACzE,IAAI,CAAC,EAAE,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;IAE3C,gFAAgF;IAChF,QAAQ,CAAC,EAAE,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;CAChD;AAED,0CAA0C;AAC1C,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAEvE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,IAAI,CAAC;IACnD;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC/D,kEAAkE;IAClE,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACnE,qEAAqE;IACrE,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACpD,oDAAoD;IACpD,QAAQ,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC;IACvC,oEAAoE;IACpE,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC;CACnC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,IAAI,CAAC;IACnD,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC/D,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACnE,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACpD,QAAQ,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC;CACxC;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,gBAAgB,CAAC;AACjF,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,gBAAgB,CAAC;AA2BrF;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAEhB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,UAAU,GAAE,MAAoB,GAC/B;IACD,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IAClD,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;CACvD,CAkFA"}
1
+ {"version":3,"file":"define-plugin.d.ts","sourceRoot":"","sources":["../src/define-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAyB,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,KAAK,EAAE,mBAAmB,EAAoB,MAAM,YAAY,CAAC;AAExE,2EAA2E;AAC3E,MAAM,MAAM,mBAAmB,GAAG,CAChC,KAAK,EAAE,eAAe,EACtB,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,eAAe,KACtB,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAE1B,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,eAAe,CAAC,EAAE,mBAAmB,CAAC;CAChD;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAE1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAErC;;;;OAIG;IACH,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC;IAEhD,0EAA0E;IAC1E,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC;IAE5B;;;;OAIG;IACH,EAAE,CAAC,QAAQ,EACT,KAAK,EAAE,wBAAwB,CAAC,QAAQ,CAAC,EACzC,OAAO,EAAE,qBAAqB,CAAC,QAAQ,CAAC,EACxC,QAAQ,CAAC,EAAE,MAAM,GAChB,IAAI,CAAC;IAER;;;;;;;OAOG;IACH,MAAM,CACJ,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,CAAC,OAAO,EAAE;QACjB,QAAQ,CAAC,MAAM,EAAE,OAAO,oBAAoB,EAAE,gBAAgB,CAAC;QAC/D,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;QACxB,QAAQ,CAAC,GAAG,EAAE,OAAO,qBAAqB,EAAE,cAAc,CAAC;KAC5D,KAAK,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,IAAI,GAAG,OAAO,GAC7C,IAAI,CAAC;IAER;;;OAGG;IACH,KAAK,CACH,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,CAAC,OAAO,EAAE;QACjB,QAAQ,CAAC,MAAM,EAAE,OAAO,oBAAoB,EAAE,gBAAgB,CAAC;QAC/D,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;QACxB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;QACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;KAC7B,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GACzB,IAAI,CAAC;IAER,uEAAuE;IACvE,UAAU,CAAC,EAAE,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAEzC,6EAA6E;IAC7E,SAAS,CAAC,IAAI,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAE3C,yEAAyE;IACzE,IAAI,CAAC,EAAE,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;IAE3C,gFAAgF;IAChF,QAAQ,CAAC,EAAE,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;CAChD;AAED,0CAA0C;AAC1C,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAEvE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,IAAI,CAAC;IACnD;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC/D,kEAAkE;IAClE,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACnE,qEAAqE;IACrE,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACpD,oDAAoD;IACpD,QAAQ,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC;IACvC,oEAAoE;IACpE,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC;CACnC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,IAAI,CAAC;IACnD,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC/D,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACnE,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACpD,QAAQ,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC;CACxC;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,gBAAgB,CAAC;AACjF,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,gBAAgB,CAAC;AA2BrF;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAEhB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,UAAU,GAAE,MAAoB,GAC/B;IACD,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IAClD,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;CACvD,CAkFA;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,mBAAmB,GAAG,gBAAgB,CAiDzE"}
@@ -151,4 +151,70 @@ config, pluginName = "anonymous") {
151
151
  };
152
152
  return { api, boots, shutdowns };
153
153
  }
154
+ /**
155
+ * Adapt a narrow `@nwire/app` plugin into the rich forge `PluginDefinition`
156
+ * createApp expects. The narrow shape (provide / on / boot / shutdown) is a
157
+ * strict subset of the rich shape, so the adaptation is straight forwarding:
158
+ *
159
+ * - `provide(name, lifecycle)` becomes a `bind` whose factory invokes the
160
+ * lifecycle's `boot()` once, plus a shutdown step that runs
161
+ * `lifecycle.shutdown(value)` against the resolved value if it was ever
162
+ * materialized. Lazy resolution matches the rich `bind` contract — a
163
+ * value nobody asks for is never booted (and therefore never torn down).
164
+ * - `on(FrameworkEvent, handler, prio?)` maps 1:1 onto `runtime.onFramework`,
165
+ * which is what the rich `api.on` already does internally.
166
+ * - `boot(fn)` / `shutdown(fn)` map 1:1.
167
+ *
168
+ * The narrow plugin's `setup` may be async; we honor that by returning a
169
+ * Promise from the rich setup. createApp's sync register loop rejects async
170
+ * rich setups today, so app-plugin authors who need async work should put it
171
+ * inside `api.boot(...)` — same rule as forge's closure form.
172
+ */
173
+ export function adaptAppPlugin(app) {
174
+ return {
175
+ $kind: "plugin",
176
+ name: app.name,
177
+ $source: app.$source,
178
+ setup(ctx) {
179
+ // bus is exposed on the narrow context for advanced cases (the rich
180
+ // `on` only covers framework events). runtime.frameworkEvents is the
181
+ // same bus the rich api.on writes to, so passing it through is safe.
182
+ const narrow = {
183
+ container: ctx.container,
184
+ bus: ctx.runtime.frameworkEvents,
185
+ provide(name, lifecycle) {
186
+ let booted = false;
187
+ let value;
188
+ ctx.bind(name, () => {
189
+ // The narrow contract permits async boot; bind's factory is
190
+ // sync. We synchronously kick the promise (if any) — consumers
191
+ // resolving an async-provided binding get the Promise back,
192
+ // mirroring what they'd get if they implemented `bind` directly.
193
+ const result = lifecycle.boot();
194
+ booted = true;
195
+ value = result;
196
+ return result;
197
+ });
198
+ if (lifecycle.shutdown) {
199
+ ctx.shutdown(async () => {
200
+ if (!booted)
201
+ return;
202
+ await lifecycle.shutdown(value);
203
+ });
204
+ }
205
+ },
206
+ on(event, handler, priority) {
207
+ ctx.on(event, handler, priority);
208
+ },
209
+ boot(fn) {
210
+ ctx.boot(fn);
211
+ },
212
+ shutdown(fn) {
213
+ ctx.shutdown(fn);
214
+ },
215
+ };
216
+ return app.setup(narrow);
217
+ },
218
+ };
219
+ }
154
220
  //# sourceMappingURL=define-plugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"define-plugin.js","sourceRoot":"","sources":["../src/define-plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"define-plugin.js","sourceRoot":"","sources":["../src/define-plugin.ts"],"names":[],"mappings":"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"}
@@ -1,20 +1,32 @@
1
1
  /**
2
- * `defineQuery` — read function over a projection.
2
+ * `defineQuery` — read function over a projection or a direct adapter (DB,
3
+ * cache, search index). Two forms:
3
4
  *
5
+ * // Projection-driven — runtime hands you `state` + validated input.
4
6
  * export const submissionsByStudent = defineQuery(SubmissionsByStudent, {
5
7
  * name: 'submissions.by-student',
6
- * schema: z.object({ studentId: StudentId, status: SubmissionStatus.optional() }),
7
- * execute: (state, { studentId, status }) =>
8
- * Object.values(state).filter(s => s.studentId === studentId &&
9
- * (!status || s.status === status))
8
+ * schema: z.object({ studentId: StudentId }),
9
+ * execute: (state, { studentId }) =>
10
+ * Object.values(state).filter(s => s.studentId === studentId),
10
11
  * })
11
12
  *
12
- * Queries read from projections, never from actors. They have no envelope, no
13
- * bus, no commit semantics — direct calls. The runtime hands them the
14
- * projection's current state and the validated input.
13
+ * // Handler form no projection, you reach into the container yourself.
14
+ * export const usersById = defineQuery({
15
+ * name: 'users.by-id',
16
+ * schema: z.object({ id: UserId }),
17
+ * handler: async ({ id }, { resolve }) => {
18
+ * const db = resolve<DrizzleDb>('db');
19
+ * return db.select().from(users).where(eq(users.id, id)).limit(1);
20
+ * },
21
+ * })
22
+ *
23
+ * Pick projection form when the read is "eventually-consistent over events
24
+ * I publish in-process." Pick handler form when reading from any external
25
+ * source of truth (Postgres rows, Redis, OpenSearch) — no projection layer
26
+ * needed. Queries are always direct calls: no envelope, no bus, no commit.
15
27
  *
16
- * Naming follows actions: `<domain>.<verb-noun>` so a query is addressable on
17
- * the same routing keyspace as actions when transports need it (HTTP GET
28
+ * Naming follows actions: `<domain>.<verb-noun>` so a query is addressable
29
+ * on the same routing keyspace as actions when transports need it (HTTP GET
18
30
  * routes wire queries; HTTP POST routes wire actions).
19
31
  */
20
32
  import type { z } from "zod";
@@ -26,27 +38,73 @@ export interface QuerySlo {
26
38
  /** Declared p95 latency target in milliseconds. */
27
39
  readonly p95LatencyMs?: number;
28
40
  }
41
+ /**
42
+ * Context handed to a handler-form query. Mirrors `HandlerContext` but read-
43
+ * only: no `request`, no `send`, no `recordThat`. The query may load other
44
+ * projections, resolve DI bindings (typically a DB handle), and read its
45
+ * envelope (request-id, tenant, signal) when one is in play.
46
+ */
47
+ export interface QueryContext {
48
+ /** Resolve a DI binding (db connection, http client, etc.). */
49
+ resolve: <T = unknown>(name: string) => T;
50
+ /** Tenant scope, if the calling transport set one. */
51
+ readonly tenant?: string;
52
+ /** Abort signal — wired from the caller's request when available. */
53
+ readonly signal?: AbortSignal;
54
+ }
29
55
  export interface QueryOptions<TState, TSchema extends ZodTypeAny, TResult> {
30
56
  readonly name: string;
31
57
  readonly description?: string;
58
+ /** Input schema — `input` is an alias accepted for docs parity with actions. */
32
59
  readonly schema: TSchema;
60
+ readonly input?: TSchema;
33
61
  readonly execute: (state: TState, input: z.output<TSchema>) => TResult | Promise<TResult>;
34
62
  /** Studio-aware: declared latency target. */
35
63
  readonly slo?: QuerySlo;
36
64
  /** Studio-aware: hint that this query is safe to cache. */
37
65
  readonly cacheable?: boolean;
38
66
  }
67
+ /**
68
+ * Options for handler-form `defineQuery({ name, schema, handler })`. No
69
+ * projection, no state — you read from whatever source you care to via
70
+ * `ctx.resolve<DbType>("db")` (or any registered binding).
71
+ */
72
+ export interface QueryHandlerOptions<TSchema extends ZodTypeAny, TResult> {
73
+ readonly name: string;
74
+ readonly description?: string;
75
+ /** Input schema — `input` is an alias accepted for docs parity with actions. */
76
+ readonly schema: TSchema;
77
+ readonly input?: TSchema;
78
+ readonly handler: (input: z.output<TSchema>, ctx: QueryContext) => TResult | Promise<TResult>;
79
+ readonly slo?: QuerySlo;
80
+ readonly cacheable?: boolean;
81
+ }
39
82
  export interface QueryDefinition<TState = unknown, TSchema extends ZodTypeAny = ZodTypeAny, TResult = unknown> extends PublicMarker {
40
83
  readonly $kind: "query";
41
84
  readonly name: string;
42
85
  readonly description?: string;
43
86
  readonly schema: TSchema;
44
- readonly projection: ProjectionDefinition<TState>;
45
- readonly execute: (state: TState, input: z.output<TSchema>) => TResult | Promise<TResult>;
87
+ /**
88
+ * Backing projection. `undefined` for handler-form queries runtime
89
+ * detects this and routes through `handler` directly (no state load).
90
+ */
91
+ readonly projection?: ProjectionDefinition<TState>;
92
+ /**
93
+ * Projection-form executor. Called with the projection's full state + the
94
+ * validated input. Present iff `projection` is present.
95
+ */
96
+ readonly execute?: (state: TState, input: z.output<TSchema>) => TResult | Promise<TResult>;
97
+ /**
98
+ * Handler-form executor. Called with the validated input + a
99
+ * `QueryContext` (DI resolution, tenant, abort signal). Present iff
100
+ * `projection` is absent.
101
+ */
102
+ readonly handler?: (input: z.output<TSchema>, ctx: QueryContext) => TResult | Promise<TResult>;
46
103
  readonly slo?: QuerySlo;
47
104
  readonly cacheable?: boolean;
48
105
  /** Where the query was declared. Studio uses this for IDE-open links. */
49
106
  readonly $source?: SourceLocation;
50
107
  }
51
108
  export declare function defineQuery<TState, TSchema extends ZodTypeAny, TResult>(projection: ProjectionDefinition<TState>, options: QueryOptions<TState, TSchema, TResult>): QueryDefinition<TState, TSchema, TResult>;
109
+ export declare function defineQuery<TSchema extends ZodTypeAny, TResult>(options: QueryHandlerOptions<TSchema, TResult>): QueryDefinition<any, TSchema, TResult>;
52
110
  //# sourceMappingURL=define-query.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"define-query.d.ts","sourceRoot":"","sources":["../src/define-query.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAElE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAY,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE9D,4CAA4C;AAC5C,MAAM,WAAW,QAAQ;IACvB,mDAAmD;IACnD,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,YAAY,CAAC,MAAM,EAAE,OAAO,SAAS,UAAU,EAAE,OAAO;IACvE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1F,6CAA6C;IAC7C,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC;IACxB,2DAA2D;IAC3D,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe,CAC9B,MAAM,GAAG,OAAO,EAChB,OAAO,SAAS,UAAU,GAAG,UAAU,EACvC,OAAO,GAAG,OAAO,CACjB,SAAQ,YAAY;IACpB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAClD,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1F,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,yEAAyE;IACzE,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC;CACnC;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,SAAS,UAAU,EAAE,OAAO,EACrE,UAAU,EAAE,oBAAoB,CAAC,MAAM,CAAC,EACxC,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,GAC9C,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAY3C"}
1
+ {"version":3,"file":"define-query.d.ts","sourceRoot":"","sources":["../src/define-query.ts"],"names":[],"mappings":"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"}