@capxul/cli 4.20.0-beta.16 → 4.20.0-beta.17

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/README.md CHANGED
@@ -126,17 +126,28 @@ In a terminal, omit required fields for guided flags and annotation input.
126
126
  ```sh
127
127
  capxul document get --document-hash H --content-hash C --json
128
128
  capxul document verify --document-hash H --content-hash C --json
129
- capxul document render --document-hash H --content-hash C > document.html
129
+ capxul document render --document-hash H --content-hash C
130
+ capxul document render --document-hash H --content-hash C --output-dir ./documents --json
130
131
  capxul document export --document-hash H --content-hash C --out original.bin
131
132
  ```
132
133
 
133
134
  Each command uses the current authenticated session. Add `--email EMAIL` to
134
135
  select a saved session. In a terminal, omit required fields to enter them.
135
- `get` returns the original base64 bytes and document metadata in JSON. `verify`
136
- reports `ok: false` when verification fails. `render` writes the SDK HTML
137
- exactly to standard output. `export` writes the original bytes to a new file.
136
+ `get` returns document metadata and saves a PDF. It does not print source bytes.
137
+ `verify` reports `ok: false` when verification fails. `render` saves a PDF and its
138
+ self-contained HTML source in the `documents` directory next to CLI settings.
139
+ Use `--output-dir` to change this directory. Human and JSON output contain
140
+ file metadata. Each render uses a new private directory and preserves earlier
141
+ files. `export` writes the original bytes to a new file.
138
142
  It refuses an existing output file.
139
143
 
144
+ Personal and Organization Payment `send`, `get`, `wait`, `retry`, and `list`
145
+ also save available documents as PDFs. Activity detail and Payroll results
146
+ save available documents in the same directory. Their results include
147
+ document output metadata.
148
+ Pending or unavailable documents retain that state. A document failure does
149
+ not change the Payment result or start another Payment.
150
+
140
151
  ## Contact commands
141
152
 
142
153
  ```sh
@@ -252,7 +263,7 @@ capxul org payment send
252
263
  ```
253
264
 
254
265
  The Organization input adds its exact Budget ID as `permissionId`. It supports
255
- the same recipient, amount, and V3 document fields as Personal send. It rejects
266
+ the same recipient, amount, and document fields as Personal send. It rejects
256
267
  `timing` and payload actor, Organization, key, and lineage overrides. Scripted
257
268
  calls require an explicit Organization, request identity, and `--confirm`.
258
269
  A human terminal collects missing input and previews the selected actor, exact
@@ -18772,6 +18772,7 @@
18772
18772
  moneyExecution: {
18773
18773
  abandonPaymentExecution: "moneyExecution.abandonPaymentExecution",
18774
18774
  prepareOrganizationPaymentExecution: "moneyExecution.prepareOrganizationPaymentExecution",
18775
+ prepareRequestPaymentExecution: "moneyExecution.prepareRequestPaymentExecution",
18775
18776
  preparePaymentExecution: "moneyExecution.preparePaymentExecution",
18776
18777
  preparePaymentLifecycleExecution: "moneyExecution.preparePaymentLifecycleExecution",
18777
18778
  prepareInvitationConfiguration: "moneyExecution.prepareInvitationConfiguration",
@@ -18789,6 +18790,7 @@
18789
18790
  },
18790
18791
  inbox: {
18791
18792
  approve: "inbox.approve",
18793
+ fulfill: "inbox.fulfill",
18792
18794
  decline: "inbox.decline",
18793
18795
  list: "inbox.list"
18794
18796
  },
@@ -20718,6 +20720,7 @@
20718
20720
  cancel: "financialOps/requestsInbox:cancel",
20719
20721
  decline: "financialOps/requestsInbox:decline",
20720
20722
  get: "financialOps/requestsInbox:get",
20723
+ getByLink: "financialOps/requestsInbox:getByLink",
20721
20724
  inboxList: "financialOps/requestsInbox:inboxList",
20722
20725
  issue: "financialOps/requestsInbox:issue",
20723
20726
  list: "financialOps/requestsInbox:list"
@@ -20753,6 +20756,7 @@
20753
20756
  preparePaymentLifecycleExecution: "moneyExecution/paymentCommandActions:preparePaymentLifecycleExecution",
20754
20757
  prepareScopedPaymentLifecycleExecution: "moneyExecution/paymentCommandActions:prepareScopedPaymentLifecycleExecution",
20755
20758
  prepareOrganizationPaymentExecution: "moneyExecution/paymentCommandActions:prepareOrganizationPaymentExecution",
20759
+ prepareRequestPaymentExecution: "moneyExecution/paymentCommandActions:prepareRequestPaymentExecution",
20756
20760
  submitPaymentCommandExecution: "moneyExecution/paymentCommandActions:submitPaymentCommandExecution"
20757
20761
  },
20758
20762
  "moneyExecution/providerSendWitness": { read: "moneyExecution/providerSendWitness:read" },
@@ -21126,6 +21130,23 @@
21126
21130
  signature: optional(SignatureV3Schema)
21127
21131
  })
21128
21132
  ]);
