@hyperscale0/hsx 1.0.0 → 2.0.1

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 (166) hide show
  1. package/CHANGELOG.md +28 -4
  2. package/README.md +58 -38
  3. package/dist/src/ast.d.ts +4 -2
  4. package/dist/src/ast.d.ts.map +1 -1
  5. package/dist/src/cli.d.ts +1 -1
  6. package/dist/src/cli.js.map +1 -1
  7. package/dist/src/compile.d.ts +8 -2
  8. package/dist/src/compile.d.ts.map +1 -1
  9. package/dist/src/compile.js +8 -1
  10. package/dist/src/compile.js.map +1 -1
  11. package/dist/src/cost.d.ts +3 -1
  12. package/dist/src/cost.d.ts.map +1 -1
  13. package/dist/src/cost.js +124 -94
  14. package/dist/src/cost.js.map +1 -1
  15. package/dist/src/diagnostics.d.ts.map +1 -1
  16. package/dist/src/diagnostics.js +96 -5
  17. package/dist/src/diagnostics.js.map +1 -1
  18. package/dist/src/emit.d.ts +3 -1
  19. package/dist/src/emit.d.ts.map +1 -1
  20. package/dist/src/emit.js +27 -10
  21. package/dist/src/emit.js.map +1 -1
  22. package/dist/src/format.js.map +1 -1
  23. package/dist/src/index.d.ts +2 -2
  24. package/dist/src/index.d.ts.map +1 -1
  25. package/dist/src/index.js +1 -1
  26. package/dist/src/index.js.map +1 -1
  27. package/dist/src/ir.d.ts.map +1 -1
  28. package/dist/src/lex.d.ts.map +1 -1
  29. package/dist/src/lsp/server.js.map +1 -1
  30. package/dist/src/modules.js +7 -3
  31. package/dist/src/modules.js.map +1 -1
  32. package/dist/src/parse.js +3 -3
  33. package/dist/src/parse.js.map +1 -1
  34. package/dist/src/std-bundle.js +41 -41
  35. package/dist/src/std-bundle.js.map +1 -1
  36. package/dist/src/std-library.js +2 -2
  37. package/dist/src/typecheck.d.ts.map +1 -1
  38. package/dist/src/typecheck.js +948 -157
  39. package/dist/src/typecheck.js.map +1 -1
  40. package/dist/src/version.d.ts +1 -1
  41. package/dist/src/version.js +1 -1
  42. package/docs/README.md +10 -1
  43. package/docs/assets/hsx.svg +18 -0
  44. package/docs/guide/01-first-program.md +1 -1
  45. package/docs/guide/02-money.md +1 -1
  46. package/docs/guide/03-instruments.md +44 -3
  47. package/docs/guide/04-lifecycles.md +18 -3
  48. package/docs/guide/05-fees-and-splits.md +2 -2
  49. package/docs/guide/06-schedules.md +1 -1
  50. package/docs/guide/07-composition.md +8 -2
  51. package/docs/guide/08-writing-a-module.md +13 -2
  52. package/docs/guide/09-cost.md +3 -3
  53. package/docs/guide/10-diagnostics.md +1 -1
  54. package/docs/llms-full.txt +473 -190
  55. package/docs/llms.txt +2 -2
  56. package/docs/playground.md +4 -3
  57. package/docs/reference/cli.md +2 -2
  58. package/docs/reference/diagnostics.md +243 -37
  59. package/docs/reference/grammar.md +2 -2
  60. package/docs/reference/std/advance.md +2 -2
  61. package/docs/reference/std/cancellable_booking.md +10 -10
  62. package/docs/reference/std/captured_payment.md +14 -14
  63. package/docs/reference/std/conditional_disbursement.md +3 -3
  64. package/docs/reference/std/credit_facility.md +2 -2
  65. package/docs/reference/std/held_payment.md +37 -33
  66. package/docs/reference/std/instant_transfer.md +8 -8
  67. package/docs/reference/std/metered.md +2 -2
  68. package/docs/reference/std/pooled_split.md +2 -2
  69. package/docs/reference/std/premium_forward.md +13 -13
  70. package/docs/reference/std/reconciled_payout.md +2 -2
  71. package/docs/reference/std/recurring_collection.md +2 -2
  72. package/docs/reference/std/rotating_pool.md +2 -2
  73. package/docs/reference/std/scheduled.md +18 -18
  74. package/docs/reference/std/security_deposit.md +14 -14
  75. package/docs/reference/std/settlement_batch.md +2 -2
  76. package/docs/reference/std/swap.md +18 -18
  77. package/docs/reference/std/threshold_pool.md +2 -2
  78. package/docs/reference/std/weighted_distribution.md +2 -2
  79. package/docs/reference/types.md +1 -1
  80. package/docs/reference/udl-output.md +1 -1
  81. package/examples/01-first-program/README.md +1 -1
  82. package/examples/01-first-program/tip-jar.hsx +1 -1
  83. package/examples/02-imports-and-archetypes/photo-booth.hsx +1 -1
  84. package/examples/03-diagnostics/corner-shop-fixed.hsx +1 -1
  85. package/examples/03-diagnostics/corner-shop.hsx +1 -1
  86. package/examples/04-complete-product/study-hall.hsx +1 -1
  87. package/examples/05-watch-club/README.md +0 -3
  88. package/examples/05-watch-club/watch-club.hsx +1 -1
  89. package/examples/README.md +35 -4
  90. package/examples/advance/advance.hsx +1 -1
  91. package/examples/advance/advance.udl +16 -11
  92. package/examples/cancellable_booking/cancellable_booking.hsx +1 -1
  93. package/examples/cancellable_booking/cancellable_booking.udl +13 -11
  94. package/examples/captured_payment/captured_payment.hsx +1 -1
  95. package/examples/captured_payment/captured_payment.udl +10 -7
  96. package/examples/conditional_disbursement/conditional_disbursement.hsx +1 -1
  97. package/examples/conditional_disbursement/conditional_disbursement.udl +7 -5
  98. package/examples/cost-table.json +1542 -382
  99. package/examples/credit_facility/credit_facility.hsx +1 -1
  100. package/examples/credit_facility/credit_facility.udl +26 -19
  101. package/examples/held_payment/held_payment.hsx +1 -1
  102. package/examples/held_payment/held_payment.udl +61 -15
  103. package/examples/instant_transfer/instant_transfer.hsx +1 -1
  104. package/examples/instant_transfer/instant_transfer.udl +17 -11
  105. package/examples/metered/metered.hsx +1 -1
  106. package/examples/metered/metered.udl +8 -6
  107. package/examples/pooled_split/pooled_split.hsx +1 -1
  108. package/examples/pooled_split/pooled_split.udl +16 -13
  109. package/examples/premium_forward/premium_forward.hsx +1 -1
  110. package/examples/premium_forward/premium_forward.udl +22 -16
  111. package/examples/reconciled_payout/reconciled_payout.hsx +1 -1
  112. package/examples/reconciled_payout/reconciled_payout.udl +4 -2
  113. package/examples/recurring_collection/recurring_collection.hsx +1 -1
  114. package/examples/recurring_collection/recurring_collection.udl +20 -15
  115. package/examples/rotating_pool/rotating_pool.hsx +1 -1
  116. package/examples/rotating_pool/rotating_pool.udl +92 -82
  117. package/examples/scheduled/scheduled.hsx +1 -1
  118. package/examples/scheduled/scheduled.udl +15 -10
  119. package/examples/security_deposit/security_deposit.hsx +1 -1
  120. package/examples/security_deposit/security_deposit.udl +19 -5
  121. package/examples/settlement_batch/settlement_batch.hsx +1 -1
  122. package/examples/swap/swap.hsx +1 -1
  123. package/examples/swap/swap.udl +34 -28
  124. package/examples/threshold_pool/threshold_pool.hsx +1 -1
  125. package/examples/threshold_pool/threshold_pool.udl +14 -12
  126. package/examples/weighted_distribution/weighted_distribution.hsx +1 -1
  127. package/examples/weighted_distribution/weighted_distribution.udl +6 -4
  128. package/package.json +6 -5
  129. package/skills/hsx/SKILL.md +26 -26
  130. package/src/ast.ts +4 -2
  131. package/src/cli.ts +4 -4
  132. package/src/compile.ts +14 -3
  133. package/src/cost.ts +176 -104
  134. package/src/diagnostics.ts +99 -4
  135. package/src/emit.ts +32 -18
  136. package/src/index.ts +2 -1
  137. package/src/modules.ts +9 -3
  138. package/src/parse.ts +3 -3
  139. package/src/std-bundle.ts +41 -41
  140. package/src/std-library.ts +2 -2
  141. package/src/typecheck.ts +1251 -235
  142. package/src/version.ts +1 -1
  143. package/std/SEMANTICS.md +12 -3
  144. package/std/{settlements → money_flows}/advance.hsx +1 -1
  145. package/std/{settlements → money_flows}/cancellable_booking.hsx +4 -3
  146. package/std/{settlements → money_flows}/captured_payment.hsx +35 -6
  147. package/std/{settlements → money_flows}/conditional_disbursement.hsx +17 -16
  148. package/std/{settlements → money_flows}/credit_facility.hsx +1 -2
  149. package/std/{settlements → money_flows}/held_payment.hsx +61 -25
  150. package/std/money_flows/index.hsx +3 -0
  151. package/std/{settlements → money_flows}/instant_transfer.hsx +2 -3
  152. package/std/{settlements → money_flows}/metered.hsx +1 -1
  153. package/std/{settlements → money_flows}/pooled_split.hsx +3 -3
  154. package/std/{settlements → money_flows}/premium_forward.hsx +22 -23
  155. package/std/{settlements → money_flows}/reconciled_payout.hsx +3 -3
  156. package/std/{settlements → money_flows}/recurring_collection.hsx +1 -1
  157. package/std/{settlements → money_flows}/rotating_pool.hsx +8 -6
  158. package/std/{settlements → money_flows}/scheduled.hsx +22 -27
  159. package/std/{settlements → money_flows}/security_deposit.hsx +38 -14
  160. package/std/{settlements → money_flows}/settlement_batch.hsx +3 -3
  161. package/std/{settlements → money_flows}/swap.hsx +41 -16
  162. package/std/{settlements → money_flows}/threshold_pool.hsx +5 -5
  163. package/std/{settlements → money_flows}/weighted_distribution.hsx +6 -6
  164. package/docs/sessions/2026-09-02-two-instruments.hsx +0 -21
  165. package/docs/sessions/2026-09-02-two-instruments.md +0 -41
  166. package/std/settlements/index.hsx +0 -3
