@almadar/std 17.0.2 → 17.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (317) hide show
  1. package/behaviors/lolo/auth/atoms/std-dev-personas.lolo +27 -2
  2. package/behaviors/lolo/cli/atoms/std-orb-goldens.lolo +6 -3
  3. package/behaviors/lolo/cli/atoms/std-orb-lint-mem-handles.lolo +54 -34
  4. package/behaviors/lolo/cli/atoms/std-orb-lint-os-grants.lolo +4 -4
  5. package/behaviors/lolo/cli/atoms/std-orb-mcp.lolo +16 -21
  6. package/behaviors/lolo/cli/atoms/std-orb-packages.lolo +26 -16
  7. package/behaviors/lolo/cli/atoms/std-orb-serve.lolo +24 -4
  8. package/behaviors/lolo/codec/atoms/std-lolo-kotlin.lolo +26 -3
  9. package/behaviors/lolo/codec/atoms/std-lolo-python.lolo +15 -2
  10. package/behaviors/lolo/codec/atoms/std-lolo-rust.lolo +27 -2
  11. package/behaviors/lolo/codec/atoms/std-lolo-source.lolo +251 -60
  12. package/behaviors/lolo/codec/atoms/std-lolo-swift.lolo +24 -1
  13. package/behaviors/lolo/codec/atoms/std-lolo-typescript.lolo +24 -3
  14. package/behaviors/lolo/connect/atoms/std-meta-ads.lolo +4 -4
  15. package/behaviors/lolo/connect/atoms/std-stdio-lines.lolo +7 -4
  16. package/behaviors/lolo/connect/atoms/std-youtube.lolo +9 -9
  17. package/behaviors/lolo/dev/atoms/std-guest-session.lolo +122 -10
  18. package/behaviors/lolo/dev/atoms/std-mock-seed-marks.lolo +66 -0
  19. package/behaviors/lolo/dev/organisms/std-behavior-playground.lolo +5 -2
  20. package/behaviors/lolo/dev/organisms/std-launchpad.lolo +4 -3
  21. package/behaviors/lolo/gpu/atoms/std-gpu-compute.lolo +329 -0
  22. package/behaviors/lolo/net/atoms/std-http-client.lolo +4 -4
  23. package/behaviors/lolo/net/atoms/std-http-fetch.lolo +6 -6
  24. package/behaviors/lolo/net/atoms/std-npm-lookup.lolo +1 -1
  25. package/behaviors/lolo/net/atoms/std-npm-registry.lolo +2 -2
  26. package/behaviors/lolo/spec/auth/dev-personas.replay.goldens.json +263 -2
  27. package/behaviors/lolo/spec/cli/lint-all.lolo +1 -0
  28. package/behaviors/lolo/spec/cli/lint-item-action-event.replay.goldens.json +9 -9
  29. package/behaviors/lolo/spec/cli/lint-mem-handles.replay.goldens.json +3021 -1
  30. package/behaviors/lolo/spec/cli/lint-os-grants.replay.goldens.json +284 -12
  31. package/behaviors/lolo/spec/cli/mcp-server.replay.goldens.json +51 -55
  32. package/behaviors/lolo/spec/cli/orb-compile.replay.goldens.json +10 -4
  33. package/behaviors/lolo/spec/cli/orb-packages.lolo +1 -1
  34. package/behaviors/lolo/spec/codec/lolo-kotlin.replay.goldens.json +7496 -7497
  35. package/behaviors/lolo/spec/codec/lolo-python.replay.goldens.json +341 -3
  36. package/behaviors/lolo/spec/codec/lolo-rust.replay.goldens.json +18931 -6142
  37. package/behaviors/lolo/spec/codec/lolo-source.fixtures/compose-pair.lolo +44 -0
  38. package/behaviors/lolo/spec/codec/lolo-source.fixtures/config-read.lolo +2 -1
  39. package/behaviors/lolo/spec/codec/lolo-source.fixtures/divide-default.lolo +2 -1
  40. package/behaviors/lolo/spec/codec/lolo-source.fixtures/divide-plain.lolo +2 -1
  41. package/behaviors/lolo/spec/codec/lolo-source.fixtures/get-past-end.lolo +2 -1
  42. package/behaviors/lolo/spec/codec/lolo-source.fixtures/list-call.lolo +2 -1
  43. package/behaviors/lolo/spec/codec/lolo-source.fixtures/list-plain.lolo +2 -1
  44. package/behaviors/lolo/spec/codec/lolo-source.fixtures/minus-binary.lolo +2 -1
  45. package/behaviors/lolo/spec/codec/lolo-source.fixtures/minus-unary.lolo +2 -1
  46. package/behaviors/lolo/spec/codec/lolo-source.fixtures/nested-let.lolo +2 -1
  47. package/behaviors/lolo/spec/codec/lolo-source.fixtures/no-machine.lolo +2 -1
  48. package/behaviors/lolo/spec/codec/lolo-source.fixtures/no-template.lolo +2 -1
  49. package/behaviors/lolo/spec/codec/lolo-source.fixtures/nth-past-end.lolo +2 -1
  50. package/behaviors/lolo/spec/codec/lolo-source.fixtures/nth-raw.lolo +2 -1
  51. package/behaviors/lolo/spec/codec/lolo-source.fixtures/ports-call.lolo +2 -1
  52. package/behaviors/lolo/spec/codec/lolo-source.fixtures/range-one.lolo +2 -1
  53. package/behaviors/lolo/spec/codec/lolo-source.fixtures/range-two.lolo +2 -1
  54. package/behaviors/lolo/spec/codec/lolo-source.fixtures/router-trio.lolo +88 -0
  55. package/behaviors/lolo/spec/codec/lolo-source.fixtures/store-pair.lolo +62 -0
  56. package/behaviors/lolo/spec/codec/lolo-source.fixtures/string-literal.lolo +2 -1
  57. package/behaviors/lolo/spec/codec/lolo-source.gen/knobs.py +27 -1
  58. package/behaviors/lolo/spec/codec/lolo-source.gen/src_assemble.in +54 -2
  59. package/behaviors/lolo/spec/codec/lolo-source.gen/src_finish.in +1 -1
  60. package/behaviors/lolo/spec/codec/lolo-source.gen/src_fold.in +24 -4
  61. package/behaviors/lolo/spec/codec/lolo-source.gen/src_head.in +8 -3
  62. package/behaviors/lolo/spec/codec/lolo-source.gen/src_prepare.in +6 -2
  63. package/behaviors/lolo/spec/codec/lolo-source.gen/src_trait.in +12 -2
  64. package/behaviors/lolo/spec/codec/lolo-source.parity/agent-step.lolo +2 -1
  65. package/behaviors/lolo/spec/codec/lolo-source.parity/agent-step.server.lolo +1 -0
  66. package/behaviors/lolo/spec/codec/lolo-source.parity/chunk.lolo +2 -1
  67. package/behaviors/lolo/spec/codec/lolo-source.parity/chunk.server.lolo +1 -0
  68. package/behaviors/lolo/spec/codec/lolo-source.parity/compose-pair.events.json +36 -0
  69. package/behaviors/lolo/spec/codec/lolo-source.parity/compose-pair.replay.goldens.json +91 -0
  70. package/behaviors/lolo/spec/codec/lolo-source.parity/cosine.lolo +2 -1
  71. package/behaviors/lolo/spec/codec/lolo-source.parity/cosine.server.lolo +1 -0
  72. package/behaviors/lolo/spec/codec/lolo-source.parity/drivers/kotlin/compose-pair.kt +31 -0
  73. package/behaviors/lolo/spec/codec/lolo-source.parity/drivers/kotlin/router-trio.kt +31 -0
  74. package/behaviors/lolo/spec/codec/lolo-source.parity/drivers/kotlin/store-pair.kt +31 -0
  75. package/behaviors/lolo/spec/codec/lolo-source.parity/drivers/python/compose-pair.py +18 -0
  76. package/behaviors/lolo/spec/codec/lolo-source.parity/drivers/python/router-trio.py +18 -0
  77. package/behaviors/lolo/spec/codec/lolo-source.parity/drivers/python/store-pair.py +17 -0
  78. package/behaviors/lolo/spec/codec/lolo-source.parity/drivers/rust/compose-pair.rs +37 -0
  79. package/behaviors/lolo/spec/codec/lolo-source.parity/drivers/rust/router-trio.rs +37 -0
  80. package/behaviors/lolo/spec/codec/lolo-source.parity/drivers/rust/store-pair.rs +36 -0
  81. package/behaviors/lolo/spec/codec/lolo-source.parity/drivers/swift/compose-pair.swift +24 -0
  82. package/behaviors/lolo/spec/codec/lolo-source.parity/drivers/swift/router-trio.swift +24 -0
  83. package/behaviors/lolo/spec/codec/lolo-source.parity/drivers/swift/store-pair.swift +23 -0
  84. package/behaviors/lolo/spec/codec/lolo-source.parity/drivers/typescript/compose-pair.mts +24 -0
  85. package/behaviors/lolo/spec/codec/lolo-source.parity/drivers/typescript/router-trio.mts +24 -0
  86. package/behaviors/lolo/spec/codec/lolo-source.parity/drivers/typescript/store-pair.mts +22 -0
  87. package/behaviors/lolo/spec/codec/lolo-source.parity/recall-at-k.lolo +2 -1
  88. package/behaviors/lolo/spec/codec/lolo-source.parity/recall-at-k.server.lolo +1 -0
  89. package/behaviors/lolo/spec/codec/lolo-source.parity/router-trio.events.json +18 -0
  90. package/behaviors/lolo/spec/codec/lolo-source.parity/router-trio.replay.goldens.json +87 -0
  91. package/behaviors/lolo/spec/codec/lolo-source.parity/store-pair.events.json +58 -0
  92. package/behaviors/lolo/spec/codec/lolo-source.parity/store-pair.replay.goldens.json +238 -0
  93. package/behaviors/lolo/spec/codec/lolo-swift.replay.goldens.json +15599 -2204
  94. package/behaviors/lolo/spec/codec/lolo-typescript.replay.goldens.json +28930 -28929
  95. package/behaviors/lolo/spec/connect/bearer-api.replay.goldens.json +1 -1
  96. package/behaviors/lolo/spec/connect/esign.replay.goldens.json +3 -3
  97. package/behaviors/lolo/spec/connect/github.replay.goldens.json +13 -13
  98. package/behaviors/lolo/spec/connect/google-calendar.replay.goldens.json +2 -2
  99. package/behaviors/lolo/spec/connect/image.replay.goldens.json +1 -1
  100. package/behaviors/lolo/spec/connect/meta-ads.replay.goldens.json +2 -2
  101. package/behaviors/lolo/spec/connect/stdio-lines.replay.goldens.json +90 -0
  102. package/behaviors/lolo/spec/connect/twilio.replay.goldens.json +2 -2
  103. package/behaviors/lolo/spec/connect/youtube.replay.goldens.json +1 -1
  104. package/behaviors/lolo/spec/dev/guest-session.replay.goldens.json +824 -0
  105. package/behaviors/lolo/spec/dev/mock-seed-marks.replay.goldens.json +365 -0
  106. package/behaviors/lolo/spec/dev/verify-walk.replay.goldens.json +2 -1
  107. package/behaviors/lolo/spec/gpu/gpu-compute.replay.goldens.json +784 -0
  108. package/behaviors/lolo/spec/mem/mem-buffer.replay.goldens.json +97 -1
  109. package/behaviors/lolo/spec/ml/vector-write.goldens.json +1 -1
  110. package/behaviors/lolo/spec/ml/vector-write.replay.goldens.json +2 -2
  111. package/behaviors/lolo/spec/net/http-client-call-host.replay.goldens.json +3 -3
  112. package/behaviors/lolo/spec/net/http-client-env-host.replay.goldens.json +3 -3
  113. package/behaviors/lolo/spec/net/http-client.replay.goldens.json +56 -56
  114. package/behaviors/lolo/spec/net/http-fetch.replay.goldens.json +2 -2
  115. package/behaviors/lolo/spec/net/npm-lookup.replay.goldens.json +1 -1
  116. package/behaviors/lolo/spec/net/npm-registry.replay.goldens.json +2 -2
  117. package/behaviors/lolo/spec/net/server-declared-traits.replay.goldens.json +6 -3
  118. package/behaviors/lolo/spec/net/server-external-inputs.replay.goldens.json +16 -8
  119. package/behaviors/lolo/spec/net/server-retargeted-leg.replay.goldens.json +4 -2
  120. package/behaviors/lolo/spec/net/server-untargeted-discovery.replay.goldens.json +50 -45
  121. package/behaviors/lolo/spec/ops/llm-spend-board.replay.goldens.json +112 -16
  122. package/behaviors/lolo/spec/store/firestore-twin.replay.goldens.json +1 -1
  123. package/behaviors/lolo/spec/store/row-store-postgres.gen/record_real_sql.py +1 -1
  124. package/behaviors/lolo/spec/ui/game/fx-particles.replay.goldens.json +37 -0
  125. package/behaviors/lolo/ui/avl/atoms/std-avl-cosmic-zoom.lolo +2 -2
  126. package/behaviors/lolo/ui/game/atoms/std-fx-particles.lolo +10 -1
  127. package/behaviors/lolo/ui/game/atoms/ui-draw-fx-layer.lolo +4 -4
  128. package/behaviors/lolo/ui/game/organisms/std-arcade-board-3d.lolo +9 -9
  129. package/behaviors/lolo/ui/game/organisms/std-crew-board-2d.lolo +4 -4
  130. package/behaviors/lolo/ui/game/organisms/std-dungeon-board-2d.lolo +5 -5
  131. package/behaviors/lolo/ui/game/organisms/std-market-board-3d.lolo +9 -9
  132. package/behaviors/lolo/ui/game/organisms/std-objective-board-3d.lolo +9 -9
  133. package/behaviors/lolo/ui/game/organisms/std-platformer-board-2d.lolo +5 -5
  134. package/behaviors/lolo/ui/game/organisms/std-platformer-puzzle.lolo +4 -4
  135. package/behaviors/lolo/ui/game/organisms/std-survival-board-3d.lolo +9 -9
  136. package/behaviors/lolo/ui/game/organisms/std-tactics-board-2d.lolo +5 -5
  137. package/behaviors/lolo/ui/game/organisms/std-tactics-board-3d.lolo +9 -9
  138. package/behaviors/registry/auth/atoms/std-dev-personas.orb +1 -1
  139. package/behaviors/registry/cli/atoms/std-orb-goldens.orb +1 -1
  140. package/behaviors/registry/cli/atoms/std-orb-lint-mem-handles.orb +1 -1
  141. package/behaviors/registry/cli/atoms/std-orb-lint-os-grants.orb +1 -1
  142. package/behaviors/registry/cli/atoms/std-orb-mcp.orb +1 -1
  143. package/behaviors/registry/cli/atoms/std-orb-packages.orb +1 -1
  144. package/behaviors/registry/cli/atoms/std-orb-serve.orb +1 -1
  145. package/behaviors/registry/codec/atoms/std-lolo-kotlin.orb +1 -1
  146. package/behaviors/registry/codec/atoms/std-lolo-python.orb +1 -1
  147. package/behaviors/registry/codec/atoms/std-lolo-rust.orb +1 -1
  148. package/behaviors/registry/codec/atoms/std-lolo-source.orb +1 -1
  149. package/behaviors/registry/codec/atoms/std-lolo-swift.orb +1 -1
  150. package/behaviors/registry/codec/atoms/std-lolo-typescript.orb +1 -1
  151. package/behaviors/registry/connect/atoms/std-meta-ads.orb +1 -1
  152. package/behaviors/registry/connect/atoms/std-stdio-lines.orb +1 -1
  153. package/behaviors/registry/connect/atoms/std-youtube.orb +1 -1
  154. package/behaviors/registry/dev/atoms/std-guest-session.orb +1 -1
  155. package/behaviors/registry/dev/atoms/std-mock-seed-marks.orb +1 -0
  156. package/behaviors/registry/dev/organisms/std-behavior-playground.orb +37 -0
  157. package/behaviors/registry/dev/organisms/std-launchpad.orb +25 -0
  158. package/behaviors/registry/gpu/atoms/std-gpu-compute.orb +1 -0
  159. package/behaviors/registry/net/atoms/std-http-client.orb +1 -1
  160. package/behaviors/registry/net/atoms/std-http-fetch.orb +1 -1
  161. package/behaviors/registry/net/atoms/std-npm-lookup.orb +1 -1
  162. package/behaviors/registry/net/atoms/std-npm-registry.orb +1 -1
  163. package/behaviors/registry/spec/cli/lint-all.orb +1 -1
  164. package/behaviors/registry/spec/cli/orb-packages.orb +1 -1
  165. package/behaviors/registry/spec/codec/lolo-source.fixtures/compose-pair.orb +1 -0
  166. package/behaviors/registry/spec/codec/lolo-source.fixtures/config-read.orb +1 -1
  167. package/behaviors/registry/spec/codec/lolo-source.fixtures/divide-default.orb +1 -1
  168. package/behaviors/registry/spec/codec/lolo-source.fixtures/divide-plain.orb +1 -1
  169. package/behaviors/registry/spec/codec/lolo-source.fixtures/get-past-end.orb +1 -1
  170. package/behaviors/registry/spec/codec/lolo-source.fixtures/list-call.orb +1 -1
  171. package/behaviors/registry/spec/codec/lolo-source.fixtures/list-plain.orb +1 -1
  172. package/behaviors/registry/spec/codec/lolo-source.fixtures/minus-binary.orb +1 -1
  173. package/behaviors/registry/spec/codec/lolo-source.fixtures/minus-unary.orb +1 -1
  174. package/behaviors/registry/spec/codec/lolo-source.fixtures/nested-let.orb +1 -1
  175. package/behaviors/registry/spec/codec/lolo-source.fixtures/no-machine.orb +1 -1
  176. package/behaviors/registry/spec/codec/lolo-source.fixtures/no-template.orb +1 -1
  177. package/behaviors/registry/spec/codec/lolo-source.fixtures/nth-past-end.orb +1 -1
  178. package/behaviors/registry/spec/codec/lolo-source.fixtures/nth-raw.orb +1 -1
  179. package/behaviors/registry/spec/codec/lolo-source.fixtures/ports-call.orb +1 -1
  180. package/behaviors/registry/spec/codec/lolo-source.fixtures/range-one.orb +1 -1
  181. package/behaviors/registry/spec/codec/lolo-source.fixtures/range-two.orb +1 -1
  182. package/behaviors/registry/spec/codec/lolo-source.fixtures/router-trio.orb +1 -0
  183. package/behaviors/registry/spec/codec/lolo-source.fixtures/store-pair.orb +1 -0
  184. package/behaviors/registry/spec/codec/lolo-source.fixtures/string-literal.orb +1 -1
  185. package/behaviors/registry/spec/codec/lolo-source.parity/agent-step.orb +1 -1
  186. package/behaviors/registry/spec/codec/lolo-source.parity/agent-step.server.orb +1 -1
  187. package/behaviors/registry/spec/codec/lolo-source.parity/chunk.orb +1 -1
  188. package/behaviors/registry/spec/codec/lolo-source.parity/chunk.server.orb +1 -1
  189. package/behaviors/registry/spec/codec/lolo-source.parity/cosine.orb +1 -1
  190. package/behaviors/registry/spec/codec/lolo-source.parity/cosine.server.orb +1 -1
  191. package/behaviors/registry/spec/codec/lolo-source.parity/recall-at-k.orb +1 -1
  192. package/behaviors/registry/spec/codec/lolo-source.parity/recall-at-k.server.orb +1 -1
  193. package/behaviors/registry/ui/avl/atoms/std-avl-cosmic-zoom.orb +1 -1
  194. package/behaviors/registry/ui/game/atoms/std-fx-particles.orb +1 -1
  195. package/behaviors/registry/ui/game/atoms/ui-draw-fx-layer.orb +1 -1
  196. package/behaviors/registry/ui/game/organisms/std-arcade-board-3d.orb +20 -13
  197. package/behaviors/registry/ui/game/organisms/std-crew-board-2d.orb +9 -5
  198. package/behaviors/registry/ui/game/organisms/std-dungeon-board-2d.orb +17 -7
  199. package/behaviors/registry/ui/game/organisms/std-market-board-3d.orb +19 -15
  200. package/behaviors/registry/ui/game/organisms/std-objective-board-3d.orb +15 -12
  201. package/behaviors/registry/ui/game/organisms/std-platformer-board-2d.orb +17 -7
  202. package/behaviors/registry/ui/game/organisms/std-platformer-puzzle.orb +4 -0
  203. package/behaviors/registry/ui/game/organisms/std-survival-board-3d.orb +15 -12
  204. package/behaviors/registry/ui/game/organisms/std-tactics-board-2d.orb +13 -6
  205. package/behaviors/registry/ui/game/organisms/std-tactics-board-3d.orb +14 -12
  206. package/canonical-operators.json +1426 -103
  207. package/dist/{chunk-EK22WRB6.js → chunk-2UGHBVU2.js} +2 -2
  208. package/dist/{chunk-GDMH5T4J.js → chunk-3DK7GI2C.js} +2 -2
  209. package/dist/chunk-3MDASC5C.js +26 -0
  210. package/dist/{chunk-K5ZI27PB.js → chunk-3PHO4RRF.js} +1 -1
  211. package/dist/{chunk-7IEMMYM6.js → chunk-4MJCLAZW.js} +1 -1
  212. package/dist/{chunk-W4IEV4BY.js → chunk-55JPIL7A.js} +2 -2
  213. package/dist/{chunk-RUGBZTV3.js → chunk-66BLZLFI.js} +1 -1
  214. package/dist/{chunk-YWFISV7L.js → chunk-66RAJFOD.js} +1 -1
  215. package/dist/{chunk-JWOWWGNZ.js → chunk-6ED4SUC6.js} +1 -1
  216. package/dist/{chunk-LL7P6EII.js → chunk-6KFCHNE2.js} +2 -2
  217. package/dist/{chunk-GFBL2TW6.js → chunk-A4QB3Y6L.js} +1 -1
  218. package/dist/chunk-BVWMLS32.js +123 -0
  219. package/dist/{chunk-5KQCGSNC.js → chunk-CRKVDCY7.js} +1 -1
  220. package/dist/{chunk-WHQDLLC3.js → chunk-EKWEY4OJ.js} +1 -1
  221. package/dist/{chunk-Y3BRVNYK.js → chunk-EU22GCGV.js} +2 -2
  222. package/dist/{chunk-XQPYTDZ4.js → chunk-FB6PKNRS.js} +1 -1
  223. package/dist/{chunk-UX3MDFX6.js → chunk-FSVOJQLP.js} +1 -1
  224. package/dist/{chunk-LDBD2FBQ.js → chunk-GAKLBWBR.js} +1 -1
  225. package/dist/{chunk-C3IEMPRZ.js → chunk-GO3FKBV2.js} +2 -2
  226. package/dist/{chunk-LZSPEHSM.js → chunk-GPDTJHYY.js} +1 -1
  227. package/dist/{chunk-W5ABMOXU.js → chunk-JQBWLH5V.js} +1 -1
  228. package/dist/{chunk-63X6RNY6.js → chunk-KKW3JHTC.js} +1 -1
  229. package/dist/{chunk-5PLJE42Q.js → chunk-LF2EZVAM.js} +1 -1
  230. package/dist/{chunk-RXWBYWQB.js → chunk-LGCKOZP3.js} +2 -2
  231. package/dist/{chunk-JJEADYP7.js → chunk-LMZ6XJFB.js} +2 -2
  232. package/dist/{chunk-CWYSQZJU.js → chunk-M2YQNSAZ.js} +2 -2
  233. package/dist/{chunk-GNCKJV3P.js → chunk-MKWHYBIS.js} +1 -1
  234. package/dist/{chunk-ZB2CLGEG.js → chunk-MXBGYTYF.js} +1 -1
  235. package/dist/{chunk-UN76TRSK.js → chunk-NH6MXHZR.js} +41 -41
  236. package/dist/{chunk-II2VW7T6.js → chunk-ODBIX4DB.js} +1 -1
  237. package/dist/{chunk-3F3CNWOG.js → chunk-OYDQR6DT.js} +2 -2
  238. package/dist/{chunk-FVL6BT6L.js → chunk-PD6POR44.js} +1 -1
  239. package/dist/{chunk-U6USXZ5M.js → chunk-PHFT3QNS.js} +2 -2
  240. package/dist/{chunk-RJYKIZMS.js → chunk-PQZ6PVKG.js} +2 -2
  241. package/dist/{chunk-TQPQXCSZ.js → chunk-Q6NHXIOZ.js} +2 -2
  242. package/dist/{chunk-KYGWVCTM.js → chunk-QMDVYTB7.js} +1 -1
  243. package/dist/{chunk-XKTATY45.js → chunk-RW2KMSG5.js} +4 -4
  244. package/dist/{chunk-UHNSPTFT.js → chunk-SA2ZS24W.js} +1 -1
  245. package/dist/{chunk-6YPUQK36.js → chunk-SFWP4UMK.js} +2 -2
  246. package/dist/{chunk-ZZYLFHBU.js → chunk-TLNEQA4D.js} +1 -1
  247. package/dist/{chunk-RGTBRWWA.js → chunk-TOODE5AD.js} +2 -2
  248. package/dist/{chunk-QGWAHOFR.js → chunk-U57GY7SM.js} +2 -2
  249. package/dist/{chunk-FDJZKB7J.js → chunk-UIDQQJSX.js} +1 -1
  250. package/dist/{chunk-LLH3WXM3.js → chunk-UVFP2B7I.js} +1 -1
  251. package/dist/{chunk-4OF7727E.js → chunk-VEGZPCTZ.js} +2 -2
  252. package/dist/{chunk-73YUPNIT.js → chunk-VXN4V7LC.js} +1 -1
  253. package/dist/{chunk-4D3W6AAE.js → chunk-YHQVZWPG.js} +1 -1
  254. package/dist/{chunk-XXYBHYLM.js → chunk-YQO3TO66.js} +2 -2
  255. package/dist/{chunk-YZAYFR5A.js → chunk-ZSJ3GEOJ.js} +1 -1
  256. package/dist/index.d.ts +3 -3
  257. package/dist/index.js +50 -50
  258. package/dist/modules/anim.js +2 -2
  259. package/dist/modules/array.js +2 -2
  260. package/dist/modules/auth.js +3 -3
  261. package/dist/modules/behavior.js +2 -2
  262. package/dist/modules/bit.js +2 -2
  263. package/dist/modules/browser.js +2 -2
  264. package/dist/modules/bytes.js +2 -2
  265. package/dist/modules/codec.js +3 -3
  266. package/dist/modules/composition.js +2 -2
  267. package/dist/modules/core.js +2 -2
  268. package/dist/modules/csv.js +2 -2
  269. package/dist/modules/ffi.js +3 -3
  270. package/dist/modules/format.js +2 -2
  271. package/dist/modules/geo.js +2 -2
  272. package/dist/modules/gpu.d.ts +12 -0
  273. package/dist/modules/gpu.js +3 -0
  274. package/dist/modules/grid.js +2 -2
  275. package/dist/modules/i18n.js +2 -2
  276. package/dist/modules/index.d.ts +1 -2
  277. package/dist/modules/index.js +45 -46
  278. package/dist/modules/json.js +2 -2
  279. package/dist/modules/kernel.js +3 -3
  280. package/dist/modules/kv.js +3 -3
  281. package/dist/modules/llm.js +2 -2
  282. package/dist/modules/math.js +2 -2
  283. package/dist/modules/mem.js +3 -3
  284. package/dist/modules/object.js +2 -2
  285. package/dist/modules/os-common.d.ts +1 -1
  286. package/dist/modules/os-common.js +2 -2
  287. package/dist/modules/os-desktop.js +3 -3
  288. package/dist/modules/os-dev.js +3 -3
  289. package/dist/modules/os-dir.js +3 -3
  290. package/dist/modules/os-env-stdio.js +3 -3
  291. package/dist/modules/os-fs.js +3 -3
  292. package/dist/modules/os-net.js +3 -3
  293. package/dist/modules/os-path.js +3 -3
  294. package/dist/modules/os-process.js +3 -3
  295. package/dist/modules/os-sys.js +3 -3
  296. package/dist/modules/os-time-users.js +3 -3
  297. package/dist/modules/os.js +13 -13
  298. package/dist/modules/path.js +2 -2
  299. package/dist/modules/prob.js +2 -2
  300. package/dist/modules/program.js +2 -2
  301. package/dist/modules/session.js +2 -2
  302. package/dist/modules/str.js +2 -2
  303. package/dist/modules/time.js +2 -2
  304. package/dist/modules/validate.js +2 -2
  305. package/dist/modules/vector.js +2 -2
  306. package/dist/modules/workspace.js +2 -2
  307. package/dist/modules/xml.js +2 -2
  308. package/dist/modules/yaml.js +2 -2
  309. package/dist/registry.d.ts +2 -2
  310. package/dist/registry.js +49 -49
  311. package/dist/{types-BA4LkhNJ.d.ts → types-CgiGhK6t.d.ts} +17 -3
  312. package/package.json +5 -5
  313. package/dist/chunk-F5TP25JA.js +0 -26
  314. package/dist/chunk-NE4WSTN7.js +0 -26
  315. package/dist/modules/trace.d.ts +0 -15
  316. package/dist/modules/trace.js +0 -2
  317. /package/dist/{chunk-SHSBTDDX.js → chunk-QUQ33UXH.js} +0 -0