21133
+ const PAYMENT_DOCUMENT_V4_SALT = "0x9fcb24a0f8fe0f0d90d5c0be51afbed1dc31d4d27bf4d189be42f34f897f1c0d";
21134
+ const SupportedPaymentDocumentEnvelopeSchema = Union([PaymentDocumentEnvelopeV3Schema, Struct({
21135
+ protocol: Literal("capxul.payment-document"),
21136
+ version: Literal(4),
21137
+ domain: Struct({
21138
+ ...PaymentDocumentDomainV3Schema.fields,
21139
+ version: Literal("4"),
21140
+ salt: Literal(PAYMENT_DOCUMENT_V4_SALT)
21141
+ }),
21142
+ primaryType: Literal("Invoice"),
21143
+ message: Struct({
21144
+ ...InvoiceV3Schema.fields,
21145
+ note: NoteV3Schema,
21146
+ discountMinor: Uint256StringSchema$1
21147
+ }),
21148
+ signature: optional(SignatureV3Schema)
21149
+ })]);
21129
21150
  function decodedBase64Size(value) {
21130
21151
  const padding = value.endsWith("==") ? 2 : value.endsWith("=") ? 1 : 0;
21131
21152
  return value.length / 4 * 3 - padding;
@@ -21137,6 +21158,8 @@
21137
21158
  payerRef: AssertionV3Schema,
21138
21159
  payeeRef: AssertionV3Schema,
21139
21160
  dueAt: Uint64V3Schema,
21161
+ note: optional(NoteV3Schema),
21162
+ discountMinor: optional(Uint256StringSchema$1),
21140
21163
  lineItems: ArraySchema(LineItemV3Schema).check(makeFilter((items) => items.length <= 100))
21141
21164
  });
21142
21165
  const PaymentInstructionInputSchema = Union([
@@ -21185,7 +21208,11 @@
21185
21208
  "payslip",
21186
21209
  "receipt"
21187
21210
  ]),
21188
- format: Literals(["envelope-v3", "artifact"]),
21211
+ format: Literals([
21212
+ "envelope-v3",
21213
+ "envelope-v4",
21214
+ "artifact"
21215
+ ]),
21189
21216
  role: Literals([
21190
21217
  "instruction",
21191
21218
  "movement",
@@ -21245,7 +21272,7 @@
21245
21272
  ]);
21246
21273
  const PaymentDocumentBundleV3Schema = Struct({
21247
21274
  originId: CanonicalBytes32V3Schema,
21248
- envelope: PaymentDocumentEnvelopeV3Schema,
21275
+ envelope: SupportedPaymentDocumentEnvelopeSchema,
21249
21276
  lineItems: optional(ArraySchema(LineItemV3Schema).check(makeFilter((items) => items.length <= 100))),
21250
21277
  adjustments: optional(ArraySchema(AdjustmentV3Schema).check(makeFilter((items) => items.length <= 100))),
21251
21278
  supportingDocuments: ArraySchema(DocumentRefV3Schema)
@@ -21556,10 +21583,11 @@
21556
21583
  kind: Literal("account"),
21557
21584
  accountId: nonEmpty("accountId")
21558
21585
  });
21559
- const ActorRefSchema = Union([AccountActorRefSchema, Struct({
21586
+ const OrganizationActorRefSchema = Struct({
21560
21587
  kind: Literal("organization"),
21561
21588
  orgId: nonEmpty("orgId")
21562
- })]);
21589
+ });
21590
+ const ActorRefSchema = Union([AccountActorRefSchema, OrganizationActorRefSchema]);
21563
21591
  const hasActorBoundPermission = (actor, orgId, permissionId) => actor.kind === "organization" ? orgId === actor.orgId && permissionId !== void 0 : orgId === void 0 && permissionId === void 0;
