@hyperscale0/hsx 1.0.0 → 1.0.124

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 (316) hide show
  1. package/CHANGELOG.md +5 -256
  2. package/LICENSE.md +356 -0
  3. package/NOTICE.md +8 -0
  4. package/README.md +44 -44
  5. package/bin/hsx.ts +0 -7
  6. package/dist/bin/hsx.d.ts +0 -4
  7. package/dist/bin/hsx.d.ts.map +1 -1
  8. package/dist/bin/hsx.js +0 -6
  9. package/dist/bin/hsx.js.map +1 -1
  10. package/dist/src/ast.d.ts +113 -308
  11. package/dist/src/ast.d.ts.map +1 -1
  12. package/dist/src/ast.js +7 -71
  13. package/dist/src/ast.js.map +1 -1
  14. package/dist/src/attachment-economics.d.ts +5 -0
  15. package/dist/src/attachment-economics.d.ts.map +1 -0
  16. package/dist/src/attachment-economics.js +55 -0
  17. package/dist/src/attachment-economics.js.map +1 -0
  18. package/dist/src/binding-contract.d.ts +22 -0
  19. package/dist/src/binding-contract.d.ts.map +1 -0
  20. package/dist/src/binding-contract.js +74 -0
  21. package/dist/src/binding-contract.js.map +1 -0
  22. package/dist/src/cli.d.ts +4 -19
  23. package/dist/src/cli.d.ts.map +1 -1
  24. package/dist/src/cli.js +89 -276
  25. package/dist/src/cli.js.map +1 -1
  26. package/dist/src/compile.d.ts +34 -66
  27. package/dist/src/compile.d.ts.map +1 -1
  28. package/dist/src/compile.js +2949 -117
  29. package/dist/src/compile.js.map +1 -1
  30. package/dist/src/cost.d.ts +8 -75
  31. package/dist/src/cost.d.ts.map +1 -1
  32. package/dist/src/cost.js +54 -364
  33. package/dist/src/cost.js.map +1 -1
  34. package/dist/src/diagnostics.d.ts +14 -9
  35. package/dist/src/diagnostics.d.ts.map +1 -1
  36. package/dist/src/diagnostics.js +39 -416
  37. package/dist/src/diagnostics.js.map +1 -1
  38. package/dist/src/examples-bundle.d.ts +3 -0
  39. package/dist/src/examples-bundle.d.ts.map +1 -0
  40. package/dist/src/examples-bundle.js +18 -0
  41. package/dist/src/examples-bundle.js.map +1 -0
  42. package/dist/src/examples.d.ts +10 -0
  43. package/dist/src/examples.d.ts.map +1 -0
  44. package/dist/src/examples.js +2 -0
  45. package/dist/src/examples.js.map +1 -0
  46. package/dist/src/format.d.ts +8 -7
  47. package/dist/src/format.d.ts.map +1 -1
  48. package/dist/src/format.js +9 -175
  49. package/dist/src/format.js.map +1 -1
  50. package/dist/src/header-source.d.ts +3 -0
  51. package/dist/src/header-source.d.ts.map +1 -0
  52. package/dist/src/header-source.js +41 -0
  53. package/dist/src/header-source.js.map +1 -0
  54. package/dist/src/headers.d.ts +64 -0
  55. package/dist/src/headers.d.ts.map +1 -0
  56. package/dist/src/headers.js +167 -0
  57. package/dist/src/headers.js.map +1 -0
  58. package/dist/src/index.d.ts +7 -11
  59. package/dist/src/index.d.ts.map +1 -1
  60. package/dist/src/index.js +4 -9
  61. package/dist/src/index.js.map +1 -1
  62. package/dist/src/keywords.d.ts +56 -0
  63. package/dist/src/keywords.d.ts.map +1 -0
  64. package/dist/src/keywords.js +133 -0
  65. package/dist/src/keywords.js.map +1 -0
  66. package/dist/src/language.d.ts +26 -0
  67. package/dist/src/language.d.ts.map +1 -0
  68. package/dist/src/language.js +440 -0
  69. package/dist/src/language.js.map +1 -0
  70. package/dist/src/lex.d.ts +13 -28
  71. package/dist/src/lex.d.ts.map +1 -1
  72. package/dist/src/lex.js +119 -145
  73. package/dist/src/lex.js.map +1 -1
  74. package/dist/src/parse.d.ts +4 -17
  75. package/dist/src/parse.d.ts.map +1 -1
  76. package/dist/src/parse.js +484 -1036
  77. package/dist/src/parse.js.map +1 -1
  78. package/dist/src/std-bundle.d.ts.map +1 -1
  79. package/dist/src/std-bundle.js +11 -84
  80. package/dist/src/std-bundle.js.map +1 -1
  81. package/dist/src/std-library.d.ts +1 -1
  82. package/dist/src/std-library.d.ts.map +1 -1
  83. package/dist/src/std-library.js +1 -5
  84. package/dist/src/std-library.js.map +1 -1
  85. package/dist/src/tunables.d.ts +7 -0
  86. package/dist/src/tunables.d.ts.map +1 -0
  87. package/dist/src/tunables.js +27 -0
  88. package/dist/src/tunables.js.map +1 -0
  89. package/docs/README.md +528 -26
  90. package/docs/assets/brand/hsx-horizontal-white.svg +1 -0
  91. package/docs/assets/brand/hsx-horizontal.svg +1 -0
  92. package/docs/assets/brand/hsx-stacked-white.svg +1 -0
  93. package/docs/assets/brand/hsx-stacked.svg +1 -0
  94. package/docs/assets/brand/manifest.json +30 -0
  95. package/docs/assets/hsx.svg +11 -0
  96. package/examples/cards.hsx +34 -0
  97. package/examples/collections.hsx +37 -0
  98. package/examples/cost-table.json +633 -385
  99. package/examples/escrow.hsx +24 -0
  100. package/examples/financing.hsx +32 -0
  101. package/examples/insurance.hsx +30 -0
  102. package/examples/lending.hsx +57 -0
  103. package/examples/library.hsx +15 -0
  104. package/examples/marketplace.hsx +32 -0
  105. package/examples/money.hsx +19 -0
  106. package/examples/rental-deposit.hsx +60 -0
  107. package/examples/repair-approval.hsx +44 -0
  108. package/examples/reporting.hsx +28 -0
  109. package/examples/savings.hsx +21 -0
  110. package/examples/serviced.hsx +25 -0
  111. package/examples/wallet.hsx +24 -0
  112. package/package.json +25 -23
  113. package/src/ast.ts +83 -440
  114. package/src/attachment-economics.ts +103 -0
  115. package/src/binding-contract.ts +104 -0
  116. package/src/cli.ts +95 -325
  117. package/src/compile.ts +4063 -209
  118. package/src/cost.ts +71 -574
  119. package/src/diagnostics.ts +57 -437
  120. package/src/examples-bundle.ts +19 -0
  121. package/src/examples.ts +9 -0
  122. package/src/format.ts +12 -256
  123. package/src/header-source.ts +54 -0
  124. package/src/headers.ts +195 -0
  125. package/src/index.ts +18 -33
  126. package/src/keywords.ts +134 -0
  127. package/src/language.ts +629 -0
  128. package/src/lex.ts +131 -192
  129. package/src/parse.ts +489 -1195
  130. package/src/std-bundle.ts +12 -88
  131. package/src/std-library.ts +2 -7
  132. package/src/tunables.ts +36 -0
  133. package/std/cards.hsx +85 -0
  134. package/std/collections.hsx +90 -0
  135. package/std/escrow.hsx +73 -0
  136. package/std/financing.hsx +683 -0
  137. package/std/insurance.hsx +89 -0
  138. package/std/lending.hsx +138 -0
  139. package/std/marketplace.hsx +123 -0
  140. package/std/money.hsx +173 -0
  141. package/std/reporting.hsx +753 -0
  142. package/std/savings.hsx +68 -0
  143. package/std/wallet.hsx +57 -0
  144. package/LICENSE +0 -661
  145. package/LICENSING.md +0 -52
  146. package/TRADEMARKS.md +0 -35
  147. package/dist/src/emit.d.ts +0 -34
  148. package/dist/src/emit.d.ts.map +0 -1
  149. package/dist/src/emit.js +0 -137
  150. package/dist/src/emit.js.map +0 -1
  151. package/dist/src/entry-overrides.d.ts +0 -58
  152. package/dist/src/entry-overrides.d.ts.map +0 -1
  153. package/dist/src/entry-overrides.js +0 -284
  154. package/dist/src/entry-overrides.js.map +0 -1
  155. package/dist/src/ir.d.ts +0 -66
  156. package/dist/src/ir.d.ts.map +0 -1
  157. package/dist/src/ir.js +0 -15
  158. package/dist/src/ir.js.map +0 -1
  159. package/dist/src/limits.d.ts +0 -21
  160. package/dist/src/limits.d.ts.map +0 -1
  161. package/dist/src/limits.js +0 -21
  162. package/dist/src/limits.js.map +0 -1
  163. package/dist/src/lsp/server.d.ts +0 -32
  164. package/dist/src/lsp/server.d.ts.map +0 -1
  165. package/dist/src/lsp/server.js +0 -391
  166. package/dist/src/lsp/server.js.map +0 -1
  167. package/dist/src/modules.d.ts +0 -38
  168. package/dist/src/modules.d.ts.map +0 -1
  169. package/dist/src/modules.js +0 -368
  170. package/dist/src/modules.js.map +0 -1
  171. package/dist/src/typecheck.d.ts +0 -8
  172. package/dist/src/typecheck.d.ts.map +0 -1
  173. package/dist/src/typecheck.js +0 -2958
  174. package/dist/src/typecheck.js.map +0 -1
  175. package/dist/src/version.d.ts +0 -5
  176. package/dist/src/version.d.ts.map +0 -1
  177. package/dist/src/version.js +0 -5
  178. package/dist/src/version.js.map +0 -1
  179. package/docs/guide/01-first-program.md +0 -24
  180. package/docs/guide/02-money.md +0 -25
  181. package/docs/guide/03-instruments.md +0 -22
  182. package/docs/guide/04-lifecycles.md +0 -25
  183. package/docs/guide/05-fees-and-splits.md +0 -45
  184. package/docs/guide/06-schedules.md +0 -22
  185. package/docs/guide/07-composition.md +0 -46
  186. package/docs/guide/08-writing-a-module.md +0 -26
  187. package/docs/guide/09-cost.md +0 -24
  188. package/docs/guide/10-diagnostics.md +0 -27
  189. package/docs/llms-full.txt +0 -1739
  190. package/docs/llms.txt +0 -45
  191. package/docs/playground.md +0 -54
  192. package/docs/reference/cli.md +0 -35
  193. package/docs/reference/diagnostics.md +0 -619
  194. package/docs/reference/grammar.md +0 -39
  195. package/docs/reference/std/advance.md +0 -35
  196. package/docs/reference/std/cancellable_booking.md +0 -35
  197. package/docs/reference/std/captured_payment.md +0 -43
  198. package/docs/reference/std/conditional_disbursement.md +0 -33
  199. package/docs/reference/std/credit_facility.md +0 -35
  200. package/docs/reference/std/held_payment.md +0 -64
  201. package/docs/reference/std/instant_transfer.md +0 -30
  202. package/docs/reference/std/metered.md +0 -27
  203. package/docs/reference/std/pooled_split.md +0 -26
  204. package/docs/reference/std/premium_forward.md +0 -39
  205. package/docs/reference/std/reconciled_payout.md +0 -33
  206. package/docs/reference/std/recurring_collection.md +0 -25
  207. package/docs/reference/std/rotating_pool.md +0 -42
  208. package/docs/reference/std/scheduled.md +0 -51
  209. package/docs/reference/std/security_deposit.md +0 -46
  210. package/docs/reference/std/settlement_batch.md +0 -42
  211. package/docs/reference/std/swap.md +0 -46
  212. package/docs/reference/std/threshold_pool.md +0 -47
  213. package/docs/reference/std/weighted_distribution.md +0 -39
  214. package/docs/reference/types.md +0 -20
  215. package/docs/reference/udl-output.md +0 -13
  216. package/docs/sessions/2026-09-02-two-instruments.hsx +0 -21
  217. package/docs/sessions/2026-09-02-two-instruments.md +0 -41
  218. package/examples/01-first-program/README.md +0 -45
  219. package/examples/01-first-program/tip-jar.hsx +0 -17
  220. package/examples/02-imports-and-archetypes/README.md +0 -96
  221. package/examples/02-imports-and-archetypes/photo-booth.hsx +0 -37
  222. package/examples/03-diagnostics/README.md +0 -68
  223. package/examples/03-diagnostics/corner-shop-fixed.hsx +0 -22
  224. package/examples/03-diagnostics/corner-shop.hsx +0 -19
  225. package/examples/04-complete-product/README.md +0 -84
  226. package/examples/04-complete-product/study-hall.hsx +0 -67
  227. package/examples/05-watch-club/README.md +0 -9
  228. package/examples/05-watch-club/watch-club.hsx +0 -124
  229. package/examples/README.md +0 -18
  230. package/examples/advance/README.md +0 -3
  231. package/examples/advance/advance.hsx +0 -13
  232. package/examples/advance/advance.udl +0 -339
  233. package/examples/cancellable_booking/README.md +0 -3
  234. package/examples/cancellable_booking/cancellable_booking.hsx +0 -14
  235. package/examples/cancellable_booking/cancellable_booking.udl +0 -391
  236. package/examples/captured_payment/README.md +0 -3
  237. package/examples/captured_payment/captured_payment.hsx +0 -21
  238. package/examples/captured_payment/captured_payment.udl +0 -677
  239. package/examples/conditional_disbursement/README.md +0 -3
  240. package/examples/conditional_disbursement/conditional_disbursement.hsx +0 -17
  241. package/examples/conditional_disbursement/conditional_disbursement.udl +0 -412
  242. package/examples/credit_facility/README.md +0 -3
  243. package/examples/credit_facility/credit_facility.hsx +0 -27
  244. package/examples/credit_facility/credit_facility.udl +0 -1373
  245. package/examples/held_payment/README.md +0 -3
  246. package/examples/held_payment/held_payment.hsx +0 -13
  247. package/examples/held_payment/held_payment.udl +0 -507
  248. package/examples/instant_transfer/README.md +0 -3
  249. package/examples/instant_transfer/instant_transfer.hsx +0 -16
  250. package/examples/instant_transfer/instant_transfer.udl +0 -364
  251. package/examples/metered/README.md +0 -3
  252. package/examples/metered/metered.hsx +0 -13
  253. package/examples/metered/metered.udl +0 -247
  254. package/examples/pooled_split/README.md +0 -3
  255. package/examples/pooled_split/pooled_split.hsx +0 -15
  256. package/examples/pooled_split/pooled_split.udl +0 -425
  257. package/examples/premium_forward/README.md +0 -3
  258. package/examples/premium_forward/premium_forward.hsx +0 -19
  259. package/examples/premium_forward/premium_forward.udl +0 -594
  260. package/examples/reconciled_payout/README.md +0 -3
  261. package/examples/reconciled_payout/reconciled_payout.hsx +0 -13
  262. package/examples/reconciled_payout/reconciled_payout.udl +0 -303
  263. package/examples/recurring_collection/README.md +0 -3
  264. package/examples/recurring_collection/recurring_collection.hsx +0 -21
  265. package/examples/recurring_collection/recurring_collection.udl +0 -1130
  266. package/examples/rotating_pool/README.md +0 -3
  267. package/examples/rotating_pool/rotating_pool.hsx +0 -18
  268. package/examples/rotating_pool/rotating_pool.udl +0 -4352
  269. package/examples/scheduled/README.md +0 -3
  270. package/examples/scheduled/scheduled.hsx +0 -12
  271. package/examples/scheduled/scheduled.udl +0 -335
  272. package/examples/security_deposit/README.md +0 -3
  273. package/examples/security_deposit/security_deposit.hsx +0 -21
  274. package/examples/security_deposit/security_deposit.udl +0 -293
  275. package/examples/settlement_batch/README.md +0 -3
  276. package/examples/settlement_batch/settlement_batch.hsx +0 -19
  277. package/examples/settlement_batch/settlement_batch.udl +0 -753
  278. package/examples/swap/README.md +0 -3
  279. package/examples/swap/swap.hsx +0 -19
  280. package/examples/swap/swap.udl +0 -876
  281. package/examples/threshold_pool/README.md +0 -3
  282. package/examples/threshold_pool/threshold_pool.hsx +0 -16
  283. package/examples/threshold_pool/threshold_pool.udl +0 -667
  284. package/examples/weighted_distribution/README.md +0 -3
  285. package/examples/weighted_distribution/weighted_distribution.hsx +0 -20
  286. package/examples/weighted_distribution/weighted_distribution.udl +0 -337
  287. package/skills/hsx/SKILL.md +0 -483
  288. package/src/emit.ts +0 -201
  289. package/src/entry-overrides.ts +0 -428
  290. package/src/ir.ts +0 -99
  291. package/src/limits.ts +0 -20
  292. package/src/lsp/server.ts +0 -460
  293. package/src/modules.ts +0 -446
  294. package/src/typecheck.ts +0 -3876
  295. package/src/version.ts +0 -5
  296. package/std/SEMANTICS.md +0 -130
  297. package/std/settlements/advance.hsx +0 -177
  298. package/std/settlements/cancellable_booking.hsx +0 -87
  299. package/std/settlements/captured_payment.hsx +0 -144
  300. package/std/settlements/conditional_disbursement.hsx +0 -185
  301. package/std/settlements/credit_facility.hsx +0 -167
  302. package/std/settlements/held_payment.hsx +0 -578
  303. package/std/settlements/index.hsx +0 -3
  304. package/std/settlements/instant_transfer.hsx +0 -190
  305. package/std/settlements/metered.hsx +0 -67
  306. package/std/settlements/pooled_split.hsx +0 -68
  307. package/std/settlements/premium_forward.hsx +0 -257
  308. package/std/settlements/reconciled_payout.hsx +0 -77
  309. package/std/settlements/recurring_collection.hsx +0 -27
  310. package/std/settlements/rotating_pool.hsx +0 -252
  311. package/std/settlements/scheduled.hsx +0 -641
  312. package/std/settlements/security_deposit.hsx +0 -166
  313. package/std/settlements/settlement_batch.hsx +0 -122
  314. package/std/settlements/swap.hsx +0 -1114
  315. package/std/settlements/threshold_pool.hsx +0 -221
  316. package/std/settlements/weighted_distribution.hsx +0 -141
