@objectstack/spec 1.0.10 → 1.0.12

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 (147) hide show
  1. package/README.md +41 -1
  2. package/dist/ai/index.d.mts +2 -1
  3. package/dist/ai/index.d.ts +2 -1
  4. package/dist/ai/index.js +2047 -1944
  5. package/dist/ai/index.js.map +1 -1
  6. package/dist/ai/index.mjs +2047 -1944
  7. package/dist/ai/index.mjs.map +1 -1
  8. package/dist/api/index.d.mts +3 -1
  9. package/dist/api/index.d.ts +3 -1
  10. package/dist/api/index.js +2599 -2292
  11. package/dist/api/index.js.map +1 -1
  12. package/dist/api/index.mjs +2587 -2292
  13. package/dist/api/index.mjs.map +1 -1
  14. package/dist/automation/index.d.mts +2 -1
  15. package/dist/automation/index.d.ts +2 -1
  16. package/dist/automation/index.js +83 -0
  17. package/dist/automation/index.js.map +1 -1
  18. package/dist/automation/index.mjs +77 -0
  19. package/dist/automation/index.mjs.map +1 -1
  20. package/dist/contracts/index.d.mts +3 -2
  21. package/dist/contracts/index.d.ts +3 -2
  22. package/dist/data/index.d.mts +3 -2
  23. package/dist/data/index.d.ts +3 -2
  24. package/dist/data/index.js +658 -556
  25. package/dist/data/index.js.map +1 -1
  26. package/dist/data/index.mjs +656 -556
  27. package/dist/data/index.mjs.map +1 -1
  28. package/dist/{driver.zod-lfi00zVT.d.ts → driver.zod-CfGk9GYh.d.ts} +2164 -11
  29. package/dist/{driver.zod-BOM_Etco.d.mts → driver.zod-y1cX6R3c.d.mts} +2164 -11
  30. package/dist/hub/index.d.mts +1 -1
  31. package/dist/hub/index.d.ts +1 -1
  32. package/dist/hub/index.js +789 -724
  33. package/dist/hub/index.js.map +1 -1
  34. package/dist/hub/index.mjs +789 -724
  35. package/dist/hub/index.mjs.map +1 -1
  36. package/dist/{index-C67cfwmW.d.ts → index-B0Hf65bV.d.ts} +13 -5
  37. package/dist/{index-DLcySG7U.d.ts → index-B5pKM0My.d.ts} +335 -4370
  38. package/dist/{index-Os7lItRe.d.mts → index-BA022mg2.d.ts} +6178 -129
  39. package/dist/{index-B5-VbOKg.d.mts → index-BGeLoH2z.d.ts} +4251 -74
  40. package/dist/{index-CH5zloR3.d.ts → index-BwO__aqV.d.ts} +1 -1
  41. package/dist/{index-Dp7GFJ8V.d.mts → index-Cia3JPQ8.d.mts} +13 -5
  42. package/dist/{index-D12rNohm.d.mts → index-CpD1q1FP.d.ts} +35 -18
  43. package/dist/{index-Os7lItRe.d.ts → index-D5RSFPuB.d.mts} +6178 -129
  44. package/dist/{index-CU4m6noq.d.mts → index-DGjpaj0X.d.mts} +1 -1
  45. package/dist/{index-D12rNohm.d.ts → index-Dfn5VXl6.d.mts} +35 -18
  46. package/dist/{index-l6WIlmOD.d.mts → index-Dgybxlky.d.mts} +177 -158
  47. package/dist/{index-l6WIlmOD.d.ts → index-Dgybxlky.d.ts} +177 -158
  48. package/dist/{index-DLcySG7U.d.mts → index-Dpsk8PF4.d.mts} +335 -4370
  49. package/dist/{index-CyognKSZ.d.ts → index-DrNah5E0.d.ts} +1952 -6990
  50. package/dist/{index-DE_lJ11p.d.mts → index-OO84R20k.d.mts} +1952 -6990
  51. package/dist/{index-B5-VbOKg.d.ts → index-upA3Xt04.d.mts} +4251 -74
  52. package/dist/index.d.mts +8072 -1922
  53. package/dist/index.d.ts +8072 -1922
  54. package/dist/index.js +8563 -8249
  55. package/dist/index.js.map +1 -1
  56. package/dist/index.mjs +8563 -8249
  57. package/dist/index.mjs.map +1 -1
  58. package/dist/integration/index.d.mts +1 -1
  59. package/dist/integration/index.d.ts +1 -1
  60. package/dist/kernel/index.d.mts +2 -1
  61. package/dist/kernel/index.d.ts +2 -1
  62. package/dist/kernel/index.js +884 -684
  63. package/dist/kernel/index.js.map +1 -1
  64. package/dist/kernel/index.mjs +870 -684
  65. package/dist/kernel/index.mjs.map +1 -1
  66. package/dist/package-registry.zod-JMcOYNxM.d.mts +21119 -0
  67. package/dist/package-registry.zod-JMcOYNxM.d.ts +21119 -0
  68. package/dist/state-machine.zod-B-lFFSxQ.d.mts +285 -0
  69. package/dist/state-machine.zod-B-lFFSxQ.d.ts +285 -0
  70. package/dist/system/index.d.mts +2 -1
  71. package/dist/system/index.d.ts +2 -1
  72. package/dist/system/index.js +749 -651
  73. package/dist/system/index.js.map +1 -1
  74. package/dist/system/index.mjs +749 -651
  75. package/dist/system/index.mjs.map +1 -1
  76. package/dist/ui/index.d.mts +1 -1
  77. package/dist/ui/index.d.ts +1 -1
  78. package/json-schema/ai/Agent.json +499 -0
  79. package/json-schema/ai/DevOpsAgent.json +499 -0
  80. package/json-schema/ai/FeedbackLoop.json +2188 -186
  81. package/json-schema/ai/Resolution.json +2188 -186
  82. package/json-schema/api/ApiRoutes.json +4 -0
  83. package/json-schema/api/CompileManifestResponse.json +40 -10
  84. package/json-schema/api/DisablePackageRequest.json +18 -0
  85. package/json-schema/api/DisablePackageResponse.json +1521 -0
  86. package/json-schema/api/Discovery.json +4 -0
  87. package/json-schema/api/EnablePackageRequest.json +18 -0
  88. package/json-schema/api/EnablePackageResponse.json +1521 -0
  89. package/json-schema/api/GetDiscoveryResponse.json +4 -0
  90. package/json-schema/api/GetPackageRequest.json +18 -0
  91. package/json-schema/api/GetPackageResponse.json +1518 -0
  92. package/json-schema/api/InstallPackageRequest.json +1483 -0
  93. package/json-schema/api/InstallPackageResponse.json +1521 -0
  94. package/json-schema/api/ListPackagesRequest.json +42 -0
  95. package/json-schema/api/ListPackagesResponse.json +1525 -0
  96. package/json-schema/api/ObjectDefinitionResponse.json +1001 -0
  97. package/json-schema/api/ObjectStackProtocol.json +86 -1
  98. package/json-schema/api/RestApiConfig.json +5 -0
  99. package/json-schema/api/RestServerConfig.json +5 -0
  100. package/json-schema/api/UninstallPackageRequest.json +18 -0
  101. package/json-schema/api/UninstallPackageResponse.json +25 -0
  102. package/json-schema/automation/ActionRef.json +30 -0
  103. package/json-schema/automation/Event.json +24 -0
  104. package/json-schema/automation/Flow.json +1 -0
  105. package/json-schema/automation/FlowNode.json +1 -0
  106. package/json-schema/automation/FlowNodeAction.json +1 -0
  107. package/json-schema/automation/GuardRef.json +30 -0
  108. package/json-schema/automation/StateMachine.json +504 -0
  109. package/json-schema/automation/StateNode.json +324 -0
  110. package/json-schema/automation/Transition.json +73 -0
  111. package/json-schema/data/Object.json +1001 -0
  112. package/json-schema/data/ObjectExtension.json +2376 -0
  113. package/json-schema/data/ObjectOwnershipEnum.json +13 -0
  114. package/json-schema/hub/ComposerResponse.json +40 -10
  115. package/json-schema/kernel/DisablePackageRequest.json +18 -0
  116. package/json-schema/kernel/DisablePackageResponse.json +1521 -0
  117. package/json-schema/kernel/EnablePackageRequest.json +18 -0
  118. package/json-schema/kernel/EnablePackageResponse.json +1521 -0
  119. package/json-schema/kernel/EventBusConfig.json +15 -0
  120. package/json-schema/kernel/EventHandler.json +6 -0
  121. package/json-schema/kernel/EventPersistence.json +3 -0
  122. package/json-schema/kernel/EventRoute.json +3 -0
  123. package/json-schema/kernel/EventWebhookConfig.json +3 -0
  124. package/json-schema/kernel/GetPackageRequest.json +18 -0
  125. package/json-schema/kernel/GetPackageResponse.json +1518 -0
  126. package/json-schema/kernel/InstallPackageRequest.json +1483 -0
  127. package/json-schema/kernel/InstallPackageResponse.json +1521 -0
  128. package/json-schema/kernel/InstalledPackage.json +1509 -0
  129. package/json-schema/kernel/ListPackagesRequest.json +42 -0
  130. package/json-schema/kernel/ListPackagesResponse.json +1525 -0
  131. package/json-schema/kernel/Manifest.json +40 -10
  132. package/json-schema/kernel/PackageStatusEnum.json +16 -0
  133. package/json-schema/kernel/Plugin.json +5 -0
  134. package/json-schema/kernel/PluginContext.json +31 -7
  135. package/json-schema/kernel/PluginLifecycle.json +7 -1
  136. package/json-schema/kernel/RealTimeNotificationConfig.json +3 -0
  137. package/json-schema/kernel/UninstallPackageRequest.json +18 -0
  138. package/json-schema/kernel/UninstallPackageResponse.json +25 -0
  139. package/json-schema/system/ChangeSet.json +2188 -186
  140. package/json-schema/system/CreateObjectOperation.json +1001 -0
  141. package/json-schema/system/MigrationOperation.json +1001 -0
  142. package/package.json +29 -15
  143. package/prompts/create-new-project.md +37 -19
  144. package/dist/{index-I3piy4U4.d.mts → index-BmU_sD1f.d.mts} +8 -8
  145. package/dist/{index-CkhpsEUw.d.ts → index-BnXuc_HO.d.ts} +8 -8
  146. package/dist/{index-CIDI-8zR.d.mts → index-C_NTOcet.d.mts} +98 -98
  147. package/dist/{index-CIDI-8zR.d.ts → index-C_NTOcet.d.ts} +98 -98