21564
21592
  const ActorOrDestinationRefSchema = Union([ActorRefSchema, Struct({
21565
21593
  kind: Literal("destination"),
@@ -22615,19 +22643,50 @@
22615
22643
  items: ArraySchema(OrganizationPaymentExecutionItemSchema).check(makeFilter((items) => is(PaymentDocumentOptionsBatchSchema)(items))),
22616
22644
  lineage: optional(PaymentCommandLineageSchema)
22617
22645
  });
22646
+ const RequestPaymentConfirmationFields = {
22647
+ requestId: nonEmpty("requestId"),
22648
+ release: ReleaseTermsSchema,
22649
+ issuerSafe: SafeAddressSchema,
22650
+ amount: FinancialOpsAssetAmount,
22651
+ instruction: DocumentRefV3Schema
22652
+ };
22653
+ const RequestPaymentConfirmationSchema = Union([Struct({
22654
+ ...RequestPaymentConfirmationFields,
22655
+ payer: Struct({ kind: Literal("account") }),
22656
+ permissionId: optional(Never)
22657
+ }), Struct({
22658
+ ...RequestPaymentConfirmationFields,
22659
+ payer: OrganizationActorRefSchema,
22660
+ permissionId: PermissionIdSchema
22661
+ })]);
22662
+ Struct({
22663
+ confirmation: RequestPaymentConfirmationSchema,
22664
+ signerAddress: AddressSchema
22665
+ });
22666
+ const RequestPaymentExecutionEvidenceSchema = Struct({
22667
+ kind: Literal("payment_request"),
22668
+ confirmation: RequestPaymentConfirmationSchema,
22669
+ actor: ActorRefSchema,
22670
+ requestKey: nonEmpty("requestKey"),
22671
+ items: ArraySchema(PaymentBirthItemSchema)
22672
+ });
22618
22673
  const PreparedPaymentCommandExecutionSchema = Struct({
22619
22674
  recipientObservations: ArraySchema(RecipientObservationSchema),
22620
22675
  emitPaymentInitiated: Boolean$1,
22621
22676
  executionId: MoneyExecutionIdSchema,
22622
22677
  commandId: PaymentCommandIdSchema,
22623
22678
  paymentIds: ArraySchema(PaymentIdSchema),
22624
- request: Union([PaymentLifecycleExecutionIntentSchema, Struct({
22625
- orgId: nonEmpty("orgId"),
22626
- permissionId: PermissionIdSchema,
22627
- requestKey: nonEmpty("requestKey"),
22628
- items: ArraySchema(OrganizationPaymentExecutionItemSchema),
22629
- lineage: optional(PaymentCommandLineageSchema)
22630
- })]),
22679
+ request: Union([
22680
+ RequestPaymentExecutionEvidenceSchema,
22681
+ PaymentLifecycleExecutionIntentSchema,
22682
+ Struct({
22683
+ orgId: nonEmpty("orgId"),
22684
+ permissionId: PermissionIdSchema,
22685
+ requestKey: nonEmpty("requestKey"),
22686
+ items: ArraySchema(OrganizationPaymentExecutionItemSchema),
22687
+ lineage: optional(PaymentCommandLineageSchema)
22688
+ })
22689
+ ]),
22631
22690
  chainId: BaseSepoliaChainIdSchema,
22632
22691
  signerAddress: AddressSchema,
22633
22692
  userOpSenderSafe: SafeAddressSchema,
@@ -22645,7 +22704,26 @@
22645
22704
  documentHash: NonzeroDocumentHashSchema
22646
22705
  })),
22647
22706
  documentBundles: optional(ArraySchema(PaymentDocumentBundleV3Schema))
22648
- });
22707
+ }).check(makeFilter((execution) => {
22708
+ if (!("kind" in execution.request) || execution.request.kind !== "payment_request") return true;
22709
+ const source = execution.sourceCommand;
22710
+ const prepared = execution.preparedCommand;
22711
+ if (source?.kind !== "birth" || prepared === void 0 || source.lineage?.kind !== "payment_request") return false;
22712
+ if (source.lineage.requestId !== execution.request.confirmation.requestId || source.requestKey !== execution.request.requestKey || source.requestKey !== execution.request.confirmation.requestId || execution.userOperation === void 0) return false;
22713
+ if ([
22714
+ source.items.length,
22715
+ execution.request.items.length,
22716
+ execution.paymentIds.length,
22717
+ execution.sourcePaymentIds?.length,
22718
+ execution.sourceRecipientSafes?.length,
22719
+ execution.documentBundles?.length,
22720
+ prepared.items.length,
22721
+ prepared.documentBundles?.length,
22722
+ prepared.instructionDocuments?.length
22723
+ ].some((length) => length !== 1)) return false;
22724
+ const item = prepared.items[0];
22725
+ return "recipientSafe" in item && item.operation === source.items[0].operation && item.operation === execution.request.items[0].operation && item.paymentId === execution.paymentIds[0] && item.paymentId === execution.sourcePaymentIds?.[0] && item.recipientSafe === execution.sourceRecipientSafes?.[0];
22726
+ }));
22649
22727
  const StoredPermissionIntentSchema = Union([Struct({
22650
22728
  type: Literal("budget"),
22651
22729
  asset: AssetIdSchema,
@@ -23218,6 +23296,240 @@
23218
23296
  decimals: nonNegativeInteger("decimals"),
23219
23297
  effectiveFrom: nonNegativeInteger("effectiveFrom")
23220
23298
  });
23299
+ /** Version 3 field order is fixed by the accepted Documents contract. */
23300
+ const PAYMENT_DOCUMENT_V3_EIP712_TYPES = {
23301
+ EIP712Domain: [
23302
+ {
23303
+ name: "name",
23304
+ type: "string"
23305
+ },
23306
+ {
23307
+ name: "version",
23308
+ type: "string"
23309
+ },
23310
+ {
23311
+ name: "chainId",
23312
+ type: "uint256"
23313
+ },
23314
+ {
23315
+ name: "salt",
23316
+ type: "bytes32"
23317
+ }
23318
+ ],
23319
+ ExactAssetV3: [
23320
+ {
23321
+ name: "asset",
23322
+ type: "string"
23323
+ },
23324
+ {
23325
+ name: "minorUnits",
23326
+ type: "uint256"
23327
+ },
23328
+ {
23329
+ name: "decimals",
23330
+ type: "uint8"
23331
+ }
23332
+ ],
23333
+ ReceiptAmountV3: [
23334
+ {
23335
+ name: "denomination",
23336
+ type: "uint8"
23337
+ },
23338
+ {
23339
+ name: "currency",
23340
+ type: "string"
23341
+ },
23342
+ {
23343
+ name: "asset",
23344
+ type: "string"
23345
+ },
23346
+ {
23347
+ name: "minorUnits",
23348
+ type: "uint256"
23349
+ },
23350
+ {
23351
+ name: "decimals",
23352
+ type: "uint8"
23353
+ }
23354
+ ],
23355
+ Memo: [
23356
+ {
23357
+ name: "kind",
23358
+ type: "uint8"
23359
+ },
23360
+ {
23361
+ name: "originId",
23362
+ type: "bytes32"
23363
+ },
23364
+ {
23365
+ name: "issuedAt",
23366
+ type: "uint64"
23367
+ },
23368
+ {
23369
+ name: "basis",
23370
+ type: "uint8"
23371
+ },
23372
+ {
23373
+ name: "reference",
23374
+ type: "string"
23375
+ },
23376
+ {
23377
+ name: "note",
23378
+ type: "string"
23379
+ },
23380
+ {
23381
+ name: "amount",
23382
+ type: "ExactAssetV3"
23383
+ },
23384
+ {
23385
+ name: "source",
23386
+ type: "address"
23387
+ },
23388
+ {
23389
+ name: "destination",
23390
+ type: "address"
23391
+ },
23392
+ {
23393
+ name: "movementRef",
23394
+ type: "string"
23395
+ }
23396
+ ],
23397
+ Invoice: [
23398
+ {
23399
+ name: "kind",
23400
+ type: "uint8"
23401
+ },
23402
+ {
23403
+ name: "originId",
23404
+ type: "bytes32"
23405
+ },
23406
+ {
23407
+ name: "issuedAt",
23408
+ type: "uint64"
23409
+ },
23410
+ {
23411
+ name: "invoiceNumber",
23412
+ type: "string"
23413
+ },
23414
+ {
23415
+ name: "payerRef",
23416
+ type: "string"
23417
+ },
23418
+ {
23419
+ name: "payeeRef",
23420
+ type: "string"
23421
+ },
23422
+ {
23423
+ name: "amount",
23424
+ type: "ExactAssetV3"
23425
+ },
23426
+ {
23427
+ name: "target",
23428
+ type: "address"
23429
+ },
23430
+ {
23431
+ name: "dueAt",
23432
+ type: "uint64"
23433
+ },
23434
+ {
23435
+ name: "lineItemsHash",
23436
+ type: "bytes32"
23437
+ }
23438
+ ],
23439
+ Payslip: [
23440
+ {
23441
+ name: "kind",
23442
+ type: "uint8"
23443
+ },
23444
+ {
23445
+ name: "originId",
23446
+ type: "bytes32"
23447
+ },
23448
+ {
23449
+ name: "issuedAt",
23450
+ type: "uint64"
23451
+ },
23452
+ {
23453
+ name: "runId",
23454
+ type: "string"
23455
+ },
23456
+ {
23457
+ name: "itemIndex",
23458
+ type: "uint64"
23459
+ },
23460
+ {
23461
+ name: "employerRef",
23462
+ type: "string"
23463
+ },
23464
+ {
23465
+ name: "employeeRef",
23466
+ type: "string"
23467
+ },
23468
+ {
23469
+ name: "periodStart",
23470
+ type: "uint64"
23471
+ },
23472
+ {
23473
+ name: "periodEnd",
23474
+ type: "uint64"
23475
+ },
23476
+ {
23477
+ name: "gross",
23478
+ type: "ExactAssetV3"
23479
+ },
23480
+ {
23481
+ name: "net",
23482
+ type: "ExactAssetV3"
23483
+ },
23484
+ {
23485
+ name: "target",
23486
+ type: "address"
23487
+ },
23488
+ {
23489
+ name: "adjustmentsHash",
23490
+ type: "bytes32"
23491
+ }
23492
+ ],
23493
+ Receipt: [
23494
+ {
23495
+ name: "kind",
23496
+ type: "uint8"
23497
+ },
23498
+ {
23499
+ name: "originId",
23500
+ type: "bytes32"
23501
+ },
23502
+ {
23503
+ name: "issuedAt",
23504
+ type: "uint64"
23505
+ },
23506
+ {
23507
+ name: "reference",
23508
+ type: "string"
23509
+ },
23510
+ {
23511
+ name: "issuerRef",
23512
+ type: "string"
23513
+ },
23514
+ {
23515
+ name: "recipientRef",
23516
+ type: "string"
23517
+ },
23518
+ {
23519
+ name: "amount",
23520
+ type: "ReceiptAmountV3"
23521
+ },
23522
+ {
23523
+ name: "paidAt",
23524
+ type: "uint64"
23525
+ },
23526
+ {
23527
+ name: "note",
23528
+ type: "string"
23529
+ }
23530
+ ]
23531
+ };
23532
+ ({ ...PAYMENT_DOCUMENT_V3_EIP712_TYPES }), [...PAYMENT_DOCUMENT_V3_EIP712_TYPES.Invoice];
23221
23533
  ArraySchema(LineItemV3Schema).check(makeFilter((items) => items.length <= 100));
23222
23534
  ArraySchema(AdjustmentV3Schema).check(makeFilter((items) => items.length <= 100));
23223
23535
  //#endregion
@@ -23406,50 +23718,83 @@
23406
23718
  amount: AmountV2Schema
23407
23719
  }));
