@hyperscale0/hsx 1.0.128 → 1.0.130
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.
- package/dist/src/cli.js +1 -1
- package/dist/src/cli.js.map +1 -1
- package/dist/src/compile.d.ts.map +1 -1
- package/dist/src/compile.js +96 -10
- package/dist/src/compile.js.map +1 -1
- package/dist/src/examples-bundle.js +3 -3
- package/dist/src/examples-bundle.js.map +1 -1
- package/dist/src/parse.js +4 -1
- package/dist/src/parse.js.map +1 -1
- package/dist/src/std-bundle.js +5 -5
- package/dist/src/std-bundle.js.map +1 -1
- package/docs/README.md +45 -20
- package/examples/cards.hsx +4 -0
- package/examples/collections.hsx +4 -0
- package/examples/cost-table.json +80 -56
- package/examples/insurance.hsx +2 -1
- package/package.json +4 -4
- package/src/cli.ts +1 -1
- package/src/compile.ts +146 -10
- package/src/examples-bundle.ts +3 -3
- package/src/parse.ts +4 -1
- package/src/std-bundle.ts +5 -5
- package/std/booking.hsx +1 -1
- package/std/cards.hsx +5 -3
- package/std/escrow.hsx +18 -9
- package/std/financing.hsx +81 -16
- package/std/wallet.hsx +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"std-bundle.js","sourceRoot":"","sources":["../../src/std-bundle.ts"],"names":[],"mappings":"AAAA,oEAAoE;AAEpE,MAAM,CAAC,MAAM,iBAAiB,GAAgC,IAAI,GAAG,CAAiB;IACpF,CAAC,aAAa,EAAE,soLAAsoL,CAAC;IACvpL,CAAC,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"std-bundle.js","sourceRoot":"","sources":["../../src/std-bundle.ts"],"names":[],"mappings":"AAAA,oEAAoE;AAEpE,MAAM,CAAC,MAAM,iBAAiB,GAAgC,IAAI,GAAG,CAAiB;IACpF,CAAC,aAAa,EAAE,soLAAsoL,CAAC;IACvpL,CAAC,WAAW,EAAE,63KAA63K,CAAC;IAC54K,CAAC,iBAAiB,EAAE,2sNAA2sN,CAAC;IAChuN,CAAC,YAAY,EAAE,60LAA60L,CAAC;IAC71L,CAAC,eAAe,EAAE,8v2EAA8v2E,CAAC;IACjx2E,CAAC,eAAe,EAAE,uxLAAuxL,CAAC;IAC1yL,CAAC,aAAa,EAAE,qwTAAqwT,CAAC;IACtxT,CAAC,iBAAiB,EAAE,mpTAAmpT,CAAC;IACxqT,CAAC,WAAW,EAAE,+1VAA+1V,CAAC;IAC92V,CAAC,eAAe,EAAE,+q2BAA+q2B,CAAC;IACls2B,CAAC,aAAa,EAAE,85JAA85J,CAAC;IAC/6J,CAAC,YAAY,EAAE,s2HAAs2H,CAAC;CACv3H,CAAC,CAAC"}
|
package/docs/README.md
CHANGED
|
@@ -110,11 +110,15 @@ executor. Compilation cannot establish balances, permissions or provider readine
|
|
|
110
110
|
Every attached party parameter binds to `owner`, `actor`, `operator`, a declared
|
|
111
111
|
business, or a declared staff party with a supported role. Configure declared
|
|
112
112
|
business participants per Build. The host binds a declared business to an
|
|
113
|
-
organization customer
|
|
114
|
-
|
|
113
|
+
organization customer of this company, and that business must be a customer with
|
|
114
|
+
an account before the Build that binds it is saved. It also needs an open balance
|
|
115
|
+
account in this Product before it takes part in a payment. Declared person
|
|
115
116
|
parties cannot bind attachments.
|
|
116
117
|
`owner` is the object's resolved customer or business, `actor` is the authenticated
|
|
117
|
-
caller,
|
|
118
|
+
caller, or the customer a Product key or member names in `onBehalfOf`, and
|
|
119
|
+
`operator` is the program operator. `programOperator`, the default
|
|
120
|
+
of many std party parameters, is the same company: it resolves to the Product's
|
|
121
|
+
own company, and a Build binding for it is ignored. A parameter with one of these
|
|
118
122
|
names binds by name. Other required party parameters use a same-named eligible
|
|
119
123
|
declaration, a header default, or an explicit binding. An optional party parameter
|
|
120
124
|
stays unset unless the attachment binds it. Explicit bindings take precedence.
|
|
@@ -128,7 +132,10 @@ compiler freezes the adapter identity, digest and requirements. An unavailable
|
|
|
128
132
|
declaration leaves a null snapshot in compiled output. Product creation and
|
|
129
133
|
recomposition reject unresolved or changed declarations during Build admission.
|
|
130
134
|
Execution checks the frozen declaration too; later adapter unavailability can
|
|
131
|
-
block actions on an already saved Build.
|
|
135
|
+
block actions on an already saved Build. A boundary adapter, such
|
|
136
|
+
as `conformance_boundary`, only binds its accounts and needs no evidence. Any
|
|
137
|
+
other adapter also needs a matching `requires evidence` rule on the action, or
|
|
138
|
+
preview and execution refuse with `subject_adapter_unbound`.
|
|
132
139
|
|
|
133
140
|
An attachment can use `rename { price: salePrice }` to separate requirements with
|
|
134
141
|
different meanings. Matching names must match types and constraints. The compiler
|
|
@@ -244,6 +251,13 @@ a literal. `requires unique "order" on [self.order]` fixes an identity namespace
|
|
|
244
251
|
`requires count of { instrument: child, reference: "parent", anchor: self.id,
|
|
245
252
|
states: [pending], limit: 12 } == 12` checks a typed selection; `sum "amount" of`
|
|
246
253
|
uses the same selection syntax. `invariants` accepts these requirement expressions.
|
|
254
|
+
The reference is a `ref` field or a party account; `reference: "traveller",
|
|
255
|
+
anchor: self.traveller` selects every record of the same traveller. `overlaps:
|
|
256
|
+
{ start: departure, end: returning, from: { field: self.departure }, until: {
|
|
257
|
+
field: self.returning } }` keeps rows whose own `[departure, returning)` period
|
|
258
|
+
meets the range, so a stay ending on the 8th and one starting on the 8th do not
|
|
259
|
+
overlap. `count of { instrument: current(), ..., overlaps: ... } <= 1` stops one
|
|
260
|
+
traveller holding two trips on the same dates.
|
|
247
261
|
`requires hours self.now between 8 and 20 timezone "Asia/Riyadh"` checks local hours.
|
|
248
262
|
`requires evidence self.payer family registry check ownership result verified
|
|
249
263
|
maxAge 1d` requires a recent completed provider check.
|
|
@@ -393,27 +407,30 @@ Read the instrument's states, time gates and moves before promising a money
|
|
|
393
407
|
outcome. A compiler pass does not prove that required actions are exposed,
|
|
394
408
|
adapters are bound, participants have funds, or the flow can finish.
|
|
395
409
|
|
|
396
|
-
| Instrument | Behavior
|
|
397
|
-
| ------------------------------------------ |
|
|
398
|
-
| `financing.installments` | `share` allocates collected profit to a cash payable owned by `capital`. It does not itself pay operator income.
|
|
399
|
-
| `financing.limits` | `per_borrower` caps outstanding principal. Both borrower and portfolio limits must be approved before disbursement; attaching them does not approve them.
|
|
400
|
-
| `lending.round` | The target is the linked plan's principal. Closing requires commitments and held funds to equal that amount.
|
|
401
|
-
| `lending.distribution` | Cash distribution needs an eligible recorded settlement, `prepare_cash`, one share record per funded commitment, then `distribute_cash`. Attaching it moves nothing.
|
|
402
|
-
| `insurance.cover.slice` | `collect` credits premium net of commission to the insurer account. The tenant retains commission. `refund` returns both portions; claims reserve insurer funds. External settlement uses the boundary protocol.
|
|
403
|
-
| `financing.installments`, `savings.circle` | Supply explicit date lists when creating agreements. A term count does not generate a monthly calendar. Savings supports at most 60 distinct member seats.
|
|
404
|
-
| `escrow.hold` | `fund` takes the whole price. Financing into pending escrow collects the remaining down payment and adds capital principal at disbursement; `fund` is not a down-payment checkout.
|
|
405
|
-
| `escrow.hold` | Acceptance timeout enters `disputed` without paying the seller. Delivery and return verification belong to `payee`; rebinding it also changes who receives accepted funds.
|
|
406
|
-
| `escrow.hold` | `deliver_within` (default `14d`) starts at funding. After it passes without delivery, an exposed `refund_undelivered` lets the payer take the whole held price back. Nothing runs it automatically.
|
|
407
|
-
| `wallet.balance` | `topup_fee` (default `0%`) takes a floored percentage of each top-up for the Company. At `1%`, a 100.00 top-up credits 99.00 and earns 1.00.
|
|
408
|
-
| `booking.reservation` | The balance is payable only from `deposit_paid`, so a cancelled booking never takes it. `middle_forfeit` and `late_forfeit` default to `0%`, so every cancellation returns all held money until the author sets them.
|
|
409
|
-
| `financing.late_charge` | `fine` is a fixed money amount, not a percentage of overdue principal.
|
|
410
|
-
| `cards.card` | `spend_limit` is a per-authorization ceiling, not a monthly aggregate.
|
|
410
|
+
| Instrument | Behavior |
|
|
411
|
+
| ------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
412
|
+
| `financing.installments` | `share` allocates collected profit to a cash payable owned by `capital`. It does not itself pay operator income. |
|
|
413
|
+
| `financing.limits` | `per_borrower` caps outstanding principal. Both borrower and portfolio limits must be approved before disbursement; attaching them does not approve them. |
|
|
414
|
+
| `lending.round` | The target is the linked plan's principal. Closing requires commitments and held funds to equal that amount. |
|
|
415
|
+
| `lending.distribution` | Cash distribution needs an eligible recorded settlement, `prepare_cash`, one share record per funded commitment, then `distribute_cash`. Attaching it moves nothing. |
|
|
416
|
+
| `insurance.cover.slice` | `collect` credits premium net of commission to the insurer account. The tenant retains commission. `refund` returns both portions; claims reserve insurer funds. External settlement uses the boundary protocol. |
|
|
417
|
+
| `financing.installments`, `savings.circle` | Supply explicit date lists when creating agreements. A term count does not generate a monthly calendar. Savings supports at most 60 distinct member seats. |
|
|
418
|
+
| `escrow.hold` | `fund` takes the whole price. Financing into pending escrow collects the remaining down payment and adds capital principal at disbursement; `fund` is not a down-payment checkout. |
|
|
419
|
+
| `escrow.hold` | Acceptance timeout enters `disputed` without paying the seller. Delivery and return verification belong to `payee`; rebinding it also changes who receives accepted funds. |
|
|
420
|
+
| `escrow.hold` | `deliver_within` (default `14d`) starts at funding. After it passes without delivery, an exposed `refund_undelivered` lets the payer take the whole held price back. Nothing runs it automatically. |
|
|
421
|
+
| `wallet.balance` | `topup_fee` (default `0%`) takes a floored percentage of each top-up for the Company. At `1%`, a 100.00 top-up credits 99.00 and earns 1.00. |
|
|
422
|
+
| `booking.reservation` | The balance is payable only from `deposit_paid`, so a cancelled booking never takes it. `middle_forfeit` and `late_forfeit` default to `0%`, so every cancellation returns all held money until the author sets them. At departure the clock completes a paid booking and lapses an unpaid one on `late_forfeit`. |
|
|
423
|
+
| `financing.late_charge` | `fine` is a fixed money amount, not a percentage of overdue principal. |
|
|
424
|
+
| `cards.card` | `spend_limit` is a per-authorization ceiling, not a monthly aggregate. |
|
|
411
425
|
|
|
412
426
|
A seller-owned marketplace object can declare `entryActions: [create_order]`
|
|
413
427
|
when `create_order` exposes an attachment's create action with its buyer bound
|
|
414
428
|
to `actor`. This admits active enrolled customers to that action. The default
|
|
415
429
|
is closed. A retained buyer can read the record and run its buyer actions;
|
|
416
430
|
the seller remains owner. Entry never grants access to an existing escrow.
|
|
431
|
+
Without entry actions, the company runs a two-customer sale from its Product
|
|
432
|
+
key: create the record with `onBehalfOf` naming the seller, then run the buyer's
|
|
433
|
+
steps with `onBehalfOf` naming the buyer.
|
|
417
434
|
|
|
418
435
|
`financing.limits` and `financing.portfolio_limit` declare `scope: product`.
|
|
419
436
|
Create and approve the portfolio limit once per Product and the borrower limit
|
|
@@ -481,7 +498,8 @@ cost assessment is a separate record.
|
|
|
481
498
|
|
|
482
499
|
Bind `insurance.cover.broker` to the agency that receives commission. Collection
|
|
483
500
|
pays the insurer's net premium and the broker's commission as two moves. Refunds
|
|
484
|
-
reverse those same portions. The default broker is the
|
|
501
|
+
reverse those same portions. The default broker, `programOperator`, is the
|
|
502
|
+
Product's own company and needs no binding.
|
|
485
503
|
`claim.deny` accepts only `submitted`; after approval, `pay` or expiry consumes
|
|
486
504
|
the reservation. `claim_limit` is the sum insured, supplied per cover at creation:
|
|
487
505
|
approved and paid claims on one cover never total more. `adapter` names a
|
|
@@ -493,6 +511,13 @@ separately for eligible premium refunds before the paid period starts. Active
|
|
|
493
511
|
and expired premium periods are excluded. A card transaction needs a captured
|
|
494
512
|
authorization and its own record before refund, but no authorization-expiry wait.
|
|
495
513
|
|
|
514
|
+
A booking runs two clock actions at departure. `complete` takes a `paid`
|
|
515
|
+
booking and pays the held money to `operator`. `lapse` takes a booking still
|
|
516
|
+
`reserved` or `deposit_paid` to `cancelled`: `operator` keeps `late_forfeit` of
|
|
517
|
+
the held money and the customer gets the rest back. An unpaid balance at
|
|
518
|
+
departure therefore costs the customer the same as `cancel_late`, and with the
|
|
519
|
+
default `0%` it costs nothing. Nothing stays held after departure.
|
|
520
|
+
|
|
496
521
|
A savings membership becomes `received` after its pot payout. Its contribution
|
|
497
522
|
records become `paid` independently. Future contributions can remain pending
|
|
498
523
|
after the member receives the pot; paying a contribution does not advance their
|
package/examples/cards.hsx
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
// A company issues expense cards to employees and reserves each supplier payment before capture.
|
|
2
2
|
program team_expense_cards "Team expense cards"
|
|
3
3
|
use cards
|
|
4
|
+
// supplier is a business this program declares, so plan needs {"partyBindings":{"supplier":"<partyId>"}}.
|
|
5
|
+
// That partyId is an organization customer's: create the Product from this source without the payment
|
|
6
|
+
// and receipt attachments, add the customer with customer.create, activate its access, open its
|
|
7
|
+
// customer_balance account, then compose this source with the binding.
|
|
4
8
|
party supplier: business
|
|
5
9
|
|
|
6
10
|
object employee "Employee card" {
|
package/examples/collections.hsx
CHANGED
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
program business_collections "Small business collections"
|
|
3
3
|
use collections
|
|
4
4
|
use financing
|
|
5
|
+
// agency is a business this program declares, so plan needs {"partyBindings":{"agency":"<partyId>"}}.
|
|
6
|
+
// That partyId is an organization customer's: create the Product from this source without the recovery
|
|
7
|
+
// and contact attachments, add the customer with customer.create, activate its access, open its
|
|
8
|
+
// customer_balance account, then compose this source with the binding.
|
|
5
9
|
party agency: business
|
|
6
10
|
|
|
7
11
|
object facility "Business loan" {
|
package/examples/cost-table.json
CHANGED
|
@@ -4,15 +4,14 @@
|
|
|
4
4
|
"declaredMeters": [
|
|
5
5
|
"account.active_month",
|
|
6
6
|
"instrument.event.count",
|
|
7
|
-
"transfer.internal.count"
|
|
8
|
-
"transfer.internal.volume_sar"
|
|
7
|
+
"transfer.internal.count"
|
|
9
8
|
],
|
|
10
|
-
"effectiveTableDigest": "
|
|
9
|
+
"effectiveTableDigest": "e58f5c33766a44254880f328f1f9fb886b63d510bf3dfa0f9fb529a0638d74c6",
|
|
11
10
|
"fixed": {
|
|
12
11
|
"activationBaseMinor": "500000",
|
|
13
|
-
"activationPerPointMinor": "
|
|
12
|
+
"activationPerPointMinor": "10000",
|
|
14
13
|
"monthlyBaseMinor": "100000",
|
|
15
|
-
"monthlyPerPointMinor": "
|
|
14
|
+
"monthlyPerPointMinor": "2000",
|
|
16
15
|
"weights": {
|
|
17
16
|
"aggregate_invariant": 2,
|
|
18
17
|
"flow": 1,
|
|
@@ -69,7 +68,7 @@
|
|
|
69
68
|
"bps": 0,
|
|
70
69
|
"meter": "account.active_month",
|
|
71
70
|
"payer": "product",
|
|
72
|
-
"perEventMinor": "
|
|
71
|
+
"perEventMinor": "500",
|
|
73
72
|
"settlement": "invoice",
|
|
74
73
|
"signature": "meters.account.active_month"
|
|
75
74
|
},
|
|
@@ -77,18 +76,25 @@
|
|
|
77
76
|
"bps": 0,
|
|
78
77
|
"meter": "instrument.event.count",
|
|
79
78
|
"payer": "product",
|
|
80
|
-
"perEventMinor": "
|
|
79
|
+
"perEventMinor": "25",
|
|
81
80
|
"settlement": "invoice",
|
|
82
81
|
"signature": "meters.instrument.event.count"
|
|
83
82
|
},
|
|
84
83
|
{
|
|
85
|
-
"bps":
|
|
84
|
+
"bps": 0,
|
|
86
85
|
"meter": "transfer.internal.count",
|
|
87
|
-
"payer": "
|
|
88
|
-
"perEventMinor": "
|
|
89
|
-
"settlement": "
|
|
90
|
-
"signature": "
|
|
91
|
-
|
|
86
|
+
"payer": "product",
|
|
87
|
+
"perEventMinor": "25",
|
|
88
|
+
"settlement": "invoice",
|
|
89
|
+
"signature": "meters.transfer.internal.count"
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"bps": 0,
|
|
93
|
+
"meter": "instrument.event.count",
|
|
94
|
+
"payer": "product",
|
|
95
|
+
"perEventMinor": "0",
|
|
96
|
+
"settlement": "invoice",
|
|
97
|
+
"signature": "moves.transfer.internal"
|
|
92
98
|
},
|
|
93
99
|
{
|
|
94
100
|
"bps": 0,
|
|
@@ -155,22 +161,21 @@
|
|
|
155
161
|
"signature": "unwinds.void"
|
|
156
162
|
}
|
|
157
163
|
],
|
|
158
|
-
"version": "2026-09-
|
|
164
|
+
"version": "2026-09-27.1"
|
|
159
165
|
},
|
|
160
166
|
{
|
|
161
167
|
"currency": "USD",
|
|
162
168
|
"declaredMeters": [
|
|
163
169
|
"account.active_month",
|
|
164
170
|
"instrument.event.count",
|
|
165
|
-
"transfer.internal.count"
|
|
166
|
-
"transfer.internal.volume_usd"
|
|
171
|
+
"transfer.internal.count"
|
|
167
172
|
],
|
|
168
|
-
"effectiveTableDigest": "
|
|
173
|
+
"effectiveTableDigest": "f2845819ad077745ed5d0af924b33f34210b20da703522e78aa2629d9be5040e",
|
|
169
174
|
"fixed": {
|
|
170
175
|
"activationBaseMinor": "133300",
|
|
171
|
-
"activationPerPointMinor": "
|
|
176
|
+
"activationPerPointMinor": "2700",
|
|
172
177
|
"monthlyBaseMinor": "26700",
|
|
173
|
-
"monthlyPerPointMinor": "
|
|
178
|
+
"monthlyPerPointMinor": "500",
|
|
174
179
|
"weights": {
|
|
175
180
|
"aggregate_invariant": 2,
|
|
176
181
|
"flow": 1,
|
|
@@ -227,7 +232,7 @@
|
|
|
227
232
|
"bps": 0,
|
|
228
233
|
"meter": "account.active_month",
|
|
229
234
|
"payer": "product",
|
|
230
|
-
"perEventMinor": "
|
|
235
|
+
"perEventMinor": "133",
|
|
231
236
|
"settlement": "invoice",
|
|
232
237
|
"signature": "meters.account.active_month"
|
|
233
238
|
},
|
|
@@ -235,18 +240,25 @@
|
|
|
235
240
|
"bps": 0,
|
|
236
241
|
"meter": "instrument.event.count",
|
|
237
242
|
"payer": "product",
|
|
238
|
-
"perEventMinor": "
|
|
243
|
+
"perEventMinor": "7",
|
|
239
244
|
"settlement": "invoice",
|
|
240
245
|
"signature": "meters.instrument.event.count"
|
|
241
246
|
},
|
|
242
247
|
{
|
|
243
|
-
"bps":
|
|
248
|
+
"bps": 0,
|
|
244
249
|
"meter": "transfer.internal.count",
|
|
245
|
-
"payer": "
|
|
246
|
-
"perEventMinor": "
|
|
247
|
-
"settlement": "
|
|
248
|
-
"signature": "
|
|
249
|
-
|
|
250
|
+
"payer": "product",
|
|
251
|
+
"perEventMinor": "7",
|
|
252
|
+
"settlement": "invoice",
|
|
253
|
+
"signature": "meters.transfer.internal.count"
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
"bps": 0,
|
|
257
|
+
"meter": "instrument.event.count",
|
|
258
|
+
"payer": "product",
|
|
259
|
+
"perEventMinor": "0",
|
|
260
|
+
"settlement": "invoice",
|
|
261
|
+
"signature": "moves.transfer.internal"
|
|
250
262
|
},
|
|
251
263
|
{
|
|
252
264
|
"bps": 0,
|
|
@@ -313,22 +325,21 @@
|
|
|
313
325
|
"signature": "unwinds.void"
|
|
314
326
|
}
|
|
315
327
|
],
|
|
316
|
-
"version": "2026-09-
|
|
328
|
+
"version": "2026-09-27.1"
|
|
317
329
|
},
|
|
318
330
|
{
|
|
319
331
|
"currency": "EUR",
|
|
320
332
|
"declaredMeters": [
|
|
321
333
|
"account.active_month",
|
|
322
334
|
"instrument.event.count",
|
|
323
|
-
"transfer.internal.count"
|
|
324
|
-
"transfer.internal.volume_eur"
|
|
335
|
+
"transfer.internal.count"
|
|
325
336
|
],
|
|
326
|
-
"effectiveTableDigest": "
|
|
337
|
+
"effectiveTableDigest": "f741132e1aa38a860d855a83f20f12c0ec8a7ec5379117c407799e2012e63335",
|
|
327
338
|
"fixed": {
|
|
328
339
|
"activationBaseMinor": "125000",
|
|
329
|
-
"activationPerPointMinor": "
|
|
340
|
+
"activationPerPointMinor": "2500",
|
|
330
341
|
"monthlyBaseMinor": "25000",
|
|
331
|
-
"monthlyPerPointMinor": "
|
|
342
|
+
"monthlyPerPointMinor": "500",
|
|
332
343
|
"weights": {
|
|
333
344
|
"aggregate_invariant": 2,
|
|
334
345
|
"flow": 1,
|
|
@@ -385,7 +396,7 @@
|
|
|
385
396
|
"bps": 0,
|
|
386
397
|
"meter": "account.active_month",
|
|
387
398
|
"payer": "product",
|
|
388
|
-
"perEventMinor": "
|
|
399
|
+
"perEventMinor": "125",
|
|
389
400
|
"settlement": "invoice",
|
|
390
401
|
"signature": "meters.account.active_month"
|
|
391
402
|
},
|
|
@@ -393,18 +404,25 @@
|
|
|
393
404
|
"bps": 0,
|
|
394
405
|
"meter": "instrument.event.count",
|
|
395
406
|
"payer": "product",
|
|
396
|
-
"perEventMinor": "
|
|
407
|
+
"perEventMinor": "6",
|
|
397
408
|
"settlement": "invoice",
|
|
398
409
|
"signature": "meters.instrument.event.count"
|
|
399
410
|
},
|
|
400
411
|
{
|
|
401
|
-
"bps":
|
|
412
|
+
"bps": 0,
|
|
402
413
|
"meter": "transfer.internal.count",
|
|
403
|
-
"payer": "
|
|
404
|
-
"perEventMinor": "
|
|
405
|
-
"settlement": "
|
|
406
|
-
"signature": "
|
|
407
|
-
|
|
414
|
+
"payer": "product",
|
|
415
|
+
"perEventMinor": "6",
|
|
416
|
+
"settlement": "invoice",
|
|
417
|
+
"signature": "meters.transfer.internal.count"
|
|
418
|
+
},
|
|
419
|
+
{
|
|
420
|
+
"bps": 0,
|
|
421
|
+
"meter": "instrument.event.count",
|
|
422
|
+
"payer": "product",
|
|
423
|
+
"perEventMinor": "0",
|
|
424
|
+
"settlement": "invoice",
|
|
425
|
+
"signature": "moves.transfer.internal"
|
|
408
426
|
},
|
|
409
427
|
{
|
|
410
428
|
"bps": 0,
|
|
@@ -471,22 +489,21 @@
|
|
|
471
489
|
"signature": "unwinds.void"
|
|
472
490
|
}
|
|
473
491
|
],
|
|
474
|
-
"version": "2026-09-
|
|
492
|
+
"version": "2026-09-27.1"
|
|
475
493
|
},
|
|
476
494
|
{
|
|
477
495
|
"currency": "GBP",
|
|
478
496
|
"declaredMeters": [
|
|
479
497
|
"account.active_month",
|
|
480
498
|
"instrument.event.count",
|
|
481
|
-
"transfer.internal.count"
|
|
482
|
-
"transfer.internal.volume_gbp"
|
|
499
|
+
"transfer.internal.count"
|
|
483
500
|
],
|
|
484
|
-
"effectiveTableDigest": "
|
|
501
|
+
"effectiveTableDigest": "12ed3fa44010e80ae20c114d7dd94f277686225c040576a8bb96d12a0fe5333a",
|
|
485
502
|
"fixed": {
|
|
486
503
|
"activationBaseMinor": "104200",
|
|
487
|
-
"activationPerPointMinor": "
|
|
504
|
+
"activationPerPointMinor": "2100",
|
|
488
505
|
"monthlyBaseMinor": "20800",
|
|
489
|
-
"monthlyPerPointMinor": "
|
|
506
|
+
"monthlyPerPointMinor": "400",
|
|
490
507
|
"weights": {
|
|
491
508
|
"aggregate_invariant": 2,
|
|
492
509
|
"flow": 1,
|
|
@@ -543,7 +560,7 @@
|
|
|
543
560
|
"bps": 0,
|
|
544
561
|
"meter": "account.active_month",
|
|
545
562
|
"payer": "product",
|
|
546
|
-
"perEventMinor": "
|
|
563
|
+
"perEventMinor": "104",
|
|
547
564
|
"settlement": "invoice",
|
|
548
565
|
"signature": "meters.account.active_month"
|
|
549
566
|
},
|
|
@@ -551,18 +568,25 @@
|
|
|
551
568
|
"bps": 0,
|
|
552
569
|
"meter": "instrument.event.count",
|
|
553
570
|
"payer": "product",
|
|
554
|
-
"perEventMinor": "
|
|
571
|
+
"perEventMinor": "5",
|
|
555
572
|
"settlement": "invoice",
|
|
556
573
|
"signature": "meters.instrument.event.count"
|
|
557
574
|
},
|
|
558
575
|
{
|
|
559
|
-
"bps":
|
|
576
|
+
"bps": 0,
|
|
560
577
|
"meter": "transfer.internal.count",
|
|
561
|
-
"payer": "
|
|
562
|
-
"perEventMinor": "
|
|
563
|
-
"settlement": "
|
|
564
|
-
"signature": "
|
|
565
|
-
|
|
578
|
+
"payer": "product",
|
|
579
|
+
"perEventMinor": "5",
|
|
580
|
+
"settlement": "invoice",
|
|
581
|
+
"signature": "meters.transfer.internal.count"
|
|
582
|
+
},
|
|
583
|
+
{
|
|
584
|
+
"bps": 0,
|
|
585
|
+
"meter": "instrument.event.count",
|
|
586
|
+
"payer": "product",
|
|
587
|
+
"perEventMinor": "0",
|
|
588
|
+
"settlement": "invoice",
|
|
589
|
+
"signature": "moves.transfer.internal"
|
|
566
590
|
},
|
|
567
591
|
{
|
|
568
592
|
"bps": 0,
|
|
@@ -629,6 +653,6 @@
|
|
|
629
653
|
"signature": "unwinds.void"
|
|
630
654
|
}
|
|
631
655
|
],
|
|
632
|
-
"version": "2026-09-
|
|
656
|
+
"version": "2026-09-27.1"
|
|
633
657
|
}
|
|
634
658
|
]
|
package/examples/insurance.hsx
CHANGED
|
@@ -13,7 +13,8 @@ object device "Insured device" {
|
|
|
13
13
|
expose pay as pay_for_device
|
|
14
14
|
}
|
|
15
15
|
// conformance_boundary is the sandbox insurer adapter; swap in the insurer's registered adapter to go live.
|
|
16
|
-
// Premiums net of commission go to its account.
|
|
16
|
+
// Premiums net of commission go to its account. The default broker is the retailer, which keeps the commission.
|
|
17
|
+
// claim_limit is the sum insured, set per cover at creation.
|
|
17
18
|
attach protection = insurance.cover {
|
|
18
19
|
expose create as create_protection
|
|
19
20
|
holder: owner, adapter: "conformance_boundary", commission: 10%, covers: purchase
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hyperscale0/hsx",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.130",
|
|
4
4
|
"description": "The strictly typed HSX language: compile total financial programs into canonical UDL.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"hsx",
|
|
@@ -84,8 +84,8 @@
|
|
|
84
84
|
"examples:bundle": "bun scripts/bundle-examples.ts"
|
|
85
85
|
},
|
|
86
86
|
"dependencies": {
|
|
87
|
-
"@hyperscale0/adl": "1.0.
|
|
88
|
-
"@hyperscale0/udl": "1.0.
|
|
87
|
+
"@hyperscale0/adl": "1.0.130",
|
|
88
|
+
"@hyperscale0/udl": "1.0.130",
|
|
89
89
|
"fast-sha256": "1.3.0"
|
|
90
90
|
},
|
|
91
91
|
"devDependencies": {
|
|
@@ -97,5 +97,5 @@
|
|
|
97
97
|
"Amir Ayub",
|
|
98
98
|
"Sara AlBakaawi"
|
|
99
99
|
],
|
|
100
|
-
"gitHead": "
|
|
100
|
+
"gitHead": "3d768e3b8dd85648cb01257a02fef3b1e0b1ff57"
|
|
101
101
|
}
|
package/src/cli.ts
CHANGED
|
@@ -87,7 +87,7 @@ export async function runCli(argv: readonly string[], io: Io): Promise<number> {
|
|
|
87
87
|
const result = compile(source, { standardLibrary });
|
|
88
88
|
for (const d of result.diagnostics)
|
|
89
89
|
io.err(
|
|
90
|
-
`${d.source && d.source !== "program" ? d.source : file}:${d.line}:${d.column}: ${d.code} ${d.message
|
|
90
|
+
`${d.source && d.source !== "program" ? d.source : file}:${d.line}:${d.column}: ${d.code} ${d.message.replace(/[^.?!]$/, "$&.")} ${d.fix}`,
|
|
91
91
|
);
|
|
92
92
|
if (!result.artifacts || result.verdict !== "valid") return 1;
|
|
93
93
|
if (command === "check") return 0;
|