package/dist/src/cost.js CHANGED
@@ -1,6 +1,8 @@
1
1
  import { udlEffectKinds, } from "@hyperscale0/udl";
2
- export function buildCostManifest(program, table, composesCatalogBlueprint) {
3
- if (!table) {
2
+ const CURRENCY = /^[A-Z]{3}$/;
3
+ export function buildCostManifest(program, tables, composesCatalogBlueprint) {
4
+ const priced = tables === undefined ? [] : [tables].flat();
5
+ if (priced.length === 0) {
4
6
  return {
5
7
  diagnostics: [
6
8
  {
@@ -14,13 +16,14 @@ export function buildCostManifest(program, table, composesCatalogBlueprint) {
14
16
  ok: false,
15
17
  };
16
18
  }
17
- if (!/^[A-Z]{3}$/.test(table.currency)) {
19
+ const malformed = priced.find((candidate) => !CURRENCY.test(candidate.currency));
20
+ if (malformed) {
18
21
  return {
19
22
  diagnostics: [
20
23
  {
21
24
  code: "HSX1303",
22
25
  fix: "name one three-letter uppercase billing currency on the cost table",
23
- message: `cost table ${table.version} has invalid billing currency ${table.currency}`,
26
+ message: `cost table ${malformed.version} has invalid billing currency ${malformed.currency}`,
24
27
  severity: "error",
25
28
  span: program.origin,
26
29
  },
@@ -29,66 +32,33 @@ export function buildCostManifest(program, table, composesCatalogBlueprint) {
29
32
  };
30
33
  }
31
34
  const diagnostics = [];
32
- const rowsBySignature = new Map();
33
- for (const row of table.rows) {
34
- rowsBySignature.set(row.signature, [
35
- ...(rowsBySignature.get(row.signature) ?? []),
36
- row,
37
- ]);
38
- }
35
+ const table = ledgerCostTable(program, priced, diagnostics);
36
+ if (!table)
37
+ return { diagnostics, ok: false };
38
+ const rowsBySignature = indexCostRows(table);
39
39
  const actions = [];
40
40
  for (const instrument of program.instruments) {
41
41
  for (const action of instrument.actions) {
42
- const components = [];
43
- let productPerEvent = 0n;
44
- let endCustomerPerEvent = 0n;
45
- for (const [signature, count] of effectCounts(action.effects)) {
46
- const rows = rowsBySignature.get(signature) ?? [];
47
- if (rows.length === 0) {
42
+ actions.push(priceAction(instrument.id, action.name, effectCounts(action.effects), rowsBySignature, (issue) => {
43
+ if (issue.kind === "missing_price") {
48
44
  diagnostics.push({
49
45
  code: "HSX1301",
50
- fix: `add ${signature} to cost table ${table.version}`,
51
- message: `${instrument.id}.${action.name} has unpriced effect signature ${signature}`,
46
+ fix: `add ${issue.signature} to cost table ${table.version}`,
47
+ message: `${instrument.id}.${action.name} has unpriced effect signature ${issue.signature}`,
52
48
  severity: "error",
53
49
  span: action.origin,
54
50
  });
55
- continue;
56
51
  }
57
- for (const row of rows) {
58
- if (!validPrice(row)) {
59
- diagnostics.push({
60
- code: "HSX1302",
61
- fix: `store ${signature} prices as nonnegative integers and name a volume meter for bps`,
62
- message: `cost table ${table.version} has an invalid ${signature} price`,
63
- severity: "error",
64
- span: action.origin,
65
- });
66
- continue;
67
- }
68
- const eventTotal = BigInt(row.perEventMinor) * BigInt(count);
69
- if (row.payer === "product")
70
- productPerEvent += eventTotal;
71
- else
72
- endCustomerPerEvent += eventTotal;
73
- components.push({
74
- bps: row.bps,
75
- count,
76
- meter: row.meter,
77
- payer: row.payer,
78
- perEventMinor: row.perEventMinor,
79
- settlement: row.settlement,
80
- signature,
81
- ...(row.volumeMeter ? { volumeMeter: row.volumeMeter } : {}),
52
+ else {
53
+ diagnostics.push({
54
+ code: "HSX1302",
55
+ fix: `store ${issue.signature} prices as nonnegative integers and name a volume meter for bps`,
56
+ message: `cost table ${table.version} has an invalid ${issue.signature} price`,
57
+ severity: "error",
58
+ span: action.origin,
82
59
  });
83
60
  }
84
- }
85
- actions.push({
86
- action: action.name,
87
- components,
88
- endCustomerPerEventMinor: endCustomerPerEvent.toString(),
89
- instrument: instrument.id,
90
- perEventMinor: productPerEvent.toString(),
91
- });
61
+ }));
92
62
  }
93
63
  }
94
64
  const fixed = fixedCost(typedStructuralCounts(program, composesCatalogBlueprint), table, program.origin, diagnostics);
@@ -96,6 +66,49 @@ export function buildCostManifest(program, table, composesCatalogBlueprint) {
96
66
  return { diagnostics, ok: false };
97
67
  return { manifest: manifest(table, fixed, actions), ok: true };
98
68
  }
69
+ /**
70
+ * The table priced in the program's ledger currency: the one currency its
71
+ * money fields move. A program without money fields prices in the host's
72
+ * first table.
73
+ */
74
+ function ledgerCostTable(program, tables, diagnostics) {
75
+ const currencies = new Map();
76
+ for (const instrument of program.instruments) {
77
+ for (const field of instrument.fields) {
78
+ // An unbound currency parameter (money<C>) is decided per instance,
79
+ // not by the program, so it names no ledger currency.
80
+ const currency = field.type.currency;
81
+ if (field.type.kind !== "money" || !currency || !CURRENCY.test(currency))
82
+ continue;
83
+ if (!currencies.has(currency))
84
+ currencies.set(currency, field.origin);
85
+ }
86
+ }
87
+ const [first, second] = [...currencies];
88
+ if (second) {
89
+ diagnostics.push({
90
+ code: "HSX1305",
91
+ fix: `move all money in ${first[0]}; a program bills in one ledger currency`,
92
+ message: `program moves money in ${[...currencies.keys()].join(" and ")}; a program bills in one ledger currency`,
93
+ severity: "error",
94
+ span: second[1],
95
+ });
96
+ return undefined;
97
+ }
98
+ const ledger = first?.[0] ?? tables[0].currency;
99
+ const table = tables.find((candidate) => candidate.currency === ledger);
100
+ if (table)
101
+ return table;
102
+ const priced = tables.map((candidate) => candidate.currency).join(", ");
103
+ diagnostics.push({
104
+ code: "HSX1304",
105
+ fix: `move money in a priced currency: ${priced}`,
106
+ message: `program moves money in ${ledger}, which no cost table prices (priced: ${priced})`,
107
+ severity: "error",
108
+ span: first?.[1] ?? program.origin,
109
+ });
110
+ return undefined;
111
+ }
99
112
  export function computeUdlFixedCost(document, table, composesCatalogBlueprint) {
100
113
  const diagnostics = [];
101
114
  const fixed = fixedCost(udlStructuralCounts(document, composesCatalogBlueprint), table, { start: 0, end: 0 }, diagnostics);
@@ -104,54 +117,20 @@ export function computeUdlFixedCost(document, table, composesCatalogBlueprint) {
104
117
  return fixed;
105
118
  }
106
119
  export function buildUdlCostManifest(document, table, composesCatalogBlueprint) {
107
- if (!/^[A-Z]{3}$/.test(table.currency)) {
120
+ if (!CURRENCY.test(table.currency)) {
108
121
  throw new Error(`cost table ${table.version} has invalid billing currency ${table.currency}`);
109
122
  }
110
- const rowsBySignature = new Map();
111
- for (const row of table.rows) {
112
- rowsBySignature.set(row.signature, [
113
- ...(rowsBySignature.get(row.signature) ?? []),
114
- row,
115
- ]);
116
- }
123
+ const rowsBySignature = indexCostRows(table);
117
124
  const actions = [];
118
125
  for (const instrument of document.instruments) {
119
126
  for (const [actionName, action] of Object.entries(instrument.actions)) {
120
- const components = [];
121
- let productPerEvent = 0n;
122
- let endCustomerPerEvent = 0n;
123
127
  const effects = (action.effects ?? {});
124
- for (const [signature, count] of effectCounts(effects)) {
125
- const rows = rowsBySignature.get(signature) ?? [];
126
- if (rows.length === 0)
127
- throw new Error(`${instrument.id}.${actionName} has unpriced effect signature ${signature}`);
128
- for (const row of rows) {
129
- if (!validPrice(row))
130
- throw new Error(`cost table ${table.version} has an invalid ${signature} price`);
131
- const eventTotal = BigInt(row.perEventMinor) * BigInt(count);
132
- if (row.payer === "product")
133
- productPerEvent += eventTotal;
134
- else
135
- endCustomerPerEvent += eventTotal;
136
- components.push({
137
- bps: row.bps,
138
- count,
139
- meter: row.meter,
140
- payer: row.payer,
141
- perEventMinor: row.perEventMinor,
142
- settlement: row.settlement,
143
- signature,
144
- ...(row.volumeMeter ? { volumeMeter: row.volumeMeter } : {}),
145
- });
128
+ actions.push(priceAction(instrument.id, actionName, effectCounts(effects), rowsBySignature, (issue) => {
129
+ if (issue.kind === "missing_price") {
130
+ throw new Error(`${instrument.id}.${actionName} has unpriced effect signature ${issue.signature}`);
146
131
  }
147
- }
148
- actions.push({
149
- action: actionName,
150
- components,
151
- endCustomerPerEventMinor: endCustomerPerEvent.toString(),
152
- instrument: instrument.id,
153
- perEventMinor: productPerEvent.toString(),
154
- });
132
+ throw new Error(`cost table ${table.version} has an invalid ${issue.signature} price`);
133
+ }));
155
134
  }
156
135
  }
157
136
  return manifest(table, computeUdlFixedCost(document, table, composesCatalogBlueprint), actions);
@@ -175,6 +154,57 @@ export function evaluateUdlCostManifest(costManifest, readings) {
175
154
  }
176
155
  return total.toString();
177
156
  }
157
+ function indexCostRows(table) {
158
+ const rowsBySignature = new Map();
159
+ for (const row of table.rows) {
160
+ const existing = rowsBySignature.get(row.signature);
161
+ if (existing)
162
+ existing.push(row);
163
+ else
164
+ rowsBySignature.set(row.signature, [row]);
165
+ }
166
+ return rowsBySignature;
167
+ }
168
+ function priceAction(instrument, action, counts, rowsBySignature, onIssue) {
169
+ const components = [];
170
+ let productPerEvent = 0n;
171
+ let endCustomerPerEvent = 0n;
172
+ for (const [signature, count] of counts) {
173
+ const rows = rowsBySignature.get(signature);
174
+ if (!rows || rows.length === 0) {
175
+ onIssue({ kind: "missing_price", signature });
176
+ continue;
177
+ }
178
+ for (const row of rows) {
179
+ if (!validPrice(row)) {
180
+ onIssue({ kind: "invalid_price", signature });
181
+ continue;
182
+ }
183
+ const eventTotal = BigInt(row.perEventMinor) * BigInt(count);
184
+ if (row.payer === "product")
185
+ productPerEvent += eventTotal;
186
+ else
187
+ endCustomerPerEvent += eventTotal;
188
+ components.push({
189
+ bps: row.bps,
190
+ count,
191
+ meter: row.meter,
192
+ payer: row.payer,
193
+ perEventMinor: row.perEventMinor,
194
+ settlement: row.settlement,
195
+ signature,
196
+ ...(row.volumeMeter ? { volumeMeter: row.volumeMeter } : {}),
197
+ });
198
+ }
199
+ }
200
+ return {
201
+ action,
202
+ components,
203
+ endCustomerPerEventMinor: endCustomerPerEvent.toString(),
204
+ instrument,
205
+ perEventMinor: productPerEvent.toString(),
206
+ };
207
+ }
178
208
  function manifest(table, fixed, actions) {
179
209
  const declaredMeters = [...new Set(table.declaredMeters)].sort();
180
210
  const declaredMeterSet = new Set(declaredMeters);
@@ -1 +1 @@
1
- {"version":3,"file":"cost.js","sourceRoot":"","sources":["../../src/cost.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cost.js","sourceRoot":"","sources":["../../src/cost.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/diagnostics.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,MAAM,EAAE,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,WAAW,CAAC;IACzD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAYD,2EAA2E;AAC3E,eAAO,MAAM,cAAc,EAAE,SAAS,yBAAyB,EAqarD,CAAC"}
1
+ {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/diagnostics.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,MAAM,EAAE,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,WAAW,CAAC;IACzD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAiBD,2EAA2E;AAC3E,eAAO,MAAM,cAAc,EAAE,SAAS,yBAAyB,EA+frD,CAAC"}
@@ -1,8 +1,12 @@
1
- const instrument = (body) => `program catalog_probe "Catalog probe"
1
+ const instrument = (body, fields = "") => `program catalog_probe "Catalog probe"
2
2
  instrument probe {
3
- fields {}
3
+ agent_description: "Probe instrument for catalog diagnostics.";
4
+ fields { ${fields} }
4
5
  lifecycle { states created; initial created; }
5
- action create { steps: []; }
6
+ action create {
7
+ agent_description: "Create a probe instance.";
8
+ steps: [];
9
+ }
6
10
  ${body}
7
11
  }`;
8
12
  /** Stable public descriptions for every diagnostic code emitted by HSX. */
@@ -186,8 +190,8 @@ instrument probe = template(value: "one", value: "two")`,
186
190
  {
187
191
  code: "HSX1022",
188
192
  stage: "typecheck",
189
- title: "Authored instrument in a composition",
190
- fix: "Publish the instrument separately, then select it with use.",
193
+ title: "Authored instrument collides with published catalog",
194
+ fix: "Rename the authored instrument to avoid colliding with published catalog instruments.",
191
195
  // This diagnostic requires a compiler-host published catalog.
192
196
  example: null,
193
197
  reason: "This refusal requires a compiler-host published catalog.",
@@ -199,6 +203,44 @@ instrument probe = template(value: "one", value: "two")`,
199
203
  fix: "List declared, non-optional field names once each.",
200
204
  example: instrument("required: missing;"),
201
205
  },
206
+ {
207
+ code: "HSX1024",
208
+ stage: "typecheck",
209
+ title: "Decision party has no matching account binding",
210
+ fix: "Bind the allowed party to an account field and use that binding in the decision action.",
211
+ example: `program decision_binding "Decision binding"
212
+ party buyer: person
213
+ party seller: business
214
+ port approve { allowed: [buyer] }
215
+ instrument gated(decision: condition) {
216
+ fields {}
217
+ parties { payer: seller }
218
+ lifecycle { states created done; initial created; on approve: created -> done; }
219
+ action create { steps: []; }
220
+ action [decision] { steps: []; port { allowed_parties: [payer]; } }
221
+ }
222
+ instrument gate = gated(decision: port approve)`,
223
+ },
224
+ {
225
+ code: "HSX1025",
226
+ stage: "typecheck",
227
+ title: "Unknown decision port shape type",
228
+ fix: "Declare the shape field as text, money(CUR), date, integer, boolean, account(CUR), ref<instrument_id>, id(instrument_id), bps, or percent.",
229
+ example: `program catalog_probe "Catalog probe"
230
+ import { security_deposit } from "std/money_flows"
231
+ party buyer: person
232
+ party seller: business
233
+ settlement hold = security_deposit {
234
+ payer: buyer
235
+ holder: seller
236
+ amount: depositAmount: money(SAR)
237
+ claim: port report_damage
238
+ claim_amount: { field: damageAmount, bound: depositAmount, remainder: return }
239
+ return: port pass_inspection
240
+ }
241
+ port report_damage { allowed: [seller] shape { damageAmount: money(SAR) } }
242
+ port pass_inspection { allowed: [seller] shape { invalidField: mystery_type } }`,
243
+ },
202
244
  {
203
245
  code: "HSX1101",
204
246
  stage: "typecheck",
@@ -282,6 +324,27 @@ action pay { computes remainder rest { amount_ref: total; on_zero: refuse; total
282
324
  example: null,
283
325
  reason: "This refusal requires an invalid compiler-host cost-table currency.",
284
326
  },
327
+ {
328
+ code: "HSX1304",
329
+ stage: "typecheck",
330
+ title: "Unpriced ledger currency",
331
+ fix: "Move money in a currency the shipped cost tables price.",
332
+ example: instrument("", "amount: money<JPY>;"),
333
+ },
334
+ {
335
+ code: "HSX1305",
336
+ stage: "typecheck",
337
+ title: "More than one ledger currency",
338
+ fix: "Move all money in one currency; a program bills in one ledger currency.",
339
+ example: instrument("", "amount: money<SAR>; fee: money<USD>;"),
340
+ },
341
+ {
342
+ code: "HSX1306",
343
+ stage: "typecheck",
344
+ title: "Fixed-currency amount moved in another currency",
345
+ fix: "Bind the currency of a money<CUR> move or account step as the constant CUR; the compiler pins a binding that reads the instrument's currency field.",
346
+ example: instrument(`action pay { agent_description: "Pay the amount."; moves: [{ "bind": { "amount": { "from": "instance"; "path": "fields.amount"; }; "currency": { "from": "const"; "value": "USD"; }; "destinationAccountId": { "from": "instance"; "path": "fields.payeeAccountId"; }; "sourceAccountId": { "from": "instance"; "path": "fields.payerAccountId"; }; }; "key": "transfer"; "operation": "internal_transfer.create"; }]; steps: []; }`, "amount: money<SAR>; payeeAccountId: account<SAR>; payerAccountId: account<SAR>;"),
347
+ },
285
348
  {
286
349
  code: "HSX1401",
287
350
  stage: "typecheck",
@@ -390,6 +453,34 @@ instrument probe = template()`,
390
453
  example: `program catalog_probe "Catalog probe"
391
454
  export instrument template() { fields {}; lifecycle { states created; initial created; }; action create { steps: []; }; }
392
455
  instrument probe = template() { fields: {}; }`,
456
+ },
457
+ {
458
+ code: "HSX1508",
459
+ stage: "typecheck",
460
+ title: "Invalid action-level port syntax",
461
+ fix: "Use allowed_parties: [...] inside an action-level port clause; allowed: is for top-level port declarations.",
462
+ example: `program catalog_probe "Catalog probe"
463
+ party approver: person
464
+ instrument probe {
465
+ fields {}
466
+ lifecycle { states created; initial created; }
467
+ action create {
468
+ steps: [];
469
+ port { allowed: [approver]; }
470
+ }
471
+ }`,
472
+ },
473
+ {
474
+ code: "HSX1509",
475
+ stage: "typecheck",
476
+ title: "Callable action without an agent description",
477
+ fix: 'Add agent_description: "..." to the instrument and to every action a caller can reach; composer.check refuses the program without them.',
478
+ example: `program catalog_probe "Catalog probe"
479
+ instrument probe {
480
+ fields {}
481
+ lifecycle { states created; initial created; }
482
+ action create { steps: []; }
483
+ }`,
393
484
  },
394
485
  {
395
486
  code: "HSX1601",
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/diagnostics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/diagnostics.ts"],"names":[],"mappings":"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"}
@@ -24,11 +24,13 @@ export type GeneralLowerResult = {
24
24
  } | {
25
25
  readonly ok: true;
26
26
  readonly value: {
27
- readonly canonicalUdl: string;
28
27
  readonly document: UdlDocument;
29
28
  readonly originMap: readonly OriginMapEntry[];
30
29
  };
31
30
  };
32
31
  export declare function lowerGeneralProgram(program: TypedProgram): GeneralLowerResult;
32
+ export declare function originForUdlPath<T extends {
33
+ readonly path: string;
34
+ }>(path: string, origins: readonly T[]): T | undefined;
33
35
  export declare function requiredFields(instrument: TypedInstrument): string[];
34
36
  //# sourceMappingURL=emit.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"emit.d.ts","sourceRoot":"","sources":["../../src/emit.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,WAAW,EAChB,KAAK,YAAY,EAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE7D,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CACjE;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAChE,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;CAChC;AAED,MAAM,MAAM,kBAAkB,GAC1B;IAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAA;CAAE,GACxE;IACE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,KAAK,EAAE;QACd,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;QAC/B,QAAQ,CAAC,SAAS,EAAE,SAAS,cAAc,EAAE,CAAC;KAC/C,CAAC;CACH,CAAC;AAEN,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,kBAAkB,CAoE7E;AA+CD,wBAAgB,cAAc,CAAC,UAAU,EAAE,eAAe,GAAG,MAAM,EAAE,CA4BpE"}
1
+ {"version":3,"file":"emit.d.ts","sourceRoot":"","sources":["../../src/emit.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,YAAY,EAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE7D,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CACjE;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAChE,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;CAChC;AAED,MAAM,MAAM,kBAAkB,GAC1B;IAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAA;CAAE,GACxE;IACE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,KAAK,EAAE;QACd,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;QAC/B,QAAQ,CAAC,SAAS,EAAE,SAAS,cAAc,EAAE,CAAC;KAC/C,CAAC;CACH,CAAC;AAEN,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,kBAAkB,CAqE7E;AA8BD,wBAAgB,gBAAgB,CAAC,CAAC,SAAS;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAClE,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,SAAS,CAAC,EAAE,GACpB,CAAC,GAAG,SAAS,CA2Bf;AAED,wBAAgB,cAAc,CAAC,UAAU,EAAE,eAAe,GAAG,MAAM,EAAE,CA4BpE"}
package/dist/src/emit.js CHANGED
@@ -1,4 +1,4 @@
1
- import { serializeUdl, validateUdl, } from "@hyperscale0/udl";
1
+ import { validateUdl, } from "@hyperscale0/udl";
2
2
  export function lowerGeneralProgram(program) {
3
3
  const candidate = {
4
4
  instruments: program.instruments.map((instrument) => ({
@@ -36,7 +36,9 @@ export function lowerGeneralProgram(program) {
36
36
  ok: false,
37
37
  };
38
38
  }
39
- const validation = validateUdl(candidate);
39
+ const validation = validateUdl(candidate, {
40
+ requireDecisionPartyBindings: true,
41
+ });
40
42
  if (!validation.ok) {
41
43
  const origins = originMapFor(program);
42
44
  return {
@@ -58,7 +60,6 @@ export function lowerGeneralProgram(program) {
58
60
  return {
59
61
  ok: true,
60
62
  value: {
61
- canonicalUdl: serializeUdl(document),
62
63
  document,
63
64
  originMap: originMapFor(program),
64
65
  },
@@ -82,13 +83,29 @@ function unresolvedCompilerMarkers(value, path = "$") {
82
83
  return [...keyIssues, ...unresolvedCompilerMarkers(item, childPath)];
83
84
  });
84
85
  }
85
- function originForUdlPath(path, origins) {
86
- return ([...origins]
87
- .filter((entry) => path === entry.path ||
88
- path.startsWith(`${entry.path}.`) ||
89
- path.startsWith(`${entry.path}[`))
90
- .sort((left, right) => right.path.length - left.path.length)[0] ??
91
- origins.find((entry) => entry.path === "$"));
86
+ export function originForUdlPath(path, origins) {
87
+ let longestMatch;
88
+ let longestLength = -1;
89
+ let rootFallback;
90
+ for (let i = 0; i < origins.length; i += 1) {
91
+ const entry = origins[i];
92
+ const entryPath = entry.path;
93
+ if (rootFallback === undefined && entryPath === "$") {
94
+ rootFallback = entry;
95
+ }
96
+ const entryLen = entryPath.length;
97
+ if (path === entryPath ||
98
+ (path.length > entryLen &&
99
+ (path.charCodeAt(entryLen) === 46 ||
100
+ path.charCodeAt(entryLen) === 91) &&
101
+ path.startsWith(entryPath))) {
102
+ if (entryLen > longestLength) {
103
+ longestMatch = entry;
104
+ longestLength = entryLen;
105
+ }
106
+ }
107
+ }
108
+ return longestMatch ?? rootFallback;
92
109
  }
93
110
  export function requiredFields(instrument) {
94
111
  const explicit = instrument.slots.required;