@hyperscale0/hsx 1.0.0-beta.1 → 1.0.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 (255) hide show
  1. package/CHANGELOG.md +58 -9
  2. package/LICENSING.md +3 -3
  3. package/README.md +39 -149
  4. package/TRADEMARKS.md +4 -4
  5. package/bin/hsx.ts +2 -0
  6. package/dist/bin/hsx.js +2 -0
  7. package/dist/bin/hsx.js.map +1 -1
  8. package/dist/src/ast.d.ts +135 -10
  9. package/dist/src/ast.d.ts.map +1 -1
  10. package/dist/src/ast.js +24 -0
  11. package/dist/src/ast.js.map +1 -1
  12. package/dist/src/cli.d.ts +4 -1
  13. package/dist/src/cli.d.ts.map +1 -1
  14. package/dist/src/cli.js +172 -16
  15. package/dist/src/cli.js.map +1 -1
  16. package/dist/src/compile.d.ts +42 -7
  17. package/dist/src/compile.d.ts.map +1 -1
  18. package/dist/src/compile.js +82 -16
  19. package/dist/src/compile.js.map +1 -1
  20. package/dist/src/cost.d.ts +78 -0
  21. package/dist/src/cost.d.ts.map +1 -0
  22. package/dist/src/cost.js +369 -0
  23. package/dist/src/cost.js.map +1 -0
  24. package/dist/src/diagnostics.d.ts +11 -0
  25. package/dist/src/diagnostics.d.ts.map +1 -0
  26. package/dist/src/diagnostics.js +420 -0
  27. package/dist/src/diagnostics.js.map +1 -0
  28. package/dist/src/emit.d.ts +34 -0
  29. package/dist/src/emit.d.ts.map +1 -0
  30. package/dist/src/emit.js +137 -0
  31. package/dist/src/emit.js.map +1 -0
  32. package/dist/src/entry-overrides.d.ts +17 -3
  33. package/dist/src/entry-overrides.d.ts.map +1 -1
  34. package/dist/src/entry-overrides.js +180 -35
  35. package/dist/src/entry-overrides.js.map +1 -1
  36. package/dist/src/format.d.ts +10 -0
  37. package/dist/src/format.d.ts.map +1 -0
  38. package/dist/src/format.js +183 -0
  39. package/dist/src/format.js.map +1 -0
  40. package/dist/src/index.d.ts +11 -4
  41. package/dist/src/index.d.ts.map +1 -1
  42. package/dist/src/index.js +10 -3
  43. package/dist/src/index.js.map +1 -1
  44. package/dist/src/ir.d.ts +66 -0
  45. package/dist/src/ir.d.ts.map +1 -0
  46. package/dist/src/ir.js +15 -0
  47. package/dist/src/ir.js.map +1 -0
  48. package/dist/src/lex.d.ts +9 -1
  49. package/dist/src/lex.d.ts.map +1 -1
  50. package/dist/src/lex.js +50 -4
  51. package/dist/src/lex.js.map +1 -1
  52. package/dist/src/limits.d.ts +2 -3
  53. package/dist/src/limits.d.ts.map +1 -1
  54. package/dist/src/limits.js +2 -3
  55. package/dist/src/limits.js.map +1 -1
  56. package/dist/src/lsp/server.d.ts +32 -0
  57. package/dist/src/lsp/server.d.ts.map +1 -0
  58. package/dist/src/lsp/server.js +391 -0
  59. package/dist/src/lsp/server.js.map +1 -0
  60. package/dist/src/modules.d.ts +38 -0
  61. package/dist/src/modules.d.ts.map +1 -0
  62. package/dist/src/modules.js +368 -0
  63. package/dist/src/modules.js.map +1 -0
  64. package/dist/src/parse.d.ts.map +1 -1
  65. package/dist/src/parse.js +590 -17
  66. package/dist/src/parse.js.map +1 -1
  67. package/dist/src/std-bundle.d.ts +2 -0
  68. package/dist/src/std-bundle.d.ts.map +1 -0
  69. package/dist/src/std-bundle.js +88 -0
  70. package/dist/src/std-bundle.js.map +1 -0
  71. package/dist/src/std-library.d.ts +5 -0
  72. package/dist/src/std-library.d.ts.map +1 -0
  73. package/dist/src/std-library.js +9 -0
  74. package/dist/src/std-library.js.map +1 -0
  75. package/dist/src/typecheck.d.ts +8 -0
  76. package/dist/src/typecheck.d.ts.map +1 -0
  77. package/dist/src/typecheck.js +2958 -0
  78. package/dist/src/typecheck.js.map +1 -0
  79. package/dist/src/version.d.ts +4 -15
  80. package/dist/src/version.d.ts.map +1 -1
  81. package/dist/src/version.js +4 -15
  82. package/dist/src/version.js.map +1 -1
  83. package/docs/README.md +26 -0
  84. package/docs/guide/01-first-program.md +24 -0
  85. package/docs/guide/02-money.md +25 -0
  86. package/docs/guide/03-instruments.md +22 -0
  87. package/docs/guide/04-lifecycles.md +25 -0
  88. package/docs/guide/05-fees-and-splits.md +45 -0
  89. package/docs/guide/06-schedules.md +22 -0
  90. package/docs/guide/07-composition.md +46 -0
  91. package/docs/guide/08-writing-a-module.md +26 -0
  92. package/docs/guide/09-cost.md +24 -0
  93. package/docs/guide/10-diagnostics.md +27 -0
  94. package/docs/llms-full.txt +1739 -0
  95. package/docs/llms.txt +45 -0
  96. package/docs/playground.md +54 -0
  97. package/docs/reference/cli.md +35 -0
  98. package/docs/reference/diagnostics.md +619 -0
  99. package/docs/reference/grammar.md +39 -0
  100. package/docs/reference/std/advance.md +35 -0
  101. package/docs/reference/std/cancellable_booking.md +35 -0
  102. package/docs/reference/std/captured_payment.md +43 -0
  103. package/docs/reference/std/conditional_disbursement.md +33 -0
  104. package/docs/reference/std/credit_facility.md +35 -0
  105. package/docs/reference/std/held_payment.md +64 -0
  106. package/docs/reference/std/instant_transfer.md +30 -0
  107. package/docs/reference/std/metered.md +27 -0
  108. package/docs/reference/std/pooled_split.md +26 -0
  109. package/docs/reference/std/premium_forward.md +39 -0
  110. package/docs/reference/std/reconciled_payout.md +33 -0
  111. package/docs/reference/std/recurring_collection.md +25 -0
  112. package/docs/reference/std/rotating_pool.md +42 -0
  113. package/docs/reference/std/scheduled.md +51 -0
  114. package/docs/reference/std/security_deposit.md +46 -0
  115. package/docs/reference/std/settlement_batch.md +42 -0
  116. package/docs/reference/std/swap.md +46 -0
  117. package/docs/reference/std/threshold_pool.md +47 -0
  118. package/docs/reference/std/weighted_distribution.md +39 -0
  119. package/docs/reference/types.md +20 -0
  120. package/docs/reference/udl-output.md +13 -0
  121. package/docs/sessions/2026-09-02-two-instruments.hsx +21 -0
  122. package/docs/sessions/2026-09-02-two-instruments.md +41 -0
  123. package/examples/01-first-program/README.md +45 -0
  124. package/examples/01-first-program/tip-jar.hsx +17 -0
  125. package/examples/02-imports-and-archetypes/README.md +96 -0
  126. package/examples/02-imports-and-archetypes/photo-booth.hsx +37 -0
  127. package/examples/03-diagnostics/README.md +68 -0
  128. package/examples/03-diagnostics/corner-shop-fixed.hsx +22 -0
  129. package/examples/03-diagnostics/corner-shop.hsx +19 -0
  130. package/examples/04-complete-product/README.md +84 -0
  131. package/examples/04-complete-product/study-hall.hsx +67 -0
  132. package/examples/05-watch-club/README.md +9 -0
  133. package/examples/05-watch-club/watch-club.hsx +124 -0
  134. package/examples/README.md +18 -0
  135. package/examples/advance/README.md +3 -0
  136. package/examples/advance/advance.hsx +13 -0
  137. package/examples/advance/advance.udl +339 -0
  138. package/examples/cancellable_booking/README.md +3 -0
  139. package/examples/cancellable_booking/cancellable_booking.hsx +14 -0
  140. package/examples/cancellable_booking/cancellable_booking.udl +391 -0
  141. package/examples/captured_payment/README.md +3 -0
  142. package/examples/captured_payment/captured_payment.hsx +21 -0
  143. package/examples/captured_payment/captured_payment.udl +677 -0
  144. package/examples/conditional_disbursement/README.md +3 -0
  145. package/examples/conditional_disbursement/conditional_disbursement.hsx +17 -0
  146. package/examples/conditional_disbursement/conditional_disbursement.udl +412 -0
  147. package/examples/cost-table.json +386 -0
  148. package/examples/credit_facility/README.md +3 -0
  149. package/examples/credit_facility/credit_facility.hsx +27 -0
  150. package/examples/credit_facility/credit_facility.udl +1373 -0
  151. package/examples/held_payment/README.md +3 -0
  152. package/examples/held_payment/held_payment.hsx +13 -0
  153. package/examples/held_payment/held_payment.udl +507 -0
  154. package/examples/instant_transfer/README.md +3 -0
  155. package/examples/instant_transfer/instant_transfer.hsx +16 -0
  156. package/examples/instant_transfer/instant_transfer.udl +364 -0
  157. package/examples/metered/README.md +3 -0
  158. package/examples/metered/metered.hsx +13 -0
  159. package/examples/metered/metered.udl +247 -0
  160. package/examples/pooled_split/README.md +3 -0
  161. package/examples/pooled_split/pooled_split.hsx +15 -0
  162. package/examples/pooled_split/pooled_split.udl +425 -0
  163. package/examples/premium_forward/README.md +3 -0
  164. package/examples/premium_forward/premium_forward.hsx +19 -0
  165. package/examples/premium_forward/premium_forward.udl +594 -0
  166. package/examples/reconciled_payout/README.md +3 -0
  167. package/examples/reconciled_payout/reconciled_payout.hsx +13 -0
  168. package/examples/reconciled_payout/reconciled_payout.udl +303 -0
  169. package/examples/recurring_collection/README.md +3 -0
  170. package/examples/recurring_collection/recurring_collection.hsx +21 -0
  171. package/examples/recurring_collection/recurring_collection.udl +1130 -0
  172. package/examples/rotating_pool/README.md +3 -0
  173. package/examples/rotating_pool/rotating_pool.hsx +18 -0
  174. package/examples/rotating_pool/rotating_pool.udl +4352 -0
  175. package/examples/scheduled/README.md +3 -0
  176. package/examples/scheduled/scheduled.hsx +12 -0
  177. package/examples/scheduled/scheduled.udl +335 -0
  178. package/examples/security_deposit/README.md +3 -0
  179. package/examples/security_deposit/security_deposit.hsx +21 -0
  180. package/examples/security_deposit/security_deposit.udl +293 -0
  181. package/examples/settlement_batch/README.md +3 -0
  182. package/examples/settlement_batch/settlement_batch.hsx +19 -0
  183. package/examples/settlement_batch/settlement_batch.udl +753 -0
  184. package/examples/swap/README.md +3 -0
  185. package/examples/swap/swap.hsx +19 -0
  186. package/examples/swap/swap.udl +876 -0
  187. package/examples/threshold_pool/README.md +3 -0
  188. package/examples/threshold_pool/threshold_pool.hsx +16 -0
  189. package/examples/threshold_pool/threshold_pool.udl +667 -0
  190. package/examples/weighted_distribution/README.md +3 -0
  191. package/examples/weighted_distribution/weighted_distribution.hsx +20 -0
  192. package/examples/weighted_distribution/weighted_distribution.udl +337 -0
  193. package/package.json +27 -6
  194. package/skills/hsx/SKILL.md +483 -0
  195. package/src/ast.ts +193 -9
  196. package/src/cli.ts +191 -20
  197. package/src/compile.ts +160 -23
  198. package/src/cost.ts +579 -0
  199. package/src/diagnostics.ts +442 -0
  200. package/src/emit.ts +201 -0
  201. package/src/entry-overrides.ts +263 -48
  202. package/src/format.ts +261 -0
  203. package/src/index.ts +34 -4
  204. package/src/ir.ts +99 -0
  205. package/src/lex.ts +59 -4
  206. package/src/limits.ts +2 -3
  207. package/src/lsp/server.ts +460 -0
  208. package/src/modules.ts +446 -0
  209. package/src/parse.ts +655 -21
  210. package/src/std-bundle.ts +91 -0
  211. package/src/std-library.ts +12 -0
  212. package/src/typecheck.ts +3876 -0
  213. package/src/version.ts +4 -16
  214. package/std/SEMANTICS.md +130 -0
  215. package/std/settlements/advance.hsx +177 -0
  216. package/std/settlements/cancellable_booking.hsx +87 -0
  217. package/std/settlements/captured_payment.hsx +144 -0
  218. package/std/settlements/conditional_disbursement.hsx +185 -0
  219. package/std/settlements/credit_facility.hsx +167 -0
  220. package/std/settlements/held_payment.hsx +578 -0
  221. package/std/settlements/index.hsx +3 -0
  222. package/std/settlements/instant_transfer.hsx +190 -0
  223. package/std/settlements/metered.hsx +67 -0
  224. package/std/settlements/pooled_split.hsx +68 -0
  225. package/std/settlements/premium_forward.hsx +257 -0
  226. package/std/settlements/reconciled_payout.hsx +77 -0
  227. package/std/settlements/recurring_collection.hsx +27 -0
  228. package/std/settlements/rotating_pool.hsx +252 -0
  229. package/std/settlements/scheduled.hsx +641 -0
  230. package/std/settlements/security_deposit.hsx +166 -0
  231. package/std/settlements/settlement_batch.hsx +122 -0
  232. package/std/settlements/swap.hsx +1114 -0
  233. package/std/settlements/threshold_pool.hsx +221 -0
  234. package/std/settlements/weighted_distribution.hsx +141 -0
  235. package/dist/src/archetypes.d.ts +0 -17
  236. package/dist/src/archetypes.d.ts.map +0 -1
  237. package/dist/src/archetypes.js +0 -327
  238. package/dist/src/archetypes.js.map +0 -1
  239. package/dist/src/check.d.ts +0 -12
  240. package/dist/src/check.d.ts.map +0 -1
  241. package/dist/src/check.js +0 -1910
  242. package/dist/src/check.js.map +0 -1
  243. package/dist/src/lower.d.ts +0 -146
  244. package/dist/src/lower.d.ts.map +0 -1
  245. package/dist/src/lower.js +0 -4570
  246. package/dist/src/lower.js.map +0 -1
  247. package/dist/src/model.d.ts +0 -467
  248. package/dist/src/model.d.ts.map +0 -1
  249. package/dist/src/model.js +0 -15
  250. package/dist/src/model.js.map +0 -1
  251. package/spec/hsx-ir.schema.json +0 -920
  252. package/src/archetypes.ts +0 -340
  253. package/src/check.ts +0 -2938
  254. package/src/lower.ts +0 -5416
  255. package/src/model.ts +0 -519