package/README.md CHANGED
@@ -1,60 +1,60 @@
1
1
  # HSX
2
2
 
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.
7
-
8
- ```hsx
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
18
- }
19
-
20
- port accept_delivery { allowed: [buyer] }
21
- ```
3
+ HSX is a typed composition language for a company's objects, agreements and
4
+ actions. Programs can model a repair approval, a rental deposit or a financing
5
+ plan. The compiler produces canonical UDL for an executor. It executes no actions.
6
+ This release supports SAR.
22
7
 
23
- ```sh
24
- npm install @hyperscale0/hsx @hyperscale0/udl
25
- npx hsx check product.hsx
26
- ```
8
+ ## Start here
27
9
 
28
- After installing dependencies in a repository checkout, run `bun run bin/hsx.ts check product.hsx`.
10
+ Install the published package locally with `npm install @hyperscale0/hsx`.
11
+ Its `hsx` executable requires Node.js 22 or later. Use `npx hsx` for a local install:
29
12
 
30
- ```ts
31
- import { compile } from "@hyperscale0/hsx";
32
- const result = compile(source, { costTable });
33
- const { document, originMap, costManifest } = result.artifacts!;
13
+ ```sh
14
+ npx hsx check rental.hsx
15
+ npx hsx build rental.hsx --out rental.udl.json
16
+ npx hsx cost rental.hsx
34
17
  ```
35
18
 
36
- The compiler returns three artifacts named `document`, `originMap`, and `costManifest`.
19
+ Start with the [first program and rental guide](docs/README.md). Save the
20
+ [rental source](examples/rental-deposit.hsx) as `rental.hsx` for these commands.
21
+ It holds 1,000 SAR, charges a one-time 50 SAR late fee, and returns the remainder.
22
+ The guide explains the fixed business binding and the host needed to execute it.
37
23
 
38
- `document` is the canonical UDL value.
24
+ `npx hsx headers` prints every std instrument and its tunables from the bundled
25
+ headers. The [samples](examples/) include both complete action paths and
26
+ compositions that still need child-record actions or adapter bindings. A compile
27
+ pass does not prove that a flow is publicly executable or funded.
39
28
 
40
- The built-in module resolver reads every settlement module in `std/settlements`.
29
+ ## Browser language service
41
30
 
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.
31
+ ```ts
32
+ import { highlight, describe } from "@hyperscale0/hsx/language";
33
+ import { examples } from "@hyperscale0/hsx/examples";
43
34
 