@@ -3558,6 +3558,1007 @@
3558
3558
  },
3559
3559
  "description": "Object-level validation rules"
3560
3560
  },
3561
+ "stateMachine": {
3562
+ "type": "object",
3563
+ "properties": {
3564
+ "id": {
3565
+ "type": "string",
3566
+ "minLength": 2,
3567
+ "pattern": "^[a-z][a-z0-9_]*$",
3568
+ "description": "Unique Machine ID"
3569
+ },
3570
+ "description": {
3571
+ "type": "string"
3572
+ },
3573
+ "contextSchema": {
3574
+ "type": "object",
3575
+ "additionalProperties": {},
3576
+ "description": "Zod Schema for the machine context/memory"
3577
+ },
3578
+ "initial": {
3579
+ "type": "string",
3580
+ "description": "Initial State ID"
3581
+ },
3582
+ "states": {
3583
+ "type": "object",
3584
+ "additionalProperties": {
3585
+ "type": "object",
3586
+ "properties": {
3587
+ "type": {
3588
+ "type": "string",
3589
+ "enum": [
3590
+ "atomic",
3591
+ "compound",
3592
+ "parallel",
3593
+ "final",
3594
+ "history"
3595
+ ],
3596
+ "default": "atomic"
3597
+ },
3598
+ "entry": {
3599
+ "type": "array",
3600
+ "items": {
3601
+ "anyOf": [
3602
+ {
3603
+ "type": "string",
3604
+ "description": "Action Name"
3605
+ },
3606
+ {
3607
+ "type": "object",
3608
+ "properties": {
3609
+ "type": {
3610
+ "type": "string"
3611
+ },
3612
+ "params": {
3613
+ "type": "object",
3614
+ "additionalProperties": {}
3615
+ }
3616
+ },
3617
+ "required": [
3618
+ "type"
3619
+ ],
3620
+ "additionalProperties": false
3621
+ }
3622
+ ]
3623
+ },
3624
+ "description": "Actions to run when entering this state"
3625
+ },
3626
+ "exit": {
3627
+ "type": "array",
3628
+ "items": {
3629
+ "anyOf": [
3630
+ {
3631
+ "type": "string",
3632
+ "description": "Action Name"
3633
+ },
3634
+ {
3635
+ "type": "object",
3636
+ "properties": {
3637
+ "type": {
3638
+ "type": "string"
3639
+ },
3640
+ "params": {
3641
+ "type": "object",
3642
+ "additionalProperties": {}
3643
+ }
3644
+ },
3645
+ "required": [
3646
+ "type"
3647
+ ],
3648
+ "additionalProperties": false
3649
+ }
3650
+ ]
3651
+ },
3652
+ "description": "Actions to run when leaving this state"
3653
+ },
3654
+ "on": {
3655
+ "type": "object",
3656
+ "additionalProperties": {
3657
+ "anyOf": [
3658
+ {
3659
+ "type": "string"
3660
+ },
3661
+ {
3662
+ "type": "object",
3663
+ "properties": {
3664
+ "target": {
3665
+ "type": "string",
3666
+ "description": "Target State ID"
3667
+ },
3668
+ "cond": {
3669
+ "anyOf": [
3670
+ {
3671
+ "type": "string",
3672
+ "description": "Guard Name (e.g., \"isManager\", \"amountGT1000\")"
3673
+ },
3674
+ {
3675
+ "type": "object",
3676
+ "properties": {
3677
+ "type": {
3678
+ "type": "string"
3679
+ },
3680
+ "params": {
3681
+ "type": "object",
3682
+ "additionalProperties": {}
3683
+ }
3684
+ },
3685
+ "required": [
3686
+ "type"
3687
+ ],
3688
+ "additionalProperties": false
3689
+ }
3690
+ ],
3691
+ "description": "Condition (Guard) required to take this path"
3692
+ },
3693
+ "actions": {
3694
+ "type": "array",
3695
+ "items": {
3696
+ "anyOf": [
3697
+ {
3698
+ "type": "string",
3699
+ "description": "Action Name"
3700
+ },
3701
+ {
3702
+ "type": "object",
3703
+ "properties": {
3704
+ "type": {
3705
+ "type": "string"
3706
+ },
3707
+ "params": {
3708
+ "type": "object",
3709
+ "additionalProperties": {}
3710
+ }
3711
+ },
3712
+ "required": [
3713
+ "type"
3714
+ ],
3715
+ "additionalProperties": false
3716
+ }
3717
+ ]
3718
+ },
3719
+ "description": "Actions to execute during transition"
3720
+ },
3721
+ "description": {
3722
+ "type": "string",
3723
+ "description": "Human readable description of this rule"
3724
+ }
3725
+ },
3726
+ "additionalProperties": false
3727
+ },
3728
+ {
3729
+ "type": "array",
3730
+ "items": {
3731
+ "type": "object",
3732
+ "properties": {
3733
+ "target": {
3734
+ "type": "string",
3735
+ "description": "Target State ID"
3736
+ },
3737
+ "cond": {
3738
+ "anyOf": [
3739
+ {
3740
+ "type": "string",
3741
+ "description": "Guard Name (e.g., \"isManager\", \"amountGT1000\")"
3742
+ },
3743
+ {
3744
+ "type": "object",
3745
+ "properties": {
3746
+ "type": {
3747
+ "type": "string"
3748
+ },
3749
+ "params": {
3750
+ "type": "object",
3751
+ "additionalProperties": {}
3752
+ }
3753
+ },
3754
+ "required": [
3755
+ "type"
3756
+ ],
3757
+ "additionalProperties": false
3758
+ }
3759
+ ],
3760
+ "description": "Condition (Guard) required to take this path"
3761
+ },
3762
+ "actions": {
3763
+ "type": "array",
3764
+ "items": {
3765
+ "anyOf": [
3766
+ {
3767
+ "type": "string",
3768
+ "description": "Action Name"
3769
+ },
3770
+ {
3771
+ "type": "object",
3772
+ "properties": {
3773
+ "type": {
3774
+ "type": "string"
3775
+ },
3776
+ "params": {
3777
+ "type": "object",
3778
+ "additionalProperties": {}
3779
+ }
3780
+ },
3781
+ "required": [
3782
+ "type"
3783
+ ],
3784
+ "additionalProperties": false
3785
+ }
3786
+ ]
3787
+ },
3788
+ "description": "Actions to execute during transition"
3789
+ },
3790
+ "description": {
3791
+ "type": "string",
3792
+ "description": "Human readable description of this rule"
3793
+ }
3794
+ },
3795
+ "additionalProperties": false
3796
+ }
3797
+ }
3798
+ ]
3799
+ },
3800
+ "description": "Map of Event Type -> Transition Definition"
3801
+ },
3802
+ "always": {
3803
+ "type": "array",
3804
+ "items": {
3805
+ "type": "object",
3806
+ "properties": {
3807
+ "target": {
3808
+ "type": "string",
3809
+ "description": "Target State ID"
3810
+ },
3811
+ "cond": {
3812
+ "anyOf": [
3813
+ {
3814
+ "type": "string",
3815
+ "description": "Guard Name (e.g., \"isManager\", \"amountGT1000\")"
3816
+ },
3817
+ {
3818
+ "type": "object",
3819
+ "properties": {
3820
+ "type": {
3821
+ "type": "string"
3822
+ },
3823
+ "params": {
3824
+ "type": "object",
3825
+ "additionalProperties": {}
3826
+ }
3827
+ },
3828
+ "required": [
3829
+ "type"
3830
+ ],
3831
+ "additionalProperties": false
3832
+ }
3833
+ ],
3834
+ "description": "Condition (Guard) required to take this path"
3835
+ },
3836
+ "actions": {
3837
+ "type": "array",
3838
+ "items": {
3839
+ "anyOf": [
3840
+ {
3841
+ "type": "string",
3842
+ "description": "Action Name"
3843
+ },
3844
+ {
3845
+ "type": "object",
3846
+ "properties": {
3847
+ "type": {
3848
+ "type": "string"
3849
+ },
3850
+ "params": {
3851
+ "type": "object",
3852
+ "additionalProperties": {}
3853
+ }
3854
+ },
3855
+ "required": [
3856
+ "type"
3857
+ ],
3858
+ "additionalProperties": false
3859
+ }
3860
+ ]
3861
+ },
3862
+ "description": "Actions to execute during transition"
3863
+ },
3864
+ "description": {
3865
+ "type": "string",
3866
+ "description": "Human readable description of this rule"
3867
+ }
3868
+ },
3869
+ "additionalProperties": false
3870
+ }
3871
+ },
3872
+ "initial": {
3873
+ "type": "string",
3874
+ "description": "Initial child state (if compound)"
3875
+ },
3876
+ "states": {
3877
+ "type": "object",
3878
+ "additionalProperties": {}
3879
+ },
3880
+ "meta": {
3881
+ "type": "object",
3882
+ "properties": {
3883
+ "label": {
3884
+ "type": "string"
3885
+ },
3886
+ "description": {
3887
+ "type": "string"
3888
+ },
3889
+ "color": {
3890
+ "type": "string"
3891
+ },
3892
+ "aiInstructions": {
3893
+ "type": "string",
3894
+ "description": "Specific instructions for AI when in this state"
3895
+ }
3896
+ },
3897
+ "additionalProperties": false
3898
+ }
3899
+ },
3900
+ "additionalProperties": false
3901
+ },
3902
+ "description": "State Nodes"
3903
+ },
3904
+ "on": {
3905
+ "type": "object",
3906
+ "additionalProperties": {
3907
+ "anyOf": [
3908
+ {
3909
+ "type": "string"
3910
+ },
3911
+ {
3912
+ "type": "object",
3913
+ "properties": {
3914
+ "target": {
3915
+ "type": "string",
3916
+ "description": "Target State ID"
3917
+ },
3918
+ "cond": {
3919
+ "anyOf": [
3920
+ {
3921
+ "type": "string",
3922
+ "description": "Guard Name (e.g., \"isManager\", \"amountGT1000\")"
3923
+ },
3924
+ {
3925
+ "type": "object",
3926
+ "properties": {
3927
+ "type": {
3928
+ "type": "string"
3929
+ },
3930
+ "params": {
3931
+ "type": "object",
3932
+ "additionalProperties": {}
3933
+ }
3934
+ },
3935
+ "required": [
3936
+ "type"
3937
+ ],
3938
+ "additionalProperties": false
3939
+ }
3940
+ ],
3941
+ "description": "Condition (Guard) required to take this path"
3942
+ },
3943
+ "actions": {
3944
+ "type": "array",
3945
+ "items": {
3946
+ "anyOf": [
3947
+ {
3948
+ "type": "string",
3949
+ "description": "Action Name"
3950
+ },
3951
+ {
3952
+ "type": "object",
3953
+ "properties": {
3954
+ "type": {
3955
+ "type": "string"
3956
+ },
3957
+ "params": {
3958
+ "type": "object",
3959
+ "additionalProperties": {}
3960
+ }
3961
+ },
3962
+ "required": [
3963
+ "type"
3964
+ ],
3965
+ "additionalProperties": false
3966
+ }
3967
+ ]
3968
+ },
3969
+ "description": "Actions to execute during transition"
3970
+ },
3971
+ "description": {
3972
+ "type": "string",
3973
+ "description": "Human readable description of this rule"
3974
+ }
3975
+ },
3976
+ "additionalProperties": false
3977
+ },
3978
+ {
3979
+ "type": "array",
3980
+ "items": {
3981
+ "type": "object",
3982
+ "properties": {
3983
+ "target": {
3984
+ "type": "string",
3985
+ "description": "Target State ID"
3986
+ },
3987
+ "cond": {
3988
+ "anyOf": [
3989
+ {
3990
+ "type": "string",
3991
+ "description": "Guard Name (e.g., \"isManager\", \"amountGT1000\")"
3992
+ },
3993
+ {
3994
+ "type": "object",
3995
+ "properties": {
3996
+ "type": {
3997
+ "type": "string"
3998
+ },
3999
+ "params": {
4000
+ "type": "object",
4001
+ "additionalProperties": {}
4002
+ }
4003
+ },
4004
+ "required": [
4005
+ "type"
4006
+ ],
4007
+ "additionalProperties": false
4008
+ }
4009
+ ],
4010
+ "description": "Condition (Guard) required to take this path"
4011
+ },
4012
+ "actions": {
4013
+ "type": "array",
4014
+ "items": {
4015
+ "anyOf": [
4016
+ {
4017
+ "type": "string",
4018
+ "description": "Action Name"
4019
+ },
4020
+ {
4021
+ "type": "object",
4022
+ "properties": {
4023
+ "type": {
4024
+ "type": "string"
4025
+ },
4026
+ "params": {
4027
+ "type": "object",
4028
+ "additionalProperties": {}
4029
+ }
4030
+ },
4031
+ "required": [
4032
+ "type"
4033
+ ],
4034
+ "additionalProperties": false
4035
+ }
4036
+ ]
4037
+ },
4038
+ "description": "Actions to execute during transition"
4039
+ },
4040
+ "description": {
4041
+ "type": "string",
4042
+ "description": "Human readable description of this rule"
4043
+ }
4044
+ },
4045
+ "additionalProperties": false
4046
+ }
4047
+ }
4048
+ ]
4049
+ }
4050
+ }
4051
+ },
4052
+ "required": [
4053
+ "id",
4054
+ "initial",
4055
+ "states"
4056
+ ],
4057
+ "additionalProperties": false,
4058
+ "description": "Single state machine for record lifecycle (shorthand)"
4059
+ },
4060
+ "stateMachines": {
4061
+ "type": "object",
4062
+ "additionalProperties": {
4063
+ "type": "object",
4064
+ "properties": {
4065
+ "id": {
4066
+ "type": "string",
4067
+ "minLength": 2,
4068
+ "pattern": "^[a-z][a-z0-9_]*$",
4069
+ "description": "Unique Machine ID"
4070
+ },
4071
+ "description": {
4072
+ "type": "string"
4073
+ },
4074
+ "contextSchema": {
4075
+ "type": "object",
4076
+ "additionalProperties": {},
4077
+ "description": "Zod Schema for the machine context/memory"
4078
+ },
4079
+ "initial": {
4080
+ "type": "string",
4081
+ "description": "Initial State ID"
4082
+ },
4083
+ "states": {
4084
+ "type": "object",
4085
+ "additionalProperties": {
4086
+ "type": "object",
4087
+ "properties": {
4088
+ "type": {
4089
+ "type": "string",
4090
+ "enum": [
4091
+ "atomic",
4092
+ "compound",
4093
+ "parallel",
4094
+ "final",
4095
+ "history"
4096
+ ],
4097
+ "default": "atomic"
4098
+ },
4099
+ "entry": {
4100
+ "type": "array",
4101
+ "items": {
4102
+ "anyOf": [
4103
+ {
4104
+ "type": "string",
4105
+ "description": "Action Name"
4106
+ },
4107
+ {
4108
+ "type": "object",
4109
+ "properties": {
4110
+ "type": {
4111
+ "type": "string"
4112
+ },
4113
+ "params": {
4114
+ "type": "object",
4115
+ "additionalProperties": {}
4116
+ }
4117
+ },
4118
+ "required": [
4119
+ "type"
4120
+ ],
4121
+ "additionalProperties": false
4122
+ }
4123
+ ]
4124
+ },
4125
+ "description": "Actions to run when entering this state"
4126
+ },
4127
+ "exit": {
4128
+ "type": "array",
4129
+ "items": {
4130
+ "anyOf": [
4131
+ {
4132
+ "type": "string",
4133
+ "description": "Action Name"
4134
+ },
4135
+ {
4136
+ "type": "object",
4137
+ "properties": {
4138
+ "type": {
4139
+ "type": "string"
4140
+ },
4141
+ "params": {
4142
+ "type": "object",
4143
+ "additionalProperties": {}
4144
+ }
4145
+ },
4146
+ "required": [
4147
+ "type"
4148
+ ],
4149
+ "additionalProperties": false
4150
+ }
4151
+ ]
4152
+ },
4153
+ "description": "Actions to run when leaving this state"
4154
+ },
4155
+ "on": {
4156
+ "type": "object",
4157
+ "additionalProperties": {
4158
+ "anyOf": [
4159
+ {
4160
+ "type": "string"
4161
+ },
4162
+ {
4163
+ "type": "object",
4164
+ "properties": {
4165
+ "target": {
4166
+ "type": "string",
4167
+ "description": "Target State ID"
4168
+ },
4169
+ "cond": {
4170
+ "anyOf": [
4171
+ {
4172
+ "type": "string",
4173
+ "description": "Guard Name (e.g., \"isManager\", \"amountGT1000\")"
4174
+ },
4175
+ {
4176
+ "type": "object",
4177
+ "properties": {
4178
+ "type": {
4179
+ "type": "string"
4180
+ },
4181
+ "params": {
4182
+ "type": "object",
4183
+ "additionalProperties": {}
4184
+ }
4185
+ },
4186
+ "required": [
4187
+ "type"
4188
+ ],
4189
+ "additionalProperties": false
4190
+ }
4191
+ ],
4192
+ "description": "Condition (Guard) required to take this path"
4193
+ },
4194
+ "actions": {
4195
+ "type": "array",
4196
+ "items": {
4197
+ "anyOf": [
4198
+ {
4199
+ "type": "string",
4200
+ "description": "Action Name"
4201
+ },
4202
+ {
4203
+ "type": "object",
4204
+ "properties": {
4205
+ "type": {
4206
+ "type": "string"
4207
+ },
4208
+ "params": {
4209
+ "type": "object",
4210
+ "additionalProperties": {}
4211
+ }
4212
+ },
4213
+ "required": [
4214
+ "type"
4215
+ ],
4216
+ "additionalProperties": false
4217
+ }
4218
+ ]
4219
+ },
4220
+ "description": "Actions to execute during transition"
4221
+ },
4222
+ "description": {
4223
+ "type": "string",
4224
+ "description": "Human readable description of this rule"
4225
+ }
4226
+ },
4227
+ "additionalProperties": false
4228
+ },
4229
+ {
4230
+ "type": "array",
4231
+ "items": {
4232
+ "type": "object",
4233
+ "properties": {
4234
+ "target": {
4235
+ "type": "string",
4236
+ "description": "Target State ID"
4237
+ },
4238
+ "cond": {
4239
+ "anyOf": [
4240
+ {
4241
+ "type": "string",
4242
+ "description": "Guard Name (e.g., \"isManager\", \"amountGT1000\")"
4243
+ },
4244
+ {
4245
+ "type": "object",
4246
+ "properties": {
4247
+ "type": {
4248
+ "type": "string"
4249
+ },
4250
+ "params": {
4251
+ "type": "object",
4252
+ "additionalProperties": {}
4253
+ }
4254
+ },
4255
+ "required": [
4256
+ "type"
4257
+ ],
4258
+ "additionalProperties": false
4259
+ }
4260
+ ],
4261
+ "description": "Condition (Guard) required to take this path"
4262
+ },
4263
+ "actions": {
4264
+ "type": "array",
4265
+ "items": {
4266
+ "anyOf": [
4267
+ {
4268
+ "type": "string",
4269
+ "description": "Action Name"
4270
+ },
4271
+ {
4272
+ "type": "object",
4273
+ "properties": {
4274
+ "type": {
4275
+ "type": "string"
4276
+ },
4277
+ "params": {
4278
+ "type": "object",
4279
+ "additionalProperties": {}
4280
+ }
4281
+ },
4282
+ "required": [
4283
+ "type"
4284
+ ],
4285
+ "additionalProperties": false
4286
+ }
4287
+ ]
4288
+ },
4289
+ "description": "Actions to execute during transition"
4290
+ },
4291
+ "description": {
4292
+ "type": "string",
4293
+ "description": "Human readable description of this rule"
4294
+ }
4295
+ },
4296
+ "additionalProperties": false
4297
+ }
4298
+ }
4299
+ ]
4300
+ },
4301
+ "description": "Map of Event Type -> Transition Definition"
4302
+ },
4303
+ "always": {
4304
+ "type": "array",
4305
+ "items": {
4306
+ "type": "object",
4307
+ "properties": {
4308
+ "target": {
4309
+ "type": "string",
4310
+ "description": "Target State ID"
4311
+ },
4312
+ "cond": {
4313
+ "anyOf": [
4314
+ {
4315
+ "type": "string",
4316
+ "description": "Guard Name (e.g., \"isManager\", \"amountGT1000\")"
4317
+ },
4318
+ {
4319
+ "type": "object",
4320
+ "properties": {
4321
+ "type": {
4322
+ "type": "string"
4323
+ },
4324
+ "params": {
4325
+ "type": "object",
4326
+ "additionalProperties": {}
4327
+ }
4328
+ },
4329
+ "required": [
4330
+ "type"
4331
+ ],
4332
+ "additionalProperties": false
4333
+ }
4334
+ ],
4335
+ "description": "Condition (Guard) required to take this path"
4336
+ },
4337
+ "actions": {
4338
+ "type": "array",
4339
+ "items": {
4340
+ "anyOf": [
4341
+ {
4342
+ "type": "string",
4343
+ "description": "Action Name"
4344
+ },
4345
+ {
4346
+ "type": "object",
4347
+ "properties": {
4348
+ "type": {
4349
+ "type": "string"
4350
+ },
4351
+ "params": {
4352
+ "type": "object",
4353
+ "additionalProperties": {}
4354
+ }
4355
+ },
4356
+ "required": [
4357
+ "type"
4358
+ ],
4359
+ "additionalProperties": false
4360
+ }
4361
+ ]
4362
+ },
4363
+ "description": "Actions to execute during transition"
4364
+ },
4365
+ "description": {
4366
+ "type": "string",
4367
+ "description": "Human readable description of this rule"
4368
+ }
4369
+ },
4370
+ "additionalProperties": false
4371
+ }
4372
+ },
4373
+ "initial": {
4374
+ "type": "string",
4375
+ "description": "Initial child state (if compound)"
4376
+ },
4377
+ "states": {
4378
+ "type": "object",
4379
+ "additionalProperties": {}
4380
+ },
4381
+ "meta": {
4382
+ "type": "object",
4383
+ "properties": {
4384
+ "label": {
4385
+ "type": "string"
4386
+ },
4387
+ "description": {
4388
+ "type": "string"
4389
+ },
4390
+ "color": {
4391
+ "type": "string"
4392
+ },
4393
+ "aiInstructions": {
4394
+ "type": "string",
4395
+ "description": "Specific instructions for AI when in this state"
4396
+ }
4397
+ },
4398
+ "additionalProperties": false
4399
+ }
4400
+ },
4401
+ "additionalProperties": false
4402
+ },
4403
+ "description": "State Nodes"
4404
+ },
4405
+ "on": {
4406
+ "type": "object",
4407
+ "additionalProperties": {
4408
+ "anyOf": [
4409
+ {
4410
+ "type": "string"
4411
+ },
4412
+ {
4413
+ "type": "object",
4414
+ "properties": {
4415
+ "target": {
4416
+ "type": "string",
4417
+ "description": "Target State ID"
4418
+ },
4419
+ "cond": {
4420
+ "anyOf": [
4421
+ {
4422
+ "type": "string",
4423
+ "description": "Guard Name (e.g., \"isManager\", \"amountGT1000\")"
4424
+ },
4425
+ {
4426
+ "type": "object",
4427
+ "properties": {
4428
+ "type": {
4429
+ "type": "string"
4430
+ },
4431
+ "params": {
4432
+ "type": "object",
4433
+ "additionalProperties": {}
4434
+ }
4435
+ },
4436
+ "required": [
4437
+ "type"
4438
+ ],
4439
+ "additionalProperties": false
4440
+ }
4441
+ ],
4442
+ "description": "Condition (Guard) required to take this path"
4443
+ },
4444
+ "actions": {
4445
+ "type": "array",
4446
+ "items": {
4447
+ "anyOf": [
4448
+ {
4449
+ "type": "string",
4450
+ "description": "Action Name"
4451
+ },
4452
+ {
4453
+ "type": "object",
4454
+ "properties": {
4455
+ "type": {
4456
+ "type": "string"
4457
+ },
4458
+ "params": {
4459
+ "type": "object",
4460
+ "additionalProperties": {}
4461
+ }
4462
+ },
4463
+ "required": [
4464
+ "type"
4465
+ ],
4466
+ "additionalProperties": false
4467
+ }
4468
+ ]
4469
+ },
4470
+ "description": "Actions to execute during transition"
4471
+ },
4472
+ "description": {
4473
+ "type": "string",
4474
+ "description": "Human readable description of this rule"
4475
+ }
4476
+ },
4477
+ "additionalProperties": false
4478
+ },
4479
+ {
4480
+ "type": "array",
4481
+ "items": {
4482
+ "type": "object",
4483
+ "properties": {
4484
+ "target": {
4485
+ "type": "string",
4486
+ "description": "Target State ID"
4487
+ },
4488
+ "cond": {
4489
+ "anyOf": [
4490
+ {
4491
+ "type": "string",
4492
+ "description": "Guard Name (e.g., \"isManager\", \"amountGT1000\")"
4493
+ },
4494
+ {
4495
+ "type": "object",
4496
+ "properties": {
4497
+ "type": {
4498
+ "type": "string"
4499
+ },
4500
+ "params": {
4501
+ "type": "object",
4502
+ "additionalProperties": {}
4503
+ }
4504
+ },
4505
+ "required": [
4506
+ "type"
4507
+ ],
4508
+ "additionalProperties": false
4509
+ }
4510
+ ],
4511
+ "description": "Condition (Guard) required to take this path"
4512
+ },
4513
+ "actions": {
4514
+ "type": "array",
4515
+ "items": {
4516
+ "anyOf": [
4517
+ {
4518
+ "type": "string",
4519
+ "description": "Action Name"
4520
+ },
4521
+ {
4522
+ "type": "object",
4523
+ "properties": {
4524
+ "type": {
4525
+ "type": "string"
4526
+ },
4527
+ "params": {
4528
+ "type": "object",
4529
+ "additionalProperties": {}
4530
+ }
4531
+ },
4532
+ "required": [
4533
+ "type"
4534
+ ],
4535
+ "additionalProperties": false
4536
+ }
4537
+ ]
4538
+ },
4539
+ "description": "Actions to execute during transition"
4540
+ },
4541
+ "description": {
4542
+ "type": "string",
4543
+ "description": "Human readable description of this rule"
4544
+ }
4545
+ },
4546
+ "additionalProperties": false
4547
+ }
4548
+ }
4549
+ ]
4550
+ }
4551
+ }
4552
+ },
4553
+ "required": [
4554
+ "id",
4555
+ "initial",
4556
+ "states"
4557
+ ],
4558
+ "additionalProperties": false
4559
+ },
4560
+ "description": "Named state machines for parallel lifecycles (e.g., status, payment, approval)"
4561
+ },
3561
4562
  "titleFormat": {
3562
4563
  "type": "string",
3563
4564
  "description": "Title expression (e.g. \"{name} - {code}\"). Overrides nameField."
@@ -6869,7 +7870,167 @@
6869
7870
  "name",
6870
7871
  "message",
6871
7872
  "type",
6872
- "field"
7873
+ "field"
7874
+ ],
7875
+ "additionalProperties": false
7876
+ },
7877
+ {
7878
+ "type": "object",
7879
+ "properties": {
7880
+ "name": {
7881
+ "type": "string",
7882
+ "pattern": "^[a-z_][a-z0-9_]*$",
7883
+ "description": "Unique rule name (snake_case)"
7884
+ },
7885
+ "label": {
7886
+ "type": "string",
7887
+ "description": "Human-readable label for the rule listing"
7888
+ },
7889
+ "description": {
7890
+ "type": "string",
7891
+ "description": "Administrative notes explaining the business reason"
7892
+ },
7893
+ "active": {
7894
+ "type": "boolean",
7895
+ "default": true
7896
+ },
7897
+ "events": {
7898
+ "type": "array",
7899
+ "items": {
7900
+ "type": "string",
7901
+ "enum": [
7902
+ "insert",
7903
+ "update",
7904
+ "delete"
7905
+ ]
7906
+ },
7907
+ "default": [
7908
+ "insert",
7909
+ "update"
7910
+ ],
7911
+ "description": "Validation contexts"
7912
+ },
7913
+ "tags": {
7914
+ "type": "array",
7915
+ "items": {
7916
+ "type": "string"
7917
+ },
7918
+ "description": "Categorization tags (e.g., \"compliance\", \"billing\")"
7919
+ },
7920
+ "severity": {
7921
+ "type": "string",
7922
+ "enum": [
7923
+ "error",
7924
+ "warning",
7925
+ "info"
7926
+ ],
7927
+ "default": "error"
7928
+ },
7929
+ "message": {
7930
+ "type": "string",
7931
+ "description": "Error message to display to the user"
7932
+ },
7933
+ "type": {
7934
+ "type": "string",
7935
+ "const": "cross_field"
7936
+ },
7937
+ "condition": {
7938
+ "type": "string",
7939
+ "description": "Formula expression comparing fields (e.g. \"end_date > start_date\")"
7940
+ },
7941
+ "fields": {
7942
+ "type": "array",
7943
+ "items": {
7944
+ "type": "string"
7945
+ },
7946
+ "description": "Fields involved in the validation"
7947
+ }
7948
+ },
7949
+ "required": [
7950
+ "name",
7951
+ "message",
7952
+ "type",
7953
+ "condition",
7954
+ "fields"
7955
+ ],
7956
+ "additionalProperties": false
7957
+ },
7958
+ {
7959
+ "type": "object",
7960
+ "properties": {
7961
+ "name": {
7962
+ "type": "string",
7963
+ "pattern": "^[a-z_][a-z0-9_]*$",
7964
+ "description": "Unique rule name (snake_case)"
7965
+ },
7966
+ "label": {
7967
+ "type": "string",
7968
+ "description": "Human-readable label for the rule listing"
7969
+ },
7970
+ "description": {
7971
+ "type": "string",
7972
+ "description": "Administrative notes explaining the business reason"
7973
+ },
7974
+ "active": {
7975
+ "type": "boolean",
7976
+ "default": true
7977
+ },
7978
+ "events": {
7979
+ "type": "array",
7980
+ "items": {
7981
+ "type": "string",
7982
+ "enum": [
7983
+ "insert",
7984
+ "update",
7985
+ "delete"
7986
+ ]
7987
+ },
7988
+ "default": [
7989
+ "insert",
7990
+ "update"
7991
+ ],
7992
+ "description": "Validation contexts"
7993
+ },
7994
+ "tags": {
7995
+ "type": "array",
7996
+ "items": {
7997
+ "type": "string"
7998
+ },
7999
+ "description": "Categorization tags (e.g., \"compliance\", \"billing\")"
8000
+ },
8001
+ "severity": {
8002
+ "type": "string",
8003
+ "enum": [
8004
+ "error",
8005
+ "warning",
8006
+ "info"
8007
+ ],
8008
+ "default": "error"
8009
+ },
8010
+ "message": {
8011
+ "type": "string",
8012
+ "description": "Error message to display to the user"
8013
+ },
8014
+ "type": {
8015
+ "type": "string",
8016
+ "const": "json_schema"
8017
+ },
8018
+ "field": {
8019
+ "type": "string",
8020
+ "description": "JSON field to validate"
8021
+ },
8022
+ "schema": {
8023
+ "type": "object",
8024
+ "additionalProperties": {},
8025
+ "description": "JSON Schema object definition"
8026
+ }
8027
+ },
8028
+ "required": [
8029
+ "name",
8030
+ "message",
8031
+ "type",
8032
+ "field",
8033
+ "schema"
6873
8034
  ],
6874
8035
  "additionalProperties": false
6875
8036
  },