package/CHANGELOG.md CHANGED
@@ -11,6 +11,53 @@ listed here.
11
11
 
12
12
  ## [Unreleased]
13
13
 
14
+ - Added `hsx lsp` over stdio with diagnostics and formatting, and a VS Code language client.
15
+ - Added a static browser playground under `playground/` with debounced compilation, diagnostics inspection, span navigation, canonical UDL and cost manifest inspection, and inlined examples.
16
+ - Bundled standard library sources as data in `src/std-bundle.ts` and decoupled compiler module resolution from Node filesystem imports.
17
+
18
+ ### Changed
19
+
20
+ - Moved LSP server exports (`startLspServer`, `createHostForUri`, and LSP types) from the package root to `@hyperscale0/hsx/lsp`.
21
+
22
+ ### Removed
23
+
24
+ - Deleted the Business Frame artifact (`frame`) from the compiler output and CLI build command.
25
+
26
+ ## [1.0.0] - 2026-09-04
27
+
28
+ This release is byte-identical to 1.0.0-rc.1. Later changes bump under the contract-diff tiers.
29
+
30
+ ## [1.0.0-rc.1] - 2026-09-02
31
+
32
+ ### Added
33
+
34
+ - Added the repository guide, generated compiler reference, `llms.txt`, and
35
+ `llms-full.txt`. Tests compile every guide program and compare generated
36
+ files byte for byte.
37
+ - Added one compiled example and pinned canonical UDL file for every standard
38
+ library module.
39
+ - Added the public HSX agent skill and moved language examples into it.
40
+ - Added `hsx explain` for the stable diagnostics catalog.
41
+ - Added a generated VS Code grammar, standard-library snippets, and a CI-built
42
+ `hsx.vsix` artifact.
43
+
44
+ ### Changed
45
+
46
+ - `hsx cost` now prints a versioned effect table by default. `--json` prints the
47
+ complete manifest, and `--out <file.json>` writes that JSON. Basis-point rows
48
+ label their total as amount-dependent because the compiler has no priced
49
+ runtime amount. No cost flags were removed.
50
+ - The npm package now includes `docs/` and `skills/`. It no longer lists the
51
+ deleted `spec/` directory.
52
+ - The package exports its shipped standard-library files through `./std/*`.
53
+
54
+ ### Fixed
55
+
56
+ - Diagnostics raised from an imported module now name that module and its own
57
+ source coordinates.
58
+ - `premium_forward` now reports `HSX1011` when endorsement selects a path that
59
+ needs `renewal_due`. It no longer reaches an internal lowering refusal.
60
+
14
61
  ## [1.0.0-beta.1] - 2026-08-29