44
- Every compiler diagnostic code appears in the generated diagnostics catalog.
35
+ const source = examples[0]!.source;
36
+ const spans = highlight(source);
37
+ const hover = describe(source, source.indexOf("program"));
38
+ ```
45
39
 
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.
40
+ Both functions accept incomplete source and need no Node or editor framework.
41
+ Spans use half-open UTF-16 offsets. Whitespace has no span; unknown hover targets
42
+ return `null`. Pass a `StandardLibrary` as the last argument for custom headers.
43
+ Header signatures and bounds come from compiler metadata. Bounds use minor
44
+ currency units, basis points and milliseconds.
50
45
 
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.
46
+ Examples have `id`, `title`, `summary`, `headers` and `source`. The ID is the
47
+ filename without `.hsx`; leading comments supply the summary. The array is sorted
48
+ by filename and contains no filesystem imports. Workspace imports use
49
+ `@hyperscale0/hsx` instead of the published `@hyperscale0/hsx` name.
53
50
 
54
- The VS Code extension is built as `hsx.vsix` in CI. Download the workflow
55
- artifact, then run `code --install-extension hsx.vsix`.
51
+ ## Working from source
56
52
 
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`.
53
+ Run `bun install` and `bun run build` in this package's public source checkout.
54
+ Run `bun bin/hsx.ts check examples/rental-deposit.hsx` to use the source CLI.
55
+ `bun run check` checks types, compiles bundled examples and checks bundle freshness.
58
56
 
