@reventlessdev/reventless-local 3.0.0-alpha.291 → 3.0.0-alpha.293

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/package.json +13 -13
  3. package/src/Platform.res +13 -13
  4. package/src/Platform.res.mjs +48 -48
  5. package/src/UiHints.res +1 -1
  6. package/src/adapter/Auth/LocalAuth.res +2 -2
  7. package/src/adapter/Backend.res +2 -2
  8. package/src/adapter/CommandTopic/LocalCommandTopicChannel.res +1 -1
  9. package/src/adapter/LocalBus.res +1 -1
  10. package/src/adapter/LocalUploadResolvers.res +1 -1
  11. package/src/adapter/Runtime/LocalRuntimeEnvironment.res +8 -3
  12. package/src/adapter/Task/LocalTaskBucket.res +1 -1
  13. package/src/components/Aggregate_Builder.res +2 -2
  14. package/src/components/Aggregate_Builder.res.mjs +4 -4
  15. package/src/components/DcbEventLog_Builder.res +1 -1
  16. package/src/components/StateChangeSlice_Builder.res +3 -3
  17. package/src/components/StateChangeSlice_Builder.res.mjs +3 -3
  18. package/src/reset/LocalSeedReset.res +1 -1
  19. package/tests/adapter/BackendParityTest.res +1 -1
  20. package/tests/adapter/EventHistoryResolverTest.res +2 -2
  21. package/tests/adapter/GraphQL_SchemaInspectorTest.res +1 -1
  22. package/tests/adapter/LocalAuthLoginTest.res +1 -1
  23. package/tests/adapter/QueryDbListResolverTest.res +1 -1
  24. package/tests/adapter/QueryDbResolvedFieldsTest.res +1 -1
  25. package/tests/components/aggregate/AggregateFixtures.res +6 -6
  26. package/tests/components/aggregate/AggregateFixtures.res.mjs +3 -3
  27. package/tests/components/aggregate/AggregateSelfMappingFixtures.res +2 -2
  28. package/tests/components/aggregate/AggregateSelfMappingFixtures.res.mjs +3 -3
  29. package/tests/components/automationslice/AutomationSliceSelfDeadlockFixtures.res +4 -4
  30. package/tests/components/automationslice/AutomationSliceSelfDeadlockFixtures.res.mjs +4 -4
  31. package/tests/components/commandgenerator/CommandGeneratorFixtures.res +3 -3
  32. package/tests/components/commandgenerator/CommandGeneratorFixtures.res.mjs +4 -4
  33. package/tests/components/dcb/DcbCrossPartitionFixtures.res +2 -2
  34. package/tests/components/dcb/DcbCrossPartitionFixtures.res.mjs +2 -2
  35. package/tests/components/dcb/DcbFixtures.res +2 -2
  36. package/tests/components/dcb/DcbFixtures.res.mjs +2 -2
  37. package/tests/components/heartbeat/HeartbeatFixtures.res +1 -1
  38. package/tests/components/outboundtranslationslice/OutboundTranslationSliceFixtures.res +1 -1
  39. package/tests/components/outboundtranslationslice/OutboundTranslationSlicePlatformFixtures.res +2 -2
  40. package/tests/components/outboundtranslationslice/OutboundTranslationSlicePlatformFixtures.res.mjs +2 -2
  41. package/tests/components/readmodel/DcbReadModelE2EFixtures.res +2 -2
  42. package/tests/components/readmodel/DcbReadModelE2EFixtures.res.mjs +2 -2
  43. package/tests/components/stateviewslice/StateViewSliceDisplayNameFixtures.res +1 -1
  44. package/tests/components/stateviewslice/StateViewSliceDisplayNameFixtures.res.mjs +2 -2
  45. package/tests/components/stateviewslice/StateViewSliceFixtures.res +1 -1
  46. package/tests/components/stateviewslice/StateViewSliceFixtures.res.mjs +2 -2
  47. package/tests/components/stateviewslice/StateViewSliceSubIdFixtures.res +1 -1
  48. package/tests/components/stateviewslice/StateViewSliceSubIdFixtures.res.mjs +2 -2
  49. package/tests/plugin/{PluginBehavior_GWT.res → PluginDecision_GWT.res} +2 -2
  50. package/tests/plugin/{PluginBehavior_GWT.res.mjs → PluginDecision_GWT.res.mjs} +8 -8
  51. package/tests/plugin/UiFragmentRegistry_GWT.res +1 -1
  52. package/tests/plugin/UiFragmentRegistry_GWT.res.mjs +5 -5
  53. package/tests/plugin/UiFragments_GWT.res.mjs +1 -1