15
62
 
16
63
  - This is the first beta and has no package behavior changes from
@@ -21,7 +68,7 @@ listed here.
21
68
  ### Fixed
22
69
 
23
70
  - Alpha.6 carries a `held_payment` or `premium_forward` release port's actor
24
- allowlist and declared input fields into the generated release verb. Alpha.5
71
+ allowlist and declared input fields into the generated release action. Alpha.5
25
72
  kept those constraints in the checked program and Business Frame but dropped
26
73
  them from HSX-JSON IR, so a runtime consuming the IR could admit the release
27
74
  without the declared actor or evidence. Recompile affected programs with
@@ -31,7 +78,7 @@ listed here.
31
78
 
32
79
  ### Added
33
80
 
34
- - Six settlement archetypes now compile and lower. `funding_round` caps locked
81
+ - Six settlement archetypes now compile and lower. `threshold_pool` caps locked
35
82
  commitments and contributor count, then collects or refunds each commitment
36
83
  whole. `weighted_distribution` freezes evidence-backed weights and pays by
37
84
  deterministic largest remainder. `credit_facility` owns draw capacity while
@@ -75,7 +122,7 @@ listed here.
75
122
  ### Changed
76
123
 
77
124
  - `scheduled` accepts `mode: obligation` for installment obligations. It emits