59
- HSX is licensed under AGPL-3.0-only. See [LICENSE](./LICENSE) and
60
- [LICENSING.md](./LICENSING.md).
57
+ Edit prose in `docs/README.md`, programs in `examples/`, and header comments in
58
+ `std/`. Run `bun run generate` after changing these inputs. It emits the header
59
+ and example bundles.
60
+ `bun run build` also builds the browser playground.
package/bin/hsx.ts CHANGED
@@ -1,9 +1,4 @@
1
1
  #!/usr/bin/env node
2
- /**
3
- * The `hsx` executable. Everything it does lives in `runCli`; this file only
4
- * binds that function to the real filesystem and the real streams.
5
- */
6
-
7
2
  import { readFile, writeFile } from "node:fs/promises";
8
3
  import { runCli } from "../src/cli.ts";
9
4
 
@@ -11,7 +6,5 @@ process.exitCode = await runCli(process.argv.slice(2), {
11
6
  err: (line) => process.stderr.write(`${line}\n`),
12
7
  out: (line) => process.stdout.write(`${line}\n`),
13
8
  readFile: (path) => readFile(path, "utf8"),
14
- stdin: process.stdin,
15
- stdout: process.stdout,
16
9
  writeFile: (path, contents) => writeFile(path, contents, "utf8"),
17
10
  });