@@ -0,0 +1,44 @@
1
+ app compose-pair [
2
+ version: "1.0.0",
3
+ description: "Fixture for the native renderers' composed mode: a local trait whose emit feeds a composed std atom (std-score's ScoreKeeper) with call-site config, so the native program must carry the composed traits the kernel runs."
4
+ ]
5
+
6
+ orbital ArenaOrbital {
7
+ uses S from "std/behaviors/std-score"
8
+
9
+ entity Match [runtime] {
10
+ id : string!
11
+ enemies : number = 3
12
+ score : number = 0
13
+ scoreBaseline : number = 0
14
+ }
15
+
16
+ trait Arena -> Match [client] {
17
+ initial: idle
18
+
19
+ state idle {
20
+ INIT -> idle
21
+ HIT -> idle
22
+ (set @entity.enemies (- @entity.enemies ?n))
23
+ (emit WAVE { enemiesAlive: @entity.enemies, playersAlive: 1 })
24
+ }
25
+
26
+ emits {
27
+ WAVE -> external { enemiesAlive : number!, playersAlive : number! }
28
+ }
29
+
30
+ listens {
31
+ HIT { n : number! }
32
+ }
33
+ }
34
+
35
+ trait Score = S.traits.ScoreKeeper -> Match {
36
+ config { running: true, pointsPerKill: 5, startScore: 0, initialEnemies: 3 }
37
+ listens {
38
+ Arena.WAVE -> UNITS_CHANGED
39
+ UNITS_CHANGED { playersAlive : number, enemiesAlive : number }
40
+ }
41
+ }
42
+
43
+ page boot as ArenaStart -> Arena, Score
44
+ }
@@ -1,5 +1,6 @@
1
1
  app config-read [
2
- version: "1.0.0"
2
+ version: "1.0.0",
3
+ description: "Fixture for the native source renderers: a transition guarded by a boolean config knob that multiplies a payload number by a numeric config knob."
3
4
  ]
