business-as-code 2.3.0 → 2.4.0

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 (213) hide show
  1. package/.turbo/turbo-build.log +4 -0
  2. package/CHANGELOG.md +43 -0
  3. package/dist/business.d.ts +62 -0
  4. package/dist/business.d.ts.map +1 -0
  5. package/dist/business.js +109 -0
  6. package/dist/business.js.map +1 -0
  7. package/dist/dollar.d.ts +60 -0
  8. package/dist/dollar.d.ts.map +1 -0
  9. package/dist/dollar.js +107 -0
  10. package/dist/dollar.js.map +1 -0
  11. package/dist/entities/assets.d.ts +21 -0
  12. package/dist/entities/assets.d.ts.map +1 -0
  13. package/dist/entities/assets.js +323 -0
  14. package/dist/entities/assets.js.map +1 -0
  15. package/dist/entities/business.d.ts +36 -0
  16. package/dist/entities/business.d.ts.map +1 -0
  17. package/dist/entities/business.js +370 -0
  18. package/dist/entities/business.js.map +1 -0
  19. package/dist/entities/communication.d.ts +21 -0
  20. package/dist/entities/communication.d.ts.map +1 -0
  21. package/dist/entities/communication.js +255 -0
  22. package/dist/entities/communication.js.map +1 -0
  23. package/dist/entities/customers.d.ts +58 -0
  24. package/dist/entities/customers.d.ts.map +1 -0
  25. package/dist/entities/customers.js +989 -0
  26. package/dist/entities/customers.js.map +1 -0
  27. package/dist/entities/financials.d.ts +59 -0
  28. package/dist/entities/financials.d.ts.map +1 -0
  29. package/dist/entities/financials.js +932 -0
  30. package/dist/entities/financials.js.map +1 -0
  31. package/dist/entities/goals.d.ts +58 -0
  32. package/dist/entities/goals.d.ts.map +1 -0
  33. package/dist/entities/goals.js +800 -0
  34. package/dist/entities/goals.js.map +1 -0
  35. package/dist/entities/index.d.ts +299 -0
  36. package/dist/entities/index.d.ts.map +1 -0
  37. package/dist/entities/index.js +198 -0
  38. package/dist/entities/index.js.map +1 -0
  39. package/dist/entities/legal.d.ts +21 -0
  40. package/dist/entities/legal.d.ts.map +1 -0
  41. package/dist/entities/legal.js +301 -0
  42. package/dist/entities/legal.js.map +1 -0
  43. package/dist/entities/market.d.ts +21 -0
  44. package/dist/entities/market.d.ts.map +1 -0
  45. package/dist/entities/market.js +301 -0
  46. package/dist/entities/market.js.map +1 -0
  47. package/dist/entities/marketing.d.ts +67 -0
  48. package/dist/entities/marketing.d.ts.map +1 -0
  49. package/dist/entities/marketing.js +1157 -0
  50. package/dist/entities/marketing.js.map +1 -0
  51. package/dist/entities/offerings.d.ts +51 -0
  52. package/dist/entities/offerings.d.ts.map +1 -0
  53. package/dist/entities/offerings.js +727 -0
  54. package/dist/entities/offerings.js.map +1 -0
  55. package/dist/entities/operations.d.ts +58 -0
  56. package/dist/entities/operations.d.ts.map +1 -0
  57. package/dist/entities/operations.js +787 -0
  58. package/dist/entities/operations.js.map +1 -0
  59. package/dist/entities/organization.d.ts +61 -0
  60. package/dist/entities/organization.d.ts.map +1 -0
  61. package/dist/entities/organization.js +816 -0
  62. package/dist/entities/organization.js.map +1 -0
  63. package/dist/entities/partnerships.d.ts +21 -0
  64. package/dist/entities/partnerships.d.ts.map +1 -0
  65. package/dist/entities/partnerships.js +300 -0
  66. package/dist/entities/partnerships.js.map +1 -0
  67. package/dist/entities/planning.d.ts +87 -0
  68. package/dist/entities/planning.d.ts.map +1 -0
  69. package/dist/entities/planning.js +271 -0
  70. package/dist/entities/planning.js.map +1 -0
  71. package/dist/entities/projects.d.ts +25 -0
  72. package/dist/entities/projects.d.ts.map +1 -0
  73. package/dist/entities/projects.js +349 -0
  74. package/dist/entities/projects.js.map +1 -0
  75. package/dist/entities/risk.d.ts +21 -0
  76. package/dist/entities/risk.d.ts.map +1 -0
  77. package/dist/entities/risk.js +293 -0
  78. package/dist/entities/risk.js.map +1 -0
  79. package/dist/entities/sales.d.ts +72 -0
  80. package/dist/entities/sales.d.ts.map +1 -0
  81. package/dist/entities/sales.js +1248 -0
  82. package/dist/entities/sales.js.map +1 -0
  83. package/dist/finance/account.d.ts +44 -0
  84. package/dist/finance/account.d.ts.map +1 -0
  85. package/dist/finance/account.js +6 -0
  86. package/dist/finance/account.js.map +1 -0
  87. package/dist/finance/authority.d.ts +78 -0
  88. package/dist/finance/authority.d.ts.map +1 -0
  89. package/dist/finance/authority.js +27 -0
  90. package/dist/finance/authority.js.map +1 -0
  91. package/dist/finance/card.d.ts +36 -0
  92. package/dist/finance/card.d.ts.map +1 -0
  93. package/dist/finance/card.js +6 -0
  94. package/dist/finance/card.js.map +1 -0
  95. package/dist/finance/identity.d.ts +30 -0
  96. package/dist/finance/identity.d.ts.map +1 -0
  97. package/dist/finance/identity.js +8 -0
  98. package/dist/finance/identity.js.map +1 -0
  99. package/dist/finance/index.d.ts +36 -0
  100. package/dist/finance/index.d.ts.map +1 -0
  101. package/dist/finance/index.js +22 -0
  102. package/dist/finance/index.js.map +1 -0
  103. package/dist/finance/ledger.d.ts +24 -0
  104. package/dist/finance/ledger.d.ts.map +1 -0
  105. package/dist/finance/ledger.js +8 -0
  106. package/dist/finance/ledger.js.map +1 -0
  107. package/dist/finance/merchant.d.ts +129 -0
  108. package/dist/finance/merchant.d.ts.map +1 -0
  109. package/dist/finance/merchant.js +21 -0
  110. package/dist/finance/merchant.js.map +1 -0
  111. package/dist/finance/outcome-contract.d.ts +139 -0
  112. package/dist/finance/outcome-contract.d.ts.map +1 -0
  113. package/dist/finance/outcome-contract.js +27 -0
  114. package/dist/finance/outcome-contract.js.map +1 -0
  115. package/dist/finance/port.d.ts +121 -0
  116. package/dist/finance/port.d.ts.map +1 -0
  117. package/dist/finance/port.js +10 -0
  118. package/dist/finance/port.js.map +1 -0
  119. package/dist/finance/pricing.d.ts +154 -0
  120. package/dist/finance/pricing.d.ts.map +1 -0
  121. package/dist/finance/pricing.js +79 -0
  122. package/dist/finance/pricing.js.map +1 -0
  123. package/dist/finance/proof-predicate.d.ts +92 -0
  124. package/dist/finance/proof-predicate.d.ts.map +1 -0
  125. package/dist/finance/proof-predicate.js +80 -0
  126. package/dist/finance/proof-predicate.js.map +1 -0
  127. package/dist/finance/refund.d.ts +44 -0
  128. package/dist/finance/refund.d.ts.map +1 -0
  129. package/dist/finance/refund.js +41 -0
  130. package/dist/finance/refund.js.map +1 -0
  131. package/dist/finance/sla.d.ts +25 -0
  132. package/dist/finance/sla.d.ts.map +1 -0
  133. package/dist/finance/sla.js +7 -0
  134. package/dist/finance/sla.js.map +1 -0
  135. package/dist/finance/types.d.ts +79 -0
  136. package/dist/finance/types.d.ts.map +1 -0
  137. package/dist/finance/types.js +8 -0
  138. package/dist/finance/types.js.map +1 -0
  139. package/dist/financials.d.ts +130 -0
  140. package/dist/financials.d.ts.map +1 -0
  141. package/dist/financials.js +297 -0
  142. package/dist/financials.js.map +1 -0
  143. package/dist/goals.d.ts +106 -0
  144. package/dist/goals.d.ts.map +1 -0
  145. package/dist/goals.js +284 -0
  146. package/dist/goals.js.map +1 -0
  147. package/dist/index.d.ts +101 -0
  148. package/dist/index.d.ts.map +1 -0
  149. package/dist/index.js +144 -0
  150. package/dist/index.js.map +1 -0
  151. package/dist/kpis.d.ts +137 -0
  152. package/dist/kpis.d.ts.map +1 -0
  153. package/dist/kpis.js +297 -0
  154. package/dist/kpis.js.map +1 -0
  155. package/dist/metrics.d.ts +448 -0
  156. package/dist/metrics.d.ts.map +1 -0
  157. package/dist/metrics.js +330 -0
  158. package/dist/metrics.js.map +1 -0
  159. package/dist/okrs.d.ts +157 -0
  160. package/dist/okrs.d.ts.map +1 -0
  161. package/dist/okrs.js +391 -0
  162. package/dist/okrs.js.map +1 -0
  163. package/dist/organization.d.ts +585 -0
  164. package/dist/organization.d.ts.map +1 -0
  165. package/dist/organization.js +173 -0
  166. package/dist/organization.js.map +1 -0
  167. package/dist/process.d.ts +112 -0
  168. package/dist/process.d.ts.map +1 -0
  169. package/dist/process.js +242 -0
  170. package/dist/process.js.map +1 -0
  171. package/dist/product.d.ts +85 -0
  172. package/dist/product.d.ts.map +1 -0
  173. package/dist/product.js +145 -0
  174. package/dist/product.js.map +1 -0
  175. package/dist/queries.d.ts +304 -0
  176. package/dist/queries.d.ts.map +1 -0
  177. package/dist/queries.js +577 -0
  178. package/dist/queries.js.map +1 -0
  179. package/dist/roles.d.ts +334 -0
  180. package/dist/roles.d.ts.map +1 -0
  181. package/dist/roles.js +282 -0
  182. package/dist/roles.js.map +1 -0
  183. package/dist/service.d.ts +61 -0
  184. package/dist/service.d.ts.map +1 -0
  185. package/dist/service.js +140 -0
  186. package/dist/service.js.map +1 -0
  187. package/dist/types.d.ts +459 -0
  188. package/dist/types.d.ts.map +1 -0
  189. package/dist/types.js +5 -0
  190. package/dist/types.js.map +1 -0
  191. package/dist/vision.d.ts +38 -0
  192. package/dist/vision.d.ts.map +1 -0
  193. package/dist/vision.js +68 -0
  194. package/dist/vision.js.map +1 -0
  195. package/dist/workflow.d.ts +115 -0
  196. package/dist/workflow.d.ts.map +1 -0
  197. package/dist/workflow.js +248 -0
  198. package/dist/workflow.js.map +1 -0
  199. package/package.json +8 -4
  200. package/src/finance/account.ts +48 -0
  201. package/src/finance/authority.ts +42 -0
  202. package/src/finance/card.ts +38 -0
  203. package/src/finance/identity.ts +31 -0
  204. package/src/finance/index.ts +117 -0
  205. package/src/finance/ledger.ts +26 -0
  206. package/src/finance/merchant.ts +127 -0
  207. package/src/finance/outcome-contract.ts +157 -0
  208. package/src/finance/port.ts +144 -0
  209. package/src/finance/pricing.ts +197 -0
  210. package/src/finance/proof-predicate.ts +106 -0
  211. package/src/finance/refund.ts +52 -0
  212. package/src/finance/sla.ts +33 -0
  213. package/src/finance/types.ts +75 -0