package/dist/bin/hsx.d.ts CHANGED
@@ -1,7 +1,3 @@
1
1
  #!/usr/bin/env node
2
- /**
3
- * The `hsx` executable. Everything it does lives in `runCli`; this file only
4
- * binds that function to the real filesystem and the real streams.
5
- */
6
2
  export {};
7
3
  //# sourceMappingURL=hsx.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hsx.d.ts","sourceRoot":"","sources":["../../bin/hsx.ts"],"names":[],"mappings":";AACA;;;GAGG"}
1
+ {"version":3,"file":"hsx.d.ts","sourceRoot":"","sources":["../../bin/hsx.ts"],"names":[],"mappings":""}
package/dist/bin/hsx.js CHANGED
@@ -1,16 +1,10 @@
1
1
  #!/usr/bin/env node
2
- /**
3
- * The `hsx` executable. Everything it does lives in `runCli`; this file only
4
- * binds that function to the real filesystem and the real streams.
5
- */
6
2
  import { readFile, writeFile } from "node:fs/promises";
7
3
  import { runCli } from "../src/cli.js";
8
4
  process.exitCode = await runCli(process.argv.slice(2), {
9
5
  err: (line) => process.stderr.write(`${line}\n`),
10
6
  out: (line) => process.stdout.write(`${line}\n`),
11
7
  readFile: (path) => readFile(path, "utf8"),
12
- stdin: process.stdin,
13
- stdout: process.stdout,
14
8
  writeFile: (path, contents) => writeFile(path, contents, "utf8"),
15
9
  });