78
- one payment noun per anchor, binds each payment to its obligation and anchor,
125
+ one payment instrument per anchor, binds each payment to its obligation and anchor,
79
126
  allows partial and early payments, and refunds one stored paid row whole.
80
127
  Obligation mode accepts 2 through 7 anchors and refuses rescheduling. Use the
81
128
  original transfer schedule without `mode`, or declare the debtor and every
@@ -83,13 +130,13 @@ listed here.
83
130
  - The program money-event budget is 20 instead of 14, and every settlement has
84
131
  its own event cap. Advance carves now validate their amount field, currency,
85
132
  recourse, and fee rules. Settlement references resolve through
86
- archetype-declared exits, and lowering binds referenced noun identity,
133
+ archetype-declared exits, and lowering binds referenced instrument identity,
87
134
  statuses, amounts, and currency before movement. Recompile programs that
88
135
  previously sat near the budget or used an advance carve. The stricter checker
89
136
  may refuse a carve or reference that alpha.4 accepted.
90
- - HSX-JSON IR version 1 grew new noun fields for generated-child prefixes,
137
+ - HSX-JSON IR version 1 grew new instrument fields for generated-child prefixes,
91
138
  aggregate invariants, derived amounts, typed references, beneficiary IDs,
92
- currency, text, counts, and constants. Verbs gained public intents, reference
139
+ currency, text, counts, and constants. Actions gained public actions, reference
93
140
  bindings, captured input, payout instructions, signed sums, deterministic
94
141
  distribution, aggregate and exposure checks, and durable-settlement gates.
95
142
  Money events gained fixed, remaining-balance, and runtime-bounded amount
@@ -143,7 +190,7 @@ listed here.
143
190
  The depth budget counts nested expressions and blocks, which is not the same
144
191
  number as source levels: `key { … }` spends one per level and `key: { … }`
145
192
  spends two, so the budget buys 63 levels of the first and 31 of the second.
146
- `docs/reference.md` carries the conversion for every shape. Both refusals are
193
+ The release reference carried the conversion for every shape. Both refusals are
147
194
  ordinary parse diagnostics, not exceptions.
148
195
 
149
196
  ## [1.0.0-alpha.2] - 2026-08-23
@@ -183,7 +230,7 @@ This is the first version published as a package anyone can install.
183
230
  - `spec/hsx-ir.schema.json`, JSON Schema 2020-12 for the HSX-JSON IR document
184
231
  and the Business Frame. Every `.hsx` file in the repository is validated
185
232
  against it in CI.
186
- - `docs/reference.md`: the lexical grammar, the EBNF the parser accepts, what
233
+ - The release reference: the lexical grammar, the EBNF the parser accepts, what
187
234
  each stage does, the diagnostic model, and all nine `settlement` archetypes
188
235
  with their parameters and constraints.
189
236
  - `examples/`, four teaching programs compiled by the test suite.
@@ -200,7 +247,9 @@ This is the first version published as a package anyone can install.
200
247
  program that needs more is refused with a diagnostic saying so.
201
248
  - **`party` takes no attribute block yet**, though the grammar parses one.
202
249
 
203
- [Unreleased]: https://github.com/hyperscale0/hyperscale-hsx/compare/v1.0.0-beta.1...HEAD
250
+ [Unreleased]: https://github.com/hyperscale0/hyperscale-hsx/compare/v1.0.0...HEAD
251
+ [1.0.0]: https://github.com/hyperscale0/hyperscale-hsx/compare/v1.0.0-rc.1...v1.0.0
252
+ [1.0.0-rc.1]: https://github.com/hyperscale0/hyperscale-hsx/compare/v1.0.0-beta.1...v1.0.0-rc.1
204
253
  [1.0.0-beta.1]: https://github.com/hyperscale0/hyperscale-hsx/compare/v1.0.0-alpha.6...v1.0.0-beta.1
205
254
  [1.0.0-alpha.6]: https://github.com/hyperscale0/hyperscale-hsx/compare/v1.0.0-alpha.5...v1.0.0-alpha.6
206
255
  [1.0.0-alpha.5]: https://github.com/hyperscale0/hyperscale-hsx/compare/v1.0.0-alpha.4...v1.0.0-alpha.5
package/LICENSING.md CHANGED
@@ -39,9 +39,9 @@ says nothing about trademarks in either direction, so
39
39
 
40
40
  ## The language is not the compiler
41
41
 
42
- HSX the language and the HSX-JSON IR are separate from this compiler. The IR
43
- schema in [`spec/`](./spec) and the fixtures under [`examples/`](./examples)
44
- are data describing a language, and anyone may write their own compiler,
42
+ HSX the language and its output contract are separate from this compiler. The
43
+ canonical UDL schema published by the UDL repository and the fixtures under
44
+ [`examples/`](./examples) are data describing a language, and anyone may write their own compiler,
45
45
  formatter, or runtime against them, in any language, under any license, without