@@ -0,0 +1,80 @@
1
+ /**
2
+ * ProofPredicate — composable predicates that gate outcome-based settlement.
3
+ *
4
+ * Stripe's MPP Sessions ship escrow but no outcome-predicate-driven release —
5
+ * this module is the gap-filler. SaS's Service.outcomeContract.predicate
6
+ * uses these to express "definition of done."
7
+ *
8
+ * Seven leaf predicates + AND/OR composition:
9
+ * - schema-match : output matches schema
10
+ * - evaluator-pass : EvaluatorPanel approves at threshold
11
+ * - human-sign : human with signerRoles signs
12
+ * - external : external verifier (e.g. github CI + merged) approves
13
+ * - load-bearing-pass : a named subset of rubric items all pass (sb killThreshold)
14
+ * - overall-floor : N of total rubric items pass (sb killThreshold)
15
+ * - unmet-requirements-pass : no `severity: 'blocking'` UnmetRequirements remain
16
+ * (sb-n7d open-blocking gate); when `categories` is
17
+ * supplied, only those categories are checked.
18
+ */
19
+ export const SchemaMatch = (schema) => ({
20
+ kind: 'schema-match',
21
+ schema,
22
+ });
23
+ export const EvaluatorPass = (opts) => ({
24
+ kind: 'evaluator-pass',
25
+ panelRef: opts.panelRef,
26
+ minScore: opts.minScore,
27
+ });
28
+ export const HumanSign = (opts) => {
29
+ if (opts.when !== undefined) {
30
+ return { kind: 'human-sign', signerRoles: opts.signerRoles, when: opts.when };
31
+ }
32
+ return { kind: 'human-sign', signerRoles: opts.signerRoles };
33
+ };
34
+ export const External = (opts) => ({
35
+ kind: 'external',
36
+ verifier: opts.verifier,
37
+ spec: opts.spec,
38
+ });
39
+ export const LoadBearingPass = (itemSet) => ({
40
+ kind: 'load-bearing-pass',
41
+ itemSet,
42
+ });
43
+ export const OverallFloor = (opts) => ({
44
+ kind: 'overall-floor',
45
+ minPasses: opts.minPasses,
46
+ outOfTotal: opts.outOfTotal,
47
+ });
48
+ /**
49
+ * `UnmetRequirementsPass` — sb-n7d's open-blocking gate as a first-class
50
+ * predicate.
51
+ *
52
+ * Passes iff no `severity: 'blocking'` UnmetRequirement is present in the
53
+ * verify-time evaluation context. `severity: 'warning'` items are ignored.
54
+ *
55
+ * When `categories` is supplied, only requirements whose `category` matches
56
+ * one of the listed values are considered (others are ignored regardless of
57
+ * severity). When omitted, ALL categories are inspected.
58
+ *
59
+ * @example
60
+ * // Any blocking unmet requirement fails the predicate.
61
+ * UnmetRequirementsPass()
62
+ *
63
+ * // Only blocking items in the 'compliance' or 'security' buckets fail.
64
+ * UnmetRequirementsPass({ categories: ['compliance', 'security'] })
65
+ */
66
+ export const UnmetRequirementsPass = (opts) => {
67
+ if (opts?.categories !== undefined) {
68
+ return { kind: 'unmet-requirements-pass', categories: opts.categories };
69
+ }
70
+ return { kind: 'unmet-requirements-pass' };
71
+ };
72
+ export const AND = (...predicates) => ({
73
+ kind: 'and',
74
+ predicates,
75
+ });
76
+ export const OR = (...predicates) => ({
77
+ kind: 'or',
78
+ predicates,
79
+ });
80
+ //# sourceMappingURL=proof-predicate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proof-predicate.js","sourceRoot":"","sources":["../../src/finance/proof-predicate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAiBH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,MAAe,EAAkB,EAAE,CAAC,CAAC;IAC/D,IAAI,EAAE,cAAc;IACpB,MAAM;CACP,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAG7B,EAAkB,EAAE,CAAC,CAAC;IACrB,IAAI,EAAE,gBAAgB;IACtB,QAAQ,EAAE,IAAI,CAAC,QAAQ;IACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;CACxB,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAA8C,EAAkB,EAAE;IAC1F,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAA;IAC/E,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAA;AAC9D,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,IAAyC,EAAkB,EAAE,CAAC,CAAC;IACtF,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE,IAAI,CAAC,QAAQ;IACvB,IAAI,EAAE,IAAI,CAAC,IAAI;CAChB,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAiB,EAAkB,EAAE,CAAC,CAAC;IACrE,IAAI,EAAE,mBAAmB;IACzB,OAAO;CACR,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAA+C,EAAkB,EAAE,CAAC,CAAC;IAChG,IAAI,EAAE,eAAe;IACrB,SAAS,EAAE,IAAI,CAAC,SAAS;IACzB,UAAU,EAAE,IAAI,CAAC,UAAU;CAC5B,CAAC,CAAA;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,IAAgC,EAAkB,EAAE;IACxF,IAAI,IAAI,EAAE,UAAU,KAAK,SAAS,EAAE,CAAC;QACnC,OAAO,EAAE,IAAI,EAAE,yBAAyB,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAA;IACzE,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAA;AAC5C,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,UAA4B,EAAkB,EAAE,CAAC,CAAC;IACvE,IAAI,EAAE,KAAK;IACX,UAAU;CACX,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,UAA4B,EAAkB,EAAE,CAAC,CAAC;IACtE,IAAI,EAAE,IAAI;IACV,UAAU;CACX,CAAC,CAAA"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * RefundContract — typed refund machinery. The 7-pattern catalog (per startup-builder
3
+ * SERVICES.md) defines the contractual templates a Service can bind to.
4
+ *
5
+ * Stripe's Smart Disputes are consumer-chargeback-shaped; this is B2B SLA-shape.
6
+ */
7
+ export type RefundContractRef = 'no-charge-if-not-qualified' | 'quality-floor-fail' | 'sla-credit-on-late-delivery' | 'sla-credit-on-late-close' | 'partial-credit-on-partial-delivery' | 'time-bounded-money-back' | 'escalate-to-dispute' | (string & {
8
+ __brand?: 'RefundContractRef';
9
+ });
10
+ /**
11
+ * Catalog of canonical refund contracts. Consumers reference by id; substrate
12
+ * resolves the contract semantics at settlement time.
13
+ */
14
+ export declare const RefundContracts: {
15
+ readonly 'no-charge-if-not-qualified': {
16
+ readonly description: "No charge unless EvaluatorPass + downstream verification confirms work delivered.";
17
+ readonly triggersAt: "pre-charge";
18
+ };
19
+ readonly 'quality-floor-fail': {
20
+ readonly description: "Full refund when EvaluatorPanel rejects below quality floor.";
21
+ readonly triggersAt: "post-quality-review";
22
+ };
23
+ readonly 'sla-credit-on-late-delivery': {
24
+ readonly description: "Credit equal to N% of invoice when delivery exceeds OutcomeContract.expiresAt.";
25
+ readonly triggersAt: "on-timeout";
26
+ };
27
+ readonly 'sla-credit-on-late-close': {
28
+ readonly description: "Credit on monthly subscription when SLA target (e.g. close-by-day-5) breached.";
29
+ readonly triggersAt: "sla-breach";
30
+ };
31
+ readonly 'partial-credit-on-partial-delivery': {
32
+ readonly description: "Pro-rata credit when fraction of work-units delivered (e.g. tickets resolved).";
33
+ readonly triggersAt: "post-delivery";
34
+ };
35
+ readonly 'time-bounded-money-back': {
36
+ readonly description: "Full refund within N days of acceptance, no questions asked.";
37
+ readonly triggersAt: "on-customer-request";
38
+ };
39
+ readonly 'escalate-to-dispute': {
40
+ readonly description: "Route to ESCALATED_TO_HUMAN_REVIEW state; manual resolution.";
41
+ readonly triggersAt: "on-customer-dispute";
42
+ };
43
+ };
44
+ //# sourceMappingURL=refund.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refund.d.ts","sourceRoot":"","sources":["../../src/finance/refund.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,iBAAiB,GACzB,4BAA4B,GAC5B,oBAAoB,GACpB,6BAA6B,GAC7B,0BAA0B,GAC1B,oCAAoC,GACpC,yBAAyB,GACzB,qBAAqB,GACrB,CAAC,MAAM,GAAG;IAAE,OAAO,CAAC,EAAE,mBAAmB,CAAA;CAAE,CAAC,CAAA;AAEhD;;;GAGG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BlB,CAAA"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * RefundContract — typed refund machinery. The 7-pattern catalog (per startup-builder
3
+ * SERVICES.md) defines the contractual templates a Service can bind to.
4
+ *
5
+ * Stripe's Smart Disputes are consumer-chargeback-shaped; this is B2B SLA-shape.
6
+ */
7
+ /**
8
+ * Catalog of canonical refund contracts. Consumers reference by id; substrate
9
+ * resolves the contract semantics at settlement time.
10
+ */
11
+ export const RefundContracts = {
12
+ 'no-charge-if-not-qualified': {
13
+ description: 'No charge unless EvaluatorPass + downstream verification confirms work delivered.',
14
+ triggersAt: 'pre-charge',
15
+ },
16
+ 'quality-floor-fail': {
17
+ description: 'Full refund when EvaluatorPanel rejects below quality floor.',
18
+ triggersAt: 'post-quality-review',
19
+ },
20
+ 'sla-credit-on-late-delivery': {
21
+ description: 'Credit equal to N% of invoice when delivery exceeds OutcomeContract.expiresAt.',
22
+ triggersAt: 'on-timeout',
23
+ },
24
+ 'sla-credit-on-late-close': {
25
+ description: 'Credit on monthly subscription when SLA target (e.g. close-by-day-5) breached.',
26
+ triggersAt: 'sla-breach',
27
+ },
28
+ 'partial-credit-on-partial-delivery': {
29
+ description: 'Pro-rata credit when fraction of work-units delivered (e.g. tickets resolved).',
30
+ triggersAt: 'post-delivery',
31
+ },
32
+ 'time-bounded-money-back': {
33
+ description: 'Full refund within N days of acceptance, no questions asked.',
34
+ triggersAt: 'on-customer-request',
35
+ },
36
+ 'escalate-to-dispute': {
37
+ description: 'Route to ESCALATED_TO_HUMAN_REVIEW state; manual resolution.',
38
+ triggersAt: 'on-customer-dispute',
39
+ },
40
+ };
41
+ //# sourceMappingURL=refund.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refund.js","sourceRoot":"","sources":["../../src/finance/refund.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,4BAA4B,EAAE;QAC5B,WAAW,EACT,mFAAmF;QACrF,UAAU,EAAE,YAAY;KACzB;IACD,oBAAoB,EAAE;QACpB,WAAW,EAAE,8DAA8D;QAC3E,UAAU,EAAE,qBAAqB;KAClC;IACD,6BAA6B,EAAE;QAC7B,WAAW,EAAE,gFAAgF;QAC7F,UAAU,EAAE,YAAY;KACzB;IACD,0BAA0B,EAAE;QAC1B,WAAW,EAAE,gFAAgF;QAC7F,UAAU,EAAE,YAAY;KACzB;IACD,oCAAoC,EAAE;QACpC,WAAW,EAAE,gFAAgF;QAC7F,UAAU,EAAE,eAAe;KAC5B;IACD,yBAAyB,EAAE;QACzB,WAAW,EAAE,8DAA8D;QAC3E,UAAU,EAAE,qBAAqB;KAClC;IACD,qBAAqB,EAAE;QACrB,WAAW,EAAE,8DAA8D;QAC3E,UAAU,EAAE,qBAAqB;KAClC;CACO,CAAA"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * SLAPolicy — service-level agreement with auto-credit / auto-refund / escalate
3
+ * on breach. The SaS book's "outcome-pricing requires you to stand behind quality"
4
+ * substrate.
5
+ */
6
+ export interface SLATarget {
7
+ metric: 'latency-ms' | 'accuracy' | 'on-time' | 'completeness' | 'first-contact-resolution' | 'csat' | string;
8
+ /** Threshold value or expression (e.g. 'day-5', 0.95, 1000). */
9
+ threshold: number | string;
10
+ }
11
+ export interface SLAPolicy {
12
+ $id: string;
13
+ $type: 'SLAPolicy';
14
+ serviceRef: string;
15
+ targets: SLATarget[];
16
+ onBreach: {
17
+ /** Percent of charge to credit back (0-100). */
18
+ creditPercent?: number;
19
+ /** Percent of charge to refund (0-100). */
20
+ refundPercent?: number;
21
+ /** Worker (Person/Agent/Role) to escalate to. */
22
+ escalateTo?: string;
23
+ };
24
+ }
25
+ //# sourceMappingURL=sla.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sla.d.ts","sourceRoot":"","sources":["../../src/finance/sla.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,SAAS;IACxB,MAAM,EACF,YAAY,GACZ,UAAU,GACV,SAAS,GACT,cAAc,GACd,0BAA0B,GAC1B,MAAM,GACN,MAAM,CAAA;IACV,gEAAgE;IAChE,SAAS,EAAE,MAAM,GAAG,MAAM,CAAA;CAC3B;AAED,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,WAAW,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,SAAS,EAAE,CAAA;IACpB,QAAQ,EAAE;QACR,gDAAgD;QAChD,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,2CAA2C;QAC3C,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,iDAAiD;QACjD,UAAU,CAAC,EAAE,MAAM,CAAA;KACpB,CAAA;CACF"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * SLAPolicy — service-level agreement with auto-credit / auto-refund / escalate
3
+ * on breach. The SaS book's "outcome-pricing requires you to stand behind quality"
4
+ * substrate.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=sla.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sla.js","sourceRoot":"","sources":["../../src/finance/sla.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Core value types — Money, Cost, Budget, SpendControl, CostModel.
3
+ *
4
+ * Money uses bigint in smallest currency unit (cents/satoshis/wei) for precision.
5
+ * Refs use plain string with brand comment; cross-package nominal types deferred.
6
+ */
7
+ export type FiatCurrency = 'USD' | 'EUR' | 'GBP' | 'JPY' | 'CAD' | 'AUD' | string;
8
+ export type StablecoinCurrency = 'USDC' | 'PYUSD' | 'USDT' | 'USDG' | 'USDSui' | 'CASH' | string;
9
+ export type CryptoCurrency = 'BTC' | 'ETH' | 'SOL';
10
+ export type Currency = FiatCurrency | StablecoinCurrency | CryptoCurrency;
11
+ export interface Money {
12
+ amount: bigint;
13
+ currency: Currency;
14
+ }
15
+ /** Cost incurred by an Action — every cascade Function call captures one. */
16
+ export interface Cost {
17
+ $id: string;
18
+ $type: 'Cost';
19
+ /** Reference to the underlying Action (digital-objects ActionRef shape). */
20
+ actionRef: string;
21
+ amount: Money;
22
+ /** Provider that incurred the cost: 'openai' | 'anthropic' | 'stripe' | ... */
23
+ provider: string;
24
+ category: 'inference' | 'compute' | 'storage' | 'api' | 'human' | 'rail-fee' | 'other';
25
+ /** ISO-8601 timestamp. */
26
+ capturedAt: string;
27
+ }
28
+ /** Where a Budget applies. */
29
+ export type BudgetScope = {
30
+ kind: 'worker';
31
+ ref: string;
32
+ } | {
33
+ kind: 'function';
34
+ ref: string;
35
+ } | {
36
+ kind: 'goal';
37
+ ref: string;
38
+ } | {
39
+ kind: 'experiment';
40
+ ref: string;
41
+ } | {
42
+ kind: 'tenant';
43
+ ref: string;
44
+ };
45
+ export interface Budget {
46
+ $id: string;
47
+ $type: 'Budget';
48
+ scope: BudgetScope;
49
+ cap: Money;
50
+ period: 'daily' | 'weekly' | 'monthly' | 'one-time';
51
+ /** ISO-8601 timestamp; absent for one-time budgets. */
52
+ resetAt?: string;
53
+ }
54
+ export interface SpendControl {
55
+ budgetRef: string;
56
+ /** 0-1 fraction of cap — warn when soft threshold crossed. */
57
+ soft?: number;
58
+ /** 0-1 fraction of cap — block/escalate when hard threshold crossed. */
59
+ hard: number;
60
+ onBreach: 'block' | 'escalate' | 'warn';
61
+ /** Worker to escalate to (Person/Agent/Role); ThingRef shape. */
62
+ escalateTo?: string;
63
+ }
64
+ /** Declared cost model on a Function or Service. */
65
+ export interface CostModel {
66
+ /** Per-invocation flat cost (cents in smallest unit). */
67
+ perInvocation?: bigint;
68
+ /** Per-transaction cost (e.g. per-token, per-row). */
69
+ perTx?: bigint;
70
+ /** Per round of agent execution (e.g. per-dev-agent-round). */
71
+ perAgentRound?: bigint;
72
+ /** Per external API call. */
73
+ perApiCall?: bigint;
74
+ /** Per-symbol or per-unit-of-output. */
75
+ perUnit?: bigint;
76
+ /** Hourly rate for human work. */
77
+ perHour?: bigint;
78
+ }
79
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/finance/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAA;AACjF,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAA;AAChG,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAA;AAClD,MAAM,MAAM,QAAQ,GAAG,YAAY,GAAG,kBAAkB,GAAG,cAAc,CAAA;AAEzE,MAAM,WAAW,KAAK;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,QAAQ,CAAA;CACnB;AAED,6EAA6E;AAC7E,MAAM,WAAW,IAAI;IACnB,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,4EAA4E;IAC5E,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,KAAK,CAAA;IACb,+EAA+E;IAC/E,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,KAAK,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,CAAA;IACtF,0BAA0B;IAC1B,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,8BAA8B;AAC9B,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAC7B;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAA;AAEnC,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,QAAQ,CAAA;IACf,KAAK,EAAE,WAAW,CAAA;IAClB,GAAG,EAAE,KAAK,CAAA;IACV,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAA;IACnD,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,8DAA8D;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,OAAO,GAAG,UAAU,GAAG,MAAM,CAAA;IACvC,iEAAiE;IACjE,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,oDAAoD;AACpD,MAAM,WAAW,SAAS;IACxB,yDAAyD;IACzD,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,+DAA+D;IAC/D,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,6BAA6B;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,kCAAkC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Core value types — Money, Cost, Budget, SpendControl, CostModel.
3
+ *
4
+ * Money uses bigint in smallest currency unit (cents/satoshis/wei) for precision.
5
+ * Refs use plain string with brand comment; cross-package nominal types deferred.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/finance/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Financial metrics and calculations
3
+ */
4
+ import type { FinancialMetrics, FinancialStatement, Currency } from './types.js';
5
+ /**
6
+ * Calculate financial metrics from basic inputs
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * const metrics = financials({
11
+ * revenue: 1000000,
12
+ * cogs: 300000,
13
+ * operatingExpenses: 500000,
14
+ * currency: 'USD',
15
+ * period: 'monthly',
16
+ * })
17
+ *
18
+ * console.log(metrics.grossMargin) // 70%
19
+ * console.log(metrics.operatingMargin) // 20%
20
+ * console.log(metrics.netMargin) // 20%
21
+ * ```
22
+ */
23
+ export declare function financials(metrics: Partial<FinancialMetrics>): FinancialMetrics;
24
+ /**
25
+ * Calculate gross margin
26
+ */
27
+ export declare function calculateGrossMargin(revenue: number, cogs: number): number;
28
+ /**
29
+ * Calculate operating margin
30
+ */
31
+ export declare function calculateOperatingMargin(revenue: number, cogs: number, operatingExpenses: number): number;
32
+ /**
33
+ * Calculate net margin
34
+ */
35
+ export declare function calculateNetMargin(revenue: number, netIncome: number): number;
36
+ /**
37
+ * Calculate EBITDA margin
38
+ */
39
+ export declare function calculateEBITDAMargin(revenue: number, ebitda: number): number;
40
+ /**
41
+ * Calculate burn rate (monthly cash burn)
42
+ */
43
+ export declare function calculateBurnRate(cashStart: number, cashEnd: number, months: number): number;
44
+ /**
45
+ * Calculate runway (months until cash runs out)
46
+ */
47
+ export declare function calculateRunway(cash: number, monthlyBurnRate: number): number;
48
+ /**
49
+ * Calculate customer acquisition cost (CAC)
50
+ */
51
+ export declare function calculateCAC(marketingSpend: number, newCustomers: number): number;
52
+ /**
53
+ * Calculate customer lifetime value (LTV)
54
+ */
55
+ export declare function calculateLTV(averageRevenuePerCustomer: number, averageCustomerLifetimeMonths: number, grossMarginPercent: number): number;
56
+ /**
57
+ * Calculate LTV:CAC ratio
58
+ */
59
+ export declare function calculateLTVtoCAC(ltv: number, cac: number): number;
60
+ /**
61
+ * Calculate payback period (months to recover CAC)
62
+ */
63
+ export declare function calculatePaybackPeriod(cac: number, monthlyRevPerCustomer: number): number;
64
+ /**
65
+ * Calculate annual recurring revenue (ARR)
66
+ */
67
+ export declare function calculateARR(mrr: number): number;
68
+ /**
69
+ * Calculate monthly recurring revenue (MRR)
70
+ */
71
+ export declare function calculateMRR(arr: number): number;
72
+ /**
73
+ * Calculate revenue growth rate
74
+ */
75
+ export declare function calculateGrowthRate(currentRevenue: number, previousRevenue: number): number;
76
+ /**
77
+ * Calculate compound annual growth rate (CAGR)
78
+ */
79
+ export declare function calculateCAGR(beginningValue: number, endingValue: number, years: number): number;
80
+ /**
81
+ * Calculate return on investment (ROI)
82
+ */
83
+ export declare function calculateROI(gain: number, cost: number): number;
84
+ /**
85
+ * Calculate return on equity (ROE)
86
+ */
87
+ export declare function calculateROE(netIncome: number, shareholderEquity: number): number;
88
+ /**
89
+ * Calculate return on assets (ROA)
90
+ */
91
+ export declare function calculateROA(netIncome: number, totalAssets: number): number;
92
+ /**
93
+ * Calculate quick ratio (liquidity)
94
+ */
95
+ export declare function calculateQuickRatio(currentAssets: number, inventory: number, currentLiabilities: number): number;
96
+ /**
97
+ * Calculate current ratio (liquidity)
98
+ */
99
+ export declare function calculateCurrentRatio(currentAssets: number, currentLiabilities: number): number;
100
+ /**
101
+ * Calculate debt-to-equity ratio
102
+ */
103
+ export declare function calculateDebtToEquity(totalDebt: number, totalEquity: number): number;
104
+ /**
105
+ * Format currency value
106
+ */
107
+ export declare function formatCurrency(amount: number, currency?: Currency): string;
108
+ /**
109
+ * Create a financial statement
110
+ */
111
+ export declare function createStatement(type: FinancialStatement['type'], period: string, lineItems: Record<string, number>, currency?: Currency): FinancialStatement;
112
+ /**
113
+ * Get line item from financial statement
114
+ */
115
+ export declare function getLineItem(statement: FinancialStatement, name: string): number;
116
+ /**
117
+ * Compare financial metrics between periods
118
+ */
119
+ export declare function compareMetrics(current: FinancialMetrics, previous: FinancialMetrics): Record<string, {
120
+ change: number;
121
+ changePercent: number;
122
+ }>;
123
+ /**
124
+ * Validate financial metrics
125
+ */
126
+ export declare function validateFinancials(metrics: FinancialMetrics): {
127
+ valid: boolean;
128
+ errors: string[];
129
+ };
130
+ //# sourceMappingURL=financials.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"financials.d.ts","sourceRoot":"","sources":["../src/financials.ts"],"names":[],"mappings":"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"}