@nwire/forge 0.7.1 → 0.8.17

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 (85) hide show
  1. package/README.md +169 -79
  2. package/dist/__tests__/action-hooks.test.d.ts +8 -0
  3. package/dist/__tests__/action-hooks.test.d.ts.map +1 -0
  4. package/dist/__tests__/action-hooks.test.js +95 -0
  5. package/dist/__tests__/action-hooks.test.js.map +1 -0
  6. package/dist/__tests__/actor-workflow-hooks.test.d.ts +8 -0
  7. package/dist/__tests__/actor-workflow-hooks.test.d.ts.map +1 -0
  8. package/dist/__tests__/actor-workflow-hooks.test.js +106 -0
  9. package/dist/__tests__/actor-workflow-hooks.test.js.map +1 -0
  10. package/dist/__tests__/lifecycle-logging.test.js +4 -2
  11. package/dist/__tests__/lifecycle-logging.test.js.map +1 -1
  12. package/dist/__tests__/plugin-app-narrow.test.d.ts +12 -0
  13. package/dist/__tests__/plugin-app-narrow.test.d.ts.map +1 -0
  14. package/dist/__tests__/plugin-app-narrow.test.js +77 -0
  15. package/dist/__tests__/plugin-app-narrow.test.js.map +1 -0
  16. package/dist/__tests__/plugin-stress.test.d.ts +21 -0
  17. package/dist/__tests__/plugin-stress.test.d.ts.map +1 -0
  18. package/dist/__tests__/plugin-stress.test.js +203 -0
  19. package/dist/__tests__/plugin-stress.test.js.map +1 -0
  20. package/dist/__tests__/public-marker.test.js +7 -3
  21. package/dist/__tests__/public-marker.test.js.map +1 -1
  22. package/dist/actor-store.d.ts +24 -0
  23. package/dist/actor-store.d.ts.map +1 -1
  24. package/dist/actor-store.js +29 -0
  25. package/dist/actor-store.js.map +1 -1
  26. package/dist/create-app.d.ts +16 -1
  27. package/dist/create-app.d.ts.map +1 -1
  28. package/dist/create-app.js +126 -19
  29. package/dist/create-app.js.map +1 -1
  30. package/dist/define-action.d.ts +75 -9
  31. package/dist/define-action.d.ts.map +1 -1
  32. package/dist/define-action.js +103 -26
  33. package/dist/define-action.js.map +1 -1
  34. package/dist/define-actor.d.ts +3 -1
  35. package/dist/define-actor.d.ts.map +1 -1
  36. package/dist/define-actor.js +11 -4
  37. package/dist/define-actor.js.map +1 -1
  38. package/dist/define-handler.d.ts +39 -3
  39. package/dist/define-handler.d.ts.map +1 -1
  40. package/dist/define-handler.js +10 -1
  41. package/dist/define-handler.js.map +1 -1
  42. package/dist/define-module.d.ts +3 -0
  43. package/dist/define-module.d.ts.map +1 -1
  44. package/dist/define-module.js +3 -0
  45. package/dist/define-module.js.map +1 -1
  46. package/dist/define-plugin.d.ts +25 -1
  47. package/dist/define-plugin.d.ts.map +1 -1
  48. package/dist/define-plugin.js +100 -14
  49. package/dist/define-plugin.js.map +1 -1
  50. package/dist/define-projection.d.ts +3 -1
  51. package/dist/define-projection.d.ts.map +1 -1
  52. package/dist/define-projection.js +3 -0
  53. package/dist/define-projection.js.map +1 -1
  54. package/dist/define-query.d.ts +69 -13
  55. package/dist/define-query.d.ts.map +1 -1
  56. package/dist/define-query.js +48 -17
  57. package/dist/define-query.js.map +1 -1
  58. package/dist/define-workflow.d.ts +19 -1
  59. package/dist/define-workflow.d.ts.map +1 -1
  60. package/dist/define-workflow.js +4 -0
  61. package/dist/define-workflow.js.map +1 -1
  62. package/dist/dev-logger.d.ts.map +1 -1
  63. package/dist/dev-logger.js +22 -1
  64. package/dist/dev-logger.js.map +1 -1
  65. package/dist/event-message.d.ts +9 -2
  66. package/dist/event-message.d.ts.map +1 -1
  67. package/dist/event-message.js +10 -3
  68. package/dist/event-message.js.map +1 -1
  69. package/dist/framework-events.d.ts +1 -64
  70. package/dist/framework-events.d.ts.map +1 -1
  71. package/dist/framework-events.js +3 -0
  72. package/dist/framework-events.js.map +1 -1
  73. package/dist/idempotency-store.d.ts +35 -0
  74. package/dist/idempotency-store.d.ts.map +1 -0
  75. package/dist/idempotency-store.js +32 -0
  76. package/dist/idempotency-store.js.map +1 -0
  77. package/dist/index.d.ts +3 -1
  78. package/dist/index.d.ts.map +1 -1
  79. package/dist/index.js +2 -1
  80. package/dist/index.js.map +1 -1
  81. package/dist/runtime.d.ts +205 -5
  82. package/dist/runtime.d.ts.map +1 -1
  83. package/dist/runtime.js +518 -48
  84. package/dist/runtime.js.map +1 -1
  85. package/package.json +11 -10