46
46
  touching this code.
47
47
 
package/README.md CHANGED
@@ -1,170 +1,60 @@
1
1
  # HSX
2
2
 
3
- HSX is the authoring language for a composed financial company. You declare
4
- the parties, assets, and settlement bricks that define how value moves. The
5
- compiler emits HSX-JSON IR plus a congruent Business Frame. Hyperscale's
6
- composer checks that output, expands it into UDL, plans the change, and freezes
7
- the admitted contract into a Product build.
8
-
9
- Seventeen lines of HSX ([`car-escrow.hsx`](./test/fixtures/car-escrow.hsx)) are
10
- a used-car escrow: the buyer's money is held, the buyer's own backend confirms
11
- the handover, the platform takes asymmetric fees, and a cancellation splits the
12
- held amount to the basis point. There is no account provisioning in it, no
13
- lifecycle table, no transfer plumbing. That is the point: those are consequences
14
- of the settlement you named, so the compiler derives them instead of asking you
15
- to hand-write them and get them right.
16
-
17
- The line here is the one HCL draws with Terraform. **The language is open.**
18
- The lexer, the parser, the typechecker, the lowering, the diagnostics, the IR
19
- schema, and this compiler are AGPL-3.0-only and are in this repository. **The
20
- composer and runtime are the product**, and they are not open. HSX targets the
21
- composer the way HCL targets a provider: you can read every compiler rule,
22
- compile any program, and inspect the exact document and Business Frame the
23
- composer receives. This package never executes an operation or moves money.
24
-
25
- ## Install
26
-
27
- ```bash
28
- npm install @hyperscale0/hsx
29
- ```
30
-
31
- Every release before 1.0.0 is an alpha, and `latest` follows the newest one, so
32
- a bare install gets it. Pin an exact version if you need one: until 1.0.0 a
33
- change to the surface ships as a minor bump, not a major.
34
-
35
- ## A program
36
-
37
- [`photo-booth.hsx`](./examples/02-imports-and-archetypes/photo-booth.hsx), a
38
- booth rental company, whole apart from its comments:
3
+ HSX is the typed language for money on the Hyperscale operating system. It
4
+ defines general instruments, composes a standard library, checks
5
+ currency-indexed linear money, and calculates cost at compile time.
6
+ HSX compiles each accepted program to canonical UDL.
39
7
 
40
8
  ```hsx
41
- program photo_booth "Photo booth rentals"
42
-
43
- import { held_payment } from "settlement"
44
-
45
- party renter: person
46
- party company: business
47
-
48
- asset booth: good { title_transfer: off_platform }
49
-
50
- settlement booking = held_payment {
51
- payer: renter
52
- payee: company
53
- amount: bookingFee: money(SAR)
54
- fees { renter: 1%, company: 3% }
55
- release: port confirm_delivery
56
- on_cancel(funded) { renter: 90%, company: 10% }
9
+ program held_sale "Held sale"
10
+ import { held_payment } from "std/settlements"
11
+ party buyer: person
12
+ party seller: business
13
+ settlement sale = held_payment {
14
+ payer: buyer
15
+ payee: seller
16
+ amount: price: money(SAR)
17
+ release: port accept_delivery
57
18
  }
58
19
 
59
- port confirm_delivery {
60
- allowed: [company]
61
- shape {
62
- boothId: id(booth)
63
- deliveredOn: date
64
- }
65
- }
20
+ port accept_delivery { allowed: [buyer] }
66
21
  ```
67
22
 