package/CHANGELOG.md CHANGED
@@ -3,6 +3,33 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # 3.0.0-alpha.293 (2026-10-21)
7
+
8
+ * feat!: a state view's row key is module Id ([08c9726](https://github.com/ReventlessDev/reventless-core/commit/08c972659a3d689a39fd5e2f2026597155e92210))
9
+
10
+ ### BREAKING CHANGES
11
+
12
+ * a state view spec declares its row key as module Id. A
13
+ hand-written module Key in a spec under StateView/ or StateViewStream/
14
+ fails the build with "A state view's row key is `module Id`, not
15
+ `module Key`".
16
+
17
+
18
+
19
+ # 3.0.0-alpha.292 (2026-10-21)
20
+
21
+ * feat!: the write-side logic module is called the decision, and a codemod moves an app over ([cb573ff](https://github.com/ReventlessDev/reventless-core/commit/cb573ff5b928c7d7f3e75988dfaa65066f8c95eb))
22
+
23
+ ### BREAKING CHANGES
24
+
25
+ * <Spec>_Behavior.res, @@reventless.behavior,
26
+ Reventless.Behavior.T, StateChangeSlice.Behavior, Behavior_GWT and
27
+ thenRefused no longer exist. Run `npx reventless-rename-to-decision` at an
28
+ app's root, then rebuild; comments are not rewritten. The PPX must be the
29
+ matching release.
30
+
31
+
32
+
6
33
  # 3.0.0-alpha.291 (2026-10-19)
7
34
 
8
35
  ### Features
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reventlessdev/reventless-local",
3
- "version": "3.0.0-alpha.291",
3
+ "version": "3.0.0-alpha.293",
4
4
  "description": "Local platform for Reventless (in-memory or SQLite backend, for development and testing without AWS)",
5
5
  "license": "Apache-2.0",
6
6
  "bin": {
@@ -34,24 +34,24 @@
34
34
  "graphql-yoga": "^5.21.0",
35
35
  "sury": "11.0.0",
36
36
  "ws": "^8.18.0",
37
- "@reventlessdev/rescript-jest": "1.0.0-alpha.12",
38
- "@reventlessdev/rescript-effect": "1.0.0-alpha.0",
37
+ "@reventlessdev/rescript-effect": "1.0.0-alpha.1",
38
+ "@reventlessdev/rescript-jest": "1.0.0-alpha.13",
39
+ "@reventlessdev/rescript-graphql-yoga": "1.0.0-alpha.29",
39
40
  "@reventlessdev/rescript-mcp-sdk": "1.0.0-alpha.23",
40
- "@reventlessdev/rescript-node": "2.0.0-alpha.22",
41
+ "@reventlessdev/rescript-node": "2.0.0-alpha.23",
41
42
  "@reventlessdev/rescript-pulumi-pulumi": "3.0.0-alpha.0",
42
- "@reventlessdev/rescript-graphql-yoga": "1.0.0-alpha.29",
43
- "@reventlessdev/reventless-graphql-server": "1.0.0-alpha.148",
44
- "@reventlessdev/reventless-gwt": "1.0.0-alpha.248",
45
- "@reventlessdev/reventless-postgres": "3.0.0-alpha.164",
46
- "@reventlessdev/reventless-infra": "3.0.0-alpha.197",
47
- "@reventlessdev/reventless-spec": "3.0.0-alpha.169",
48
- "@reventlessdev/reventless-core": "3.0.0-alpha.300",
49
- "@reventlessdev/reventless-seed": "1.0.0-alpha.34"
43
+ "@reventlessdev/reventless-core": "3.0.0-alpha.302",
44
+ "@reventlessdev/reventless-graphql-server": "1.0.0-alpha.150",
45
+ "@reventlessdev/reventless-gwt": "1.0.0-alpha.250",
46
+ "@reventlessdev/reventless-infra": "3.0.0-alpha.199",
47
+ "@reventlessdev/reventless-postgres": "3.0.0-alpha.166",
48
+ "@reventlessdev/reventless-spec": "3.0.0-alpha.171",
49
+ "@reventlessdev/reventless-seed": "1.0.0-alpha.35"
50
50
  },
51
51
  "devDependencies": {
52
52
  "rescript": "12.3.1",
53
53
  "sury-ppx": "11.0.0",
54
- "@reventlessdev/reventless-ppx": "1.0.0-alpha.103"
54
+ "@reventlessdev/reventless-ppx": "1.0.0-alpha.104"
55
55
  },
56
56
  "peerDependencies": {
57
57
  "rescript": "^12.3.1"
package/src/Platform.res CHANGED
@@ -585,21 +585,21 @@ module MakeWithConfig = (
585
585
  module Aggregate = {
586
586
  module Make = (
587
587
  Spec: Reventless.Aggregate.Spec,
588
- Behavior: Reventless.Behavior.T with module Spec := Spec,
588
+ Decision: Reventless.Decision.T with module Spec := Spec,
589
589
  EventMappings: ReventlessInfra.EventMapper.Mappings with module Target := Spec,
590
590
  ): (ReventlessInfra.Aggregate.T with type api = unit) => AggregateMaker.Make(
591
591
  Spec,
592
- Behavior,
592
+ Decision,
593
593
  EventMappings,
594
594
  )
595
595
  /** Async variant — in-memory uses the same channel (no FIFO distinction). */
596
596
  module MakeAsync = (
597
597
  Spec: Reventless.Aggregate.Spec,
598
- Behavior: Reventless.Behavior.T with module Spec := Spec,
598
+ Decision: Reventless.Decision.T with module Spec := Spec,
599
599
  EventMappings: ReventlessInfra.EventMapper.Mappings with module Target := Spec,
600
600
  ): (ReventlessInfra.Aggregate.T with type api = unit) => AggregateMaker.Make(
601
601
  Spec,
602
- Behavior,
602
+ Decision,
603
603
  EventMappings,
604
604
  )
605
605
  }
@@ -717,16 +717,16 @@ module MakeWithConfig = (
717
717
  module StateChangeSlice = {
718
718
  module Make = (
719
719
  Spec: Reventless.StateChangeSlice.Spec,
720
- Behavior: Reventless.StateChangeSlice.Behavior with module Spec := Spec,
720
+ Decision: Reventless.StateChangeSlice.Decision with module Spec := Spec,
721
721
  ): (
722
722
  ReventlessInfra.StateChangeSlice.T with module Spec = Spec
723
- ) => StateChangeSlice_Builder.Make(Spec, Behavior)
723
+ ) => StateChangeSlice_Builder.Make(Spec, Decision)
724
724
  /** Async variant — in-memory uses the same channel (no FIFO distinction). */
725
725
  module MakeAsync = (
726
726
  Spec: Reventless.StateChangeSlice.Spec,
727
- Behavior: Reventless.StateChangeSlice.Behavior with module Spec := Spec,
727
+ Decision: Reventless.StateChangeSlice.Decision with module Spec := Spec,
728
728
  ): (ReventlessInfra.StateChangeSlice.T with module Spec = Spec) => {
729
- include StateChangeSlice_Builder.Make(Spec, Behavior)
729
+ include StateChangeSlice_Builder.Make(Spec, Decision)
730
730
  let isAsync = true
731
731
  }
732
732
  }
@@ -746,7 +746,7 @@ module MakeWithConfig = (
746
746
  // Built once and passed into Admin.construct below.
747
747
  module UiFragmentRegistrySlice = StateChangeSlice.Make(
748
748
  ReventlessCore.UiFragmentRegistry,
749
- ReventlessCore.UiFragmentRegistry_Behavior,
749
+ ReventlessCore.UiFragmentRegistry_Decision,
750
750
  )
751
751
  module UiFragmentsViewSlice = StateViewSlice.Make(
752
752
  ReventlessCore.UiFragments,
@@ -822,7 +822,7 @@ module MakeWithConfig = (
822
822
  module LocalPluginAggregate: ReventlessInfra.Aggregate.T
823
823
  with type api = unit = AggregateMaker.Make(
824
824
  ReventlessCore.PluginSpec,
825
- ReventlessCore.PluginBehavior,
825
+ ReventlessCore.PluginDecision,
826
826
  ReventlessInfra.NoEventMappings.Make(ReventlessCore.PluginSpec),
827
827
  )
828
828
 
@@ -879,7 +879,7 @@ module MakeWithConfig = (
879
879
  // Per-session server ports for the VS Code local platform runner (features
880
880
  // plan Phase 9). The runner spawns one platform child per app folder; default
881
881
  // ports (4000/4001/3001/3002) collide when several run, so each is overridable
882
- // via env. Defaults preserve today's behaviour for all non-runner callers.
882
+ // via env. Defaults preserve today's behavior for all non-runner callers.
883
883
  let resolvePort = (key, fallback) =>
884
884
  NodeProcess.env->Dict.get(key)->Option.flatMap(v => Int.fromString(v))->Option.getOr(fallback)
885
885
  let domainPort = resolvePort("REVENTLESS_DOMAIN_PORT", 4000)
@@ -2196,7 +2196,7 @@ module MakeWithConfig = (
2196
2196
  // own explicit `Platform_UIFragments` flat-array resolver registered
2197
2197
  // above; it isn't exposed as an MCP resource because the auto-generated
2198
2198
  // single/list field shape was removed when the auto-generated query
2199
- // entry was dropped in favour of that explicit field.
2199
+ // entry was dropped in favor of that explicit field.
2200
2200
  let adminFieldToQueryDb = Dict.fromArray([
2201
2201
  (singleQueryField, pluginQueryDbName),
2202
2202
  (listQueryField, pluginQueryDbName),
@@ -2475,7 +2475,7 @@ module MakeWithConfig = (
2475
2475
  | Platform => None
2476
2476
  }
2477
2477
 
2478
- // Each plugin creates its own scheduler (mirrors AWS behaviour).
2478
+ // Each plugin creates its own scheduler (mirrors AWS behavior).
2479
2479
  let scheduler = makeScheduler()
2480
2480
  hooks.scheduler := Some(scheduler)
2481
2481
  hooks.api := Some({val: ()->Obj.magic})
@@ -41,7 +41,7 @@ import * as BakedManifest$ReventlessLocal from "./BakedManifest.res.mjs";
41
41
  import * as HostShellDist$ReventlessLocal from "./HostShellDist.res.mjs";
42
42
  import * as LocalEventTap$ReventlessLocal from "./adapter/LocalEventTap.res.mjs";
43
43
  import * as Platform_Admin$ReventlessCore from "@reventlessdev/reventless-core/src/admin/Platform_Admin.res.mjs";
44
- import * as PluginBehavior$ReventlessCore from "@reventlessdev/reventless-core/src/plugin/lifecycle/PluginBehavior.res.mjs";
44
+ import * as PluginDecision$ReventlessCore from "@reventlessdev/reventless-core/src/plugin/lifecycle/PluginDecision.res.mjs";
45
45
  import * as Plugin_Helpers$ReventlessCore from "@reventlessdev/reventless-core/src/plugin/component/Plugin_Helpers.res.mjs";
46
46
  import * as Plugin_Builder$ReventlessLocal from "./components/Plugin_Builder.res.mjs";
47
47
  import * as Counter_Builder$ReventlessLocal from "./components/Counter_Builder.res.mjs";
@@ -97,7 +97,7 @@ import * as StateChangeSlice_Builder$ReventlessLocal from "./components/StateCha
97
97
  import * as DcbEventLogStorage_Sqlite$ReventlessLocal from "./adapter/DcbEventLog/DcbEventLogStorage_Sqlite.res.mjs";
98
98
  import * as LocalEventCollectorChannel$ReventlessLocal from "./adapter/EventCollector/LocalEventCollectorChannel.res.mjs";
99
99
  import * as PluginRuntime_Builder_Micro$ReventlessCore from "@reventlessdev/reventless-core/src/adapter/Runtime/PluginRuntime_Builder_Micro.res.mjs";
100
- import * as UiFragmentRegistry_Behavior$ReventlessCore from "@reventlessdev/reventless-core/src/admin/UiFragmentRegistry/StateChange/UiFragmentRegistry_Behavior.res.mjs";
100
+ import * as UiFragmentRegistry_Decision$ReventlessCore from "@reventlessdev/reventless-core/src/admin/UiFragmentRegistry/StateChange/UiFragmentRegistry_Decision.res.mjs";
101
101
  import * as Platform_PluginStructuresApi$ReventlessCore from "@reventlessdev/reventless-core/src/admin/Platform_PluginStructuresApi.res.mjs";
102
102
  import * as EventHistoryResolvers_GraphQL$ReventlessLocal from "./adapter/EventHistory/EventHistoryResolvers_GraphQL.res.mjs";
103
103
  import * as InboundTranslationSlice_Builder$ReventlessLocal from "./components/InboundTranslationSlice_Builder.res.mjs";
@@ -489,8 +489,8 @@ function MakeWithConfig(Config) {
489
489
  let AutomationSliceMaker = AutomationSlice_Builder$ReventlessLocal.Make(Bus);
490
490
  let OutboundTranslationSliceMaker = OutboundTranslationSlice_Builder$ReventlessLocal.Make(Bus);
491
491
  let InboundTranslationSliceMaker = InboundTranslationSlice_Builder$ReventlessLocal.Make(Bus);
492
- let Make = Spec => (Behavior => (EventMappings => {
493
- let $$let = AggregateMaker.Make(Spec)(Behavior)(EventMappings);
492
+ let Make = Spec => (Decision => (EventMappings => {
493
+ let $$let = AggregateMaker.Make(Spec)(Decision)(EventMappings);
494
494
  return {
495
495
  Spec: $$let.Spec,
496
496
  make: $$let.make,
@@ -499,8 +499,8 @@ function MakeWithConfig(Config) {
499
499
  finish: $$let.finish
500
500
  };
501
501
  }));
502
- let MakeAsync = Spec => (Behavior => (EventMappings => {
503
- let $$let = AggregateMaker.Make(Spec)(Behavior)(EventMappings);
502
+ let MakeAsync = Spec => (Decision => (EventMappings => {
503
+ let $$let = AggregateMaker.Make(Spec)(Decision)(EventMappings);
504
504
  return {
505
505
  Spec: $$let.Spec,
506
506
  make: $$let.make,
@@ -610,20 +610,20 @@ function MakeWithConfig(Config) {
610
610
  Make: Make$5
611
611
  };
612
612
  let Counter = Counter_Builder$ReventlessLocal.Make(Bus);
613
- let Make$6 = Spec => (Behavior => {
614
- let $$let = StateChangeSlice_Builder$ReventlessLocal.Make(Spec)(Behavior);
613
+ let Make$6 = Spec => (Decision => {
614
+ let $$let = StateChangeSlice_Builder$ReventlessLocal.Make(Spec)(Decision);
615
615
  return {
616
616
  Spec: $$let.Spec,
617
- Behavior: $$let.Behavior,
617
+ Decision: $$let.Decision,
618
618
  isAsync: $$let.isAsync,
619
619
  make: $$let.make
620
620
  };
621
621
  });
622
- let MakeAsync$1 = Spec => (Behavior => {
623
- let include = StateChangeSlice_Builder$ReventlessLocal.Make(Spec)(Behavior);
622
+ let MakeAsync$1 = Spec => (Decision => {
623
+ let include = StateChangeSlice_Builder$ReventlessLocal.Make(Spec)(Decision);
624
624
  return {
625
625
  Spec: include.Spec,
626
- Behavior: include.Behavior,
626
+ Decision: include.Decision,
627
627
  isAsync: true,
628
628
  make: include.make
629
629
  };
@@ -655,24 +655,24 @@ function MakeWithConfig(Config) {
655
655
  traits: UiFragmentRegistry$ReventlessCore.traits,
656
656
  readConsistency: UiFragmentRegistry$ReventlessCore.readConsistency
657
657
  };
658
- let Behavior = {
658
+ let Decision = {
659
659
  initialState: undefined,
660
- evolve: UiFragmentRegistry_Behavior$ReventlessCore.evolve,
661
- decide: UiFragmentRegistry_Behavior$ReventlessCore.decide,
662
- moduleUrl: UiFragmentRegistry_Behavior$ReventlessCore.moduleUrl
660
+ evolve: UiFragmentRegistry_Decision$ReventlessCore.evolve,
661
+ decide: UiFragmentRegistry_Decision$ReventlessCore.decide,
662
+ moduleUrl: UiFragmentRegistry_Decision$ReventlessCore.moduleUrl
663
663
  };
664
- let $$let = StateChangeSlice_Builder$ReventlessLocal.Make(Spec)(Behavior);
664
+ let $$let = StateChangeSlice_Builder$ReventlessLocal.Make(Spec)(Decision);
665
665
  let UiFragmentRegistrySlice_Spec = $$let.Spec;
666
- let UiFragmentRegistrySlice_Behavior = $$let.Behavior;
666
+ let UiFragmentRegistrySlice_Decision = $$let.Decision;
667
667
  let UiFragmentRegistrySlice_isAsync = $$let.isAsync;
668
668
  let UiFragmentRegistrySlice_make = $$let.make;
669
669
  let UiFragmentRegistrySlice = {
670
670
  Spec: UiFragmentRegistrySlice_Spec,
671
- Behavior: UiFragmentRegistrySlice_Behavior,
671
+ Decision: UiFragmentRegistrySlice_Decision,
672
672
  isAsync: UiFragmentRegistrySlice_isAsync,
673
673
  make: UiFragmentRegistrySlice_make
674
674
  };
675
- let Spec_Key = {
675
+ let Spec_Id = {
676
676
  schema: Id$Reventless.StringPure.schema,
677
677
  make: prim => prim,
678
678
  makeFromString: prim => prim,
@@ -683,7 +683,7 @@ function MakeWithConfig(Config) {
683
683
  name: UiFragments$ReventlessCore.name,
684
684
  moduleUrl: UiFragments$ReventlessCore.moduleUrl,
685
685
  stateSchema: UiFragments$ReventlessCore.stateSchema,
686
- Key: Spec_Key,
686
+ Id: Spec_Id,
687
687
  consumedEventSchema: UiFragments$ReventlessCore.consumedEventSchema,
688
688
  config: UiFragments$ReventlessCore.config,
689
689
  subIdConfig: undefined,
@@ -766,11 +766,11 @@ function MakeWithConfig(Config) {
766
766
  commandTransition: PluginSpec$ReventlessCore.commandTransition,
767
767
  traits: PluginSpec$ReventlessCore.traits
768
768
  })({
769
- initialState: PluginBehavior$ReventlessCore.initialState,
770
- evolve: PluginBehavior$ReventlessCore.evolve,
771
- decide: PluginBehavior$ReventlessCore.decide,
769
+ initialState: PluginDecision$ReventlessCore.initialState,
770
+ evolve: PluginDecision$ReventlessCore.evolve,
771
+ decide: PluginDecision$ReventlessCore.decide,
772
772
  snapshot: undefined,
773
- moduleUrl: PluginBehavior$ReventlessCore.moduleUrl
773
+ moduleUrl: PluginDecision$ReventlessCore.moduleUrl
774
774
  })(NoEventMappings$ReventlessInfra.Make({
775
775
  name: PluginSpec$ReventlessCore.name,
776
776
  Id: Id$Reventless.$$String,
@@ -2250,8 +2250,8 @@ function Make($star) {
2250
2250
  let AutomationSliceMaker = AutomationSlice_Builder$ReventlessLocal.Make(Bus);
2251
2251
  let OutboundTranslationSliceMaker = OutboundTranslationSlice_Builder$ReventlessLocal.Make(Bus);
2252
2252
  let InboundTranslationSliceMaker = InboundTranslationSlice_Builder$ReventlessLocal.Make(Bus);
2253
- let Make$1 = Spec => (Behavior => (EventMappings => {
2254
- let $$let = AggregateMaker.Make(Spec)(Behavior)(EventMappings);
2253
+ let Make$1 = Spec => (Decision => (EventMappings => {
2254
+ let $$let = AggregateMaker.Make(Spec)(Decision)(EventMappings);
2255
2255
  return {
2256
2256
  Spec: $$let.Spec,
2257
2257
  make: $$let.make,
@@ -2260,8 +2260,8 @@ function Make($star) {
2260
2260
  finish: $$let.finish
2261
2261
  };
2262
2262
  }));
2263
- let MakeAsync = Spec => (Behavior => (EventMappings => {
2264
- let $$let = AggregateMaker.Make(Spec)(Behavior)(EventMappings);
2263
+ let MakeAsync = Spec => (Decision => (EventMappings => {
2264
+ let $$let = AggregateMaker.Make(Spec)(Decision)(EventMappings);
2265
2265
  return {
2266
2266
  Spec: $$let.Spec,
2267
2267
  make: $$let.make,
@@ -2371,20 +2371,20 @@ function Make($star) {
2371
2371
  Make: Make$6
2372
2372
  };
2373
2373
  let Counter = Counter_Builder$ReventlessLocal.Make(Bus);
2374
- let Make$7 = Spec => (Behavior => {
2375
- let $$let = StateChangeSlice_Builder$ReventlessLocal.Make(Spec)(Behavior);
2374
+ let Make$7 = Spec => (Decision => {
2375
+ let $$let = StateChangeSlice_Builder$ReventlessLocal.Make(Spec)(Decision);
2376
2376
  return {
2377
2377
  Spec: $$let.Spec,
2378
- Behavior: $$let.Behavior,
2378
+ Decision: $$let.Decision,
2379
2379
  isAsync: $$let.isAsync,
2380
2380
  make: $$let.make
2381
2381
  };
2382
2382
  });
2383
- let MakeAsync$1 = Spec => (Behavior => {
2384
- let include = StateChangeSlice_Builder$ReventlessLocal.Make(Spec)(Behavior);
2383
+ let MakeAsync$1 = Spec => (Decision => {
2384
+ let include = StateChangeSlice_Builder$ReventlessLocal.Make(Spec)(Decision);
2385
2385
  return {
2386
2386
  Spec: include.Spec,
2387
- Behavior: include.Behavior,
2387
+ Decision: include.Decision,
2388
2388
  isAsync: true,
2389
2389
  make: include.make
2390
2390
  };
@@ -2416,24 +2416,24 @@ function Make($star) {
2416
2416
  traits: UiFragmentRegistry$ReventlessCore.traits,
2417
2417
  readConsistency: UiFragmentRegistry$ReventlessCore.readConsistency
2418
2418
  };
2419
- let Behavior = {
2419
+ let Decision = {
2420
2420
  initialState: undefined,
2421
- evolve: UiFragmentRegistry_Behavior$ReventlessCore.evolve,
2422
- decide: UiFragmentRegistry_Behavior$ReventlessCore.decide,
2423
- moduleUrl: UiFragmentRegistry_Behavior$ReventlessCore.moduleUrl
2421
+ evolve: UiFragmentRegistry_Decision$ReventlessCore.evolve,
2422
+ decide: UiFragmentRegistry_Decision$ReventlessCore.decide,
2423
+ moduleUrl: UiFragmentRegistry_Decision$ReventlessCore.moduleUrl
2424
2424
  };
2425
- let $$let = StateChangeSlice_Builder$ReventlessLocal.Make(Spec)(Behavior);
2425
+ let $$let = StateChangeSlice_Builder$ReventlessLocal.Make(Spec)(Decision);
2426
2426
  let UiFragmentRegistrySlice_Spec = $$let.Spec;
2427
- let UiFragmentRegistrySlice_Behavior = $$let.Behavior;
2427
+ let UiFragmentRegistrySlice_Decision = $$let.Decision;
2428
2428
  let UiFragmentRegistrySlice_isAsync = $$let.isAsync;
2429
2429
  let UiFragmentRegistrySlice_make = $$let.make;
2430
2430
  let UiFragmentRegistrySlice = {
2431
2431
  Spec: UiFragmentRegistrySlice_Spec,
2432
- Behavior: UiFragmentRegistrySlice_Behavior,
2432
+ Decision: UiFragmentRegistrySlice_Decision,
2433
2433
  isAsync: UiFragmentRegistrySlice_isAsync,
2434
2434
  make: UiFragmentRegistrySlice_make
2435
2435
  };
2436
- let Spec_Key = {
2436
+ let Spec_Id = {
2437
2437
  schema: Id$Reventless.StringPure.schema,
2438
2438
  make: prim => prim,
2439
2439
  makeFromString: prim => prim,
@@ -2444,7 +2444,7 @@ function Make($star) {
2444
2444
  name: UiFragments$ReventlessCore.name,
2445
2445
  moduleUrl: UiFragments$ReventlessCore.moduleUrl,
2446
2446
  stateSchema: UiFragments$ReventlessCore.stateSchema,
2447
- Key: Spec_Key,
2447
+ Id: Spec_Id,
2448
2448
  consumedEventSchema: UiFragments$ReventlessCore.consumedEventSchema,
2449
2449
  config: UiFragments$ReventlessCore.config,
2450
2450
  subIdConfig: undefined,
@@ -2527,11 +2527,11 @@ function Make($star) {
2527
2527
  commandTransition: PluginSpec$ReventlessCore.commandTransition,
2528
2528
  traits: PluginSpec$ReventlessCore.traits
2529
2529
  })({
2530
- initialState: PluginBehavior$ReventlessCore.initialState,
2531
- evolve: PluginBehavior$ReventlessCore.evolve,
2532
- decide: PluginBehavior$ReventlessCore.decide,
2530
+ initialState: PluginDecision$ReventlessCore.initialState,
2531
+ evolve: PluginDecision$ReventlessCore.evolve,
2532
+ decide: PluginDecision$ReventlessCore.decide,
2533
2533
  snapshot: undefined,
2534
- moduleUrl: PluginBehavior$ReventlessCore.moduleUrl
2534
+ moduleUrl: PluginDecision$ReventlessCore.moduleUrl
2535
2535
  })(NoEventMappings$ReventlessInfra.Make({
2536
2536
  name: PluginSpec$ReventlessCore.name,
2537
2537
  Id: Id$Reventless.$$String,
package/src/UiHints.res CHANGED
@@ -12,7 +12,7 @@
12
12
  // withdrawn declaration leaves yesterday's hints in place with nothing in the
13
13
  // diff to explain them. Unlike `ShellConfig` there is no merge — AWS writes the
14
14
  // declared file verbatim, and layering a deployment's hints over the shell
15
- // package's demonstration hints would invent a third behaviour neither platform
15
+ // package's demonstration hints would invent a third behavior neither platform
16
16
  // has.
17
17
 
18
18
  let log = ReventlessCore.Logger.fromEnv()
@@ -113,7 +113,7 @@ module Login = {
113
113
  // every ReScript rebuild, so a per-process secret logs the developer out
114
114
  // several times an hour, mid-task, with a "reconnecting" spinner as the
115
115
  // only explanation.
116
- // 3. A random 32 bytes, per process — today's behaviour, kept for the run
116
+ // 3. A random 32 bytes, per process — today's behavior, kept for the run
117
117
  // that has no `.reventless/` to write to.
118
118
  //
119
119
  // The directory is used but never created. Its presence is what distinguishes
@@ -389,7 +389,7 @@ let authenticate = async (ctx: ReventlessCore.Auth_Adapter.requestContext): Iden
389
389
  | None =>
390
390
  // No headers: in-memory mode defaults to defaultUser so local dev
391
391
  // against an AllowAuthenticated-defaulted backend "just works" without
392
- // setting headers. Anonymous behaviour is reachable only by building
392
+ // setting headers. Anonymous behavior is reachable only by building
393
393
  // an Identity.anonymous explicitly in code.
394
394
  Authenticated(defaultUser)
395
395
  | Some(g) =>
@@ -1,6 +1,6 @@
1
1
  // Selects which storage backend the in-memory Platform uses.
2
2
  //
3
- // Memory — pure in-memory dicts/refs, current default behaviour, wiped on restart.
3
+ // Memory — pure in-memory dicts/refs, current default behavior, wiped on restart.
4
4
  // Sqlite — opt-in on-disk SQLite file via SqliteDriver. Survives process restart.
5
5
  // resetOnStart=true wipes the file when the Platform is constructed.
6
6
 
@@ -41,7 +41,7 @@ let removeFileIfExists = (path: string) =>
41
41
  | _ => ()
42
42
  }
43
43
 
44
- // Parses REVENTLESS_LOCAL_BACKEND. Recognised forms:
44
+ // Parses REVENTLESS_LOCAL_BACKEND. Recognized forms:
45
45
  // sqlite:./local.db — Sqlite backend, no reset on start
46
46
  // sqlite:./local.db?reset — Sqlite backend, wipes file at Platform.Make time
47
47
  // memory — explicit Memory selector
@@ -62,7 +62,7 @@ module Make = (Bus: LocalBus.T) => {
62
62
  let handleChannelEvent = (
63
63
  handleCmds: ReventlessCore.CommandTopic.jsonCommandsHandler,
64
64
  ): Pulumi.Output.t<
65
- ReventlessCore.Runtime.effectHandler<callbackEvent, 'context, unit, string>,
65
+ ReventlessCore.Runtime.effectInvocationHandler<callbackEvent, 'context, unit, string>,
66
66
  > => {
67
67
  handleCmdsRef.contents = Some(handleCmds)
68
68
 
@@ -117,7 +117,7 @@ module type T = {
117
117
  let registerQueryDbScan: (string, unit => array<JSON.t>) => unit
118
118
  let getQueryDbScan: string => option<unit => array<JSON.t>>
119
119
  // Stream variant: lazily creates a Stream from current storage contents.
120
- // Used by LocalQueryEngine to honour ~limit via Stream.take without loading all items.
120
+ // Used by LocalQueryEngine to honor ~limit via Stream.take without loading all items.
121
121
  let registerQueryDbStream: (string, unit => Stream.t<JSON.t, string, unit>) => unit
122
122
  let getQueryDbStream: string => option<unit => Stream.t<JSON.t, string, unit>>
123
123
  // Indexed equality lookup: (field, value) → matching items. The SQLite backend
@@ -1,6 +1,6 @@
1
1
  // Local upload resolver logic (route B), backed by `LocalObjectStore`. Shared by the
2
2
  // dev platform (`Platform.res` registers these on the domain server) and
3
- // `ServedBucketHttpTest`, so the mint/release behaviour has one definition.
3
+ // `ServedBucketHttpTest`, so the mint/release behavior has one definition.
4
4
  //
5
5
  // The dev store has no identities and no clock, so release enforces only the *shape*
6
6
  // of the rule (key under a served prefix), not the identity/age conditions AWS applies
@@ -20,7 +20,7 @@ external asUnitHandler: ((JSON.t, unit) => promise<'r>) => (JSON.t, unit) => pro
20
20
 
21
21
  let make = (
22
22
  ~name as _: string,
23
- ~handler: Pulumi.Output.t<ReventlessCore.Runtime.eventHandler<event, context, 'result>>,
23
+ ~handler: Pulumi.Output.t<ReventlessCore.Runtime.invocationHandler<event, context, 'result>>,
24
24
  ~memorySize as _=1024,
25
25
  ~timeout as _=30,
26
26
  ~opts as _=?,
@@ -62,6 +62,11 @@ let extractSentTimestamp = (_event: event) => Some(Date.now())
62
62
  // No redelivery in-process — the bus calls each handler once.
63
63
  let extractRetryCount = (_event: event) => Some(1)
64
64
 
65
- external asEventHandler: 'a => ReventlessCore.Runtime.eventHandler<event, context, 'r> = "%identity"
66
- external asEffectHandler: 'a => ReventlessCore.Runtime.effectHandler<event, context, 'r, 'error> =
65
+ external asEventHandler: 'a => ReventlessCore.Runtime.invocationHandler<event, context, 'r> =
67
66
  "%identity"
67
+ external asEffectHandler: 'a => ReventlessCore.Runtime.effectInvocationHandler<
68
+ event,
69
+ context,
70
+ 'r,
71
+ 'error,
72
+ > = "%identity"
@@ -17,7 +17,7 @@ let connect: Task_Adapter.connect<bucketParts, runtimeParts> = (
17
17
  ~opts as _,
18
18
  ) => ()
19
19
 
20
- let makeHandler = (callback: Task.bucketCallback): Runtime.eventHandler<
20
+ let makeHandler = (callback: Task.bucketCallback): Runtime.invocationHandler<
21
21
  callbackEvent,
22
22
  context,
23
23
  array<Task.taskAction>,
@@ -28,12 +28,12 @@ module MakeWithHooks = (
28
28
 
29
29
  module Make = (
30
30
  Spec: Reventless.Aggregate.Spec,
31
- Behavior: Reventless.Behavior.T with module Spec := Spec,
31
+ Decision: Reventless.Decision.T with module Spec := Spec,
32
32
  EventMappings: ReventlessInfra.EventMapper.Mappings with module Target := Spec,
33
33
  ) => {
34
34
  include ReventlessCore.Aggregate_Builder.Make(
35
35
  Spec,
36
- Behavior,
36
+ Decision,
37
37
  EventMappings,
38
38
  RuntimeEnvironment,
39
39
  CommandGeneratorResolvers_GraphQL,
@@ -56,8 +56,8 @@ function MakeWithHooks(Bus) {
56
56
  let AggregateRuntimeBuilder = LocalAggregateRuntime_Builder$ReventlessLocal.Make(Bus)({
57
57
  make: CommandTopicChannel.make
58
58
  })(EventCollectorChannel);
59
- let Make = Spec => (Behavior => (EventMappings => {
60
- let include = Aggregate_Builder$ReventlessCore.Make(Spec)(Behavior)({
59
+ let Make = Spec => (Decision => (EventMappings => {
60
+ let include = Aggregate_Builder$ReventlessCore.Make(Spec)(Decision)({
61
61
  mappings: EventMappings.mappings,
62
62
  counter: EventMappings.counter
63
63
  })({
@@ -105,8 +105,8 @@ function Make(Bus) {
105
105
  let AggregateRuntimeBuilder = LocalAggregateRuntime_Builder$ReventlessLocal.Make(Bus)({
106
106
  make: CommandTopicChannel.make
107
107
  })(EventCollectorChannel);
108
- let Make$1 = Spec => (Behavior => (EventMappings => {
109
- let include = Aggregate_Builder$ReventlessCore.Make(Spec)(Behavior)({
108
+ let Make$1 = Spec => (Decision => (EventMappings => {
109
+ let include = Aggregate_Builder$ReventlessCore.Make(Spec)(Decision)({
110
110
  mappings: EventMappings.mappings,
111
111
  counter: EventMappings.counter
112
112
  })({
@@ -4,7 +4,7 @@ module Make = (Bus: LocalBus.T) => {
4
4
  module EventTopicPublisher = LocalEventTopicPublisher.Make(Bus)
5
5
 
6
6
  // Use the backend-aware storage functor (as Platform does), not the plain
7
- // module: the functor consults BackendState so a standalone DCB log honours
7
+ // module: the functor consults BackendState so a standalone DCB log honors
8
8
  // REVENTLESS_LOCAL_BACKEND=sqlite, and it registers the read with the Bus so
9
9
  // `Bus.getDcbEventLogRead` can see it. The plain module did neither — the log
10
10
  // silently stayed in memory under SQLite and was invisible to bus readers.
@@ -2,11 +2,11 @@
2
2
 
3
3
  module Make = (
4
4
  Spec: Reventless.StateChangeSlice.Spec,
5
- Behavior: Reventless.StateChangeSlice.Behavior with module Spec := Spec,
5
+ Decision: Reventless.StateChangeSlice.Decision with module Spec := Spec,
6
6
  ) => {
7
- module Inner = ReventlessCore.StateChangeSlice_Builder.Make(Spec, Behavior)
7
+ module Inner = ReventlessCore.StateChangeSlice_Builder.Make(Spec, Decision)
8
8
  module Spec = Spec
9
- module Behavior = Behavior
9
+ module Decision = Decision
10
10
  let isAsync = Inner.isAsync
11
11
  type component = Inner.component
12
12
  let make: (
@@ -3,12 +3,12 @@
3
3
  import * as StateChangeSlice_Builder$ReventlessCore from "@reventlessdev/reventless-core/src/components/StateChangeSlice/StateChangeSlice_Builder.res.mjs";
4
4
 
5
5
  function Make(Spec) {
6
- return Behavior => {
7
- let Inner = StateChangeSlice_Builder$ReventlessCore.Make(Spec)(Behavior);
6
+ return Decision => {
7
+ let Inner = StateChangeSlice_Builder$ReventlessCore.Make(Spec)(Decision);
8
8
  return {
9
9
  Inner: Inner,
10
10
  Spec: Spec,
11
- Behavior: Behavior,
11
+ Decision: Decision,
12
12
  isAsync: Inner.isAsync,
13
13
  make: Inner.make
14
14
  };
@@ -552,7 +552,7 @@ let run = (~dbPath: option<string>=?): unit => {
552
552
  Console.log("Nothing to do.")
553
553
  } else {
554
554
  // Set at all ⇒ it is the answer, affirmative or not. Falling through to
555
- // the prompt on an unrecognised value would ask for a TTY the runs this
555
+ // the prompt on an unrecognized value would ask for a TTY the runs this
556
556
  // variable exists for do not have, so `SEED_RESET_CONFIRM=no` would
557
557
  // throw where it plainly means "don't". Both arms read the reply
558
558
  // through one predicate, which is what keeps the typed `y` and the
@@ -1,4 +1,4 @@
1
- // Behavioural parity between Memory, Sqlite, and Postgres backends at the adapter
1
+ // Behavioral parity between Memory, Sqlite, and Postgres backends at the adapter
2
2
  // layer. Each test runs the same scenario against every BackendState setting.
3
3
  //
4
4
  // The Postgres arm is exercised only when PG_URL is set (so the default test run
@@ -1,6 +1,6 @@
1
- // Behavioural tests for the event-history query resolver's pure core —
1
+ // Behavioral tests for the event-history query resolver's pure core —
2
2
  // position ordering, filtering, and keyset pagination. That is where the
3
- // behaviour lives; the Bus fork around them is two registry lookups.
3
+ // behavior lives; the Bus fork around them is two registry lookups.
4
4
 
5
5
  @@warning("-44")
6
6
 
@@ -755,7 +755,7 @@ describe("GraphQL_SchemaInspector", () => {
755
755
  // Per-field eq inputs derived from @id and @index
756
756
  expect(sdl->String.includes("input IndexedProductFilter"))->toBe(true)
757
757
  expect(sdl->String.includes("productIdEq: ID"))->toBe(true)
758
- // ownerId is detected as an entity reference → ID (matches SchemaType.fromSury behaviour)
758
+ // ownerId is detected as an entity reference → ID (matches SchemaType.fromSury behavior)
759
759
  expect(sdl->String.includes("ownerIdEq: ID"))->toBe(true)
760
760
  // OrderField enum lists the same fields
761
761
  expect(sdl->String.includes("enum IndexedProductOrderField"))->toBe(true)
@@ -418,7 +418,7 @@ describe("the conformance table, minted locally", () => {
418
418
  )
419
419
  switch (minted, expected) {
420
420
  | (Ok(token), Some(groups)) => expect(decodeOrThrow(token).groups)->toEqual(groups)
421
- // `None` means refused — not honoured, not ignored, and not reduced to the
421
+ // `None` means refused — not honored, not ignored, and not reduced to the
422
422
  // empty set. A token minted here at all would be the vulnerability.
423
423
  | (Ok(_), None) => JsError.throwWithMessage("expected the request to be refused")
424
424
  | (Error(msg), Some(_)) => JsError.throwWithMessage("expected a token, got: " ++ msg)