4
5
  orbital Fx {
5
6
  entity Rec [runtime] {
@@ -1,5 +1,6 @@
1
1
  app divide-default [
2
- version: "1.0.0"
2
+ version: "1.0.0",
3
+ description: "Fixture for the native source renderers: division of two payload numbers wrapped in default, so a divide by zero falls back to 0."
3
4
  ]
4
5
  orbital Fx {
5
6
  entity Rec [runtime] {
@@ -1,5 +1,6 @@
1
1
  app divide-plain [
2
- version: "1.0.0"
2
+ version: "1.0.0",
3
+ description: "Fixture for the native source renderers: plain division of two payload numbers into a nullable number field."
3
4
  ]
4
5
  orbital Fx {
5
6
  entity Rec [runtime] {
@@ -1,5 +1,6 @@
1
1
  app get-past-end [
2
- version: "1.0.0"
2
+ version: "1.0.0",
3
+ description: "Fixture for the native source renderers: object/get of a missing key wrapped in default with a string fallback."
3
4
  ]
4
5
  orbital Fx {
5
6
  entity Rec [runtime] {
@@ -1,5 +1,6 @@
1
1
  app list-call [
2
- version: "1.0.0"
2
+ version: "1.0.0",
3
+ description: "Fixture for the native source renderers: a transition that calls str/upper on a literal and emits the result."
3
4
  ]
4
5
  orbital Fx {
5
6
  entity Rec [runtime] {
@@ -1,5 +1,6 @@
1
1
  app list-plain [
2
- version: "1.0.0"
2
+ version: "1.0.0",
3
+ description: "Fixture for the native source renderers: a list literal assigned to a string-list field, then array/len of it."
3
4
  ]
4
5
  orbital Fx {
5
6
  entity Rec [runtime] {
@@ -1,5 +1,6 @@
1
1
  app minus-binary [
2
- version: "1.0.0"
2
+ version: "1.0.0",
3
+ description: "Fixture for the native source renderers: the minus operator applied to two operands (subtraction)."
3
4
  ]
4
5
  orbital Fx {
5
6
  entity Rec [runtime] {
@@ -1,5 +1,6 @@
1
1
  app minus-unary [
2
- version: "1.0.0"
2
+ version: "1.0.0",
3
+ description: "Fixture for the native source renderers: the minus operator applied to a single operand (negation)."
3
4
  ]
4
5
  orbital Fx {
5
6
  entity Rec [runtime] {
@@ -1,5 +1,6 @@
1
1
  app nested-let [
2
- version: "1.0.0"
2
+ version: "1.0.0",
3
+ description: "Fixture for the native source renderers: a let expression nested inside another let, with later bindings reading earlier ones."
3
4
  ]
4
5
  orbital Fx {
5
6
  entity Rec [runtime] {
@@ -1,5 +1,6 @@
1
1
  app no-machine [
2
- version: "1.0.0"
2
+ version: "1.0.0",
3
+ description: "Fixture for the native source renderers: a trait with no states beyond its initial one and only an emit declaration, so the renderer handles an empty machine."
3
4
  ]
4
5
  orbital Fx {
5
6
  entity Rec [runtime] {
@@ -1,5 +1,6 @@
1
1
  app no-template [
2
- version: "1.0.0"
2
+ version: "1.0.0",
3
+ description: "Fixture for the native source renderers: format/phone, an operator the native renderers have no template for."
3
4
  ]
4
5
  orbital Fx {
5
6
  entity Rec [runtime] {
@@ -1,5 +1,6 @@
1
1
  app nth-past-end [
2
- version: "1.0.0"
2
+ version: "1.0.0",
3
+ description: "Fixture for the native source renderers: array/nth past the end of a list wrapped in default with a fallback of -1."
3
4
  ]
4
5
  orbital Fx {
5
6
  entity Rec [runtime] {
@@ -1,5 +1,6 @@
1
1
  app nth-raw [
2
- version: "1.0.0"
2
+ version: "1.0.0",
3
+ description: "Fixture for the native source renderers: array/nth without a default, assigned to a nullable number field."
3
4
  ]
4
5
  orbital Fx {
5
6
  entity Rec [runtime] {
@@ -1,5 +1,6 @@
1
1
  app ports-call [
2
- version: "1.0.0"
2
+ version: "1.0.0",
3
+ description: "Fixture for the native source renderers: a server trait that upserts a row, sets scalar fields, adds one to a counter and maps a payload list with a lambda."
3
4
  ]
4
5
  orbital Fx {
5
6
  entity Rec [runtime] {
@@ -1,5 +1,6 @@
1
1
  app range-one [
2
- version: "1.0.0"
2
+ version: "1.0.0",
3
+ description: "Fixture for the native source renderers: array/range with a single argument, then array/len of the result."
3
4
  ]
4
5
  orbital Fx {
5
6
  entity Rec [runtime] {
@@ -1,5 +1,6 @@
1
1
  app range-two [
2
- version: "1.0.0"
2
+ version: "1.0.0",
3
+ description: "Fixture for the native source renderers: array/range with a start and an end argument, then array/len of the result."
3
4
  ]
4
5
  orbital Fx {
5
6
  entity Rec [runtime] {
@@ -0,0 +1,88 @@
1
+ app router-trio [
2
+ version: "1.0.0",
3
+ description: "Fixture for the native renderers' generated router: three traits whose emits exercise the dispatch queue rules (own emits first, listeners after in registration order, a listen guard on the raw payload, and a with mapping)."
4
+ ]
5
+
6
+ orbital TrioOrbital {
7
+ entity Tally [runtime] {
8
+ id : string!
9
+ hits : number = 0
10
+ log : [string] = []
11
+ }
12
+
13
+ trait Lead -> Tally [client] {
14
+ initial: idle
15
+
16
+ state idle {
17
+ INIT -> idle
18
+ GO -> busy
19
+ (set @entity.hits (+ @entity.hits 1))
20
+ (emit PING { n: ?n })
21
+ (emit NOTE { text: "go" })
22
+ }
23
+
24
+ state busy {
25
+ INIT -> idle
26
+ PING -> idle
27
+ (set @entity.hits (+ @entity.hits 10))
28
+ (emit PONG { n: ?n })
29
+ GO -> busy
30
+ }
31
+
32
+ emits {
33
+ PING -> internal { n : number! }
34
+ NOTE -> external { text : string! }
35
+ PONG -> external { n : number! }
36
+ }
37
+
38
+ listens {
39
+ GO { n : number! }
40
+ PING { n : number! }
41
+ }
42
+ }
43
+
44
+ trait Echo -> Tally [client] {
45
+ initial: idle
46
+
47
+ state idle {
48
+ INIT -> idle
49
+ HEARD -> idle
50
+ (set @entity.log (array/append @entity.log (str/concat "echo " ?label)))
51
+ (emit ECHOED { label: ?label })
52
+ }
53
+
54
+ emits {
55
+ ECHOED -> external { label : string! }
56
+ }
57
+
58
+ listens {
59
+ Lead.PING -> HEARD with { label: (str/concat "n=" ?n) } when (> ?n 0)
60
+ HEARD { label : string! }
61
+ }
62
+ }
63
+
64
+ trait Tail -> Tally [client] {
65
+ initial: idle
66
+
67
+ state idle {
68
+ INIT -> idle
69
+ NOTED -> idle
70
+ (set @entity.log (array/append @entity.log (str/concat "note " ?text)))
71
+ PONGED -> idle
72
+ (set @entity.log (array/append @entity.log "pong"))
73
+ SEEN -> idle
74
+ (set @entity.log (array/append @entity.log (str/concat "seen " ?label)))
75
+ }
76
+
77
+ listens {
78
+ Lead.NOTE -> NOTED
79
+ Lead.PONG -> PONGED
80
+ Echo.ECHOED -> SEEN
81
+ NOTED { text : string! }
82
+ PONGED { n : number! }
83
+ SEEN { label : string! }
84
+ }
85
+ }
86
+
87
+ page boot as TrioStart -> Lead, Echo, Tail
88
+ }
@@ -0,0 +1,62 @@
1
+ app store-pair [
2
+ version: "1.0.0",
3
+ description: "Fixture for the native renderers' typed ports: a trait that persists a row and fetches rows back through their success and failure routes, so a native store must answer what the kernel's store answers."
4
+ ]
5
+
6
+ orbital StoreOrbital {
7
+ entity Note [runtime] {
8
+ id : string!
9
+ text : string = ""
10
+ kind : string = ""
11
+ seen : number = 0
12
+ last : string = ""
13
+ }
14
+
15
+ trait Notes -> Note {
16
+ initial: idle
17
+
18
+ state idle {
19
+ INIT -> idle
20
+ ADD -> idle
21
+ (persist create Note { text: ?text, kind: ?kind } { emit: { success: ADDED, failure: ADD_FAILED } })
22
+ ADDED -> idle
23
+ (set @entity.last ?text)
24
+ (fetch Note { filter: (= (object/get @entity "kind") "todo"), emit: { success: LOADED, failure: LOAD_FAILED } })
25
+ LOADED -> idle
26
+ (set @entity.seen (array/len ?data))
27
+ ADD_FAILED -> idle
28
+ (set @entity.last "failed")
29
+ LOAD_FAILED -> idle
30
+ (set @entity.last "load failed")
31
+ EDIT -> idle
32
+ (persist update Note { id: ?id, text: ?text } { emit: { success: EDITED, failure: EDIT_FAILED } })
33
+ EDITED -> idle
34
+ (set @entity.last (str/concat "edited " ?text))
35
+ EDIT_FAILED -> idle
36
+ (set @entity.last (str/concat "edit failed " ?error))
37
+ DROP -> idle
38
+ (persist delete Note ?id { emit: { success: DROPPED, failure: DROP_FAILED } })
39
+ DROPPED -> idle
40
+ (set @entity.last (str/concat "dropped " ?id))
41
+ (fetch Note { emit: { success: LOADED, failure: LOAD_FAILED } })
42
+ DROP_FAILED -> idle
43
+ (set @entity.last (str/concat "drop failed " ?error))
44
+ }
45
+
46
+ listens {
47
+ ADD { text : string!, kind : string! }
48
+ ADDED { id : string!, text : string!, kind : string! }
49
+ LOADED { data : [Note]!, totalCount : number! }
50
+ ADD_FAILED { error : string! }
51
+ LOAD_FAILED { error : string! }
52
+ EDIT { id : string!, text : string! }
53
+ EDITED { id : string!, text : string!, kind : string! }
54
+ EDIT_FAILED { error : string!, code : string }
55
+ DROP { id : string! }
56
+ DROPPED { id : string!, deleted : boolean! }
57
+ DROP_FAILED { error : string!, code : string }
58
+ }
59
+ }
60
+
61
+ page boot as StoreStart -> Notes
62
+ }
@@ -1,5 +1,6 @@
1
1
  app string-literal [
2
- version: "1.0.0"
2
+ version: "1.0.0",
3
+ description: "Fixture for the native source renderers: string and object literals containing braces, quotes, a backslash, a non-ASCII character and a newline, plus a key that needs quoting."
3
4
  ]
4
5
  orbital Fx {
5
6
  entity Rec [runtime] {
@@ -20,6 +20,12 @@ KNOBS = [
20
20
  ("portEffects", "[string]", [], "domain", "Port effects", "Effects outside the native core, called on the ports object the caller injects"),
21
21
  ("portCall", "string", "", "domain", "Port call", "How a port effect is called: {{name}} and {{*}}"),
22
22
  ("portCase", "string", "keep", "domain", "Port name case", "keep, lower, upper, camel or pascal (each word lowercased first), or split-camel or split-pascal (the shell models' identifier spelling: split on _ and -, each word's tail kept), or lower-camel (split-pascal with its first letter lowered)"),
23
+ ("routedEffects", "Map string string", {}, "domain", "Routed effects", "Template per port effect answered through its emit routes, which the trait completes in the same dispatch: {{args}} its arguments without the options object ({{0}}, {{1}}, {{2}} one by one), {{entity}} the quoted entity name, {{model}} the entity's model name, {{filter}} the fetch filter as a lambda over one row (fetchAll when the fetch has none), {{success}} and {{failure}} the quoted route events (nullLit when absent). Its helpers and imports are under the token store"),
24
+ ("rowLocal", "string", "fetchRow", "domain", "Fetch row local", "The parameter of a fetch filter's lambda, in localCase: the filter's @entity reads the candidate row through it"),
25
+ ("fetchAll", "string", "", "domain", "Fetch all", "The filter written for a fetch with none"),
26
+ ("routeForm", "string", "{{route}}", "domain", "Route form", "A routed effect's present route event ({{route}} the quoted event); an absent route is nullLit"),
27
+ ("filterForm", "string", "{{lambda}}", "domain", "Filter form", "A fetch filter that is present, {{lambda}} the filter as a lambda over one row"),
28
+ ("completeMethod", "[string]", [], "domain", "Complete method", "Lines of the method a trait with a routed effect completes it by: it records the answer's route (success or failure) as a completion emit, and nothing when that route is absent"),
23
29
  ("portWarn", "string", "{{op}} is called on the ports object", "domain", "Port warning", "The warning written for each port effect"),
24
30
  ("attributeRoots", "Map string string", {}, "domain", "Attribute roots", "Target expression per sigil whose path reads as attributes (@entity.x)"),
25
31
  ("itemRoots", "Map string string", {}, "domain", "Item roots", "Target expression per sigil whose path reads as items (@config.x)"),
@@ -51,6 +57,26 @@ KNOBS = [
51
57
  ("unionArmCase", "string", "keep", "domain", "Union arm case", "The case of {{arm}} in unionArmForm: keep, lower, upper, camel, pascal, split-camel, split-pascal or lower-camel"),
52
58
  ("enumForm", "string", "", "domain", "Enum member", "A string literal the checker names an enum for: {{enum}} the enum model, {{member}} the member (enumMemberCase); empty keeps every string literal a string"),
53
59
  ("enumMemberCase", "string", "split-pascal", "domain", "Enum member case", "keep, lower, upper, camel, pascal, split-camel or split-pascal"),
60
+ ("programOpen", "[string]", [], "domain", "Program open", "Lines that open the generated router of a program whose traits listen to each other ({{i}} indent, {{entities}} the programEntity entries); empty renders no router"),
61
+ ("programTrait", "string", "", "domain", "Program trait", "One trait instance of the router: {{key}} the orbital-qualified trait, {{class}}, {{entity}}, {{n}} its position"),
62
+ ("programStoreParam", "string", "", "domain", "Program store parameter", "programOpen's {{store}} when a trait of the program has a routed effect (the store the Program hands those traits); empty otherwise"),
63
+ ("programTraitStore", "string", "", "domain", "Program store trait", "The programTrait line for a trait with a routed effect, which also hands it the store ({{key}}, {{class}}, {{entity}}, {{n}}); empty writes programTrait"),
64
+ ("programEntity", "string", "", "domain", "Program entity", "One entry of programOpen's {{entities}}, the row each trait starts from: {{key}}, {{entity}}, {{n}} the trait's position"),
65
+ ("programEntitySep", "string", ", ", "domain", "Program entity separator", "Between the entries of {{entities}}"),
66
+ ("programHandles", "string", "", "domain", "Program handles", "The events a trait handles per state: {{key}}, {{table}} (a map literal of state to event list)"),
67
+ ("programRow", "string", "", "domain", "Program row", "One listen route in registration order: {{source}}, {{event}}, {{target}}, {{trigger}}, {{guard}} and {{map}} (a function name, or the null literal)"),
68
+ ("deliverOpen", "[string]", [], "domain", "Deliver open", "Lines that open the router's typed delivery to a trait method"),
69
+ ("deliverCase", "string", "", "domain", "Deliver case", "One delivery of an event with a payload: {{target}}, {{class}} (the trait's class), {{event}}, {{method}}, {{arg}} (the decoded payload)"),
70
+ ("deliverCasePlain", "string", "", "domain", "Deliver case (no payload)", "One delivery of an event with no payload: {{target}}, {{class}}, {{event}}, {{method}}"),
71
+ ("deliverClose", "[string]", [], "domain", "Deliver close", "Lines that close the delivery"),
72
+ ("programClose", "[string]", [], "domain", "Program close", "Lines that close the router"),
73
+ ("payloadDecode", "string", "", "domain", "Payload decode", "A payload model read from a router value: {{type}}, {{value}}"),
74
+ ("guardForm", "[string]", [], "domain", "Listen guard", "A listen guard as a function of the raw source payload: {{name}}, {{decode}}, {{expr}}"),
75
+ ("mapForm", "[string]", [], "domain", "Listen mapping", "A listen's with mapping as a function of the source payload: {{name}}, {{decode}}, {{expr}}"),
76
+ ("guardName", "string", "_guard_{{n}}", "domain", "Guard name", "The function of listen route {{n}}'s guard"),
77
+ ("mapName", "string", "_map_{{n}}", "domain", "Mapping name", "The function of listen route {{n}}'s mapping"),
78
+ ("guardRef", "string", "{{name}}", "domain", "Guard reference", "A route's guard as programRow passes it: {{name}} the function (a route with no guard passes the null literal)"),
79
+ ("mapRef", "string", "{{name}}", "domain", "Mapping reference", "A route's mapping as programRow passes it: {{name}} the function (a route with no mapping passes the null literal)"),
54
80
  ("fieldNames", "Map string string", {}, "domain", "Field names", "Model field spellings that differ from fieldCase (a target keyword the shell renames): .lolo field name to model field name"),
55
81
  ("letStmt", "string", "{{name}} = {{value}}", "domain", "Let statement", "A binding in statement position: {{name}}, {{value}}, {{type}}"),
56
82
  ("letExpr", "string", "{{body}}", "domain", "Let expression", "A binding in expression position, one per name, nested: {{name}}, {{value}}, {{body}}, {{type}}"),
@@ -86,7 +112,7 @@ KNOBS = [
86
112
  ("classOpen", "string", "class {{class}} {", "domain", "Class open", "Head of a trait class"),
87
113
  ("classClose", "string", "}", "domain", "Class close", "Foot of a trait class; empty when none"),
88
114
  ("classEmpty", "string", "", "domain", "Class empty", "Body of a trait class that has no state machine (pass); empty when none is needed"),
89
- ("constructor", "[string]", [], "domain", "Constructor", "Lines of the constructor and fields: {{i}} indent, {{class}}, {{entity}}, {{initial}} quoted, {{config}} the config map literal, {{configType}} the trait's config type (configType)"),
115
+ ("constructor", "[string]", [], "domain", "Constructor", "Lines of the constructor and fields: {{i}} indent, {{class}}, {{entity}}, {{initial}} quoted, {{config}} the config map literal, {{configType}} the trait's config type (configType); a line starting {{withStore}} is written only for a trait with a routed effect and one starting {{noStore}} only for one without"),
90
116
  ("emitMethod", "[string]", [], "domain", "Emit method", "Lines of the method that records an emit"),
91
117
  ("methodOpen", "string", "{{i}}fun {{method}}(payload: {{payloadType}}) {", "domain", "Method open", "Head of an event method that has a payload: {{i}}, {{method}}, {{payloadType}}"),
92
118
  ("methodOpenPlain", "string", "{{i}}fun {{method}}() {", "domain", "Method open (no payload)", "Head of an event method with no payload"),
@@ -46,7 +46,7 @@
46
46
  (if (!= @config.modelClassClose "") [@config.modelClassClose] [])))))))
47
47
  [])
48
48
  (array/map (array/range 0 (array/len @entity.traits)) (fn ti
49
- (let ((t (default (array/nth @entity.traits @ti) { name: "", path: "", entity: "", initial: "", hasMachine: false, knobs: [], transitions: [], events: [], listenTypes: {}, emitTypes: {}, emitVoid: [], configType: "" }))
49
+ (let ((t (default (array/nth @entity.traits @ti) { name: "", path: "", entity: "", initial: "", hasMachine: false, knobs: [], transitions: [], events: [], listenTypes: {}, emitTypes: {}, emitVoid: [], configType: "", orbital: "", listenRows: [] }))
50
50
  (rs (default (array/nth @entity.renders (+ @nC @ti)) []))
51
51
  (cn : string CASE{(default (object/get (default (array/nth @entity.traits @ti) { name: "" }) "name") "") ## @config.classCase}))
52
52
  (if (not (object/get @t "hasMachine"))
@@ -60,9 +60,10 @@
60
60
  @config.mapClose))))
61
61
  (array/concat
62
62
  [FILL{@config.classOpen ## class => @cn ## i => @ind}]
63
- (array/map (array/filter @config.constructor (fn l (if (= (object/get @t "configType") "") (not (or (str/includes @l "{{configType}}") (str/includes @l "{{withConfig}}"))) (not (str/includes @l "{{noConfig}}"))))) (fn l FILL{@l ## i => @ind ## class => @cn ## entity => ENT{(object/get @t "entity")} ## initial => STR{(object/get @t "initial")} ## config => @cfgLit ## configType => (object/get @t "configType") ## noConfig => "" ## withConfig => ""}))
63
+ (array/map (array/filter @config.constructor (fn l (and (if (= (object/get @t "configType") "") (not (or (str/includes @l "{{configType}}") (str/includes @l "{{withConfig}}"))) (not (str/includes @l "{{noConfig}}"))) (if (array/some @rs (fn sr (array/includes (object/get @sr "uses") "store"))) (not (str/includes @l "{{noStore}}")) (not (str/includes @l "{{withStore}}")))))) (fn l FILL{@l ## i => @ind ## class => @cn ## entity => ENT{(object/get @t "entity")} ## initial => STR{(object/get @t "initial")} ## config => @cfgLit ## configType => (object/get @t "configType") ## noConfig => "" ## withConfig => "" ## noStore => "" ## withStore => ""}))
64
64
  [""]
65
65
  (array/map @config.emitMethod (fn l FILL{@l ## i => @ind}))
66
+ (if (array/some @rs (fn sr (array/includes (object/get @sr "uses") "store"))) (array/map @config.completeMethod (fn l FILL{@l ## i => @ind})) [])
66
67
  (array/flatten (array/map (object/get @t "events") (fn ev
67
68
  (let ((mine (array/filter (array/range 0 (array/len @trs)) (fn mi (= (object/get (default (array/nth @trs @mi) { from: "", to: "", event: "" }) "event") @ev))))
68
69
  (ptype LOOKUP{(object/get @t "listenTypes") ## @ev})
@@ -86,9 +87,60 @@
86
87
  (if (!= @config.branchClose "") [FILL{@config.branchClose ## i => @ind}] [])
87
88
  (if (!= @config.methodClose "") [FILL{@config.methodClose ## i => @ind}] []))))))
88
89
  (if (!= @config.classClose "") [FILL{@config.classClose ## i => @ind}] []))))))))))
90
+ (set @entity.blocks (let ((nC (if @config.renderModels (array/len @entity.containers) 0))
91
+ (ind : string @config.indent)
92
+ (nullR : SrcRender RECL{ expr => @config.nullLit ## stmt => [@config.nullLit] ## body => @config.nullLit }))
93
+ (let ((storeUsed (array/some (array/flatten @entity.renders) (fn sr (array/includes (object/get @sr "uses") "store"))))
94
+ (rows (array/flatten (array/map (array/range 0 (array/len @entity.traits)) (fn ti
95
+ (array/map (array/range 0 (array/len (object/get (default (array/nth @entity.traits @ti) { name: "", path: "", entity: "", initial: "", hasMachine: false, knobs: [], transitions: [], events: [], listenTypes: {}, emitTypes: {}, emitVoid: [], configType: "", orbital: "", listenRows: [] }) "listenRows"))) (fn li { ti: @ti, li: @li })))))))
96
+ (if (or (= (array/len @config.programOpen) 0) (and (= (array/len @rows) 0) (not @storeUsed)))
97
+ @entity.blocks
98
+ (array/concat @entity.blocks [(array/concat
99
+ (array/map @config.programOpen (fn l FILL{@l ## i => @ind ## store => (if @storeUsed @config.programStoreParam "") ## entities => (str/join (array/map (array/range 0 (array/len @entity.traits)) (fn pei (let ((t (default (array/nth @entity.traits @pei) { name: "", path: "", entity: "", initial: "", hasMachine: false, knobs: [], transitions: [], events: [], listenTypes: {}, emitTypes: {}, emitVoid: [], configType: "", orbital: "", listenRows: [] }))) FILL{@config.programEntity ## n => (str/concat "" @pei) ## key => STR{(str/concat (object/get @t "orbital") "." (object/get @t "name"))} ## entity => ENT{(object/get @t "entity")}}))) @config.programEntitySep)}))
100
+ (array/map (array/range 0 (array/len @entity.traits)) (fn pti (let ((t (default (array/nth @entity.traits @pti) { name: "", path: "", entity: "", initial: "", hasMachine: false, knobs: [], transitions: [], events: [], listenTypes: {}, emitTypes: {}, emitVoid: [], configType: "", orbital: "", listenRows: [] })))
101
+ FILL{(if (and (!= @config.programTraitStore "") (array/some (default (array/nth @entity.renders (+ @nC @pti)) []) (fn sr (array/includes (object/get @sr "uses") "store")))) @config.programTraitStore @config.programTrait) ## i => @ind ## n => (str/concat "" @pti) ## key => STR{(str/concat (object/get @t "orbital") "." (object/get @t "name"))} ## class => CASE{(object/get @t "name") ## @config.classCase} ## entity => ENT{(object/get @t "entity")}})))
102
+ (array/map @entity.traits (fn t
103
+ (let ((trs : [SrcTransition] (object/get @t "transitions")))
104
+ (let ((sts (array/unique (array/map @trs (fn tr (object/get @tr "from"))))))
105
+ FILL{@config.programHandles ## i => @ind ## key => STR{(str/concat (object/get @t "orbital") "." (object/get @t "name"))}
106
+ ## table => (str/concat @config.mapOpen (str/join (array/map @sts (fn st FILL{@config.mapPair ## key => STR{@st} ## value => FILL{@config.listForm ## "*" => (str/join (array/map (array/unique (array/map (array/filter @trs (fn tr (= (object/get @tr "from") @st))) (fn tr (object/get @tr "event")))) (fn ev STR{@ev})) ", ")}})) @config.mapSep) @config.mapClose)}))))
107
+ (array/map (array/range 0 (array/len @rows)) (fn ri
108
+ (let ((r (default (array/nth @rows @ri) { ti: 0, li: 0 })))
109
+ (let ((t (default (array/nth @entity.traits (object/get @r "ti")) { name: "", path: "", entity: "", initial: "", hasMachine: false, knobs: [], transitions: [], events: [], listenTypes: {}, emitTypes: {}, emitVoid: [], configType: "", orbital: "", listenRows: [] })))
110
+ (let ((lr (default (array/nth (object/get @t "listenRows") (object/get @r "li")) { source: "", event: "", trigger: "" })))
111
+ FILL{@config.programRow ## i => @ind ## source => STR{(str/concat (object/get @t "orbital") "." (object/get @lr "source"))} ## event => STR{(object/get @lr "event")}
112
+ ## target => STR{(str/concat (object/get @t "orbital") "." (object/get @t "name"))} ## trigger => STR{(object/get @lr "trigger")}
113
+ ## guard => (if (= (object/get @lr "guard" null) null) @config.nullLit FILL{@config.guardRef ## name => FILL{@config.guardName ## n => (str/concat "" @ri)}})
114
+ ## map => (if (= (object/get @lr "map" null) null) @config.nullLit FILL{@config.mapRef ## name => FILL{@config.mapName ## n => (str/concat "" @ri)}})})))))
115
+ (array/map @config.deliverOpen (fn l FILL{@l ## i => @ind}))
116
+ (array/flatten (array/map @entity.traits (fn t
117
+ (array/map (object/get @t "events") (fn ev
118
+ (let ((pt LOOKUP{(object/get @t "listenTypes") ## @ev})
119
+ (mn FILL{@config.methodName ## event => CASE{@ev ## @config.methodCase}})
120
+ (tk STR{(str/concat (object/get @t "orbital") "." (object/get @t "name"))}))
121
+ (if (= @pt "")
122
+ FILL{@config.deliverCasePlain ## i => @ind ## target => @tk ## event => STR{@ev} ## method => @mn ## class => CASE{(object/get @t "name") ## @config.classCase}}
123
+ FILL{@config.deliverCase ## i => @ind ## target => @tk ## event => STR{@ev} ## method => @mn ## class => CASE{(object/get @t "name") ## @config.classCase} ## arg => FILL{@config.payloadDecode ## type => @pt ## value => "payload"}})))))))
124
+ (array/map @config.deliverClose (fn l FILL{@l ## i => @ind}))
125
+ (array/map @config.programClose (fn l FILL{@l ## i => @ind}))
126
+ (array/flatten (array/map (array/range 0 (array/len @rows)) (fn ri
127
+ (let ((r (default (array/nth @rows @ri) { ti: 0, li: 0 })))
128
+ (let ((t (default (array/nth @entity.traits (object/get @r "ti")) { name: "", path: "", entity: "", initial: "", hasMachine: false, knobs: [], transitions: [], events: [], listenTypes: {}, emitTypes: {}, emitVoid: [], configType: "", orbital: "", listenRows: [] }))
129
+ (job (default (array/nth (default (array/nth @entity.renders (+ @nC (object/get @r "ti"))) []) (+ (+ 1 (array/len (object/get (default (array/nth @entity.traits (object/get @r "ti")) { name: "", path: "", entity: "", initial: "", hasMachine: false, knobs: [], transitions: [], events: [], listenTypes: {}, emitTypes: {}, emitVoid: [], configType: "", orbital: "", listenRows: [] }) "transitions"))) (object/get @r "li"))) @nullR)))
130
+ (let ((lr (default (array/nth (object/get @t "listenRows") (object/get @r "li")) { source: "", event: "", trigger: "" }))
131
+ (base (str/concat (object/get @t "path") ".listens[" (object/get @r "li") "]")))
132
+ (let ((st LOOKUP{(object/get (default (array/find @entity.traits (fn s (and (= (object/get @s "name") (object/get @lr "source")) (= (object/get @s "orbital") (object/get @t "orbital"))))) { name: "", path: "", entity: "", initial: "", hasMachine: false, knobs: [], transitions: [], events: [], listenTypes: {}, emitTypes: {}, emitVoid: [], configType: "", orbital: "", listenRows: [] }) "emitTypes") ## (object/get @lr "event")}))
133
+ (let ((dec (if (= @st "") @config.nullLit FILL{@config.payloadDecode ## type => @st ## value => "payload_json"})))
134
+ (array/concat
135
+ (if (= (object/get @lr "guard" null) null) []
136
+ (array/map @config.guardForm (fn l FILL{@l ## i => @ind ## name => FILL{@config.guardName ## n => (str/concat "" @ri)} ## decode => @dec ## expr => RESOLVE{(default (array/nth (object/get @job "items") 1) @config.trueLit) ## @base}})))
137
+ (if (= (object/get @lr "map" null) null) []
138
+ (array/map @config.mapForm (fn l FILL{@l ## i => @ind ## name => FILL{@config.mapName ## n => (str/concat "" @ri)} ## decode => @dec ## expr => RESOLVE{(default (array/nth (object/get @job "items") 2) @config.nullLit) ## @base}}))))))))))))
139
+ )])))))
89
140
  (set @entity.tokens (array/concat
90
141
  (array/flatten (array/flatten (array/map @entity.renders (fn g (array/map @g (fn r (object/get @r "uses")))))))
91
142
  (array/flatten (array/flatten (array/map @entity.typeRenders (fn g (array/map @g (fn r (object/get @r "uses")))))))
92
143
  (if (and @config.renderModels (array/some @entity.containers (fn c (not (object/get @c "alias"))))) ["dataclass"] [])
93
144
  (if (and @config.renderModels (array/some @entity.containers (fn c (array/some (object/get @c "fields") (fn f (and (!= (object/get @f "default" null) null) (or (validate/array (object/get @f "default" null)) (validate/object (object/get @f "default" null))))))))) ["field"] [])))
145
+ (set @entity.tokens (array/concat @entity.tokens (if (and (> (array/len @config.programOpen) 0) (or (array/some @entity.traits (fn t (> (array/len (object/get @t "listenRows")) 0))) (array/includes @entity.tokens "store"))) ["router"] [])))
94
146
  (set @entity.helperTexts (array/sort (array/unique (array/flatten (array/map (array/unique @entity.tokens) (fn tk (object/get @config.helpers @tk [])))))))
@@ -9,4 +9,4 @@
9
9
  [(str/join @entity.helperTexts @config.helperGap)]
10
10
  (array/map @entity.blocks (fn b (str/join @b "\n"))))
11
11
  (fn s (!= @s "")))))
12
- (str/concat (str/join @sections @config.sectionGap) "\n")))))
12
+ (str/replaceAll (str/replaceAll (str/concat (str/join @sections @config.sectionGap) "\n") "\ue00d" "") "\ue00e" "")))))
@@ -103,10 +103,30 @@
103
103
  (if (and (= @ptype "") (not @void) (> (array/len @n) 2)) [(str/concat "emit " @ev " carries a payload the trait does not declare")]
104
104
  (if (and (!= @ptype "") (> (array/len @n) 2) (not @isObj)) [(str/concat "emit " @ev " passes a payload that is not an object literal, so it is not built as " @ptype)] [])))))
105
105
  (let ((call FILL{@config.emitForm ## event => (default (array/nth @ex 1) "") ## payload => @pld}))
106
- REC{ expr => @call ## stmt => [(str/concat @call @term)] ## warns => (array/concat @ws @warn) ## uses => @us })))))
106
+ REC{ expr => @call ## stmt => [(str/concat @call @term)] ## warns => (array/concat @ws @warn) ## uses => (if (and (!= @ptype "") @isObj) (array/concat @us ["payload"]) @us) })))))
107
107
  (if (= @hd "render-ui")
108
108
  (let ((kind : string (let ((pr (if (> @argc 1) (array/nth @n 2) null))) (if (validate/object @pr) (let ((tv (object/get @pr "type" "ui"))) (if (validate/string @tv) @tv "ui")) "ui"))))
109
109
  REC{ expr => @config.nullLit ## stmt => [FILL{@config.commentForm ## text => (str/concat "render: " @kind)}] ## warns => @ws ## uses => @us })
110
+ (if (object/has @config.routedEffects @hd)
111
+ (let ((oi (if (= @hd "fetch") 2 4))
112
+ (ei (if (= @hd "fetch") 1 2)))
113
+ (let ((rawO (array/nth @n @oi))
114
+ (orR : SrcRender (default (array/nth @rs @oi) @nullR))
115
+ (ename : string (let ((ev (array/nth @n @ei))) (if (validate/string @ev) @ev ""))))
116
+ (let ((opts : SrcMap (if (validate/object @rawO) (let ((om : SrcMap @rawO)) @om) {}))
117
+ (okeys : [string] (object/get @orR "keys")))
118
+ (let ((routes : SrcMap (let ((em (object/get @opts "emit" null))) (if (validate/object @em) (let ((emm : SrcMap @em)) @emm) {})))
119
+ (fi (array/indexOf @okeys "filter")))
120
+ (let ((okT (let ((rv (object/get @routes "success" null))) (if (validate/string @rv) (let ((rvs : string @rv)) FILL{@config.routeForm ## route => STR{@rvs}}) @config.nullLit)))
121
+ (errT (let ((rv (object/get @routes "failure" null))) (if (validate/string @rv) (let ((rvs : string @rv)) FILL{@config.routeForm ## route => STR{@rvs}}) @config.nullLit)))
122
+ (filterT (if (< @fi 0) @config.fetchAll FILL{@config.filterForm ## lambda => FILL{@config.lambdaForm ## params => CASE{@config.rowLocal ## @config.localCase} ## body => (str/replaceAll (default (array/nth (object/get @orR "items") @fi) @config.nullLit) (str/concat "\ue00d" (object/get @config.attributeRoots "entity" "") "\ue00e") CASE{@config.rowLocal ## @config.localCase})}}))
123
+ (extra (array/filter @okeys (fn ok (not (array/includes (if (= @hd "fetch") ["emit", "filter"] ["emit"]) @ok))))))
124
+ (let ((txt FILL{(object/get @config.routedEffects @hd "") ## args => (str/join (array/slice @ex 1 (if (< @argc @oi) (+ @argc 1) @oi)) ", ") ## "0" => (default (array/nth @ex 1) "") ## "1" => (default (array/nth @ex 2) "") ## "2" => (default (array/nth @ex 3) "") ## entity => STR{@ename} ## model => ENT{@ename} ## filter => @filterT ## success => @okT ## failure => @errT})
125
+ (warn (array/concat
126
+ (if (validate/object @rawO) [] [(str/concat @hd " has no options object with emit routes, so its answer reaches no event")])
127
+ (if (and (= @hd "persist") (not (let ((pop (array/nth @n 1))) (if (validate/string @pop) (let ((pops : string @pop)) (array/includes ["create", "update", "delete"] @pops)) false)))) ["persist has an operation the native store does not answer (create, update and delete are rendered)"] [])
128
+ (array/map @extra (fn ok (str/concat @hd " option " @ok " is not rendered natively"))))))
129
+ REC{ expr => @txt ## stmt => [(str/concat @txt @term)] ## items => @ex ## warns => (array/concat @ws @warn) ## uses => (array/concat @us ["store"]) }))))))
110
130
  (if (array/includes @config.portEffects @hd)
111
131
  (let ((args (array/drop @ex 1)))
112
132
  (let ((txt FILL{@config.portCall ## name => CASE{@hd ## @config.portCase} ## "*" => (str/join @args ", ")}))
@@ -136,13 +156,13 @@
136
156
  (if (= @mode "callee") FILL{@config.calleeForm ## callee => @callee ## "*" => @joined}
137
157
  FILL{@config.unsupportedForm ## op => STR{@hd}})))))
138
158
  (warn (if (= @mode "none") [FILL{@config.unsupportedWarn ## language => @config.language ## op => @hd}] [])))
139
- REC{ expr => @txt ## stmt => [(str/concat @txt @term)] ## items => @ex ## warns => (array/concat @ws @warn) ## uses => (array/concat @us [@hd] (if (= @mode "none") ["unsupported"] [])) }))))))))))))))))))
159
+ REC{ expr => @txt ## stmt => [(str/concat @txt @term)] ## items => @ex ## warns => (array/concat @ws @warn) ## uses => (array/concat @us [@hd] (if (= @mode "none") ["unsupported"] [])) })))))))))))))))))))
140
160
  (if (validate/object @n)
141
161
  (let ((es (object/entries @k)))
142
162
  (let ((typedEs (if @typed (array/map @es (fn e (let ((rr (default (array/nth @e 1) @nullR)) (m (str/concat "." (default (array/nth @e 0) "")))) [(array/nth @e 0) REC{ expr => (str/replaceAll (object/get @rr "expr") "" @m) ## stmt => (object/get @rr "stmt") ## params => (object/get @rr "params") ## body => (object/get @rr "body") ## items => (object/get @rr "items") ## keys => (object/get @rr "keys") ## stmts => (object/get @rr "stmts") ## pairVals => (object/get @rr "pairVals") ## warns => (object/get @rr "warns") ## uses => (object/get @rr "uses") }]))) @es)))
143
163
  (let ((pairsText (str/join (array/map @typedEs (fn e FILL{@config.mapPair ## key => STR{(array/nth @e 0)} ## value => (object/get (default (array/nth @e 1) @nullR) "expr")})) @config.mapSep)))
144
164
  (let ((txt (if (and @typed (!= @config.recordForm "") (> (array/len @typedEs) 0))
145
- (str/concat "" (str/join (array/map @typedEs (fn e (str/concat "" (default (array/nth @e 0) "") "" (object/get (default (array/nth @e 1) @nullR) "expr") ""))) "") "")
165
+ (str/concat "" (str/join (array/map (if (= @config.payloadFieldOrder "sorted") (array/map (array/sort (array/map @typedEs (fn se (default (array/nth @se 0) "")))) (fn sk (default (array/find @typedEs (fn se (= (array/nth @se 0) @sk))) [@sk @nullR]))) @typedEs) (fn e (str/concat "" (default (array/nth @e 0) "") "" (object/get (default (array/nth @e 1) @nullR) "expr") ""))) "") "")
146
166
  (if (and (!= @config.mapEmpty "") (= (array/len @typedEs) 0)) @config.mapEmpty (str/concat @config.mapOpen @pairsText @config.mapClose)))))
147
167
  REC{ expr => @txt ## stmt => [(str/concat @txt @term)]
148
168
  ## items => (array/map @typedEs (fn e (object/get (default (array/nth @e 1) @nullR) "expr")))
@@ -156,7 +176,7 @@
156
176
  (let ((root (default (array/nth @path 0) "")) (rest (array/drop @path 1)))
157
177
  (let ((attrBase (object/get @config.attributeRoots @root "")) (itemBase (object/get @config.itemRoots @root "")))
158
178
  (let ((kind (if (!= @attrBase "") "attr" (if (!= @itemBase "") "item" @config.localAccess)))
159
- (base (if (!= @attrBase "") @attrBase (if (!= @itemBase "") @itemBase CASE{@root ## @config.localCase}))))
179
+ (base (if (!= @attrBase "") (if (= @root "entity") (str/concat "\ue00d" @attrBase "\ue00e") @attrBase) (if (!= @itemBase "") @itemBase CASE{@root ## @config.localCase}))))
160
180
  (let ((tail (str/join (array/map @rest (fn x (if (and (> (str/len @x) 0) (= (str/replace-pattern @x "[0-9]" "") "")) FILL{@config.indexAccess ## "0" => @x} (if (= @kind "attr") FILL{@config.attrAccess ## name => CASE{@x ## @config.fieldCase}} FILL{@config.itemAccess ## key => STR{@x}})))) "")))
161
181
  (let ((plain (str/concat @base @tail))
162
182
  (dtext (if (and (= @root "entity") (= (array/len @rest) 1)) LOOKUP{@ctx.defaults ## (default (array/nth @rest 0) "")} "")))
@@ -9,6 +9,7 @@ uses Spec from "almadar-std/lolo-source"
9
9
  type SrcExpr = string | number | boolean | [SrcExpr?] | Map string SrcExpr?
10
10
  type SrcJob = [SrcExpr?]
11
11
  type SrcList = [SrcExpr]
12
+ type SrcMap = Map string SrcExpr?
12
13
  type SrcLists = [SrcList]
13
14
  type SrcVars = Map string string
14
15
  type SrcRef = { type : string! }
@@ -19,14 +20,18 @@ type SrcTransition = { from : string!, to : string!, event : string!, guard : Sr
19
20
  type SrcEvent = { key : string!, payloadSchema : [SrcField]? }
20
21
  type SrcMachine = { states : [SrcState]!, transitions : [SrcTransition]!, events : [SrcEvent]? }
21
22
  type SrcEmitDecl = { event : string!, payloadSchema : [SrcField]? }
22
- type SrcTraitDecl = { name : string!, linkedEntity : string?, config : Map string SrcKnobDecl?, emits : [SrcEmitDecl]?, stateMachine : SrcMachine? }
23
+ type SrcListenSource = { kind : string!, trait : string?, orbital : string? }
24
+ type SrcListenDecl = { event : string!, triggers : string?, source : SrcListenSource?, guard : SrcExpr?, payloadMapping : SrcExpr? }
25
+ type SrcTraitDecl = { name : string!, ref : string?, linkedEntity : string?, config : Map string SrcKnobDecl?, emits : [SrcEmitDecl]?, stateMachine : SrcMachine?, listens : [SrcListenDecl]? }
26
+ type SrcListenRow = { source : string!, event : string!, trigger : string!, guard : SrcExpr?, map : SrcExpr? }
23
27
  type SrcEntityDecl = { name : string!, fields : [SrcField]! }
24
28
  type SrcOrbital = { name : string!, entity : SrcEntityDecl?, traits : [SrcTraitDecl]! }
25
29
  type SrcProgram = { types : Map string [SrcField]?, orbitals : [SrcOrbital]! }
26
- type SrcInspect = { authoredProgram : SrcProgram!, types : Map string string!, expected : Map string string!, models : Map string [string]! }
30
+ type SrcResolved = { program : SrcProgram! }
31
+ type SrcInspect = { program : SrcProgram!, authoredProgram : SrcProgram!, types : Map string string!, expected : Map string string!, models : Map string [string]! }
27
32
  type SrcContainer = { name : string!, alias : boolean!, fields : [SrcField]! }
28
33
  type SrcKnob = { key : string!, default : SrcExpr? }
29
- type SrcTraitInfo = { name : string!, path : string!, entity : string!, initial : string!, hasMachine : boolean!, knobs : [SrcKnob]!, transitions : [SrcTransition]!, events : [string]!, listenTypes : Map string string!, emitTypes : Map string string!, emitVoid : [string]!, configType : string! }
34
+ type SrcTraitInfo = { name : string!, path : string!, entity : string!, initial : string!, hasMachine : boolean!, knobs : [SrcKnob]!, transitions : [SrcTransition]!, events : [string]!, listenTypes : Map string string!, emitTypes : Map string string!, emitVoid : [string]!, configType : string!, orbital : string!, listenRows : [SrcListenRow]! }
30
35
  type SrcCtx = { emitTypes : Map string string!, emitVoid : [string]!, defaults : Map string string! }
31
36
  type SrcRender = { expr : string!, stmt : [string]!, params : [string]!, body : string!, items : [string]!, keys : [string]!, stmts : [[string]]!, pairVals : [string]!, warns : [string]!, uses : [string]! }
32
37
  type SrcTypeRender = { text : string!, uses : [string]! }