68
- ```ts
69
- import { compile } from "@hyperscale0/hsx";
70
-
71
- const result = compile(await Bun.file("photo-booth.hsx").text());
72
-
73
- result.verdict; // "valid" | "warning" | "invalid"
74
- result.diagnostics; // [{ line, column, severity, stage, message }]
75
- result.artifacts; // present unless the verdict is "invalid"
23
+ ```sh
24
+ npm install @hyperscale0/hsx @hyperscale0/udl
25
+ npx hsx check product.hsx
76
26
  ```
77
27
 
78
- `result.artifacts.document` is the HSX-JSON IR. Those 20 lines compile to one
79
- escrow noun, `booking`, carrying:
80
-
81
- - **five money fields**: `bookingFee`, the three pieces it partitions into
82
- (90%, 7%, 3%: the finest split that every exit agrees on, since release pays
83
- 97/3 to company and platform while cancellation pays 90/10 to renter and
84
- company), and `serviceFeeAmount` for the renter's 1% charged on top;
85
- - **a `partitions` clause** proving those pieces sum to `bookingFee` exactly,
86
- checked at create admission before any money moves;
87
- - **fifteen verbs**: the funding chain, the fee collection, the port itself,
88
- the release payout, the cancellation unwind, and the abandonment refunds,
89
- each with its `from` states, its `to` state, and its ledger moves.
90
-
91
- `result.artifacts.frame` is the congruent Business Frame: the same product as
92
- actors, money events, rules, and fees, for the surfaces people read rather
93
- than the runtime that executes.
94
-
95
- Both shapes are specified in
96
- [`spec/hsx-ir.schema.json`](./spec/hsx-ir.schema.json) (JSON Schema 2020-12),
97
- and every file under `examples/` and `test/fixtures/` is validated against it
98
- in CI.
99
-
100
- ## The command
101
-
102
- ```bash
103
- hsx check photo-booth.hsx # diagnostics, nothing else
104
- hsx check photo-booth.hsx --strict # warnings fail too
105
- hsx build photo-booth.hsx # artifacts to stdout
106
- hsx build photo-booth.hsx --out ir.json
107
- ```
108
-
109
- Exit codes: `0` the program compiled, `1` it was refused, `2` the command line
110
- or the input file could not be used. A refused program and a mistyped command
111
- are different failures, so they get different codes.
112
-
113
- There is no `hsx fmt`. This package ships no formatter, and shipping a bad one
114
- is worse than shipping none.
28
+ After installing dependencies in a repository checkout, run `bun run bin/hsx.ts check product.hsx`.
115
29
 
116
- ## Learn it
117
-
118
- - [`examples/`](./examples/) has four programs, in order: the smallest one that
119
- moves money, settlement bricks and ports, a walk through the diagnostics,
120
- and a complete small product. Each has its own README, and each is compiled
121
- by the test suite so they cannot rot.
122
- - [`docs/reference.md`](./docs/reference.md) is the language reference: lexical
123
- grammar, EBNF, what each stage does, the diagnostic model, and every
124
- brick in the `settlement` standard library with its parameters and
125
- constraints.
126
- - [`editors/vscode/`](./editors/vscode/) carries the syntax highlighting.
127
-
128
- ## Versioning
30
+ ```ts
31
+ import { compile } from "@hyperscale0/hsx";
32
+ const result = compile(source, { costTable });
33
+ const { document, originMap, costManifest } = result.artifacts!;
34
+ ```
129
35
 
130
- Two numbers move independently.
36
+ The compiler returns three artifacts named `document`, `originMap`, and `costManifest`.
131
37
 
132
- **IR version** is the literal `"hsx": 1` stamped into every compiled document.
133
- A consumer reads that one integer off the document to decide whether it
134
- understands it. It moves only when the emitted IR shape changes in a way a
135
- consumer must notice.
38
+ `document` is the canonical UDL value.
136
39
 
137
- **Package version** is this package's semver, in `package.json`. It moves
138
- whenever the compiler changes, including changes that only affect a
139
- diagnostic's wording.
40
+ The built-in module resolver reads every settlement module in `std/settlements`.
140
41
 
141
- IR version 1 is unstable until the package reaches 1.0.0. Until then an alpha
142
- release may change what the compiler emits, and every such change is listed in
143
- [`CHANGELOG.md`](./CHANGELOG.md). After 1.0.0, an incompatible IR change bumps
144
- the literal to `2`.
42
+ The CLI exits 0 for an accepted program, 1 for a refused program, and 2 when it cannot use the command line or input file.
145
43
 
146
- ## Status
44
+ Every compiler diagnostic code appears in the generated diagnostics catalog.
147
45
 
148
- Alpha. Seventeen settlement bricks ship and all seventeen lower. Hyperscale's
149
- composer and founder CLI use this compiler today. The package remains pre-1.0,
150
- so diagnostic wording and brick parameters can still change on a minor
151
- release. There are no stable diagnostic codes yet.
46
+ Start with the [first program](./docs/guide/01-first-program.md), then read the
47
+ [guide in order](./docs/README.md). The generated [grammar](./docs/reference/grammar.md),
48
+ [standard library pages](./docs/reference/std/), and
49
+ [diagnostics catalog](./docs/reference/diagnostics.md) track the compiler.
152
50
 
153
- ## Contributing
51
+ HSX is like Terraform for a financial product: the program declares the
52
+ contract, and the compiler refuses an invalid plan before a runtime reads it.
154
53
 
155
- Issues only. Hyperscale makes the changes to the language and the compiler; you
156
- propose them in an issue carrying the program you were trying to write and the
157
- fixture the change would add. [`CONTRIBUTING.md`](./CONTRIBUTING.md) has that
158
- model in full, plus the setup, the test commands, and the one hard rule: a
159
- grammar change without a fixture is not a grammar change. Conduct:
160
- [`CODE_OF_CONDUCT.md`](./CODE_OF_CONDUCT.md). Vulnerabilities:
161
- [`SECURITY.md`](./SECURITY.md).
54
+ The VS Code extension is built as `hsx.vsix` in CI. Download the workflow
55
+ artifact, then run `code --install-extension hsx.vsix`.
162
56
 
163
- ## License
57
+ The editor extension runs `hsx lsp` over stdio to surface diagnostics and format documents. Configure `hsx.serverPath` or install the compiler binary globally with `npm i -g @hyperscale0/hsx`.
164
58
 
165
- AGPL-3.0-only, with a commercial license available from Hyperscale LLC for
166
- organisations that cannot accept the AGPL. See [`LICENSE`](./LICENSE) for the
167
- text and [`LICENSING.md`](./LICENSING.md) for which one you want and how to ask
168
- for the commercial one. The marks are not covered by either; see
169
- [`TRADEMARKS.md`](./TRADEMARKS.md), which also carries the rule for claiming
170
- HSX compatibility.
59
+ HSX is licensed under AGPL-3.0-only. See [LICENSE](./LICENSE) and
60
+ [LICENSING.md](./LICENSING.md).
package/TRADEMARKS.md CHANGED
@@ -9,7 +9,7 @@ has to guess where it sits.
9
9
 
10
10
  What that means in practice:
11
11
 
12
- - **Yes.** Say your project uses HSX, compiles HSX, or reads the HSX-JSON IR.
12
+ - **Yes.** Say your project uses HSX, compiles HSX, or reads its internal lowering record.
13
13
  Say it in your README, your docs, your talk, and your package description.
14
14
  Fork this repository and keep the notices intact.
15
15
  - **Yes.** Publish an HSX implementation or tool in another language, and name
@@ -23,9 +23,9 @@ What that means in practice:
23
23
  ## Claiming compatibility
24
24
 
25
25
  An independent implementation may say it "implements HSX IR version X" only
26
- while it emits IR that validates against the published schema for that version,
27
- from the published example programs, unmodified. The schema in
28
- [`spec/`](./spec) and the programs in [`examples/`](./examples) are the whole
26
+ while it emits canonical UDL that validates against the UDL schema published
27
+ for that version, from the published example programs, unmodified. The UDL
28
+ schema and the programs in [`examples/`](./examples) are the whole
29
29
  test: no edited fixture, no local relaxation of the schema.
30
30
 
31
31
  That claim is a statement about your implementation, so keep the marks out of
package/bin/hsx.ts CHANGED
@@ -11,5 +11,7 @@ process.exitCode = await runCli(process.argv.slice(2), {
11
11
  err: (line) => process.stderr.write(`${line}\n`),
12
12
  out: (line) => process.stdout.write(`${line}\n`),
13
13
  readFile: (path) => readFile(path, "utf8"),
14
+ stdin: process.stdin,
15
+ stdout: process.stdout,
14
16
  writeFile: (path, contents) => writeFile(path, contents, "utf8"),
15
17
  });
package/dist/bin/hsx.js CHANGED
@@ -9,6 +9,8 @@ process.exitCode = await runCli(process.argv.slice(2), {
9
9
  err: (line) => process.stderr.write(`${line}\n`),
10
10
  out: (line) => process.stdout.write(`${line}\n`),
11
11
  readFile: (path) => readFile(path, "utf8"),
12
+ stdin: process.stdin,
13
+ stdout: process.stdout,
12
14
  writeFile: (path, contents) => writeFile(path, contents, "utf8"),
13
15
  });
14
16
  //# sourceMappingURL=hsx.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hsx.js","sourceRoot":"","sources":["../../bin/hsx.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,OAAO,CAAC,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IACrD,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC;IAChD,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC;IAChD,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAC1C,SAAS,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC;CACjE,CAAC,CAAC"}
1
+ {"version":3,"file":"hsx.js","sourceRoot":"","sources":["../../bin/hsx.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,OAAO,CAAC,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IACrD,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC;IAChD,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC;IAChD,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAC1C,KAAK,EAAE,OAAO,CAAC,KAAK;IACpB,MAAM,EAAE,OAAO,CAAC,MAAM;IACtB,SAAS,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC;CACjE,CAAC,CAAC"}
package/dist/src/ast.d.ts CHANGED
@@ -20,6 +20,12 @@ export interface LineCol {
20
20
  }
21
21
  /** Convert a byte offset to a 1-indexed line/column position. */
22
22
  export declare function lineColAt(source: string, offset: number): LineCol;
23
+ /**
24
+ * Convert a UTF-8 byte offset to a UTF-16 code-unit offset over a string.
25
+ * Walks Unicode code points, counting UTF-8 bytes and UTF-16 code units.
26
+ * Clamps to [0, source.length].
27
+ */
28
+ export declare function byteOffsetToCodeUnit(source: string, byteOffset: number): number;
23
29
  /**
24
30
  * One source scanned once, so many offsets resolve without rescanning it.
25
31
  * `lineColAt` walks from offset zero every time, which turns a run of d
@@ -42,6 +48,8 @@ export declare function lineColIn(index: LineIndex, offset: number): LineCol;
42
48
  export interface IdentExpr {
43
49
  readonly kind: "ident";
44
50
  readonly name: string;
51
+ /** A literal quoted block key keeps its exact spelling during JSON lowering. */
52
+ readonly quoted?: boolean;
45
53
  readonly span: Span;
46
54
  }
47
55
  export interface StringExpr {
@@ -49,12 +57,45 @@ export interface StringExpr {
49
57
  readonly span: Span;
50
58
  readonly value: string;
51
59
  }
52
- interface NumberExpr {
60
+ export interface NumberExpr {
53
61
  readonly kind: "number";
54
62
  /** The literal exactly as written, e.g. "99.5". Interpretation is typed later. */
55
63
  readonly raw: string;
56
64
  readonly span: Span;
57
65
  }
66
+ export interface BooleanExpr {
67
+ readonly kind: "boolean";
68
+ readonly span: Span;
69
+ readonly value: boolean;
70
+ }
71
+ /** A currency-indexed literal. The checker converts it to integer minor units. */
72
+ export interface MoneyExpr {
73
+ readonly currency: IdentExpr;
74
+ readonly kind: "money";
75
+ readonly raw: string;
76
+ readonly span: Span;
77
+ }
78
+ /** A dotted name used for modules, UDL operations, and field paths. */
79
+ export interface PathExpr {
80
+ readonly kind: "path";
81
+ readonly parts: readonly IdentExpr[];
82
+ readonly span: Span;
83
+ }
84
+ /** A nominal type application such as `money<SAR>` or `ref<invoice>`. */
85
+ export interface TypeApplyExpr {
86
+ readonly args: readonly Expr[];
87
+ readonly callee: IdentExpr;
88
+ readonly kind: "type_apply";
89
+ readonly span: Span;
90
+ }
91
+ /** A general instrument or constant application, with optional type arguments. */
92
+ export interface ApplyExpr {
93
+ readonly args: readonly Expr[];
94
+ readonly callee: PathExpr;
95
+ readonly kind: "apply";
96
+ readonly span: Span;
97
+ readonly typeArgs: readonly Expr[];
98
+ }
58
99
  export interface PercentExpr {
59
100
  /** Exact basis points: 99.5% is 9950. Percents never round. */
60
101
  readonly bps: number;
@@ -69,6 +110,15 @@ export interface CallExpr {
69
110
  readonly kind: "call";
70
111
  readonly span: Span;
71
112
  }
113
+ /**
114
+ * An exit amount chosen by a decision port and bounded by stored money:
115
+ * `decided { field: damageAmount, bound: depositAmount, remainder: return }`.
116
+ */
117
+ export interface DecidedAmountExpr {
118
+ readonly body: BlockExpr;
119
+ readonly kind: "decided_amount";
120
+ readonly span: Span;
121
+ }
72
122
  /**
73
123
  * A reference to a decision port, optionally bounded (`port dispute within