@@ -6931,26 +8092,56 @@
6931
8092
  },
6932
8093
  "type": {
6933
8094
  "type": "string",
6934
- "const": "cross_field"
8095
+ "const": "async"
6935
8096
  },
6936
- "condition": {
8097
+ "field": {
6937
8098
  "type": "string",
6938
- "description": "Formula expression comparing fields (e.g. \"end_date > start_date\")"
8099
+ "description": "Field to validate"
6939
8100
  },
6940
- "fields": {
6941
- "type": "array",
6942
- "items": {
8101
+ "validatorUrl": {
8102
+ "type": "string",
8103
+ "description": "External API endpoint for validation"
8104
+ },
8105
+ "method": {
8106
+ "type": "string",
8107
+ "enum": [
8108
+ "GET",
8109
+ "POST"
8110
+ ],
8111
+ "default": "GET",
8112
+ "description": "HTTP method for external call"
8113
+ },
8114
+ "headers": {
8115
+ "type": "object",
8116
+ "additionalProperties": {
6943
8117
  "type": "string"
6944
8118
  },
6945
- "description": "Fields involved in the validation"
8119
+ "description": "Custom headers for the request"
8120
+ },
8121
+ "validatorFunction": {
8122
+ "type": "string",
8123
+ "description": "Reference to custom validator function"
8124
+ },
8125
+ "timeout": {
8126
+ "type": "number",
8127
+ "default": 5000,
8128
+ "description": "Timeout in milliseconds"
8129
+ },
8130
+ "debounce": {
8131
+ "type": "number",
8132
+ "description": "Debounce delay in milliseconds"
8133
+ },
8134
+ "params": {
8135
+ "type": "object",
8136
+ "additionalProperties": {},
8137
+ "description": "Additional parameters to pass to validator"
6946
8138
  }
6947
8139
  },
6948
8140
  "required": [
6949
8141
  "name",
6950
8142
  "message",
6951
8143
  "type",
6952
- "condition",
6953
- "fields"
8144
+ "field"
6954
8145
  ],
6955
8146
  "additionalProperties": false
6956
8147
  },
@@ -7012,236 +8203,1047 @@
7012
8203
  },