@@ -24,10 +24,18 @@
24
24
  */
25
25
  import { rootContainer } from "@nwire/container";
26
26
  import { seedEnvelope } from "@nwire/envelope";
27
+ import { hook } from "@nwire/hooks";
27
28
  import { Runtime } from "./runtime.js";
28
- import { buildPluginContext } from "./define-plugin.js";
29
+ import { adaptAppPlugin, buildPluginContext } from "./define-plugin.js";
30
+ import { isAppPlugin } from "@nwire/app";
29
31
  import { AppRegistering, AppBooting, AppBooted, AppShuttingDown, AppShutdown, PluginRegistered, PluginBooting, PluginBooted, PluginShuttingDown, PluginShutdown, builtInLifecycleEvents, } from "./framework-events.js";
30
32
  export function createApp(options) {
33
+ // Normalize the plugin list: callers may pass either the rich forge
34
+ // PluginDefinition or the narrow @nwire/app AppPluginDefinition. The
35
+ // downstream pipeline (register loop, framework events, shutdown) is
36
+ // written against the rich shape, so adapt narrow → rich here. Every
37
+ // subsequent use of `options.plugins` reads from `plugins` instead.
38
+ const plugins = (options.plugins ?? []).map((p) => isAppPlugin(p) ? adaptAppPlugin(p) : p);
31
39
  // Index local provides up-front — both validators and the bus-subscription
32
40
  // loop need to know "is this event satisfiable locally in this app?"
33
41
  const localEventProviders = indexLocalEventProviders(options.modules);
@@ -69,14 +77,18 @@ export function createApp(options) {
69
77
  */
70
78
  const containerForCaps = options.container ?? rootContainer;
71
79
  containerForCaps.register("execute", () => {
72
- return async function execute(action, input) {
73
- return await runtime.dispatch(action, input, seedEnvelope({}));
80
+ return async function execute(actionOrCmd, input) {
81
+ const { resolveDispatch } = await import("./define-action.js");
82
+ const { action, input: resolvedInput } = resolveDispatch(actionOrCmd, input, runtime.findActionByName.bind(runtime));
83
+ return await runtime.dispatch(action, resolvedInput, seedEnvelope({}));
74
84
  };
75
85
  });
76
86
  containerForCaps.register("send", () => {
77
- return async function send(action, input) {
87
+ return async function send(actionOrCmd, input) {
78
88
  // Fire-and-forget — same envelope-per-call story as `execute`.
79
- await runtime.dispatch(action, input, seedEnvelope({}));
89
+ const { resolveDispatch } = await import("./define-action.js");
90
+ const { action, input: resolvedInput } = resolveDispatch(actionOrCmd, input, runtime.findActionByName.bind(runtime));
91
+ await runtime.dispatch(action, resolvedInput, seedEnvelope({}));
80
92
  };
81
93
  });
82
94
  containerForCaps.register("useProjection", () => {
@@ -152,6 +164,28 @@ export function createApp(options) {
152
164
  }
153
165
  // Routes are bound by transports, not by the runtime.
154
166
  }
167
+ // Pre-create per-module lifecycle hooks so `listHooks()` + scan see
168
+ // them even before start() runs. The hooks are adopted by the runtime
169
+ // immediately (so taps are wired); chain steps are attached in start().
170
+ const pluginBootHooks = new Map();
171
+ const pluginShutdownHooks = new Map();
172
+ for (const module of orderedModules) {
173
+ const bootH = hook(`plugin.boot:${module.name}`);
174
+ const shutdownH = hook(`plugin.shutdown:${module.name}`);
175
+ runtime.adoptHook(bootH);
176
+ runtime.adoptHook(shutdownH);
177
+ pluginBootHooks.set(module.name, bootH);
178
+ pluginShutdownHooks.set(module.name, shutdownH);
179
+ }
180
+ // Same for real plugins.
181
+ for (const plugin of plugins) {
182
+ const bootH = hook(`plugin.boot:${plugin.name}`);
183
+ const shutdownH = hook(`plugin.shutdown:${plugin.name}`);
184
+ runtime.adoptHook(bootH);
185
+ runtime.adoptHook(shutdownH);
186
+ pluginBootHooks.set(plugin.name, bootH);
187
+ pluginShutdownHooks.set(plugin.name, shutdownH);
188
+ }
155
189
  const container = options.container ?? rootContainer;
156
190
  /** Booted provider values, indexed by provider name. Populated in start(). */
157
191
  // Plugins: register synchronously up-front (before async boot) so they
@@ -171,11 +205,11 @@ export function createApp(options) {
171
205
  /** Keyed by plugin index so we can fire reverse on stop in-order. */
172
206
  const closureShutdowns = new Map();
173
207
  let pluginIdx = 0;
174
- for (const plugin of options.plugins ?? []) {
208
+ for (const plugin of plugins) {
175
209
  if (plugin.register)
176
210
  plugin.register(container);
177
211
  if (plugin.setup) {
178
- const { api, boots, shutdowns } = buildPluginContext(container, runtime, options.config ?? {});
212
+ const { api, boots, shutdowns } = buildPluginContext(container, runtime, options.config ?? {}, plugin.name);
179
213
  // The setup function may be async; we kick it off and await its
180
214
  // promise so the closure can use top-level `await` if it wants.
181
215
  const result = plugin.setup(api);
@@ -206,6 +240,7 @@ export function createApp(options) {
206
240
  $nwireApp: true,
207
241
  runtime,
208
242
  modules: options.modules,
243
+ plugins,
209
244
  container,
210
245
  get appName() {
211
246
  return runtime.appName;
@@ -229,14 +264,23 @@ export function createApp(options) {
229
264
  },
230
265
  async start() {
231
266
  const appName = runtime.appName;
232
- // Announce each plugin BEFORE any framework lifecycle fires. Lets
233
- // observers (dev logger, Studio) print the app's composition before
234
- // boot starts so "what's this app made of?" is answerable at first
235
- // log line.
236
- for (const plugin of options.plugins ?? []) {
267
+ // Announce composition BEFORE lifecycle fires. Modules first (in
268
+ // topological order same order they registered into the runtime),
269
+ // then plugins. Same `PluginRegistered` event with `kind: "module" |
270
+ // "plugin"` so observers can render them differently but read from
271
+ // one channel.
272
+ for (const module of orderedModules) {
273
+ await runtime.frameworkEvents.fire(PluginRegistered, {
274
+ appName,
275
+ pluginName: module.name,
276
+ kind: "module",
277
+ });
278
+ }
279
+ for (const plugin of plugins) {
237
280
  await runtime.frameworkEvents.fire(PluginRegistered, {
238
281
  appName,
239
282
  pluginName: plugin.name,
283
+ kind: "plugin",
240
284
  });
241
285
  }
242
286
  // Framework event: AppRegistering — interceptable. Plugins that
@@ -252,6 +296,28 @@ export function createApp(options) {
252
296
  if (!bootingOk) {
253
297
  throw new Error(`Boot prevented by AppBooting subscriber (app: ${appName})`);
254
298
  }
299
+ // Modules first — same lifecycle event surface + per-name hooks as
300
+ // plugins. The hook was pre-created in createApp body so scan +
301
+ // listHooks() see it before start() runs.
302
+ for (const module of orderedModules) {
303
+ const bootHook = pluginBootHooks.get(module.name);
304
+ const t = Date.now();
305
+ const okBoot = await runtime.frameworkEvents.fire(PluginBooting, {
306
+ appName,
307
+ pluginName: module.name,
308
+ kind: "module",
309
+ });
310
+ if (!okBoot) {
311
+ throw new Error(`Boot of module "${module.name}" prevented by PluginBooting subscriber`);
312
+ }
313
+ await bootHook.run({ name: module.name, kind: "module" });
314
+ await runtime.frameworkEvents.fire(PluginBooted, {
315
+ appName,
316
+ pluginName: module.name,
317
+ durationMs: Date.now() - t,
318
+ kind: "module",
319
+ });
320
+ }
255
321
  // Plugins boot in declaration order. Each plugin is wrapped with
256
322
  // PluginBooting (interceptable) + PluginBooted (observable, with
257
323
  // duration) so logging/tracing/Studio can show per-plugin boot
@@ -260,29 +326,49 @@ export function createApp(options) {
260
326
  // Object-form plugins run their `boot` callback; closure-form
261
327
  // plugins additionally fire every `api.boot(...)` they registered
262
328
  // in setup, in declaration order.
263
- const allPlugins = options.plugins ?? [];
329
+ const allPlugins = plugins;
264
330
  for (let i = 0; i < allPlugins.length; i++) {
265
331
  const plugin = allPlugins[i];
266
332
  const pluginName = plugin.name;
267
333
  const okToBoot = await runtime.frameworkEvents.fire(PluginBooting, {
268
334
  appName,
269
335
  pluginName,
336
+ kind: "plugin",
270
337
  });
271
338
  if (!okToBoot) {
272
339
  throw new Error(`Boot of plugin "${pluginName}" prevented by PluginBooting subscriber`);
273
340
  }
274
- const startedAt = Date.now();
275
- if (plugin.boot)
276
- await plugin.boot(container);
341
+ // Per-plugin boot hook — pre-created in createApp body. Chain
342
+ // steps attach JIT so listHooks() sees an empty hook until start()
343
+ // runs (matches Studio's expected view of "what runs at boot").
344
+ const bootHook = pluginBootHooks.get(pluginName);
345
+ if (plugin.boot) {
346
+ bootHook.use(async (_c, next) => {
347
+ await plugin.boot(container);
348
+ await next();
349
+ }, {
350
+ name: "boot",
351
+ });
352
+ }
277
353
  const boots = closureBoots.get(i);
278
354
  if (boots) {
279
- for (const fn of boots)
280
- await fn();
355
+ for (let k = 0; k < boots.length; k++) {
356
+ const fn = boots[k];
357
+ bootHook.use(async (_c, next) => {
358
+ await fn();
359
+ await next();
360
+ }, {
361
+ name: `closure[${k}]`,
362
+ });
363
+ }
281
364
  }
365
+ const startedAt = Date.now();
366
+ await bootHook.run({ name: pluginName, kind: "plugin" });
282
367
  await runtime.frameworkEvents.fire(PluginBooted, {
283
368
  appName,
284
369
  pluginName,
285
370
  durationMs: Date.now() - startedAt,
371
+ kind: "plugin",
286
372
  });
287
373
  }
288
374
  // Default dev console logger. Off when:
@@ -373,7 +459,6 @@ export function createApp(options) {
373
459
  console.error(`[nwire/shutdown] step "${label}" threw — continuing with remaining steps:`, err);
374
460
  }
375
461
  };
376
- const plugins = options.plugins ?? [];
377
462
  for (let i = plugins.length - 1; i >= 0; i--) {
378
463
  const plugin = plugins[i];
379
464
  const pluginName = plugin.name;
@@ -385,6 +470,7 @@ export function createApp(options) {
385
470
  const shutdownOkPerPlugin = await runtime.frameworkEvents.fire(PluginShuttingDown, {
386
471
  appName,
387
472
  pluginName,
473
+ kind: "plugin",
388
474
  });
389
475
  if (!shutdownOkPerPlugin) {
390
476
  // eslint-disable-next-line no-console
@@ -404,6 +490,27 @@ export function createApp(options) {
404
490
  appName,
405
491
  pluginName,
406
492
  durationMs: Date.now() - startedAt,
493
+ kind: "plugin",
494
+ });
495
+ }
496
+ // Symmetric module shutdown — emit lifecycle events for modules in
497
+ // REVERSE order. Modules don't have explicit shutdown callbacks; the
498
+ // events exist so observers see the full lifecycle close cleanly.
499
+ for (let i = orderedModules.length - 1; i >= 0; i--) {
500
+ const module = orderedModules[i];
501
+ const t = Date.now();
502
+ const ok = await runtime.frameworkEvents.fire(PluginShuttingDown, {
503
+ appName,
504
+ pluginName: module.name,
505
+ kind: "module",
506
+ });
507
+ if (!ok)
508
+ continue;
509
+ await runtime.frameworkEvents.fire(PluginShutdown, {
510
+ appName,
511
+ pluginName: module.name,
512
+ durationMs: Date.now() - t,
513
+ kind: "module",
407
514
  });
408
515
  }
409
516
  // Framework event: AppShutdown — observable. Awaited so stop()
@@ -1 +1 @@
1
- {"version":3,"file":"create-app.js","sourceRoot":"","sources":["../src/create-app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-app.js","sourceRoot":"","sources":["../src/create-app.ts"],"names":[],"mappings":"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"}
@@ -11,9 +11,15 @@
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
@@ -21,9 +27,8 @@
21
27
  */
22
28
  import type { z } from "zod";
23
29
  import type { ZodTypeAny } from "@nwire/messages";
24
- import type { EventDefinition } from "@nwire/messages";
25
- import type { HandlerDefinition, HandlerReturn, HandlerContext } from "./define-handler.js";
26
- import { type PublicMarker } from "./public-marker.js";
30
+ import type { EventDefinition, SourceLocation } from "@nwire/messages";
31
+ import { type HandlerDefinition, type HandlerReturn, type HandlerContext } from "./define-handler.js";
27
32
  /**
28
33
  * Retry policy for an action's handler. When a handler throws, the runtime
29
34
  * retries up to `max` times with `backoff` strategy between attempts. After
@@ -52,7 +57,38 @@ export interface ActionSlo {
52
57
  /** Declared success rate target (0–1). */
53
58
  readonly successRate?: number;
54
59
  }
55
- export interface ActionDefinition<TSchema extends ZodTypeAny = ZodTypeAny> extends PublicMarker {
60
+ /**
61
+ * Shape returned when an action definition is called as a factory.
62
+ *
63
+ * const cmd = submitAnswer({ ... }) // { $kind, actionName, input }
64
+ * execute(cmd) // dispatch
65
+ *
66
+ * The runtime's `execute`/`send`/`dispatch` accept either this command
67
+ * message OR the legacy `(action, input)` positional form. Both routes
68
+ * end at the same handler.
69
+ */
70
+ export interface CommandMessage<TSchema extends ZodTypeAny = ZodTypeAny> {
71
+ readonly $kind: "command";
72
+ readonly actionName: string;
73
+ readonly input: z.output<TSchema>;
74
+ }
75
+ /**
76
+ * The non-callable action shape — used as the abstract reference type in
77
+ * function signatures (`runtime.dispatch(action: ActionDefinition, …)`,
78
+ * `defineHandler(action: ActionDefinition, …)`, etc.). Concrete actions
79
+ * returned from `defineAction` are `CallableActionDefinition` (this + a
80
+ * call signature); they're assignable wherever `ActionDefinition` is
81
+ * required because the call signature is purely additive.
82
+ *
83
+ * Why split: TS call signatures are contravariant in their parameter, so
84
+ * a typed `(input: MySchema) => …` is NOT assignable to `(input: unknown)
85
+ * => …`. Keeping the abstract reference type non-callable preserves
86
+ * covariance over `TSchema` — `ActionDefinition<MySchema>` flows freely
87
+ * into `ActionDefinition<ZodTypeAny>` positions across the runtime.
88
+ */
89
+ export interface ActionDefinition<TSchema extends ZodTypeAny = ZodTypeAny> {
90
+ /** Truthy when this definition was marked via `.public()` in a manifest. */
91
+ readonly $public?: true;
56
92
  readonly $kind: "action";
57
93
  readonly name: string;
58
94
  readonly description?: string;
@@ -112,7 +148,20 @@ export interface ActionDefinition<TSchema extends ZodTypeAny = ZodTypeAny> exten
112
148
  * coupling the action definition to its event modules at the type level).
113
149
  */
114
150
  readonly emits?: readonly EventDefinition[];
151
+ /** Where the action was declared. Studio uses this for IDE-open links. */
152
+ readonly $source?: SourceLocation;
153
+ /** Return a callable action clone with `$public: true`. */
154
+ public: () => CallableActionDefinition<TSchema>;
115
155
  }
156
+ /**
157
+ * The full action shape returned from `defineAction` — adds the call
158
+ * signature so consumers can mint a typed `CommandMessage` inline:
159
+ *
160
+ * submitAnswer.name // "submissions.submit-answer"
161
+ * submitAnswer({ studentId, ... }) // CommandMessage
162
+ * submitAnswer.public() // callable clone, $public: true
163
+ */
164
+ export type CallableActionDefinition<TSchema extends ZodTypeAny = ZodTypeAny> = ActionDefinition<TSchema> & ((input: z.input<TSchema>) => CommandMessage<TSchema>);
116
165
  export interface ActionMeta<TSchema extends ZodTypeAny = ZodTypeAny> {
117
166
  readonly name: string;
118
167
  readonly description?: string;
@@ -142,7 +191,24 @@ export interface ActionMeta<TSchema extends ZodTypeAny = ZodTypeAny> {
142
191
  */
143
192
  readonly handler?: (input: z.output<TSchema>, ctx: HandlerContext) => Promise<HandlerReturn> | HandlerReturn;
144
193
  }
145
- export declare function defineAction<TSchema extends ZodTypeAny>(meta: ActionMeta<TSchema>): ActionDefinition<TSchema>;
146
- export declare function defineAction<TSchema extends ZodTypeAny>(name: string, meta: Omit<ActionMeta<TSchema>, "name">): ActionDefinition<TSchema>;
194
+ export declare function defineAction<TSchema extends ZodTypeAny>(meta: ActionMeta<TSchema>): CallableActionDefinition<TSchema>;
195
+ export declare function defineAction<TSchema extends ZodTypeAny>(name: string, meta: Omit<ActionMeta<TSchema>, "name">): CallableActionDefinition<TSchema>;
147
196
  export type ActionInput<A> = A extends ActionDefinition<infer S> ? z.output<S> : never;
197
+ /**
198
+ * Type guard for `CommandMessage`. Runtime accepts either `(action, input)`
199
+ * positional or `command` shorthand; transports + execute() use this to
200
+ * disambiguate.
201
+ */
202
+ export declare function isCommandMessage(x: unknown): x is CommandMessage;
203
+ /**
204
+ * Resolve either dispatch form into `(action, input)`. Centralised so every
205
+ * transport surface (execute, send, ctx.request) accepts both call shapes
206
+ * with one helper. When the caller passes a `CommandMessage`, the resolver
207
+ * looks up the action by name on the runtime; when they pass an
208
+ * `ActionDefinition` + input, it short-circuits.
209
+ */
210
+ export declare function resolveDispatch(actionOrCmd: ActionDefinition | CommandMessage, input: unknown, lookup: (name: string) => ActionDefinition | undefined): {
211
+ action: ActionDefinition;
212
+ input: unknown;
213
+ };
148
214
  //# sourceMappingURL=define-action.d.ts.map
@@ -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,42 +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
- import { markable } from "./public-marker.js";
28
+ import { captureSourceLocation } from "@nwire/messages";
29
+ import { defineHandler, } from "./define-handler.js";
23
30
  export function defineAction(nameOrMeta, maybeMeta) {
31
+ const $source = captureSourceLocation();
24
32
  const meta = typeof nameOrMeta === "string"
25
33
  ? { ...(maybeMeta ?? {}), name: nameOrMeta }
26
34
  : nameOrMeta;
27
- const action = {
28
- $kind: "action",
29
- name: meta.name,
30
- description: meta.description,
31
- schema: meta.schema,
32
- retry: meta.retry,
33
- policy: meta.policy,
34
- persona: meta.persona,
35
- journeyStep: meta.journeyStep,
36
- capability: meta.capability,
37
- slo: meta.slo,
38
- tags: meta.tags,
39
- emits: meta.emits,
40
- };
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.
41
82
  if (meta.handler) {
42
- const userFn = meta.handler;
43
- const handler = {
44
- $kind: "v3-handler",
45
- action: action,
46
- handler: userFn,
47
- };
48
- 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 };
49
126
  }
50
- return markable(action);
127
+ return { action: actionOrCmd, input };
51
128
  }
52
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;AAMH,OAAO,EAAE,QAAQ,EAAqB,MAAM,iBAAiB,CAAC;AA2I9D,MAAM,UAAU,YAAY,CAC1B,UAAwC,EACxC,SAA6C;IAE7C,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;KAClB,CAAC;IACF,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,MAAM,OAAO,GAAsB;YACjC,KAAK,EAAE,YAAY;YACnB,MAAM,EAAE,MAAmC;YAC3C,OAAO,EAAE,MAAsC;SAChD,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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"}