23408
23720
  `
23409
- .capxul-doc{--ink:#1d1d1f;--muted:#6e6e73;--line:#e7e7ea;--accent:#0a7d4b;--bg:#fff;
23410
- font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Inter,system-ui,sans-serif;
23411
- color:var(--ink);background:var(--bg);max-width:44rem;margin:0 auto;padding:2.75rem 3rem;
23412
- border:1px solid var(--line);border-radius:16px;box-shadow:0 1px 2px rgba(0,0,0,.04),0 12px 32px rgba(0,0,0,.06);
23413
- line-height:1.5;font-size:15px;overflow-wrap:anywhere;word-break:break-word}
23721
+ @page{size:A4;margin:14mm}
23722
+ .capxul-doc{--ink:#171717;--muted:#737373;--line:#e5e5e5;--accent:#f97316;
23723
+ box-sizing:border-box;font-family:Geist,Arial,sans-serif;color:var(--ink);background:#fafafa;
23724
+ width:100%;max-width:550px;min-height:778px;margin:0 auto;padding:8px;
23725
+ border:1px solid #d4d4d4;border-radius:16px;line-height:1.4;font-size:10px;
23726
+ overflow-wrap:anywhere;word-break:break-word}
23414
23727
  .capxul-doc *{box-sizing:border-box;min-width:0}
23415
- .capxul-doc .doc-header{display:flex;flex-direction:column;gap:1.25rem;padding-bottom:1.5rem;border-bottom:1px solid var(--line);margin-bottom:1.75rem}
23416
- .capxul-doc .doc-brand{display:flex;align-items:center;gap:.5rem;color:var(--accent);font-weight:600}
23417
- .capxul-doc .doc-brand-mark{font-size:1.1rem}
23418
- .capxul-doc .doc-brand-name{letter-spacing:.02em}
23419
- .capxul-doc .doc-headline{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;flex-wrap:wrap}
23420
- .capxul-doc .doc-title{font-size:1.9rem;font-weight:700;letter-spacing:-.02em;margin:0}
23421
- .capxul-doc .doc-badge{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;
23422
- color:var(--accent);background:rgba(10,125,75,.1);padding:.3rem .6rem;border-radius:999px;max-width:100%;text-align:right}
23423
- .capxul-doc .doc-parties{display:grid;grid-template-columns:1fr 1fr;gap:1.25rem;margin-bottom:1.75rem}
23424
- .capxul-doc .doc-party{display:flex;flex-direction:column;gap:.15rem}
23425
- .capxul-doc .doc-party-label{font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
23426
- .capxul-doc .doc-party-name{font-weight:600}
23427
- .capxul-doc .doc-meta{display:flex;flex-direction:column;gap:.4rem;margin-bottom:1.75rem}
23428
- .capxul-doc .doc-meta-row{display:flex;justify-content:space-between;gap:1rem;font-size:.92rem}
23429
- .capxul-doc .doc-meta-label{color:var(--muted);flex-shrink:0}
23430
- .capxul-doc .doc-meta-value{font-weight:500;text-align:right}
23431
- .capxul-doc time{color:var(--ink);font-variant-numeric:tabular-nums}
23432
- .capxul-doc .doc-line-items{width:100%;border-collapse:collapse;margin:.5rem 0 1.5rem;font-size:.92rem}
23433
- .capxul-doc .doc-line-items th{text-align:left;font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;
23434
- color:var(--muted);font-weight:600;padding:.5rem .25rem;border-bottom:1px solid var(--line)}
23435
- .capxul-doc .doc-line-items td{padding:.7rem .25rem;border-bottom:1px solid var(--line)}
23436
- .capxul-doc .doc-li-qty,.capxul-doc .doc-li-unit,.capxul-doc .doc-li-total{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
23437
- .capxul-doc .doc-li-desc{width:100%}
23438
- .capxul-doc .doc-totals{display:flex;flex-direction:column;gap:.5rem;margin-top:.5rem}
23439
- .capxul-doc .doc-total-line{display:flex;justify-content:space-between;align-items:baseline;gap:1rem}
23440
- .capxul-doc .doc-total-label{color:var(--muted)}
23441
- .capxul-doc .doc-total-deduction .doc-amount-value{color:var(--muted)}
23442
- .capxul-doc .doc-total-grand{border-top:2px solid var(--ink);margin-top:.5rem;padding-top:.75rem;font-size:1.15rem}
23443
- .capxul-doc .doc-total-grand .doc-amount-value{font-weight:700}
23444
- .capxul-doc .doc-amount-value{font-variant-numeric:tabular-nums;font-weight:600}
23445
- .capxul-doc .doc-hero{text-align:center;padding:1.5rem 0 2rem}
23446
- .capxul-doc .doc-hero-label{font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
23447
- .capxul-doc .doc-hero-amount{font-size:2.6rem;font-weight:700;letter-spacing:-.02em;margin-top:.35rem}
23448
- .capxul-doc .doc-note{color:var(--ink);background:#f7f7f8;border-radius:10px;padding:.9rem 1.1rem;margin:0}
23449
- .capxul-doc .doc-dest-address{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.9rem}
23450
- .capxul-doc .doc-footer{margin-top:1.75rem;padding-top:1.25rem;border-top:1px solid var(--line);color:var(--muted);font-size:.9rem}
23451
- .capxul-doc code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.82rem;color:var(--muted);word-break:break-all}
23452
- @media (max-width:540px){.capxul-doc{padding:1.75rem 1.25rem}.capxul-doc .doc-parties{grid-template-columns:1fr}}
23728
+ .capxul-doc .doc-header{display:flex;align-items:flex-start;gap:12px;padding-bottom:16px;border-bottom:1px solid var(--line)}
23729
+ .capxul-doc .doc-brand{display:flex;gap:4px;align-items:center;color:var(--accent);font-weight:600}
23730
+ .capxul-doc .doc-brand-mark{font-size:16px}
23731
+ .capxul-doc .doc-headline{flex:1}
23732
+ .capxul-doc .doc-title{font-size:16px;font-weight:500;margin:0 0 4px}
23733
+ .capxul-doc .doc-badge{color:var(--muted);font-size:10px}
23734
+ .capxul-doc .doc-header-meta{display:flex;gap:16px;max-width:50%;font-size:10px}
23735
+ .capxul-doc .doc-header-meta .doc-meta-row{display:flex;flex-direction:column;align-items:flex-end;gap:2px}
23736
+ .capxul-doc .doc-parties{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding:8px 0;margin-bottom:16px;border-bottom:1px solid var(--line);break-inside:avoid}
23737
+ .capxul-doc .doc-party{padding:8px;display:flex;flex-direction:column;gap:8px}
23738
+ .capxul-doc .doc-party:first-child{background:rgba(234,88,12,.03);border-radius:8px}
23739
+ .capxul-doc .doc-party-label,.capxul-doc .doc-meta-label,.capxul-doc .doc-total-label,.capxul-doc .doc-hero-label{color:var(--muted);font-size:10px}
23740
+ .capxul-doc .doc-party-name{font-size:16px;font-weight:500}
23741
+ .capxul-doc .doc-meta{margin:16px 8px}
23742
+ .capxul-doc .doc-meta-row{display:flex;justify-content:space-between;gap:16px;margin-bottom:6px}
23743
+ .capxul-doc .doc-meta-value{text-align:right}
23744
+ .capxul-doc .doc-line-items{width:100%;border-collapse:collapse;table-layout:fixed;margin:8px 0 16px}
23745
+ .capxul-doc .doc-line-items thead{display:table-header-group}
23746
+ .capxul-doc .doc-line-items tr{break-inside:avoid}
23747
+ .capxul-doc .doc-line-items th{font-weight:500;font-size:10px;color:var(--muted);text-align:right;padding:8px}
23748
+ .capxul-doc .doc-line-items th:first-child{text-align:left;width:46%}
23749
+ .capxul-doc .doc-line-items td{padding:12px 8px;border-bottom:1px solid var(--line);vertical-align:top}
23750
+ .capxul-doc .doc-li-qty,.capxul-doc .doc-li-unit,.capxul-doc .doc-li-total{text-align:right;font-variant-numeric:tabular-nums}
23751
+ .capxul-doc .doc-summary{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start;margin-bottom:16px}
23752
+ .capxul-doc .doc-body{padding:8px}
23753
+ .capxul-doc .doc-section-title{font-size:12px;font-weight:500;margin:0 0 8px}
23754
+ .capxul-doc .doc-note{margin:0;white-space:pre-wrap;line-height:1.6}
23755
+ .capxul-doc .doc-totals{grid-column:2;padding:8px;break-inside:avoid}
23756
+ .capxul-doc .doc-total-line{display:flex;justify-content:space-between;gap:12px;padding-bottom:8px;margin-bottom:8px;border-bottom:1px solid var(--line)}
23757
+ .capxul-doc .doc-total-label{flex-shrink:0}
23758
+ .capxul-doc .doc-total-grand{border:0;font-size:14px}
23759
+ .capxul-doc .doc-amount-value{font-weight:500;font-variant-numeric:tabular-nums;text-align:right}
23760
+ .capxul-doc .doc-payment{padding:12px;background:#f5f5f5;border-radius:8px;break-inside:avoid}
23761
+ .capxul-doc .doc-hero{padding:16px;background:#f5f5f5;border-radius:8px;margin-bottom:16px;break-inside:avoid}
23762
+ .capxul-doc .doc-hero-amount{font-size:24px;margin-top:4px;font-weight:500}
23763
+ .capxul-doc .doc-footer{padding:8px;margin-top:16px;border-top:1px solid var(--line);color:var(--muted)}
23764
+ .capxul-doc code,.capxul-doc .doc-dest-address{font-family:Geist,Arial,sans-serif;font-size:10px;word-break:break-all}
23765
+ .capxul-doc--invoice .doc-header{padding:8px;gap:24px}
23766
+ .capxul-doc--invoice .doc-title{font-size:10px;color:var(--muted);margin:0 0 2px}
23767
+ .capxul-doc--invoice .doc-badge{color:var(--ink);font-weight:500}
23768
+ .capxul-doc--invoice .doc-header-meta{gap:24px}
23769
+ .capxul-doc--invoice{display:flex;flex-direction:column;gap:8px;font-weight:500}
23770
+ .capxul-doc--invoice .doc-header{border:0}
23771
+ .capxul-doc--invoice .doc-parties{gap:8px;padding:0;margin:0;border-top:1px solid var(--line);min-height:189px}
23772
+ .capxul-doc--invoice .doc-party{justify-content:flex-start}
23773
+ .capxul-doc--invoice .doc-header .doc-meta-row{margin-bottom:0}
23774
+ .capxul-doc--invoice .doc-party + .doc-party{border-left:1px solid var(--line)}
23775
+ .capxul-doc .doc-party-icon{width:36px;height:36px;display:flex;align-items:center;justify-content:center;border:1px solid #d4d4d4;border-radius:8px;background:#fafafa}
23776
+ .capxul-doc .doc-party-icon img{width:20px;height:20px}
23777
+ .capxul-doc--invoice .doc-line-items{margin:0}
23778
+ .capxul-doc--invoice .doc-summary{gap:8px;margin:0}
23779
+ .capxul-doc--invoice .doc-section-title{font-size:10px;color:#525252;margin-bottom:6px}
23780
+ .capxul-doc--invoice .doc-note{font-weight:400;color:var(--muted)}
23781
+ .capxul-doc--invoice .doc-total-grand{font-size:12px}
23782
+ .capxul-doc--invoice .doc-payment{margin-top:auto;padding:8px}
23783
+ .capxul-doc .doc-powered{border-top:1px solid var(--line);padding-top:8px;color:var(--muted);font-size:10px}
23784
+ .capxul-doc .doc-powered span{color:var(--accent)}
23785
+ .capxul-doc--invoice .doc-payment-heading{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:8px;margin-bottom:12px}
23786
+ .capxul-doc--invoice .doc-payment-heading h2{margin:0;font-size:12px;font-weight:500;color:#525252}
23787
+ .capxul-doc--invoice .doc-payment-content{display:grid;grid-template-columns:minmax(0,1fr) 149px;gap:8px;align-items:center;margin-bottom:12px}
23788
+ .capxul-doc--invoice .doc-payment-fields{display:flex;flex-direction:column;gap:12px;padding-right:8px}
23789
+ .capxul-doc--invoice .doc-payment-field{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}
23790
+ .capxul-doc--invoice .doc-payment-selection{display:flex;align-items:center;gap:4px;padding:8px 12px;border:1px solid #d4d4d4;border-radius:8px;background:#fafafa;color:#525252;box-shadow:0 1px 4px #0000001a}
23791
+ .capxul-doc--invoice .doc-payment-selection .doc-chevron{margin-left:auto}
23792
+ .capxul-doc--invoice .doc-payment-address{display:flex;flex-direction:column;gap:4px;align-self:start;padding-top:4px}
23793
+ .capxul-doc--invoice .doc-payment-address>span{color:var(--accent)}
23794
+ .capxul-doc--invoice .doc-party-reference{display:flex;flex-direction:column;font-size:10px;color:var(--muted);gap:0}
23795
+ .capxul-doc--invoice .doc-party-email{font-size:12px;color:#525252;margin-bottom:8px}
23796
+ @media screen and (max-width:440px){.capxul-doc .doc-header{flex-wrap:wrap}.capxul-doc .doc-header-meta{max-width:100%}}
23797
+ @media print{.capxul-doc{print-color-adjust:exact;-webkit-print-color-adjust:exact}}
23453
23798
  `.trim();