16
10
  //# 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,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"}
1
+ {"version":3,"file":"hsx.js","sourceRoot":"","sources":["../../bin/hsx.ts"],"names":[],"mappings":";AACA,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"}
package/dist/src/ast.d.ts CHANGED
@@ -1,315 +1,120 @@
1
- /**
2
- * The HSX abstract syntax tree.
3
- *
4
- * Every node carries a byte-offset span into the original source. Spans are
5
- * the compiler's source-mapping currency: diagnostics at every later stage
6
- * (typecheck, lowering, verdicts) point at source coordinates, never at
7
- * lowered IR paths. Offsets convert to line/column via `lineColAt`.
8
- */
9
1
  export interface Span {
10
- /** Inclusive start byte offset into the source text. */
11
- readonly start: number;
12
- /** Exclusive end byte offset into the source text. */
13
- readonly end: number;
2
+ start: number;
3
+ end: number;
14
4
  }
15
- export interface LineCol {
16
- /** 1-indexed line. */
17
- readonly line: number;
18
- /** 1-indexed column, counted in UTF-16 code units. */
19
- readonly column: number;
20
- }
21
- /** Convert a byte offset to a 1-indexed line/column position. */
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;
29
- /**
30
- * One source scanned once, so many offsets resolve without rescanning it.
31
- * `lineColAt` walks from offset zero every time, which turns a run of d
32
- * diagnostics over an n-byte source into O(n*d) work. A caller holding this
33
- * pays O(n) once and O(log n) per offset.
34
- */
35
- export interface LineIndex {
36
- /** Source length, so `lineColIn` clamps exactly as `lineColAt` does. */
37
- readonly length: number;
38
- /** Offset of the first character of each line, ascending. Line 1 starts at 0. */
39
- readonly starts: readonly number[];
40
- }
41
- /** Scan a source once for the offset every line starts at. */
42
- export declare function lineIndex(source: string): LineIndex;
43
- /**
44
- * Resolve one offset against a prebuilt index. Returns exactly what
45
- * `lineColAt` returns for the same source and offset.
46
- */
47
- export declare function lineColIn(index: LineIndex, offset: number): LineCol;
48
- export interface IdentExpr {
49
- readonly kind: "ident";
50
- readonly name: string;
51
- /** A literal quoted block key keeps its exact spelling during JSON lowering. */
52
- readonly quoted?: boolean;
53
- readonly span: Span;
54
- }
55
- export interface StringExpr {
56
- readonly kind: "string";
57
- readonly span: Span;
58
- readonly value: string;
59
- }
60
- export interface NumberExpr {
61
- readonly kind: "number";
62
- /** The literal exactly as written, e.g. "99.5". Interpretation is typed later. */
63
- readonly raw: string;
64
- readonly span: Span;
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
- }
99
- export interface PercentExpr {
100
- /** Exact basis points: 99.5% is 9950. Percents never round. */
101
- readonly bps: number;
102
- readonly kind: "percent";
103
- readonly raw: string;
104
- readonly span: Span;
105
- }
106
- /** A type or constructor application: `money(SAR)`, `id(vehicle)`. */
107
- export interface CallExpr {
108
- readonly args: readonly Expr[];
109
- readonly callee: IdentExpr;
110
- readonly kind: "call";
111
- readonly span: Span;
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
- }
122
- /**
123
- * A reference to a decision port, optionally bounded (`port dispute within
124
- * P14D`) or carrying the date that decides when the port has not
125
- * (`port approve_release | at(releaseDueAt)`).
126
- */
127
- export interface PortRefExpr {
128
- /** `| at(<field>)`, the stored date field that resolves an undecided hold. */
129
- readonly deadline?: IdentExpr;
130
- readonly kind: "port_ref";
131
- readonly name: IdentExpr;
132
- readonly span: Span;
133
- readonly within?: IdentExpr;
134
- }
135
- /**
136
- * `retention.release`, one settlement naming another settlement's declared
137
- * referenceable exit. The checker resolves it wholly before lowering.
138
- */
139
- export interface SettlementRefExpr {
140
- readonly kind: "settlement_ref";
141
- /** The exit named on the owner, e.g. `release`. */
142
- readonly member: IdentExpr;
143
- /** The settlement being referenced. */
144
- readonly owner: IdentExpr;
145
- readonly span: Span;
146
- }
147
- export interface ListExpr {
148
- readonly items: readonly Expr[];
149
- readonly kind: "list";
150
- readonly span: Span;
151
- }
152
- /** A brace block of entries: `{ buyer: 1%, seller: 2% }`. */
153
- export interface BlockExpr {
154
- readonly entries: readonly Entry[];
155
- readonly kind: "block";
156
- readonly span: Span;
157
- }
158
- /**
159
- * A named typed binding inside an expression position:
160
- * `amount: price: money(SAR)` binds the field name `price` to type
161
- * `money(SAR)`: the entry key is `amount`, the value is this binding.
162
- */
163
- export interface BindingExpr {
164
- readonly kind: "binding";
165
- readonly name: IdentExpr;
166
- readonly span: Span;
167
- readonly type: Expr;
168
- }
169
- export type Expr = ApplyExpr | BindingExpr | BlockExpr | BooleanExpr | CallExpr | DecidedAmountExpr | IdentExpr | ListExpr | MoneyExpr | NumberExpr | PathExpr | PercentExpr | PortRefExpr | SettlementRefExpr | StringExpr | TypeApplyExpr;
170
- /**
171
- * One keyed entry inside a declaration body. Three surface shapes normalize
172
- * here: `payer: buyer` (key + value), `fees { ... }` (key + block value),
173
- * and `on_cancel(funded) { ... }` (key + qualifiers + block value).
174
- */
5
+ export interface Diagnostic {
6
+ source?: string;
7
+ related?: readonly {
8
+ source: string;
9
+ span: Span;
10
+ message: string;
11
+ }[];
12
+ code: string;
13
+ message: string;
14
+ fix: string;
15
+ span: Span;
16
+ }
17
+ export type Expr = {
18
+ kind: "name" | "text" | "number" | "money" | "percent" | "duration" | "date";
19
+ value: string;
20
+ span: Span;
21
+ } | {
22
+ kind: "list";
23
+ items: Expr[];
24
+ span: Span;
25
+ } | {
26
+ kind: "block";
27
+ entries: Entry[];
28
+ span: Span;
29
+ } | {
30
+ kind: "call";
31
+ name: string;
32
+ args: Expr[];
33
+ span: Span;
34
+ } | {
35
+ kind: "type";
36
+ name: string;
37
+ target?: string;
38
+ owner?: string;
39
+ optional: boolean;
40
+ many?: boolean;
41
+ span: Span;
42
+ } | {
43
+ kind: "default";
44
+ type: Expr;
45
+ value: Expr;
46
+ span: Span;
47
+ } | {
48
+ kind: "capped";
49
+ rate: Expr;
50
+ cap: Expr;
51
+ span: Span;
52
+ };
175
53
  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
