@hyperscale0/hsx 1.0.0-alpha.6 → 1.0.0-rc.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 (234) hide show
  1. package/CHANGELOG.md +48 -10
  2. package/LICENSING.md +3 -3
  3. package/README.md +37 -149
  4. package/TRADEMARKS.md +4 -4
  5. package/dist/src/ast.d.ts +129 -10
  6. package/dist/src/ast.d.ts.map +1 -1
  7. package/dist/src/cli.d.ts +2 -1
  8. package/dist/src/cli.d.ts.map +1 -1
  9. package/dist/src/cli.js +148 -12
  10. package/dist/src/cli.js.map +1 -1
  11. package/dist/src/compile.d.ts +41 -4
  12. package/dist/src/compile.d.ts.map +1 -1
  13. package/dist/src/compile.js +82 -15
  14. package/dist/src/compile.js.map +1 -1
  15. package/dist/src/cost.d.ts +78 -0
  16. package/dist/src/cost.d.ts.map +1 -0
  17. package/dist/src/cost.js +369 -0
  18. package/dist/src/cost.js.map +1 -0
  19. package/dist/src/diagnostics.d.ts +11 -0
  20. package/dist/src/diagnostics.d.ts.map +1 -0
  21. package/dist/src/diagnostics.js +420 -0
  22. package/dist/src/diagnostics.js.map +1 -0
  23. package/dist/src/emit.d.ts +35 -0
  24. package/dist/src/emit.d.ts.map +1 -0
  25. package/dist/src/emit.js +359 -0
  26. package/dist/src/emit.js.map +1 -0
  27. package/dist/src/entry-overrides.d.ts +17 -3
  28. package/dist/src/entry-overrides.d.ts.map +1 -1
  29. package/dist/src/entry-overrides.js +180 -35
  30. package/dist/src/entry-overrides.js.map +1 -1
  31. package/dist/src/format.d.ts +10 -0
  32. package/dist/src/format.d.ts.map +1 -0
  33. package/dist/src/format.js +183 -0
  34. package/dist/src/format.js.map +1 -0
  35. package/dist/src/index.d.ts +10 -4
  36. package/dist/src/index.d.ts.map +1 -1
  37. package/dist/src/index.js +8 -3
  38. package/dist/src/index.js.map +1 -1
  39. package/dist/src/ir.d.ts +66 -0
  40. package/dist/src/ir.d.ts.map +1 -0
  41. package/dist/src/ir.js +15 -0
  42. package/dist/src/ir.js.map +1 -0
  43. package/dist/src/lex.d.ts +9 -1
  44. package/dist/src/lex.d.ts.map +1 -1
  45. package/dist/src/lex.js +50 -4
  46. package/dist/src/lex.js.map +1 -1
  47. package/dist/src/limits.d.ts +2 -3
  48. package/dist/src/limits.d.ts.map +1 -1
  49. package/dist/src/limits.js +2 -3
  50. package/dist/src/limits.js.map +1 -1
  51. package/dist/src/modules.d.ts +36 -0
  52. package/dist/src/modules.d.ts.map +1 -0
  53. package/dist/src/modules.js +372 -0
  54. package/dist/src/modules.js.map +1 -0
  55. package/dist/src/parse.d.ts.map +1 -1
  56. package/dist/src/parse.js +590 -17
  57. package/dist/src/parse.js.map +1 -1
  58. package/dist/src/typecheck.d.ts +8 -0
  59. package/dist/src/typecheck.d.ts.map +1 -0
  60. package/dist/src/typecheck.js +2958 -0
  61. package/dist/src/typecheck.js.map +1 -0
  62. package/dist/src/version.d.ts +4 -15
  63. package/dist/src/version.d.ts.map +1 -1
  64. package/dist/src/version.js +4 -15
  65. package/dist/src/version.js.map +1 -1
  66. package/docs/README.md +23 -0
  67. package/docs/guide/01-first-program.md +24 -0
  68. package/docs/guide/02-money.md +25 -0
  69. package/docs/guide/03-instruments.md +22 -0
  70. package/docs/guide/04-lifecycles.md +25 -0
  71. package/docs/guide/05-fees-and-splits.md +45 -0
  72. package/docs/guide/06-schedules.md +22 -0
  73. package/docs/guide/07-composition.md +46 -0
  74. package/docs/guide/08-writing-a-module.md +26 -0
  75. package/docs/guide/09-cost.md +24 -0
  76. package/docs/guide/10-diagnostics.md +27 -0
  77. package/docs/llms-full.txt +1738 -0
  78. package/docs/llms.txt +45 -0
  79. package/docs/reference/cli.md +33 -0
  80. package/docs/reference/diagnostics.md +619 -0
  81. package/docs/reference/grammar.md +39 -0
  82. package/docs/reference/std/advance.md +35 -0
  83. package/docs/reference/std/cancellable_booking.md +35 -0
  84. package/docs/reference/std/captured_payment.md +43 -0
  85. package/docs/reference/std/conditional_disbursement.md +33 -0
  86. package/docs/reference/std/credit_facility.md +35 -0
  87. package/docs/reference/std/held_payment.md +64 -0
  88. package/docs/reference/std/instant_transfer.md +30 -0
  89. package/docs/reference/std/metered.md +27 -0
  90. package/docs/reference/std/pooled_split.md +26 -0
  91. package/docs/reference/std/premium_forward.md +39 -0
  92. package/docs/reference/std/reconciled_payout.md +33 -0
  93. package/docs/reference/std/recurring_collection.md +25 -0
  94. package/docs/reference/std/rotating_pool.md +42 -0
  95. package/docs/reference/std/scheduled.md +51 -0
  96. package/docs/reference/std/security_deposit.md +46 -0
  97. package/docs/reference/std/settlement_batch.md +42 -0
  98. package/docs/reference/std/swap.md +46 -0
  99. package/docs/reference/std/threshold_pool.md +47 -0
  100. package/docs/reference/std/weighted_distribution.md +39 -0
  101. package/docs/reference/types.md +20 -0
  102. package/docs/reference/udl-output.md +14 -0
  103. package/docs/sessions/2026-09-02-two-instruments.hsx +21 -0
  104. package/docs/sessions/2026-09-02-two-instruments.md +41 -0
  105. package/examples/01-first-program/README.md +45 -0
  106. package/examples/01-first-program/tip-jar.hsx +17 -0
  107. package/examples/02-imports-and-archetypes/README.md +99 -0
  108. package/examples/02-imports-and-archetypes/photo-booth.hsx +37 -0
  109. package/examples/03-diagnostics/README.md +68 -0
  110. package/examples/03-diagnostics/corner-shop-fixed.hsx +22 -0
  111. package/examples/03-diagnostics/corner-shop.hsx +19 -0
  112. package/examples/04-complete-product/README.md +87 -0
  113. package/examples/04-complete-product/study-hall.hsx +67 -0
  114. package/examples/05-watch-club/README.md +9 -0
  115. package/examples/05-watch-club/watch-club.hsx +124 -0
  116. package/examples/README.md +18 -0
  117. package/examples/advance/README.md +3 -0
  118. package/examples/advance/advance.hsx +13 -0
  119. package/examples/advance/advance.udl +339 -0
  120. package/examples/cancellable_booking/README.md +3 -0
  121. package/examples/cancellable_booking/cancellable_booking.hsx +14 -0
  122. package/examples/cancellable_booking/cancellable_booking.udl +391 -0
  123. package/examples/captured_payment/README.md +3 -0
  124. package/examples/captured_payment/captured_payment.hsx +21 -0
  125. package/examples/captured_payment/captured_payment.udl +677 -0
  126. package/examples/conditional_disbursement/README.md +3 -0
  127. package/examples/conditional_disbursement/conditional_disbursement.hsx +17 -0
  128. package/examples/conditional_disbursement/conditional_disbursement.udl +412 -0
  129. package/examples/cost-table.json +386 -0
  130. package/examples/credit_facility/README.md +3 -0
  131. package/examples/credit_facility/credit_facility.hsx +27 -0
  132. package/examples/credit_facility/credit_facility.udl +1373 -0
  133. package/examples/held_payment/README.md +3 -0
  134. package/examples/held_payment/held_payment.hsx +13 -0
  135. package/examples/held_payment/held_payment.udl +507 -0
  136. package/examples/instant_transfer/README.md +3 -0
  137. package/examples/instant_transfer/instant_transfer.hsx +16 -0
  138. package/examples/instant_transfer/instant_transfer.udl +364 -0
  139. package/examples/metered/README.md +3 -0
  140. package/examples/metered/metered.hsx +13 -0
  141. package/examples/metered/metered.udl +247 -0
  142. package/examples/pooled_split/README.md +3 -0
  143. package/examples/pooled_split/pooled_split.hsx +15 -0
  144. package/examples/pooled_split/pooled_split.udl +425 -0
  145. package/examples/premium_forward/README.md +3 -0
  146. package/examples/premium_forward/premium_forward.hsx +19 -0
  147. package/examples/premium_forward/premium_forward.udl +594 -0
  148. package/examples/reconciled_payout/README.md +3 -0
  149. package/examples/reconciled_payout/reconciled_payout.hsx +13 -0
  150. package/examples/reconciled_payout/reconciled_payout.udl +303 -0
  151. package/examples/recurring_collection/README.md +3 -0
  152. package/examples/recurring_collection/recurring_collection.hsx +21 -0
  153. package/examples/recurring_collection/recurring_collection.udl +1130 -0
  154. package/examples/rotating_pool/README.md +3 -0
  155. package/examples/rotating_pool/rotating_pool.hsx +18 -0
  156. package/examples/rotating_pool/rotating_pool.udl +4352 -0
  157. package/examples/scheduled/README.md +3 -0
  158. package/examples/scheduled/scheduled.hsx +12 -0
  159. package/examples/scheduled/scheduled.udl +335 -0
  160. package/examples/security_deposit/README.md +3 -0
  161. package/examples/security_deposit/security_deposit.hsx +21 -0
  162. package/examples/security_deposit/security_deposit.udl +293 -0
  163. package/examples/settlement_batch/README.md +3 -0
  164. package/examples/settlement_batch/settlement_batch.hsx +19 -0
  165. package/examples/settlement_batch/settlement_batch.udl +753 -0
  166. package/examples/swap/README.md +3 -0
  167. package/examples/swap/swap.hsx +19 -0
  168. package/examples/swap/swap.udl +876 -0
  169. package/examples/threshold_pool/README.md +3 -0
  170. package/examples/threshold_pool/threshold_pool.hsx +16 -0
  171. package/examples/threshold_pool/threshold_pool.udl +667 -0
  172. package/examples/weighted_distribution/README.md +3 -0
  173. package/examples/weighted_distribution/weighted_distribution.hsx +20 -0
  174. package/examples/weighted_distribution/weighted_distribution.udl +337 -0
  175. package/package.json +19 -6
  176. package/skills/hsx/SKILL.md +483 -0
  177. package/src/ast.ts +163 -9
  178. package/src/cli.ts +164 -12
  179. package/src/compile.ts +160 -20
  180. package/src/cost.ts +579 -0
  181. package/src/diagnostics.ts +442 -0
  182. package/src/emit.ts +447 -0
  183. package/src/entry-overrides.ts +263 -48
  184. package/src/format.ts +261 -0
  185. package/src/index.ts +32 -4
  186. package/src/ir.ts +99 -0
  187. package/src/lex.ts +59 -4
  188. package/src/limits.ts +2 -3
  189. package/src/modules.ts +444 -0
  190. package/src/parse.ts +655 -21
  191. package/src/typecheck.ts +3876 -0
  192. package/src/version.ts +4 -16
  193. package/std/SEMANTICS.md +130 -0
  194. package/std/settlements/advance.hsx +177 -0
  195. package/std/settlements/cancellable_booking.hsx +87 -0
  196. package/std/settlements/captured_payment.hsx +144 -0
  197. package/std/settlements/conditional_disbursement.hsx +185 -0
  198. package/std/settlements/credit_facility.hsx +167 -0
  199. package/std/settlements/held_payment.hsx +578 -0
  200. package/std/settlements/index.hsx +3 -0
  201. package/std/settlements/instant_transfer.hsx +190 -0
  202. package/std/settlements/metered.hsx +67 -0
  203. package/std/settlements/pooled_split.hsx +68 -0
  204. package/std/settlements/premium_forward.hsx +257 -0
  205. package/std/settlements/reconciled_payout.hsx +77 -0
  206. package/std/settlements/recurring_collection.hsx +27 -0
  207. package/std/settlements/rotating_pool.hsx +252 -0
  208. package/std/settlements/scheduled.hsx +641 -0
  209. package/std/settlements/security_deposit.hsx +166 -0
  210. package/std/settlements/settlement_batch.hsx +122 -0
  211. package/std/settlements/swap.hsx +1114 -0
  212. package/std/settlements/threshold_pool.hsx +221 -0
  213. package/std/settlements/weighted_distribution.hsx +141 -0
  214. package/dist/src/archetypes.d.ts +0 -17
  215. package/dist/src/archetypes.d.ts.map +0 -1
  216. package/dist/src/archetypes.js +0 -327
  217. package/dist/src/archetypes.js.map +0 -1
  218. package/dist/src/check.d.ts +0 -12
  219. package/dist/src/check.d.ts.map +0 -1
  220. package/dist/src/check.js +0 -1910
  221. package/dist/src/check.js.map +0 -1
  222. package/dist/src/lower.d.ts +0 -146
  223. package/dist/src/lower.d.ts.map +0 -1
  224. package/dist/src/lower.js +0 -4570
  225. package/dist/src/lower.js.map +0 -1
  226. package/dist/src/model.d.ts +0 -467
  227. package/dist/src/model.d.ts.map +0 -1
  228. package/dist/src/model.js +0 -15
  229. package/dist/src/model.js.map +0 -1
  230. package/spec/hsx-ir.schema.json +0 -920
  231. package/src/archetypes.ts +0 -340
  232. package/src/check.ts +0 -2938
  233. package/src/lower.ts +0 -5416
  234. package/src/model.ts +0 -519