23454
23799
  //#endregion
23455
23800
  //#region ../../packages/wire/src/client-authorization.ts
@@ -24370,11 +24715,8 @@
24370
24715
  } });
24371
24716
  }
24372
24717
  createApi();
24373
- CAPXUL_FUNCTIONS["financialOps/addressBook"].list, CAPXUL_FUNCTIONS["financialOps/addressBook"].get, CAPXUL_FUNCTIONS["financialOps/addressBook"].add, CAPXUL_FUNCTIONS["financialOps/addressBook"].hide, CAPXUL_FUNCTIONS["financialOps/addressBook"].unhide, CAPXUL_FUNCTIONS["financialOps/addressBook"].label, CAPXUL_FUNCTIONS["financialOps/requestsInbox"].issue, CAPXUL_FUNCTIONS["financialOps/requestsInbox"].list, CAPXUL_FUNCTIONS["financialOps/requestsInbox"].get, CAPXUL_FUNCTIONS["financialOps/requestsInbox"].cancel, CAPXUL_FUNCTIONS["financialOps/requestsInbox"].inboxList, CAPXUL_FUNCTIONS["financialOps/requestsInbox"].approve, CAPXUL_FUNCTIONS["financialOps/requestsInbox"].decline;
24374
- CAPXUL_FUNCTIONS["financialOps/queries"].me, CAPXUL_FUNCTIONS["financialOps/queries"].depositInstructions, CAPXUL_FUNCTIONS["financialOps/queries"].resolveRecipient, CAPXUL_FUNCTIONS["financialOps/destinations"].add, CAPXUL_FUNCTIONS["financialOps/destinations"].list, CAPXUL_FUNCTIONS["financialOps/destinations"].remove, CAPXUL_FUNCTIONS["financialOps/queries"].listPayments, CAPXUL_FUNCTIONS["financialOps/queries"].getPayment, CAPXUL_FUNCTIONS["financialOps/queries"].listOrganizationPayments, CAPXUL_FUNCTIONS["financialOps/queries"].getOrganizationPayment, CAPXUL_FUNCTIONS["financialOps/queries"].previewOrganizationPaymentRetry, CAPXUL_FUNCTIONS["movement/activity"].list, CAPXUL_FUNCTIONS["movement/activity"].summary, CAPXUL_FUNCTIONS["movement/activity"].get, CAPXUL_FUNCTIONS["movement/activity"].annotate, CAPXUL_FUNCTIONS["movement/annotations"].overlay, CAPXUL_FUNCTIONS["financialOps/queries"].getPaymentDocument, CAPXUL_FUNCTIONS["financialOps/queries"].verifyPaymentDocument, CAPXUL_FUNCTIONS["financialOps/queries"].renderStoredDocument;
24375
- CAPXUL_FUNCTIONS["moneyExecution/actions"].preparePermissionReplacementExecution, CAPXUL_FUNCTIONS["moneyExecution/actions"].abandonPaymentExecution, CAPXUL_FUNCTIONS["moneyExecution/actions"].prepareInvitationConfiguration, CAPXUL_FUNCTIONS["moneyExecution/actions"].preparePermissionExecution, CAPXUL_FUNCTIONS["moneyExecution/actions"].preparePaymentExecution, CAPXUL_FUNCTIONS["moneyExecution/paymentCommandActions"].prepareOrganizationPaymentExecution, CAPXUL_FUNCTIONS["moneyExecution/paymentCommandActions"].preparePaymentLifecycleExecution, CAPXUL_FUNCTIONS["moneyExecution/paymentCommandActions"].prepareScopedPaymentLifecycleExecution, CAPXUL_FUNCTIONS["moneyExecution/actions"].submitPaymentExecution, CAPXUL_FUNCTIONS["moneyExecution/actions"].submitInvitationConfigurationExecution, CAPXUL_FUNCTIONS["moneyExecution/actions"].submitPermissionExecution, CAPXUL_FUNCTIONS["moneyExecution/paymentCommandActions"].submitPaymentCommandExecution;
24376
- TaggedError("IndexerReadError");
24377
- Service()("@capxul/sdk/ports/IndexerReadPort");
24718
+ CAPXUL_FUNCTIONS["financialOps/addressBook"].list, CAPXUL_FUNCTIONS["financialOps/addressBook"].get, CAPXUL_FUNCTIONS["financialOps/addressBook"].add, CAPXUL_FUNCTIONS["financialOps/addressBook"].hide, CAPXUL_FUNCTIONS["financialOps/addressBook"].unhide, CAPXUL_FUNCTIONS["financialOps/addressBook"].label, CAPXUL_FUNCTIONS["financialOps/requestsInbox"].issue, CAPXUL_FUNCTIONS["financialOps/requestsInbox"].list, CAPXUL_FUNCTIONS["financialOps/requestsInbox"].get, CAPXUL_FUNCTIONS["financialOps/requestsInbox"].getByLink, CAPXUL_FUNCTIONS["financialOps/requestsInbox"].cancel, CAPXUL_FUNCTIONS["financialOps/requestsInbox"].inboxList, CAPXUL_FUNCTIONS["financialOps/requestsInbox"].approve, CAPXUL_FUNCTIONS["financialOps/requestsInbox"].decline;
24719
+ CAPXUL_FUNCTIONS["moneyExecution/paymentCommandActions"].prepareRequestPaymentExecution, CAPXUL_FUNCTIONS["moneyExecution/actions"].preparePermissionReplacementExecution, CAPXUL_FUNCTIONS["moneyExecution/actions"].abandonPaymentExecution, CAPXUL_FUNCTIONS["moneyExecution/actions"].prepareInvitationConfiguration, CAPXUL_FUNCTIONS["moneyExecution/actions"].preparePermissionExecution, CAPXUL_FUNCTIONS["moneyExecution/actions"].preparePaymentExecution, CAPXUL_FUNCTIONS["moneyExecution/paymentCommandActions"].prepareOrganizationPaymentExecution, CAPXUL_FUNCTIONS["moneyExecution/paymentCommandActions"].preparePaymentLifecycleExecution, CAPXUL_FUNCTIONS["moneyExecution/paymentCommandActions"].prepareScopedPaymentLifecycleExecution, CAPXUL_FUNCTIONS["moneyExecution/actions"].submitPaymentExecution, CAPXUL_FUNCTIONS["moneyExecution/actions"].submitInvitationConfigurationExecution, CAPXUL_FUNCTIONS["moneyExecution/actions"].submitPermissionExecution, CAPXUL_FUNCTIONS["moneyExecution/paymentCommandActions"].submitPaymentCommandExecution;
24378
24720
  //#endregion