- };
181
- readonly key: IdentExpr;
182
- readonly qualifiers: readonly IdentExpr[];
183
- readonly span: Span;
184
- readonly value: Expr;
54
+ key: string;
55
+ value: Expr;
56
+ span: Span;
185
57
  }
186
- /** `program used_car_escrow "Used-car escrow"` names the company program. */
187
- export interface ProgramDecl {
188
- readonly kind: "program";
189
- readonly name: IdentExpr;
190
- readonly span: Span;
191
- readonly title?: StringExpr;
192
- }
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"`. */
208
- export interface ImportDecl {
209
- readonly from: StringExpr;
210
- readonly kind: "import";
211
- readonly names: readonly IdentExpr[];
212
- readonly span: Span;
213
- }
214
- /** `party buyer: person` with an optional attribute block. */
215
- export interface PartyDecl {
216
- readonly attrs?: BlockExpr;
217
- readonly kind: "party";
218
- readonly name: IdentExpr;
219
- readonly partyKind: IdentExpr;
220
- readonly span: Span;
221
- }
222
- /** `asset vehicle: good { title_transfer: off_platform }`. */
223
- export interface AssetDecl {
224
- readonly assetKind: IdentExpr;
225
- readonly attrs?: BlockExpr;
226
- readonly kind: "asset";
227
- readonly name: IdentExpr;
228
- readonly span: Span;
229
- }
230
- /** A full UDL subject-kind declaration. `asset` remains shorthand for this form. */
231
- export interface SubjectDecl {
232
- readonly body: BlockExpr;
233
- readonly kind: "subject";
234
- readonly name: IdentExpr;
235
- readonly span: Span;
236
- }
237
- /** `port confirm_handover { allowed: [buyer], ... }`. */
238
- export interface PortDecl {
239
- readonly body: BlockExpr;
240
- readonly kind: "port";
241
- readonly name: IdentExpr;
242
- readonly span: Span;
243
- }
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
58
  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;