@@ -0,0 +1,359 @@
1
+ import { serializeUdl, validateUdl, } from "@hyperscale0/udl";
2
+ export function lowerGeneralProgram(program) {
3
+ const candidate = {
4
+ instruments: program.instruments.map((instrument) => ({
5
+ ...instrument.slots,
6
+ actionOrder: instrument.actions.map((action) => action.name),
7
+ actions: Object.fromEntries(instrument.actions.map((action) => [action.name, action.slots])),
8
+ fields: Object.fromEntries(instrument.fields.map((field) => [field.name, field.schema])),
9
+ id: instrument.id,
10
+ required: requiredFields(instrument),
11
+ })),
12
+ product: program.name,
13
+ subjects: program.subjects.map((subject) => ({
14
+ declaredValue: subject.declaredValue,
15
+ kind: subject.kind,
16
+ schema: subject.schema,
17
+ title: subject.title,
18
+ version: subject.version,
19
+ })),
20
+ title: program.title,
21
+ udl: 1,
22
+ version: 1,
23
+ };
24
+ const frame = frameFor(program);
25
+ const unresolved = [
26
+ ...unresolvedCompilerMarkers(candidate),
27
+ ...unresolvedCompilerMarkers(frame, "$.frame"),
28
+ ];
29
+ if (unresolved.length > 0) {
30
+ const origins = originMapFor(program);
31
+ return {
32
+ issues: unresolved.map(({ marker, path }) => ({
33
+ code: "HSX1603",
34
+ fix: "correct the compile-time block keys or parameter bindings",
35
+ message: `${path}: emitted value contains unresolved compiler marker ${marker}`,
36
+ path,
37
+ span: originForUdlPath(path, origins)?.span ?? program.origin,
38
+ udlCode: "UDL1003",
39
+ })),
40
+ ok: false,
41
+ };
42
+ }
43
+ const validation = validateUdl(candidate);
44
+ if (!validation.ok) {
45
+ const origins = originMapFor(program);
46
+ return {
47
+ issues: validation.issues.map((issue) => {
48
+ const origin = originForUdlPath(issue.path, origins);
49
+ return {
50
+ code: issue.category === "invalid_semantics" ? "HSX1602" : "HSX1601",
51
+ fix: "correct the named clause so it matches the targeted UDL definition",
52
+ message: `${issue.path}: ${issue.message}`,
53
+ path: issue.path,
54
+ span: origin?.span ?? program.origin,
55
+ udlCode: issue.code,
56
+ };
57
+ }),
58
+ ok: false,
59
+ };
60
+ }
61
+ const document = validation.value;
62
+ return {
63
+ ok: true,
64
+ value: {
65
+ canonicalUdl: serializeUdl(document),
66
+ document,
67
+ frame,
68
+ originMap: originMapFor(program),
69
+ },
70
+ };
71
+ }
72
+ const COMPILER_MARKERS = ["__hsx_none__", "invalid_compile_time_name"];
73
+ function unresolvedCompilerMarkers(value, path = "$") {
74
+ if (typeof value === "string") {
75
+ return COMPILER_MARKERS.filter((marker) => value.includes(marker)).map((marker) => ({ marker, path }));
76
+ }
77
+ if (Array.isArray(value)) {
78
+ return value.flatMap((item, index) => unresolvedCompilerMarkers(item, `${path}[${index}]`));
79
+ }
80
+ if (!value || typeof value !== "object")
81
+ return [];
82
+ return Object.entries(value).flatMap(([key, item]) => {
83
+ const childPath = /^[A-Za-z_][A-Za-z0-9_]*$/.test(key)
84
+ ? `${path}.${key}`
85
+ : `${path}[${JSON.stringify(key)}]`;
86
+ const keyIssues = COMPILER_MARKERS.filter((marker) => key.includes(marker)).map((marker) => ({ marker, path: childPath }));
87
+ return [...keyIssues, ...unresolvedCompilerMarkers(item, childPath)];
88
+ });
89
+ }
90
+ function originForUdlPath(path, origins) {
91
+ return ([...origins]
92
+ .filter((entry) => path === entry.path ||
93
+ path.startsWith(`${entry.path}.`) ||
94
+ path.startsWith(`${entry.path}[`))
95
+ .sort((left, right) => right.path.length - left.path.length)[0] ??
96
+ origins.find((entry) => entry.path === "$"));
97
+ }
98
+ export function requiredFields(instrument) {
99
+ const explicit = instrument.slots.required;
100
+ if (Array.isArray(explicit) &&
101
+ explicit.every((field) => typeof field === "string")) {
102
+ return [...explicit];
103
+ }
104
+ const required = new Set(instrument.fields
105
+ .filter((field) => field.required)
106
+ .map((field) => field.name));
107
+ const partyFields = instrument.slots.parties &&
108
+ typeof instrument.slots.parties === "object" &&
109
+ !Array.isArray(instrument.slots.parties)
110
+ ? Object.values(instrument.slots.parties).filter((value) => typeof value === "string" && required.has(value))
111
+ : [];
112
+ return [
113
+ ...new Set(partyFields),
114
+ ...instrument.fields
115
+ .map((field) => field.name)
116
+ .filter((name) => required.has(name) && !partyFields.includes(name)),
117
+ ];
118
+ }
119
+ function frameFor(program) {
120
+ const actors = new Map();
121
+ const moneyEvents = [];
122
+ const design = [];
123
+ const fees = [];
124
+ const mechanics = new Set();
125
+ const eventKeys = new Set();
126
+ const ensureActor = (rawKey, role) => {
127
+ const key = frameKey(rawKey);
128
+ if (!actors.has(key)) {
129
+ actors.set(key, {
130
+ key,
131
+ label: titleize(key),
132
+ maxCount: 1,
133
+ minCount: 1,
134
+ role,
135
+ });
136
+ }
137
+ return key;
138
+ };
139
+ const uniqueEventKey = (raw) => {
140
+ const base = frameKey(raw);
141
+ let key = base;
142
+ let ordinal = 2;
143
+ while (eventKeys.has(key)) {
144
+ const suffix = `_${ordinal}`;
145
+ key = `${base.slice(0, 40 - suffix.length)}${suffix}`;
146
+ ordinal += 1;
147
+ }
148
+ eventKeys.add(key);
149
+ return key;
150
+ };
151
+ for (const instrument of program.instruments) {
152
+ const actorByField = new Map();
153
+ const parties = instrument.slots.parties;
154
+ if (parties && typeof parties === "object" && !Array.isArray(parties)) {
155
+ for (const [role, value] of Object.entries(parties)) {
156
+ if (typeof value !== "string")
157
+ continue;
158
+ const actor = ensureActor(role, frameActorRole(role, "source"));
159
+ actorByField.set(value, actor);
160
+ }
161
+ }
162
+ for (const action of instrument.actions) {
163
+ if (action.slots.due)
164
+ mechanics.add("recurring_billing");
165
+ const moves = action.slots.moves;
166
+ if (!Array.isArray(moves))
167
+ continue;
168
+ moves.forEach((move, index) => {
169
+ if (moneyEvents.length >= 20)
170
+ return;
171
+ if (!move || typeof move !== "object" || Array.isArray(move))
172
+ return;
173
+ const bind = move.bind &&
174
+ typeof move.bind === "object" &&
175
+ !Array.isArray(move.bind)
176
+ ? move.bind
177
+ : {};
178
+ const source = frameActorForBinding(bind.sourceAccountId, actorByField, "source", ensureActor);
179
+ const destination = frameActorForBinding(bind.destinationAccountId, actorByField, "destination", ensureActor);
180
+ const operation = typeof move.operation === "string" ? move.operation : "transfer";
181
+ if (source === "escrow" || destination === "escrow") {
182
+ mechanics.add("escrow");
183
+ }
184
+ moneyEvents.push({
185
+ allocationTotalBps: 0,
186
+ amount: bindingWords(bind.amount) || "the declared amount",
187
+ amountDependencies: [],
188
+ amountMode: "fixed",
189
+ amountSchedule: [],
190
+ distribution: "single",
191
+ fromActor: source,
192
+ key: uniqueEventKey(typeof move.key === "string"
193
+ ? move.key
194
+ : `${instrument.id}_${action.name}_${index + 1}`),
195
+ kind: frameEventKind(operation, source, destination),
196
+ label: `${titleize(action.name)} movement`,
197
+ occurrence: action.slots.due ? "repeatable" : "once",
198
+ timing: action.name === "create" ? "on_create" : "on_lifecycle",
199
+ toActor: destination,
200
+ trigger: `when ${action.name.replaceAll("_", " ")} runs`,
201
+ });
202
+ });
203
+ }
204
+ if (design.length < 10) {
205
+ design.push(`${instrument.id}: ${instrument.fields.length} fields and ${instrument.actions.length} actions`);
206
+ }
207
+ const feeRules = instrument.slots.feeRules;
208
+ if (Array.isArray(feeRules)) {
209
+ feeRules.forEach((fee, index) => {
210
+ if (fees.length >= 4)
211
+ return;
212
+ if (!fee || typeof fee !== "object" || Array.isArray(fee))
213
+ return;
214
+ fees.push({
215
+ label: `${titleize(instrument.id)} fee ${index + 1}`,
216
+ on: typeof fee.baseField === "string"
217
+ ? fee.baseField
218
+ : `${instrument.id} movement`,
219
+ structure: typeof fee.position === "string"
220
+ ? `${fee.position.replaceAll("_", " ")} fee`
221
+ : "declared fee",
222
+ });
223
+ });
224
+ }
225
+ }
226
+ if (actors.size === 0)
227
+ ensureActor("platform", "platform");
228
+ if (moneyEvents.length === 0) {
229
+ const actor = actors.keys().next().value ?? "platform";
230
+ moneyEvents.push({
231
+ allocationTotalBps: 0,
232
+ amount: "the declared settlement amount",
233
+ amountDependencies: [],
234
+ amountMode: "fixed",
235
+ amountSchedule: [],
236
+ distribution: "single",
237
+ fromActor: actor,
238
+ key: uniqueEventKey(`${program.name}_create`),
239
+ kind: "charge",
240
+ label: `${program.title} movement`,
241
+ occurrence: "once",
242
+ timing: "on_create",
243
+ toActor: actor,
244
+ trigger: "when the settlement is created",
245
+ });
246
+ }
247
+ if (mechanics.size === 0)
248
+ mechanics.add("escrow");
249
+ return {
250
+ actors: [...actors.values()],
251
+ confidence: "high",
252
+ conservationGroups: [],
253
+ design,
254
+ feePolicy: fees.length > 0 ? "defined" : "none",
255
+ fees,
256
+ headline: program.title,
257
+ mechanics: [...mechanics],
258
+ moneyEvents,
259
+ offPlatform: [],
260
+ openQuestions: [],
261
+ rules: [],
262
+ subjects: program.subjects.map((subject) => ({
263
+ kind: subject.kind,
264
+ title: subject.title,
265
+ })),
266
+ summary: `${program.title} compiles ${program.instruments.length} financial instrument${program.instruments.length === 1 ? "" : "s"}.`,
267
+ };
268
+ }
269
+ function frameActorForBinding(value, actorByField, direction, ensureActor) {
270
+ const path = bindingWords(value);
271
+ if (path.includes("escrowAccountId"))
272
+ return "escrow";
273
+ const field = path.startsWith("fields.")
274
+ ? path.slice("fields.".length)
275
+ : path;
276
+ const declared = actorByField.get(field);
277
+ if (declared)
278
+ return declared;
279
+ if (field.toLowerCase().includes("platform")) {
280
+ return ensureActor("platform", "platform");
281
+ }
282
+ return ensureActor(direction === "source" ? "payer" : "beneficiary", direction === "source" ? "payer" : "beneficiary");
283
+ }
284
+ function frameActorRole(role, direction) {
285
+ return [
286
+ "payer",
287
+ "beneficiary",
288
+ "platform",
289
+ "provider",
290
+ "guardian",
291
+ "holder",
292
+ ].includes(role)
293
+ ? role
294
+ : direction === "source"
295
+ ? "payer"
296
+ : "beneficiary";
297
+ }
298
+ function frameEventKind(operation, source, destination) {
299
+ if (operation.endsWith(".reserve"))
300
+ return "hold";
301
+ if (operation.endsWith(".void") || operation.endsWith(".return")) {
302
+ return "refund";
303
+ }
304
+ if (operation.startsWith("payout."))
305
+ return "payout";
306
+ if (source === "escrow" || destination === "escrow")
307
+ return "release";
308
+ return "charge";
309
+ }
310
+ function frameKey(value) {
311
+ const snake = value
312
+ .replace(/([a-z0-9])([A-Z])/g, "$1_$2")
313
+ .replace(/[^A-Za-z0-9]+/g, "_")
314
+ .replace(/^_+|_+$/g, "")
315
+ .toLowerCase();
316
+ const leading = /^[a-z]/.test(snake) ? snake : `event_${snake}`;
317
+ return leading.slice(0, 40) || "event";
318
+ }
319
+ function bindingWords(value) {
320
+ if (typeof value === "string")
321
+ return value;
322
+ if (!value || typeof value !== "object" || Array.isArray(value))
323
+ return "";
324
+ const binding = value;
325
+ if (binding.from === "const" && typeof binding.value === "string")
326
+ return binding.value;
327
+ if (typeof binding.path === "string")
328
+ return binding.path;
329
+ return "";
330
+ }
331
+ function originMapFor(program) {
332
+ const entries = [{ path: "$", span: program.origin }];
333
+ program.subjects.forEach((subject, index) => {
334
+ entries.push({ path: `$.subjects[${index}]`, span: subject.origin });
335
+ });
336
+ program.instruments.forEach((instrument, index) => {
337
+ const base = `$.instruments[${index}]`;
338
+ entries.push({ path: base, span: instrument.origin });
339
+ instrument.fields.forEach((field) => {
340
+ entries.push({
341
+ path: `${base}.fields.${field.name}`,
342
+ span: field.origin,
343
+ });
344
+ });
345
+ instrument.actions.forEach((action) => {
346
+ entries.push({
347
+ path: `${base}.actions.${action.name}`,
348
+ span: action.origin,
349
+ });
350
+ });
351
+ });
352
+ return entries;
353
+ }
354
+ function titleize(value) {
355
+ return value
356
+ .replaceAll("_", " ")
357
+ .replace(/\b[a-z]/g, (letter) => letter.toUpperCase());
358
+ }
359
+ //# sourceMappingURL=emit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emit.js","sourceRoot":"","sources":["../../src/emit.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Data-driven replacement of existing settlement entries. This is not syntax:
3
3
  * callers select a slot that already exists in the parsed program, replace its
