@happyvertical/smrt-commerce 0.55.3 → 0.55.5
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/agents/commercial-ui.md +5 -2
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/manifest.json +1 -1
- package/dist/smrt-knowledge.json +5 -5
- package/package.json +11 -11
package/dist/manifest.json
CHANGED
package/dist/smrt-knowledge.json
CHANGED
|
@@ -3,15 +3,15 @@
|
|
|
3
3
|
"sensitiveFieldsExcluded": true,
|
|
4
4
|
"generatedAt": "1970-01-01T00:00:00.000Z",
|
|
5
5
|
"packageName": "@happyvertical/smrt-commerce",
|
|
6
|
-
"packageVersion": "0.55.
|
|
6
|
+
"packageVersion": "0.55.5",
|
|
7
7
|
"sourceManifestPath": "dist/manifest.json",
|
|
8
8
|
"agentDocPath": "AGENTS.md",
|
|
9
9
|
"sourceHashes": {
|
|
10
|
-
"manifest": "
|
|
11
|
-
"packageJson": "
|
|
10
|
+
"manifest": "1135bac069773829d9ac7a88cab32c427f85da56865546b703c7820566c21b07",
|
|
11
|
+
"packageJson": "292a441d9422821d431061492756385a02987366c3ed987f6668685216c5c384",
|
|
12
12
|
"agents": "67b16f7ce35487a5fecaca37b52edbdb66c166b2d99672ce56f08ea3f4a6f3f3",
|
|
13
13
|
"moduleDoc:agents/invoice-quantity.md": "bc3b617d4fb8cc87511763b281283107557ba64795e64522193ef967a3715d32",
|
|
14
|
-
"moduleDoc:agents/commercial-ui.md": "
|
|
14
|
+
"moduleDoc:agents/commercial-ui.md": "308729a481c82903d06837e7052c04509a92cf17d17345f71dce88d8d42d0431",
|
|
15
15
|
"moduleDoc:agents/quote-ui.md": "514568e4e7815c47113627ac044a1f31a6933377b3f6c70f5d54b2508d94200c",
|
|
16
16
|
"moduleDoc:agents/purchasing-ui.md": "51ab713d89949c9779973191dfa3529e5120d087321236fc48ad1948c88f9866"
|
|
17
17
|
},
|
|
@@ -19685,7 +19685,7 @@
|
|
|
19685
19685
|
{
|
|
19686
19686
|
"path": "agents/commercial-ui.md",
|
|
19687
19687
|
"module": "commercial-ui",
|
|
19688
|
-
"content": "# Commercial UI composition\n\nThe commercial UI release is tracked in [#3423](https://github.com/happyvertical/smrt/issues/3423).\nComponents compose the provider-free controls in `@happyvertical/smrt-ui/forms`\
|
|
19688
|
+
"content": "# Commercial UI composition\n\nThe commercial UI release is tracked in [#3423](https://github.com/happyvertical/smrt/issues/3423).\nComponents compose the provider-free controls in `@happyvertical/smrt-ui/forms`\n(including `Combobox` and the searchable `RelationInput`, which takes\ncaller-supplied `search`/`resolve`) and visual controls in\n`@happyvertical/smrt-ui`. They do not require SvelteKit, a database, or the\ntop-level `smrt-svelte` integration package. Shared form controls live in\nsmrt-ui; build on them rather than re-implementing their logic locally.\n\n## Native forms and recovery\n\nThe application owns action URLs, HTTP methods, submitter names/values, field\nnames, request identity, tenant context and returned validation errors. Native\nforms use the base `Form` with `preventDefault={false}`. Enhancement is optional;\na handler that takes over submission is responsible for preventing navigation.\n\nA failed action returns the submitted strings, including invalid amounts and\nrepeated fields, alongside errors. Components must not reconstruct these values\nfrom saved models or generate a replacement request token. Unknown commit outcomes\nretain the same identity and payload until the application resolves the result.\nFile inputs cannot be repopulated after navigation: explain that the file must be\nselected again and retain the caller's recovery identity.\n\nThe existing [form retry contract](../../../docs/content/form-retry.md) provides\noptional browser enhancement. It does not replace server-side tenant/actor checks\nor idempotency. Permission props control presentation only; applications must\nsupply already-authorized data and reauthorize every submitted action.\n\n## Amounts and public compatibility\n\nNew commercial editors use explicitly documented integer minor-unit amounts.\nEditable values remain strings until the owning server validates them; blank,\ninvalid and zero are distinct. Currency and its display precision are explicit.\nDo not mix currencies in totals or infer an unknown allocation as zero.\n\nThe original invoice display DTOs in `src/svelte/types.ts` and their components\naccept decimal major-unit amounts. Preserve that published behavior. Applications\nadapting model amounts into those legacy components must explicitly convert units;\ndo not pass a model's integer amount directly or silently change a legacy prop's\nmeaning. New editor DTOs are separate contracts.\n\nApproved or otherwise retained invoice facts use the explicit `retained` display\nbranches and DTOs from `src/svelte/invoice-display.ts`. Their amounts are safe\nintegers in currency minor units, formatted through the package ISO exponent\ntable without floating-point division. Retained line subtotals, discounts, tax\nrows, holdbacks, totals, paid amounts and payable amounts are caller-authoritative;\nthe components never derive one from another, and an omitted fact stays omitted.\nApplication-specific evidence belongs in the typed detail snippets.\n\n## Domain boundaries\n\nCustomer and Vendor reference Profiles identity data. A consumer's Client record\nis not automatically a Commerce Customer; UI adoption performs no identity merge\nor persistence migration. Domain-specific contact fields, trades, project/package\nallocations and approval policies enter through typed adapters and extension slots.\n\nQuote/estimate preparation, customer acceptance, vendor award, expense review and\ninvoice approval are separate decisions. A UI status or selection must never\nimplicitly perform another transition. The server supplies current decision and\nsource availability, including restricted-reader presentation.\n\n## Backend capability assessment\n\nAssessment baseline: SMRT `98c872be4` and reviewed DomaCraft epic-138\n`b03b322f75fbfdcb9193b18e73d3ec818ef18811`.\n\n| Responsibility | Existing capability | Release decision |\n| --- | --- | --- |\n| Commitment versus actual | `ExpenseCollection.commitmentPosition()` sums reviewed, non-duplicate expenses in the commitment currency, optionally per line. | Reuse Expenses; keep DomaCraft award lineage and package-cap constraints in its adapter. |\n| Receipt identity and duplicate review | `ExpenseReceiptCollection` owns receipt joins and duplicate detection; `Expense` owns guarded review transitions. | Reuse these contracts. Private upload authorization, draft capacity and storage compensation stay in application composition. |\n| Idempotent submission and uncertain outcomes | Core `runOnce()` and UI `createFormRetry()` provide shared server/browser primitives. | Preserve the caller's request identity. Do not replace DomaCraft's transaction-bound financial submission logic without proving equivalent transaction and recovery semantics. |\n| Invoice source reservations | DomaCraft `finance.ts` reserves its own cost allocations under project transaction locks; Commerce Invoice has no equivalent source-allocation contract. | Keep the reservation service local: extracting it changes a published financial contract and requires an agreed cross-domain source model. UI accepts supplied source availability. |\n| Source-change approval invalidation | DomaCraft `withdrawInvoiceApprovalForSource()` and invoice fingerprint checks bind project policy, actor decisions and retained sources. | Keep this policy local. Shared presentation renders server-supplied approval state and cannot authorize execution. |\n\nNo generic backend redesign is required by these UI slices. A future extraction\nneeds evidence that a contract works beyond the application-specific project and\npolicy model; UI reuse alone does not establish that requirement.\n\n## Validation and consumer adoption\n\nEach slice covers its public exports, SSR/native payload, retained errors,\nread-only and empty states, keyboard operation and a 390px viewport. The release\nalso validates the complete touched packages and integrated workbench. A browser\nviewport test does not establish physical-device camera behavior.\n\nDomaCraft adopts a published release through normal dependency admission. Its\nnative financial, authorization, tenant and uncertain-outcome tests remain required;\nshared component tests do not establish those server-side properties.\n"
|
|
19689
19689
|
},
|
|
19690
19690
|
{
|
|
19691
19691
|
"path": "agents/quote-ui.md",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@happyvertical/smrt-commerce",
|
|
3
|
-
"version": "0.55.
|
|
3
|
+
"version": "0.55.5",
|
|
4
4
|
"smrtJsdoc": "strict",
|
|
5
5
|
"description": "Commerce models for the SMRT framework - contracts, fulfillments, payments",
|
|
6
6
|
"type": "module",
|
|
@@ -55,15 +55,15 @@
|
|
|
55
55
|
"access": "public"
|
|
56
56
|
},
|
|
57
57
|
"dependencies": {
|
|
58
|
-
"@happyvertical/accounting": "^0.102.
|
|
59
|
-
"@happyvertical/payments": "^0.102.
|
|
60
|
-
"@happyvertical/smrt-core": "0.55.
|
|
61
|
-
"@happyvertical/smrt-jobs": "0.55.
|
|
62
|
-
"@happyvertical/smrt-ledgers": "0.55.
|
|
63
|
-
"@happyvertical/smrt-subscriptions": "0.55.
|
|
64
|
-
"@happyvertical/smrt-tenancy": "0.55.
|
|
65
|
-
"@happyvertical/smrt-types": "0.55.
|
|
66
|
-
"@happyvertical/smrt-ui": "0.55.
|
|
58
|
+
"@happyvertical/accounting": "^0.102.4",
|
|
59
|
+
"@happyvertical/payments": "^0.102.4",
|
|
60
|
+
"@happyvertical/smrt-core": "0.55.5",
|
|
61
|
+
"@happyvertical/smrt-jobs": "0.55.5",
|
|
62
|
+
"@happyvertical/smrt-ledgers": "0.55.5",
|
|
63
|
+
"@happyvertical/smrt-subscriptions": "0.55.5",
|
|
64
|
+
"@happyvertical/smrt-tenancy": "0.55.5",
|
|
65
|
+
"@happyvertical/smrt-types": "0.55.5",
|
|
66
|
+
"@happyvertical/smrt-ui": "0.55.5"
|
|
67
67
|
},
|
|
68
68
|
"peerDependencies": {
|
|
69
69
|
"svelte": "^5.57.0"
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
}
|
|
75
75
|
},
|
|
76
76
|
"devDependencies": {
|
|
77
|
-
"@happyvertical/smrt-vitest": "0.55.
|
|
77
|
+
"@happyvertical/smrt-vitest": "0.55.5",
|
|
78
78
|
"@sveltejs/package": "^2.5.8",
|
|
79
79
|
"@sveltejs/vite-plugin-svelte": "^7.3.0",
|
|
80
80
|
"@types/node": "24.13.6",
|