59
+ kind: "instrument";
60
+ name: string;
61
+ parameters: Entry[];
62
+ body: Extract<Expr, {
63
+ kind: "block";
64
+ }>;
65
+ span: Span;
66
+ }
67
+ export interface AssignmentDecl {
68
+ kind: "assignment";
69
+ name: string;
70
+ target: string;
71
+ body: Extract<Expr, {
72
+ kind: "block";
73
+ }>;
74
+ span: Span;
75
+ }
76
+ export interface ObjectDecl {
77
+ kind: "object";
78
+ name: string;
79
+ title: string;
80
+ body: Extract<Expr, {
81
+ kind: "block";
82
+ }>;
83
+ span: Span;
84
+ }
85
+ export type Decl = InstrumentDecl | AssignmentDecl | ObjectDecl | {
86
+ kind: "party";
87
+ name: string;
88
+ partyKind: string;
89
+ role?: string;
90
+ span: Span;
91
+ } | {
92
+ kind: "use";
93
+ name: string;
94
+ span: Span;
95
+ } | {
96
+ kind: "expose";
97
+ target: string;
98
+ name: string;
99
+ span: Span;
100
+ } | {
101
+ kind: "hide";
102
+ target: string;
103
+ span: Span;
104
+ };
301
105
  export interface Program {
302
- readonly decls: readonly Decl[];
303
- readonly span: Span;
304
- }
305
- /**
306
- * A parse-stage problem, worded for the program's author. Parsing is total:
307
- * it never throws, it returns the best-effort tree plus these.
308
- */
309
- export interface Diagnostic {
310
- readonly code?: string;
311
- readonly fix?: string;
312
- readonly message: string;
313
- readonly span: Span;
314
- }
106
+ name: string;
107
+ title: string;
108
+ currency: string;
109
+ header: boolean;
110
+ decls: Decl[];
111
+ span: Span;
112
+ }
113
+ export declare const lineColAt: (source: string, offset: number) => {
114
+ line: number;
115
+ column: number;
116
+ };
117
+ export type BlockExpr = Extract<Expr, {
118
+ kind: "block";
119
+ }>;
315
120
  //# 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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"}