4
- * literal value, then run the ordinary checker and lowerer again.
4
+ * literal value, then run the ordinary general compiler again.
5
5
  */
6
6
  import type { Program } from "./ast.ts";
7
7
  export type ProgramEntryOverrideValue = {
@@ -10,11 +10,25 @@ export type ProgramEntryOverrideValue = {
10
10
  } | {
11
11
  readonly kind: "basis_points";
12
12
  readonly value: number;
13
+ } | {
14
+ readonly currency: string;
15
+ readonly kind: "money";
16
+ readonly value: number;
17
+ } | {
18
+ readonly kind: "duration";
19
+ readonly value: string;
13
20
  };
14
- export interface ProgramEntryOverrideBounds {
21
+ export type ProgramEntryOverrideBounds = {
15
22
  readonly max: number;
16
23
  readonly min: number;
17
- }
24
+ } | {
25
+ readonly currency: string;
26
+ readonly max: number;
27
+ readonly min: number;
28
+ } | {
29
+ readonly max: string;
30
+ readonly min: string;
31
+ };
18
32
  export interface ProgramEntryOverride {
19
33
  readonly bounds: ProgramEntryOverrideBounds;
20
34
  readonly settlement: string;
@@ -1 +1 @@
1
- {"version":3,"file":"entry-overrides.d.ts","sourceRoot":"","sources":["../../src/entry-overrides.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAA0B,OAAO,EAAkB,MAAM,UAAU,CAAC;AAEhF,MAAM,MAAM,yBAAyB,GACjC;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACpD;IAAE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9D,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,EAAE,0BAA0B,CAAC;IAC5C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,gFAAgF;IAChF,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IAC9C,QAAQ,CAAC,KAAK,EAAE,yBAAyB,CAAC;CAC3C;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,IAAI,EACT,gBAAgB,GAChB,gBAAgB,GAChB,eAAe,GACf,oBAAoB,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC;AAED,KAAK,cAAc,GACf;IACE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B,GACD;IACE,QAAQ,CAAC,MAAM,EAAE,SAAS,yBAAyB,EAAE,CAAC;IACtD,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;CACpB,CAAC;AAsHN;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,SAAS,oBAAoB,EAAE,GACzC,cAAc,CA2ChB"}
1
+ {"version":3,"file":"entry-overrides.d.ts","sourceRoot":"","sources":["../../src/entry-overrides.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAKV,OAAO,EACR,MAAM,UAAU,CAAC;AAElB,MAAM,MAAM,yBAAyB,GACjC;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACpD;IAAE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACzD;IACE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1D,MAAM,MAAM,0BAA0B,GAClC;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAC9C;IACE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB,GACD;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,EAAE,0BAA0B,CAAC;IAC5C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,gFAAgF;IAChF,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IAC9C,QAAQ,CAAC,KAAK,EAAE,yBAAyB,CAAC;CAC3C;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,IAAI,EACT,gBAAgB,GAChB,gBAAgB,GAChB,eAAe,GACf,oBAAoB,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC;AAED,KAAK,cAAc,GACf;IACE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B,GACD;IACE,QAAQ,CAAC,MAAM,EAAE,SAAS,yBAAyB,EAAE,CAAC;IACtD,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;CACpB,CAAC;AAgTN;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,SAAS,oBAAoB,EAAE,GACzC,cAAc,CAwDhB"}