24379
24721
  //#region ../../packages/sdk/src/surface/_shared/money-telemetry.ts
24380
24722
  /** Fire-and-forget emit through an optional port; never throws. */
@@ -24402,6 +24744,9 @@
24402
24744
  function isMoneyTelemetryDebugEnabled() {
24403
24745
  return globalThis.process?.env?.CAPXUL_DEBUG_TELEMETRY === "1";
24404
24746
  }
24747
+ CAPXUL_FUNCTIONS["financialOps/queries"].me, CAPXUL_FUNCTIONS["financialOps/queries"].depositInstructions, CAPXUL_FUNCTIONS["financialOps/queries"].resolveRecipient, CAPXUL_FUNCTIONS["financialOps/destinations"].add, CAPXUL_FUNCTIONS["financialOps/destinations"].list, CAPXUL_FUNCTIONS["financialOps/destinations"].remove, CAPXUL_FUNCTIONS["financialOps/queries"].listPayments, CAPXUL_FUNCTIONS["financialOps/queries"].getPayment, CAPXUL_FUNCTIONS["financialOps/queries"].listOrganizationPayments, CAPXUL_FUNCTIONS["financialOps/queries"].getOrganizationPayment, CAPXUL_FUNCTIONS["financialOps/queries"].previewOrganizationPaymentRetry, CAPXUL_FUNCTIONS["movement/activity"].list, CAPXUL_FUNCTIONS["movement/activity"].summary, CAPXUL_FUNCTIONS["movement/activity"].get, CAPXUL_FUNCTIONS["movement/activity"].annotate, CAPXUL_FUNCTIONS["movement/annotations"].overlay, CAPXUL_FUNCTIONS["financialOps/queries"].getPaymentDocument, CAPXUL_FUNCTIONS["financialOps/queries"].verifyPaymentDocument, CAPXUL_FUNCTIONS["financialOps/queries"].renderStoredDocument;
24748
+ TaggedError("IndexerReadError");
24749
+ Service()("@capxul/sdk/ports/IndexerReadPort");
24405
24750
  Struct({
24406
24751
  orgId: String$1,
24407
24752
  payment: Unknown