7013
8204
  "type": {
7014
8205
  "type": "string",
7015
- "const": "json_schema"
8206
+ "const": "custom"
7016
8207
  },
7017
- "field": {
8208
+ "handler": {
7018
8209
  "type": "string",
7019
- "description": "JSON field to validate"
8210
+ "description": "Name of the custom validation function registered in the system"
7020
8211
  },
7021
- "schema": {
8212
+ "params": {
7022
8213
  "type": "object",
7023
8214
  "additionalProperties": {},
7024
- "description": "JSON Schema object definition"
8215
+ "description": "Parameters passed to the custom handler"
7025
8216
  }
7026
8217
  },
7027
8218
  "required": [
7028
8219
  "name",
7029
8220
  "message",
7030
8221
  "type",
7031
- "field",
7032
- "schema"
8222
+ "handler"
7033
8223
  ],
7034
8224
  "additionalProperties": false
7035
8225
  },
7036
- {
7037
- "type": "object",
7038
- "properties": {
7039
- "name": {
7040
- "type": "string",
7041
- "pattern": "^[a-z_][a-z0-9_]*$",
7042
- "description": "Unique rule name (snake_case)"
7043
- },
7044
- "label": {
7045
- "type": "string",
7046
- "description": "Human-readable label for the rule listing"
8226
+ {}
8227
+ ],
8228
+ "description": "Validation rule to apply when condition is true"
8229
+ },
8230
+ "otherwise": {
8231
+ "description": "Validation rule to apply when condition is false"
8232
+ }
8233
+ },
8234
+ "required": [
8235
+ "name",
8236
+ "message",
8237
+ "type",
8238
+ "when",
8239
+ "then"
8240
+ ],
8241
+ "additionalProperties": false
8242
+ }
8243
+ ]
8244
+ },
8245
+ "description": "Object-level validation rules"
8246
+ },
8247
+ "stateMachine": {
8248
+ "type": "object",
8249
+ "properties": {
8250
+ "id": {
8251
+ "type": "string",
8252
+ "minLength": 2,
8253
+ "pattern": "^[a-z][a-z0-9_]*$",
8254
+ "description": "Unique Machine ID"
8255
+ },
8256
+ "description": {
8257
+ "type": "string"
8258
+ },
8259
+ "contextSchema": {
8260
+ "type": "object",
8261
+ "additionalProperties": {},
8262
+ "description": "Zod Schema for the machine context/memory"
8263
+ },
8264
+ "initial": {
8265
+ "type": "string",
8266
+ "description": "Initial State ID"
8267
+ },
8268
+ "states": {
8269
+ "type": "object",
8270
+ "additionalProperties": {
8271
+ "type": "object",
8272
+ "properties": {
8273
+ "type": {
8274
+ "type": "string",
8275
+ "enum": [
8276
+ "atomic",
8277
+ "compound",
8278
+ "parallel",
8279
+ "final",
8280
+ "history"
8281
+ ],
8282
+ "default": "atomic"
8283
+ },
8284
+ "entry": {
8285
+ "type": "array",
8286
+ "items": {
8287
+ "anyOf": [
8288
+ {
8289
+ "type": "string",
8290
+ "description": "Action Name"
8291
+ },
8292
+ {
8293
+ "type": "object",
8294
+ "properties": {
8295
+ "type": {
8296
+ "type": "string"
8297
+ },
8298
+ "params": {
8299
+ "type": "object",
8300
+ "additionalProperties": {}
8301
+ }
7047
8302
  },
7048
- "description": {
7049
- "type": "string",
7050
- "description": "Administrative notes explaining the business reason"
8303
+ "required": [
8304
+ "type"
8305
+ ],
8306
+ "additionalProperties": false
8307
+ }
8308
+ ]
8309
+ },
8310
+ "description": "Actions to run when entering this state"
8311
+ },
8312
+ "exit": {
8313
+ "type": "array",
8314
+ "items": {
8315
+ "anyOf": [
8316
+ {
8317
+ "type": "string",
8318
+ "description": "Action Name"
8319
+ },
8320
+ {
8321
+ "type": "object",
8322
+ "properties": {
8323
+ "type": {
8324
+ "type": "string"
8325
+ },
8326
+ "params": {
8327
+ "type": "object",
8328
+ "additionalProperties": {}
8329
+ }
7051
8330
  },
7052
- "active": {
7053
- "type": "boolean",
7054
- "default": true
8331
+ "required": [
8332
+ "type"
8333
+ ],
8334
+ "additionalProperties": false
8335
+ }
8336
+ ]
8337
+ },
8338
+ "description": "Actions to run when leaving this state"
8339
+ },
8340
+ "on": {
8341
+ "type": "object",
8342
+ "additionalProperties": {
8343
+ "anyOf": [
8344
+ {
8345
+ "type": "string"
8346
+ },
8347
+ {
8348
+ "type": "object",
8349
+ "properties": {
8350
+ "target": {
8351
+ "type": "string",
8352
+ "description": "Target State ID"
8353
+ },
8354
+ "cond": {
8355
+ "anyOf": [
8356
+ {
8357
+ "type": "string",
8358
+ "description": "Guard Name (e.g., \"isManager\", \"amountGT1000\")"
8359
+ },
8360
+ {
8361
+ "type": "object",
8362
+ "properties": {
8363
+ "type": {
8364
+ "type": "string"
8365
+ },
8366
+ "params": {
8367
+ "type": "object",
8368
+ "additionalProperties": {}
8369
+ }
8370
+ },
8371
+ "required": [
8372
+ "type"
8373
+ ],
8374
+ "additionalProperties": false
8375
+ }
8376
+ ],
8377
+ "description": "Condition (Guard) required to take this path"
8378
+ },
8379
+ "actions": {
8380
+ "type": "array",
8381
+ "items": {
8382
+ "anyOf": [
8383
+ {
8384
+ "type": "string",
8385
+ "description": "Action Name"
8386
+ },
8387
+ {
8388
+ "type": "object",
8389
+ "properties": {
8390
+ "type": {
8391
+ "type": "string"
8392
+ },
8393
+ "params": {
8394
+ "type": "object",
8395
+ "additionalProperties": {}
8396
+ }
8397
+ },
8398
+ "required": [
8399
+ "type"
8400
+ ],
8401
+ "additionalProperties": false
8402
+ }
8403
+ ]
8404
+ },
8405
+ "description": "Actions to execute during transition"
8406
+ },
8407
+ "description": {
8408
+ "type": "string",
8409
+ "description": "Human readable description of this rule"
8410
+ }
7055
8411
  },
7056
- "events": {
7057
- "type": "array",
7058
- "items": {
8412
+ "additionalProperties": false
8413
+ },
8414
+ {
8415
+ "type": "array",
8416
+ "items": {
8417
+ "type": "object",
8418
+ "properties": {
8419
+ "target": {
8420
+ "type": "string",
8421
+ "description": "Target State ID"
8422
+ },
8423
+ "cond": {
8424
+ "anyOf": [
8425
+ {
8426
+ "type": "string",
8427
+ "description": "Guard Name (e.g., \"isManager\", \"amountGT1000\")"
8428
+ },
8429
+ {
8430
+ "type": "object",
8431
+ "properties": {
8432
+ "type": {
8433
+ "type": "string"
8434
+ },
8435
+ "params": {
8436
+ "type": "object",
8437
+ "additionalProperties": {}
8438
+ }
8439
+ },
8440
+ "required": [
8441
+ "type"
8442
+ ],
8443
+ "additionalProperties": false
8444
+ }
8445
+ ],
8446
+ "description": "Condition (Guard) required to take this path"
8447
+ },
8448
+ "actions": {
8449
+ "type": "array",
8450
+ "items": {
8451
+ "anyOf": [
8452
+ {
8453
+ "type": "string",
8454
+ "description": "Action Name"
8455
+ },
8456
+ {
8457
+ "type": "object",
8458
+ "properties": {
8459
+ "type": {
8460
+ "type": "string"
8461
+ },
8462
+ "params": {
8463
+ "type": "object",
8464
+ "additionalProperties": {}
8465
+ }
8466
+ },
8467
+ "required": [
8468
+ "type"
8469
+ ],
8470
+ "additionalProperties": false
8471
+ }
8472
+ ]
8473
+ },
8474
+ "description": "Actions to execute during transition"
8475
+ },
8476
+ "description": {
8477
+ "type": "string",
8478
+ "description": "Human readable description of this rule"
8479
+ }
8480
+ },
8481
+ "additionalProperties": false
8482
+ }
8483
+ }
8484
+ ]
8485
+ },
8486
+ "description": "Map of Event Type -> Transition Definition"
8487
+ },
8488
+ "always": {
8489
+ "type": "array",
8490
+ "items": {
8491
+ "type": "object",
8492
+ "properties": {
8493
+ "target": {
8494
+ "type": "string",
8495
+ "description": "Target State ID"
8496
+ },
8497
+ "cond": {
8498
+ "anyOf": [
8499
+ {
7059
8500
  "type": "string",
7060
- "enum": [
7061
- "insert",
7062
- "update",
7063
- "delete"
7064
- ]
8501
+ "description": "Guard Name (e.g., \"isManager\", \"amountGT1000\")"
7065
8502
  },
7066
- "default": [
7067
- "insert",
7068
- "update"
7069
- ],
7070
- "description": "Validation contexts"
8503
+ {
8504
+ "type": "object",
8505
+ "properties": {
8506
+ "type": {
8507
+ "type": "string"
8508
+ },
8509
+ "params": {
8510
+ "type": "object",
8511
+ "additionalProperties": {}
8512
+ }
8513
+ },
8514
+ "required": [
8515
+ "type"
8516
+ ],
8517
+ "additionalProperties": false
8518
+ }
8519
+ ],
8520
+ "description": "Condition (Guard) required to take this path"
8521
+ },
8522
+ "actions": {
8523
+ "type": "array",
8524
+ "items": {
8525
+ "anyOf": [
8526
+ {
8527
+ "type": "string",
8528
+ "description": "Action Name"
8529
+ },
8530
+ {
8531
+ "type": "object",
8532
+ "properties": {
8533
+ "type": {
8534
+ "type": "string"
8535
+ },
8536
+ "params": {
8537
+ "type": "object",
8538
+ "additionalProperties": {}
8539
+ }
8540
+ },
8541
+ "required": [
8542
+ "type"
8543
+ ],
8544
+ "additionalProperties": false
8545
+ }
8546
+ ]
7071
8547
  },
7072
- "tags": {
7073
- "type": "array",
7074
- "items": {
7075
- "type": "string"
8548
+ "description": "Actions to execute during transition"
8549
+ },
8550
+ "description": {
8551
+ "type": "string",
8552
+ "description": "Human readable description of this rule"
8553
+ }
8554
+ },
8555
+ "additionalProperties": false
8556
+ }
8557
+ },
8558
+ "initial": {
8559
+ "type": "string",
8560
+ "description": "Initial child state (if compound)"
8561
+ },
8562
+ "states": {
8563
+ "type": "object",
8564
+ "additionalProperties": {}
8565
+ },
8566
+ "meta": {
8567
+ "type": "object",
8568
+ "properties": {
8569
+ "label": {
8570
+ "type": "string"
8571
+ },
8572
+ "description": {
8573
+ "type": "string"
8574
+ },
8575
+ "color": {
8576
+ "type": "string"
8577
+ },
8578
+ "aiInstructions": {
8579
+ "type": "string",
8580
+ "description": "Specific instructions for AI when in this state"
8581
+ }
8582
+ },
8583
+ "additionalProperties": false
8584
+ }
8585
+ },
8586
+ "additionalProperties": false
8587
+ },
8588
+ "description": "State Nodes"
8589
+ },
8590
+ "on": {
8591
+ "type": "object",
8592
+ "additionalProperties": {
8593
+ "anyOf": [
8594
+ {
8595
+ "type": "string"
8596
+ },
8597
+ {
8598
+ "type": "object",
8599
+ "properties": {
8600
+ "target": {
8601
+ "type": "string",
8602
+ "description": "Target State ID"
8603
+ },
8604
+ "cond": {
8605
+ "anyOf": [
8606
+ {
8607
+ "type": "string",
8608
+ "description": "Guard Name (e.g., \"isManager\", \"amountGT1000\")"
8609
+ },
8610
+ {
8611
+ "type": "object",
8612
+ "properties": {
8613
+ "type": {
8614
+ "type": "string"
8615
+ },
8616
+ "params": {
8617
+ "type": "object",
8618
+ "additionalProperties": {}
8619
+ }
8620
+ },
8621
+ "required": [
8622
+ "type"
8623
+ ],
8624
+ "additionalProperties": false
8625
+ }
8626
+ ],
8627
+ "description": "Condition (Guard) required to take this path"
8628
+ },
8629
+ "actions": {
8630
+ "type": "array",
8631
+ "items": {
8632
+ "anyOf": [
8633
+ {
8634
+ "type": "string",
8635
+ "description": "Action Name"
8636
+ },
8637
+ {
8638
+ "type": "object",
8639
+ "properties": {
8640
+ "type": {
8641
+ "type": "string"
8642
+ },
8643
+ "params": {
8644
+ "type": "object",
8645
+ "additionalProperties": {}
8646
+ }
8647
+ },
8648
+ "required": [
8649
+ "type"
8650
+ ],
8651
+ "additionalProperties": false
8652
+ }
8653
+ ]
8654
+ },
8655
+ "description": "Actions to execute during transition"
8656
+ },
8657
+ "description": {
8658
+ "type": "string",
8659
+ "description": "Human readable description of this rule"
8660
+ }
8661
+ },
8662
+ "additionalProperties": false
8663
+ },
8664
+ {
8665
+ "type": "array",
8666
+ "items": {
8667
+ "type": "object",
8668
+ "properties": {
8669
+ "target": {
8670
+ "type": "string",
8671
+ "description": "Target State ID"
8672
+ },
8673
+ "cond": {
8674
+ "anyOf": [
8675
+ {
8676
+ "type": "string",
8677
+ "description": "Guard Name (e.g., \"isManager\", \"amountGT1000\")"
7076
8678
  },
7077
- "description": "Categorization tags (e.g., \"compliance\", \"billing\")"
7078
- },
7079
- "severity": {
7080
- "type": "string",
7081
- "enum": [
7082
- "error",
7083
- "warning",
7084
- "info"
7085
- ],
7086
- "default": "error"
7087
- },
7088
- "message": {
7089
- "type": "string",
7090
- "description": "Error message to display to the user"
7091
- },
7092
- "type": {
7093
- "type": "string",
7094
- "const": "async"
8679
+ {
8680
+ "type": "object",
8681
+ "properties": {
8682
+ "type": {
8683
+ "type": "string"
8684
+ },
8685
+ "params": {
8686
+ "type": "object",
8687
+ "additionalProperties": {}
8688
+ }
8689
+ },
8690
+ "required": [
8691
+ "type"
8692
+ ],
8693
+ "additionalProperties": false
8694
+ }
8695
+ ],
8696
+ "description": "Condition (Guard) required to take this path"
8697
+ },
8698
+ "actions": {
8699
+ "type": "array",
8700
+ "items": {
8701
+ "anyOf": [
8702
+ {
8703
+ "type": "string",
8704
+ "description": "Action Name"
8705
+ },
8706
+ {
8707
+ "type": "object",
8708
+ "properties": {
8709
+ "type": {
8710
+ "type": "string"
8711
+ },
8712
+ "params": {
8713
+ "type": "object",
8714
+ "additionalProperties": {}
8715
+ }
8716
+ },
8717
+ "required": [
8718
+ "type"
8719
+ ],
8720
+ "additionalProperties": false
8721
+ }
8722
+ ]
7095
8723
  },
7096
- "field": {
8724
+ "description": "Actions to execute during transition"
8725
+ },
8726
+ "description": {
8727
+ "type": "string",
8728
+ "description": "Human readable description of this rule"
8729
+ }
8730
+ },
8731
+ "additionalProperties": false
8732
+ }
8733
+ }
8734
+ ]
8735
+ }
8736
+ }
8737
+ },
8738
+ "required": [
8739
+ "id",
8740
+ "initial",
8741
+ "states"
8742
+ ],
8743
+ "additionalProperties": false,
8744
+ "description": "Single state machine for record lifecycle (shorthand)"
8745
+ },
8746
+ "stateMachines": {
8747
+ "type": "object",
8748
+ "additionalProperties": {
8749
+ "type": "object",
8750
+ "properties": {
8751
+ "id": {
8752
+ "type": "string",
8753
+ "minLength": 2,
8754
+ "pattern": "^[a-z][a-z0-9_]*$",
8755
+ "description": "Unique Machine ID"
8756
+ },
8757
+ "description": {
8758
+ "type": "string"
8759
+ },
8760
+ "contextSchema": {
8761
+ "type": "object",
8762
+ "additionalProperties": {},
8763
+ "description": "Zod Schema for the machine context/memory"
8764
+ },
8765
+ "initial": {
8766
+ "type": "string",
8767
+ "description": "Initial State ID"
8768
+ },
8769
+ "states": {
8770
+ "type": "object",
8771
+ "additionalProperties": {
8772
+ "type": "object",
8773
+ "properties": {
8774
+ "type": {
8775
+ "type": "string",
8776
+ "enum": [
8777
+ "atomic",
8778
+ "compound",
8779
+ "parallel",
8780
+ "final",
8781
+ "history"
8782
+ ],
8783
+ "default": "atomic"
8784
+ },
8785
+ "entry": {
8786
+ "type": "array",
8787
+ "items": {
8788
+ "anyOf": [
8789
+ {
7097
8790
  "type": "string",
7098
- "description": "Field to validate"
8791
+ "description": "Action Name"
7099
8792
  },
7100
- "validatorUrl": {
8793
+ {
8794
+ "type": "object",
8795
+ "properties": {
8796
+ "type": {
8797
+ "type": "string"
8798
+ },
8799
+ "params": {
8800
+ "type": "object",
8801
+ "additionalProperties": {}
8802
+ }
8803
+ },
8804
+ "required": [
8805
+ "type"
8806
+ ],
8807
+ "additionalProperties": false
8808
+ }
8809
+ ]
8810
+ },
8811
+ "description": "Actions to run when entering this state"
8812
+ },
8813
+ "exit": {
8814
+ "type": "array",
8815
+ "items": {
8816
+ "anyOf": [
8817
+ {
7101
8818
  "type": "string",
7102
- "description": "External API endpoint for validation"
8819
+ "description": "Action Name"
7103
8820
  },
7104
- "method": {
7105
- "type": "string",
7106
- "enum": [
7107
- "GET",
7108
- "POST"
8821
+ {
8822
+ "type": "object",
8823
+ "properties": {
8824
+ "type": {
8825
+ "type": "string"
8826
+ },
8827
+ "params": {
8828
+ "type": "object",
8829
+ "additionalProperties": {}
8830
+ }
8831
+ },
8832
+ "required": [
8833
+ "type"
7109
8834
  ],
7110
- "default": "GET",
7111
- "description": "HTTP method for external call"
8835
+ "additionalProperties": false
8836
+ }
8837
+ ]
8838
+ },
8839
+ "description": "Actions to run when leaving this state"
8840
+ },
8841
+ "on": {
8842
+ "type": "object",
8843
+ "additionalProperties": {
8844
+ "anyOf": [
8845
+ {
8846
+ "type": "string"
7112
8847
  },
7113
- "headers": {
8848
+ {
7114
8849
  "type": "object",
7115
- "additionalProperties": {
7116
- "type": "string"
8850
+ "properties": {
8851
+ "target": {
8852
+ "type": "string",
8853
+ "description": "Target State ID"
8854
+ },
8855
+ "cond": {
8856
+ "anyOf": [
8857
+ {
8858
+ "type": "string",
8859
+ "description": "Guard Name (e.g., \"isManager\", \"amountGT1000\")"
8860
+ },
8861
+ {
8862
+ "type": "object",
8863
+ "properties": {
8864
+ "type": {
8865
+ "type": "string"
8866
+ },
8867
+ "params": {
8868
+ "type": "object",
8869
+ "additionalProperties": {}
8870
+ }
8871
+ },
8872
+ "required": [
8873
+ "type"
8874
+ ],
8875
+ "additionalProperties": false
8876
+ }
8877
+ ],
8878
+ "description": "Condition (Guard) required to take this path"
8879
+ },
8880
+ "actions": {
8881
+ "type": "array",
8882
+ "items": {
8883
+ "anyOf": [
8884
+ {
8885
+ "type": "string",
8886
+ "description": "Action Name"
8887
+ },
8888
+ {
8889
+ "type": "object",
8890
+ "properties": {
8891
+ "type": {
8892
+ "type": "string"
8893
+ },
8894
+ "params": {
8895
+ "type": "object",
8896
+ "additionalProperties": {}
8897
+ }
8898
+ },
8899
+ "required": [
8900
+ "type"
8901
+ ],
8902
+ "additionalProperties": false
8903
+ }
8904
+ ]
8905
+ },
8906
+ "description": "Actions to execute during transition"
8907
+ },
8908
+ "description": {
8909
+ "type": "string",
8910
+ "description": "Human readable description of this rule"
8911
+ }
7117
8912
  },
7118
- "description": "Custom headers for the request"
7119
- },
7120
- "validatorFunction": {
7121
- "type": "string",
7122
- "description": "Reference to custom validator function"
7123
- },
7124
- "timeout": {
7125
- "type": "number",
7126
- "default": 5000,
7127
- "description": "Timeout in milliseconds"
7128
- },
7129
- "debounce": {
7130
- "type": "number",
7131
- "description": "Debounce delay in milliseconds"
8913
+ "additionalProperties": false
7132
8914
  },
7133
- "params": {
7134
- "type": "object",
7135
- "additionalProperties": {},
7136
- "description": "Additional parameters to pass to validator"
8915
+ {
8916
+ "type": "array",
8917
+ "items": {
8918
+ "type": "object",
8919
+ "properties": {
8920
+ "target": {
8921
+ "type": "string",
8922
+ "description": "Target State ID"
8923
+ },
8924
+ "cond": {
8925
+ "anyOf": [
8926
+ {
8927
+ "type": "string",
8928
+ "description": "Guard Name (e.g., \"isManager\", \"amountGT1000\")"
8929
+ },
8930
+ {
8931
+ "type": "object",
8932
+ "properties": {
8933
+ "type": {
8934
+ "type": "string"
8935
+ },
8936
+ "params": {
8937
+ "type": "object",
8938
+ "additionalProperties": {}
8939
+ }
8940
+ },
8941
+ "required": [
8942
+ "type"
8943
+ ],
8944
+ "additionalProperties": false
8945
+ }
8946
+ ],
8947
+ "description": "Condition (Guard) required to take this path"
8948
+ },
8949
+ "actions": {
8950
+ "type": "array",
8951
+ "items": {
8952
+ "anyOf": [
8953
+ {
8954
+ "type": "string",
8955
+ "description": "Action Name"
8956
+ },
8957
+ {
8958
+ "type": "object",
8959
+ "properties": {
8960
+ "type": {
8961
+ "type": "string"
8962
+ },
8963
+ "params": {
8964
+ "type": "object",
8965
+ "additionalProperties": {}
8966
+ }
8967
+ },
8968
+ "required": [
8969
+ "type"
8970
+ ],
8971
+ "additionalProperties": false
8972
+ }
8973
+ ]
8974
+ },
8975
+ "description": "Actions to execute during transition"
8976
+ },
8977
+ "description": {
8978
+ "type": "string",
8979
+ "description": "Human readable description of this rule"
8980
+ }
8981
+ },
8982
+ "additionalProperties": false
8983
+ }
7137
8984
  }
7138
- },
7139
- "required": [
7140
- "name",
7141
- "message",
7142
- "type",
7143
- "field"
7144
- ],
7145
- "additionalProperties": false
8985
+ ]
7146
8986
  },
7147
- {
8987
+ "description": "Map of Event Type -> Transition Definition"
8988
+ },
8989
+ "always": {
8990
+ "type": "array",
8991
+ "items": {
7148
8992
  "type": "object",
7149
8993
  "properties": {
7150
- "name": {
8994
+ "target": {
7151
8995
  "type": "string",
7152
- "pattern": "^[a-z_][a-z0-9_]*$",
7153
- "description": "Unique rule name (snake_case)"
7154
- },
7155
- "label": {
7156
- "type": "string",
7157
- "description": "Human-readable label for the rule listing"
7158
- },
7159
- "description": {
7160
- "type": "string",
7161
- "description": "Administrative notes explaining the business reason"
7162
- },
7163
- "active": {
7164
- "type": "boolean",
7165
- "default": true
8996
+ "description": "Target State ID"
8997
+ },
8998
+ "cond": {
8999
+ "anyOf": [
9000
+ {
9001
+ "type": "string",
9002
+ "description": "Guard Name (e.g., \"isManager\", \"amountGT1000\")"
9003
+ },
9004
+ {
9005
+ "type": "object",
9006
+ "properties": {
9007
+ "type": {
9008
+ "type": "string"
9009
+ },
9010
+ "params": {
9011
+ "type": "object",
9012
+ "additionalProperties": {}
9013
+ }
9014
+ },
9015
+ "required": [
9016
+ "type"
9017
+ ],
9018
+ "additionalProperties": false
9019
+ }
9020
+ ],
9021
+ "description": "Condition (Guard) required to take this path"
7166
9022
  },
7167
- "events": {
9023
+ "actions": {
7168
9024
  "type": "array",
7169
9025
  "items": {
7170
- "type": "string",
7171
- "enum": [
7172
- "insert",
7173
- "update",
7174
- "delete"
9026
+ "anyOf": [
9027
+ {
9028
+ "type": "string",
9029
+ "description": "Action Name"
9030
+ },
9031
+ {
9032
+ "type": "object",
9033
+ "properties": {
9034
+ "type": {
9035
+ "type": "string"
9036
+ },
9037
+ "params": {
9038
+ "type": "object",
9039
+ "additionalProperties": {}
9040
+ }
9041
+ },
9042
+ "required": [
9043
+ "type"
9044
+ ],
9045
+ "additionalProperties": false
9046
+ }
7175
9047
  ]
7176
9048
  },
7177
- "default": [
7178
- "insert",
7179
- "update"
7180
- ],
7181
- "description": "Validation contexts"
9049
+ "description": "Actions to execute during transition"
7182
9050
  },
7183
- "tags": {
7184
- "type": "array",
7185
- "items": {
7186
- "type": "string"
9051
+ "description": {
9052
+ "type": "string",
9053
+ "description": "Human readable description of this rule"
9054
+ }
9055
+ },
9056
+ "additionalProperties": false
9057
+ }
9058
+ },
9059
+ "initial": {
9060
+ "type": "string",
9061
+ "description": "Initial child state (if compound)"
9062
+ },
9063
+ "states": {
9064
+ "type": "object",
9065
+ "additionalProperties": {}
9066
+ },
9067
+ "meta": {
9068
+ "type": "object",
9069
+ "properties": {
9070
+ "label": {
9071
+ "type": "string"
9072
+ },
9073
+ "description": {
9074
+ "type": "string"
9075
+ },
9076
+ "color": {
9077
+ "type": "string"
9078
+ },
9079
+ "aiInstructions": {
9080
+ "type": "string",
9081
+ "description": "Specific instructions for AI when in this state"
9082
+ }
9083
+ },
9084
+ "additionalProperties": false
9085
+ }
9086
+ },
9087
+ "additionalProperties": false
9088
+ },
9089
+ "description": "State Nodes"
9090
+ },
9091
+ "on": {
9092
+ "type": "object",
9093
+ "additionalProperties": {
9094
+ "anyOf": [
9095
+ {
9096
+ "type": "string"
9097
+ },
9098
+ {
9099
+ "type": "object",
9100
+ "properties": {
9101
+ "target": {
9102
+ "type": "string",
9103
+ "description": "Target State ID"
9104
+ },
9105
+ "cond": {
9106
+ "anyOf": [
9107
+ {
9108
+ "type": "string",
9109
+ "description": "Guard Name (e.g., \"isManager\", \"amountGT1000\")"
7187
9110
  },
7188
- "description": "Categorization tags (e.g., \"compliance\", \"billing\")"
9111
+ {
9112
+ "type": "object",
9113
+ "properties": {
9114
+ "type": {
9115
+ "type": "string"
9116
+ },
9117
+ "params": {
9118
+ "type": "object",
9119
+ "additionalProperties": {}
9120
+ }
9121
+ },
9122
+ "required": [
9123
+ "type"
9124
+ ],
9125
+ "additionalProperties": false
9126
+ }
9127
+ ],
9128
+ "description": "Condition (Guard) required to take this path"
9129
+ },
9130
+ "actions": {
9131
+ "type": "array",
9132
+ "items": {
9133
+ "anyOf": [
9134
+ {
9135
+ "type": "string",
9136
+ "description": "Action Name"
9137
+ },
9138
+ {
9139
+ "type": "object",
9140
+ "properties": {
9141
+ "type": {
9142
+ "type": "string"
9143
+ },
9144
+ "params": {
9145
+ "type": "object",
9146
+ "additionalProperties": {}
9147
+ }
9148
+ },
9149
+ "required": [
9150
+ "type"
9151
+ ],
9152
+ "additionalProperties": false
9153
+ }
9154
+ ]
7189
9155
  },
7190
- "severity": {
9156
+ "description": "Actions to execute during transition"
9157
+ },
9158
+ "description": {
9159
+ "type": "string",
9160
+ "description": "Human readable description of this rule"
9161
+ }
9162
+ },
9163
+ "additionalProperties": false
9164
+ },
9165
+ {
9166
+ "type": "array",
9167
+ "items": {
9168
+ "type": "object",
9169
+ "properties": {
9170
+ "target": {
7191
9171
  "type": "string",
7192
- "enum": [
7193
- "error",
7194
- "warning",
7195
- "info"
9172
+ "description": "Target State ID"
9173
+ },
9174
+ "cond": {
9175
+ "anyOf": [
9176
+ {
9177
+ "type": "string",
9178
+ "description": "Guard Name (e.g., \"isManager\", \"amountGT1000\")"
9179
+ },
9180
+ {
9181
+ "type": "object",
9182
+ "properties": {
9183
+ "type": {
9184
+ "type": "string"
9185
+ },
9186
+ "params": {
9187
+ "type": "object",
9188
+ "additionalProperties": {}
9189
+ }
9190
+ },
9191
+ "required": [
9192
+ "type"
9193
+ ],
9194
+ "additionalProperties": false
9195
+ }
7196
9196
  ],
7197
- "default": "error"
7198
- },
7199
- "message": {
7200
- "type": "string",
7201
- "description": "Error message to display to the user"
9197
+ "description": "Condition (Guard) required to take this path"
7202
9198
  },
7203
- "type": {
7204
- "type": "string",
7205
- "const": "custom"
9199
+ "actions": {
9200
+ "type": "array",
9201
+ "items": {
9202
+ "anyOf": [
9203
+ {
9204
+ "type": "string",
9205
+ "description": "Action Name"
9206
+ },
9207
+ {
9208
+ "type": "object",
9209
+ "properties": {
9210
+ "type": {
9211
+ "type": "string"
9212
+ },
9213
+ "params": {
9214
+ "type": "object",
9215
+ "additionalProperties": {}
9216
+ }
9217
+ },
9218
+ "required": [
9219
+ "type"
9220
+ ],
9221
+ "additionalProperties": false
9222
+ }
9223
+ ]
9224
+ },
9225
+ "description": "Actions to execute during transition"
7206
9226
  },
7207
- "handler": {
9227
+ "description": {
7208
9228
  "type": "string",
7209
- "description": "Name of the custom validation function registered in the system"
7210
- },
7211
- "params": {
7212
- "type": "object",
7213
- "additionalProperties": {},
7214
- "description": "Parameters passed to the custom handler"
9229
+ "description": "Human readable description of this rule"
7215
9230
  }
7216
9231
  },
7217
- "required": [
7218
- "name",
7219
- "message",
7220
- "type",
7221
- "handler"
7222
- ],
7223
9232
  "additionalProperties": false
7224
- },
7225
- {}
7226
- ],
7227
- "description": "Validation rule to apply when condition is true"
7228
- },
7229
- "otherwise": {
7230
- "description": "Validation rule to apply when condition is false"
7231
- }
7232
- },
7233
- "required": [
7234
- "name",
7235
- "message",
7236
- "type",
7237
- "when",
7238
- "then"
7239
- ],
7240
- "additionalProperties": false
9233
+ }
9234
+ }
9235
+ ]
9236
+ }
7241
9237
  }
7242
- ]
9238
+ },
9239
+ "required": [
9240
+ "id",
9241
+ "initial",
9242
+ "states"
9243
+ ],
9244
+ "additionalProperties": false
7243
9245
  },
7244
- "description": "Object-level validation rules"
9246
+ "description": "Named state machines for parallel lifecycles (e.g., status, payment, approval)"
7245
9247
  },
7246
9248
  "titleFormat": {
7247
9249
  "type": "string",