74
124
  * P14D`) or carrying the date that decides when the port has not
@@ -110,19 +160,24 @@ export interface BlockExpr {
110
160
  * `amount: price: money(SAR)` binds the field name `price` to type
111
161
  * `money(SAR)`: the entry key is `amount`, the value is this binding.
112
162
  */
113
- interface BindingExpr {
163
+ export interface BindingExpr {
114
164
  readonly kind: "binding";
115
165
  readonly name: IdentExpr;
116
166
  readonly span: Span;
117
167
  readonly type: Expr;
118
168
  }
119
- export type Expr = BindingExpr | BlockExpr | CallExpr | IdentExpr | ListExpr | NumberExpr | PercentExpr | PortRefExpr | SettlementRefExpr | StringExpr;
169
+ export type Expr = ApplyExpr | BindingExpr | BlockExpr | BooleanExpr | CallExpr | DecidedAmountExpr | IdentExpr | ListExpr | MoneyExpr | NumberExpr | PathExpr | PercentExpr | PortRefExpr | SettlementRefExpr | StringExpr | TypeApplyExpr;
120
170
  /**
121
171
  * One keyed entry inside a declaration body. Three surface shapes normalize
122
172
  * here: `payer: buyer` (key + value), `fees { ... }` (key + block value),
123
173
  * and `on_cancel(funded) { ... }` (key + qualifiers + block value).
124
174
  */
125
175
  export interface Entry {
176
+ /** `for item in bound { ... }`, expanded before binding or UDL lowering. */
177
+ readonly iteration?: {
178
+ readonly binding: IdentExpr;
179
+ readonly bound: Expr;
180
+ };
126
181
  readonly key: IdentExpr;
127
182
  readonly qualifiers: readonly IdentExpr[];
128
183
  readonly span: Span;
@@ -135,7 +190,21 @@ export interface ProgramDecl {
135
190
  readonly span: Span;
136
191
  readonly title?: StringExpr;
137
192
  }
138
- /** `import { held_payment } from "settlement"`. */
193
+ /** `use held_settlement` selects one published catalog instrument. */
194
+ export interface UseDecl {
195
+ readonly instrument: IdentExpr;
196
+ readonly kind: "use";
197
+ readonly span: Span;
198
+ }
199
+ /** `expose held_settlement.release as releaseFunds` names a public action. */
200
+ export interface ExposeDecl {
201
+ readonly action: IdentExpr;
202
+ readonly instrument: IdentExpr;
203
+ readonly kind: "expose";
204
+ readonly publicName: IdentExpr;
205
+ readonly span: Span;
206
+ }
207
+ /** `import { held_payment } from "std/settlements"`. */
139
208
  export interface ImportDecl {
140
209
  readonly from: StringExpr;
141
210
  readonly kind: "import";
@@ -158,11 +227,10 @@ export interface AssetDecl {
158
227
  readonly name: IdentExpr;
159
228
  readonly span: Span;
160
229
  }
161
- /** `settlement sale = held_payment { ... }`, an archetype instantiation. */
162
- export interface SettlementDecl {
163
- readonly archetype: IdentExpr;
230
+ /** A full UDL subject-kind declaration. `asset` remains shorthand for this form. */
231
+ export interface SubjectDecl {
164
232
  readonly body: BlockExpr;
165
- readonly kind: "settlement";
233
+ readonly kind: "subject";
166
234
  readonly name: IdentExpr;
167
235
  readonly span: Span;
168
236
  }
@@ -173,7 +241,63 @@ export interface PortDecl {
173
241
  readonly name: IdentExpr;
174
242
  readonly span: Span;
175
243
  }
176
- export type Decl = AssetDecl | ImportDecl | PartyDecl | PortDecl | ProgramDecl | SettlementDecl;
244
+ /** `module std.settlements` gives a file its importable module name. */
245
+ export interface ModuleDecl {
246
+ readonly kind: "module";
247
+ readonly name: PathExpr;
248
+ readonly span: Span;
249
+ }
250
+ export interface TypeParameter {
251
+ readonly name: IdentExpr;
252
+ readonly span: Span;
253
+ }
254
+ export interface Parameter {
255
+ readonly name: IdentExpr;
256
+ readonly span: Span;
257
+ readonly type: Expr;
258
+ }
259
+ /** The single general instrument definition form. */
260
+ export interface InstrumentDecl {
261
+ readonly body: BlockExpr;
262
+ /** Module-local declarations carried only while this template is bound. */
263
+ readonly declarationScope?: readonly ApplicationScopeDecl[];
264
+ readonly exported: boolean;
265
+ /** True when the source declared a parameter list, including an empty `()`. */
266
+ readonly hasParameterList: boolean;
267
+ readonly kind: "instrument";
268
+ readonly name: IdentExpr;
269
+ readonly parameters: readonly Parameter[];
270
+ readonly span: Span;
271
+ readonly typeParameters: readonly TypeParameter[];
272
+ }
273
+ /** Instantiation of an exported parameterized instrument. */
274
+ export interface InstrumentApplyDecl {
275
+ readonly application: ApplyExpr;
276
+ /** Module-local declarations carried only while this application is bound. */
277
+ readonly declarationScope?: readonly ApplicationScopeDecl[];
278
+ readonly exported: boolean;
279
+ readonly kind: "instrument_apply";
280
+ readonly metadata?: BlockExpr;
281
+ readonly name: IdentExpr;
282
+ readonly span: Span;
283
+ }
284
+ export interface TypeDecl {
285
+ readonly exported: boolean;
286
+ readonly kind: "type";
287
+ readonly name: IdentExpr;
288
+ readonly span: Span;
289
+ readonly value: Expr;
290
+ }
291
+ export interface ConstDecl {
292
+ readonly exported: boolean;
293
+ readonly kind: "const";
294
+ readonly name: IdentExpr;
295
+ readonly span: Span;
296
+ readonly type?: Expr;
297
+ readonly value: Expr;
298
+ }
299
+ export type ApplicationScopeDecl = ConstDecl | InstrumentDecl | PartyDecl | PortDecl | TypeDecl;
300
+ export type Decl = AssetDecl | ConstDecl | ExposeDecl | ImportDecl | InstrumentApplyDecl | InstrumentDecl | ModuleDecl | PartyDecl | PortDecl | ProgramDecl | SubjectDecl | TypeDecl | UseDecl;
177
301
  export interface Program {
178
302
  readonly decls: readonly Decl[];
179
303
  readonly span: Span;
@@ -183,8 +307,9 @@ export interface Program {
183
307
  * it never throws, it returns the best-effort tree plus these.
184
308
  */
185
309
  export interface Diagnostic {
310
+ readonly code?: string;
311
+ readonly fix?: string;
186
312
  readonly message: string;
187
313
  readonly span: Span;
188
314
  }
189
- export {};
190
315
  //# sourceMappingURL=ast.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../src/ast.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../src/ast.ts"],"names":[],"mappings":"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"}