@aglyn/plugins-ai 1.0.0-beta.219 → 1.0.0-beta.220

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 (181) hide show
  1. package/package.json +18 -18
  2. package/src/lib/billing/ai-month-meter.d.ts +51 -0
  3. package/src/lib/billing/ai-month-meter.js +89 -0
  4. package/src/lib/billing/ai-month-meter.js.map +1 -0
  5. package/src/lib/billing/ai-overage-close.d.ts +11 -33
  6. package/src/lib/billing/ai-overage-close.js +4 -3
  7. package/src/lib/billing/ai-overage-close.js.map +1 -1
  8. package/src/lib/billing/ai-overage-cutover.d.ts +28 -12
  9. package/src/lib/billing/ai-overage-cutover.js +1 -28
  10. package/src/lib/billing/ai-overage-cutover.js.map +1 -1
  11. package/src/lib/billing/ai-overage-ledger.js +1 -1
  12. package/src/lib/billing/ai-overage-ledger.js.map +1 -1
  13. package/src/lib/billing/ai-overage-standing.js +1 -1
  14. package/src/lib/billing/ai-overage-standing.js.map +1 -1
  15. package/src/lib/components/ai-allotment-editor.component.js +1 -1
  16. package/src/lib/components/ai-allotment-editor.component.js.map +1 -1
  17. package/src/lib/components/ai-assist-provider.component.js +3 -2
  18. package/src/lib/components/ai-assist-provider.component.js.map +1 -1
  19. package/src/lib/components/ai-automation-zones.d.ts +63 -0
  20. package/src/lib/components/ai-automation-zones.js +31 -0
  21. package/src/lib/components/ai-automation-zones.js.map +1 -0
  22. package/src/lib/components/ai-describe-automation.component.d.ts +1 -1
  23. package/src/lib/components/ai-describe-automation.component.js.map +1 -1
  24. package/src/lib/components/ai-describe-button.component.d.ts +6 -3
  25. package/src/lib/components/ai-describe-button.component.js +4 -1
  26. package/src/lib/components/ai-describe-button.component.js.map +1 -1
  27. package/src/lib/components/ai-explain-automation.component.d.ts +1 -1
  28. package/src/lib/components/ai-explain-automation.component.js.map +1 -1
  29. package/src/lib/components/billing-ai-allotments.component.js +1 -1
  30. package/src/lib/components/billing-ai-allotments.component.js.map +1 -1
  31. package/src/lib/components/billing-assist-overage-card.component.js +1 -1
  32. package/src/lib/components/billing-assist-overage-card.component.js.map +1 -1
  33. package/src/lib/constants.d.ts +5 -0
  34. package/src/lib/constants.js +4 -0
  35. package/src/lib/constants.js.map +1 -1
  36. package/src/lib/declarations.js +2 -0
  37. package/src/lib/declarations.js.map +1 -1
  38. package/src/lib/declarations.server.js +24 -10
  39. package/src/lib/declarations.server.js.map +1 -1
  40. package/src/lib/insights/ai-dataset-catalog.d.ts +49 -0
  41. package/src/lib/insights/ai-dataset-catalog.js +57 -0
  42. package/src/lib/insights/ai-dataset-catalog.js.map +1 -0
  43. package/src/lib/insights/ai-figure-readers.d.ts +6 -39
  44. package/src/lib/insights/ai-figure-readers.js +2 -391
  45. package/src/lib/insights/ai-figure-readers.js.map +1 -1
  46. package/src/lib/insights/ai-insight-digest.d.ts +10 -1
  47. package/src/lib/insights/ai-insight-digest.js +16 -4
  48. package/src/lib/insights/ai-insight-digest.js.map +1 -1
  49. package/src/lib/insights/ai-insight-readers.d.ts +1 -1
  50. package/src/lib/insights/ai-insight-readers.js.map +1 -1
  51. package/src/lib/jobs/ai-job-component-step.d.ts +6 -1
  52. package/src/lib/jobs/ai-job-component-step.js +23 -6
  53. package/src/lib/jobs/ai-job-component-step.js.map +1 -1
  54. package/src/lib/jobs/ai-job-draft-ids.js +11 -0
  55. package/src/lib/jobs/ai-job-draft-ids.js.map +1 -1
  56. package/src/lib/jobs/ai-job-email-step.d.ts +5 -1
  57. package/src/lib/jobs/ai-job-email-step.js +10 -1
  58. package/src/lib/jobs/ai-job-email-step.js.map +1 -1
  59. package/src/lib/jobs/ai-job-form-step.d.ts +17 -1
  60. package/src/lib/jobs/ai-job-form-step.js +60 -8
  61. package/src/lib/jobs/ai-job-form-step.js.map +1 -1
  62. package/src/lib/jobs/ai-job-generation.d.ts +21 -0
  63. package/src/lib/jobs/ai-job-generation.js +53 -1
  64. package/src/lib/jobs/ai-job-generation.js.map +1 -1
  65. package/src/lib/jobs/ai-job-insight-step.js +1 -1
  66. package/src/lib/jobs/ai-job-insight-step.js.map +1 -1
  67. package/src/lib/jobs/ai-job-layout-step.d.ts +15 -4
  68. package/src/lib/jobs/ai-job-layout-step.js +45 -12
  69. package/src/lib/jobs/ai-job-layout-step.js.map +1 -1
  70. package/src/lib/jobs/ai-job-plan-conformance.d.ts +5 -0
  71. package/src/lib/jobs/ai-job-plan-conformance.js +7 -1
  72. package/src/lib/jobs/ai-job-plan-conformance.js.map +1 -1
  73. package/src/lib/jobs/ai-job-plan-creations.d.ts +80 -0
  74. package/src/lib/jobs/ai-job-plan-creations.js +199 -0
  75. package/src/lib/jobs/ai-job-plan-creations.js.map +1 -0
  76. package/src/lib/jobs/ai-job-plan-step.d.ts +8 -2
  77. package/src/lib/jobs/ai-job-plan-step.js +20 -6
  78. package/src/lib/jobs/ai-job-plan-step.js.map +1 -1
  79. package/src/lib/jobs/ai-job-site-step.d.ts +2 -0
  80. package/src/lib/jobs/ai-job-site-step.js +6 -6
  81. package/src/lib/jobs/ai-job-site-step.js.map +1 -1
  82. package/src/lib/jobs/ai-job-template-step.d.ts +9 -6
  83. package/src/lib/jobs/ai-job-template-step.js +72 -15
  84. package/src/lib/jobs/ai-job-template-step.js.map +1 -1
  85. package/src/lib/jobs/ai-jobs.js +1 -1
  86. package/src/lib/jobs/ai-jobs.js.map +1 -1
  87. package/src/lib/jobs/ai-workflow-records.d.ts +5 -4
  88. package/src/lib/jobs/ai-workflow-records.js +26 -22
  89. package/src/lib/jobs/ai-workflow-records.js.map +1 -1
  90. package/src/lib/model/ai-allotments.d.ts +16 -3
  91. package/src/lib/model/ai-allotments.js +34 -11
  92. package/src/lib/model/ai-allotments.js.map +1 -1
  93. package/src/lib/model/ai-job-creations.d.ts +55 -0
  94. package/src/lib/model/ai-job-creations.js +85 -0
  95. package/src/lib/model/ai-job-creations.js.map +1 -0
  96. package/src/lib/model/ai-page-job.d.ts +3 -2
  97. package/src/lib/model/ai-page-job.js +4 -3
  98. package/src/lib/model/ai-page-job.js.map +1 -1
  99. package/src/lib/model/ai-site-job.d.ts +4 -2
  100. package/src/lib/model/ai-site-job.js +8 -4
  101. package/src/lib/model/ai-site-job.js.map +1 -1
  102. package/src/lib/model/ai-template-subjects.d.ts +10 -0
  103. package/src/lib/model/ai-template-subjects.js +14 -0
  104. package/src/lib/model/ai-template-subjects.js.map +1 -1
  105. package/src/lib/model/ai-tokens.js +1 -1
  106. package/src/lib/model/ai-tokens.js.map +1 -1
  107. package/src/lib/model/ai-usage-by-user.js +1 -1
  108. package/src/lib/model/ai-usage-by-user.js.map +1 -1
  109. package/src/lib/providers/catalog.js +1 -1
  110. package/src/lib/providers/catalog.js.map +1 -1
  111. package/src/lib/providers/model-choice.js +1 -1
  112. package/src/lib/providers/model-choice.js.map +1 -1
  113. package/src/lib/runtime/ai-device-audit.d.ts +1 -1
  114. package/src/lib/runtime/ai-device-audit.js +1 -1
  115. package/src/lib/runtime/ai-device-audit.js.map +1 -1
  116. package/src/lib/runtime/ai-eval-live.js +1 -1
  117. package/src/lib/runtime/ai-eval-live.js.map +1 -1
  118. package/src/lib/runtime/ai-eval.d.ts +1 -1
  119. package/src/lib/runtime/ai-eval.js.map +1 -1
  120. package/src/lib/runtime/ai-gate.js +1 -1
  121. package/src/lib/runtime/ai-gate.js.map +1 -1
  122. package/src/lib/runtime/ai-palette.d.ts +1 -1
  123. package/src/lib/runtime/ai-palette.generated.d.ts +1 -1
  124. package/src/lib/runtime/ai-palette.generated.js +1 -1
  125. package/src/lib/runtime/ai-palette.generated.js.map +1 -1
  126. package/src/lib/runtime/ai-palette.js.map +1 -1
  127. package/src/lib/runtime/site-inventory.js +28 -22
  128. package/src/lib/runtime/site-inventory.js.map +1 -1
  129. package/src/lib/server/ai-admin-org.js +1 -1
  130. package/src/lib/server/ai-admin-org.js.map +1 -1
  131. package/src/lib/server/ai-admin-orgs-spend.js +1 -1
  132. package/src/lib/server/ai-admin-orgs-spend.js.map +1 -1
  133. package/src/lib/server/ai-admin-signals.js +1 -1
  134. package/src/lib/server/ai-admin-signals.js.map +1 -1
  135. package/src/lib/server/ai-allotments.js +1 -1
  136. package/src/lib/server/ai-allotments.js.map +1 -1
  137. package/src/lib/server/ai-assist.js +2 -2
  138. package/src/lib/server/ai-assist.js.map +1 -1
  139. package/src/lib/server/assist-chat.d.ts +1 -1
  140. package/src/lib/server/assist-chat.js +2 -2
  141. package/src/lib/server/assist-chat.js.map +1 -1
  142. package/src/lib/server/billing-credits.d.ts +5 -0
  143. package/src/lib/server/billing-credits.js +8 -2
  144. package/src/lib/server/billing-credits.js.map +1 -1
  145. package/src/lib/server/billing-overage.js +2 -2
  146. package/src/lib/server/billing-overage.js.map +1 -1
  147. package/src/lib/testing/stand-in-dataset-index.d.ts +20 -0
  148. package/src/lib/testing/stand-in-dataset-index.js +80 -0
  149. package/src/lib/testing/stand-in-dataset-index.js.map +1 -0
  150. package/src/lib/usage/ai-allotment-alerts.d.ts +10 -7
  151. package/src/lib/usage/ai-allotment-alerts.js +31 -14
  152. package/src/lib/usage/ai-allotment-alerts.js.map +1 -1
  153. package/src/lib/usage/ai-quota-checks.d.ts +37 -0
  154. package/src/lib/usage/ai-quota-checks.js +69 -0
  155. package/src/lib/usage/ai-quota-checks.js.map +1 -0
  156. package/src/lib/usage/ai-usage-alerts.js +22 -10
  157. package/src/lib/usage/ai-usage-alerts.js.map +1 -1
  158. package/src/lib/usage/ai-usage-by-user.js +1 -1
  159. package/src/lib/usage/ai-usage-by-user.js.map +1 -1
  160. package/src/lib/usage/assist-ceiling.d.ts +2 -2
  161. package/src/lib/usage/assist-ceiling.js +4 -4
  162. package/src/lib/usage/assist-ceiling.js.map +1 -1
  163. package/src/lib/usage/assist-credits.d.ts +494 -0
  164. package/src/lib/usage/assist-credits.js +524 -0
  165. package/src/lib/usage/assist-credits.js.map +1 -0
  166. package/src/lib/usage/assist-free-taste.d.ts +1 -1
  167. package/src/lib/usage/assist-free-taste.js +1 -1
  168. package/src/lib/usage/assist-free-taste.js.map +1 -1
  169. package/src/lib/usage/assist-signal-mining.js +1 -1
  170. package/src/lib/usage/assist-signal-mining.js.map +1 -1
  171. package/src/lib/usage/assist-spend-guards.d.ts +153 -0
  172. package/src/lib/usage/assist-spend-guards.js +182 -0
  173. package/src/lib/usage/assist-spend-guards.js.map +1 -0
  174. package/src/lib/usage/assist-usage.d.ts +1 -1
  175. package/src/lib/usage/assist-usage.js +1 -1
  176. package/src/lib/usage/assist-usage.js.map +1 -1
  177. package/src/lib/usage/staff-org-ai.js +1 -1
  178. package/src/lib/usage/staff-org-ai.js.map +1 -1
  179. package/src/lib/usage-axes.d.ts +10 -0
  180. package/src/lib/usage-axes.js +40 -2
  181. package/src/lib/usage-axes.js.map +1 -1
@@ -13,7 +13,8 @@
13
13
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
14
  * See the License for the specific language governing permissions and
15
15
  * limitations under the License.
16
- */ import { ASSIST_CREDIT_COST_USD, ASSIST_PROVIDER_COST_FIELD } from "@aglyn/aglyn/app-utils/assist-credits";
16
+ */ import { AI_USAGE_METER_ID } from "./constants.js";
17
+ import { ASSIST_CREDIT_COST_USD, ASSIST_PROVIDER_COST_FIELD } from "./usage/assist-credits.js";
17
18
  /**
18
19
  * THE AI PLUGIN'S METER (AGL-3080): provider spend, in the platform's cost
19
20
  * model and against the credit band in its utilization table. Compiled into
@@ -34,7 +35,16 @@
34
35
  * The band is sold in credits, and a credit is `ASSIST_CREDIT_COST_USD` of
35
36
  * spend, so what was used is the dollars over that — rounded up, the one
36
37
  * conversion the customer's own meter uses.
37
- */ export function aiUsageAxes() {
38
+ *
39
+ * On the usage BUDGET the month's spend is the billed figure (`estCostUsd`),
40
+ * shown to the customer in credits and never in dollars: the dollars are our
41
+ * cost, and publishing them would put our model choice and our margin on a
42
+ * billing page. It counts toward the budget only from the month
43
+ * `BILL_ASSIST_TOKENS_FROM` names, because assist is a plan entitlement with
44
+ * no per-token price until then, and a budget that added it would be a
45
+ * surprise bill invented by a notification.
46
+ */ /** The AI plugin's line of a workspace's monthly spend, by the id it declares. */ export const AI_ASSIST_SPEND_LINE_ID = 'assist';
47
+ export function aiUsageAxes() {
38
48
  return {
39
49
  costAxes: [
40
50
  {
@@ -43,6 +53,14 @@
43
53
  fields: [
44
54
  'assistCostUsd'
45
55
  ],
56
+ // The month's credit draw and the overage that entered `billedCents`
57
+ // (AGL-2930), which the usage sweep writes beside the spend: the
58
+ // staff usage table's AI columns, `null` on a rollup written before
59
+ // the sweep recorded credits, and never a cost.
60
+ staffFields: [
61
+ 'assistCredits',
62
+ 'assistOverageUsd'
63
+ ],
46
64
  live: {
47
65
  collection: 'assistUsage',
48
66
  fields: [
@@ -63,6 +81,26 @@
63
81
  entitlement: 'assistCreditsPerMonth',
64
82
  unitCostUsd: ASSIST_CREDIT_COST_USD
65
83
  }
84
+ ],
85
+ meters: [
86
+ {
87
+ id: AI_USAGE_METER_ID
88
+ }
89
+ ],
90
+ spendLines: [
91
+ {
92
+ id: AI_ASSIST_SPEND_LINE_ID,
93
+ label: 'Assist',
94
+ live: {
95
+ collection: 'assistUsage',
96
+ field: 'estCostUsd'
97
+ },
98
+ billedFromEnv: 'BILL_ASSIST_TOKENS_FROM',
99
+ unit: {
100
+ costUsd: ASSIST_CREDIT_COST_USD,
101
+ label: 'Assist credits'
102
+ }
103
+ }
66
104
  ]
67
105
  };
68
106
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../libs/plugins/ai/src/lib/usage-axes.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { PluginUsageAxesDeclaration } from '@aglyn/aglyn/plugin-manager/plugin-usage-axes'\nimport {\n ASSIST_CREDIT_COST_USD,\n ASSIST_PROVIDER_COST_FIELD,\n} from '@aglyn/aglyn/app-utils/assist-credits'\n\n/**\n * THE AI PLUGIN'S METER (AGL-3080): provider spend, in the platform's cost\n * model and against the credit band in its utilization table. Compiled into\n * core by the manifest generator (`register.usageAxes`).\n *\n * The rollup records `assistCostUsd` — what the month's tokens cost US, at\n * the provider's rates (AGL-3015) — so the axis enters the cost model at ×1\n * and names no rate. It is the one line on the platform whose unit cost is\n * real money paid to a third party, and the only one that can clear the\n * $2/site floor on its own, which is why a margin surface that could not see\n * it would rate a token-heavy workspace exactly as it rates an idle one.\n *\n * LIVE, because the rollup is a snapshot from when the cron ran and assist\n * keeps spending after it: a reader that fetches the month's\n * `assistUsage/{month}` document takes the provider figure, or the billed\n * one on a month closed before the two were split, over the snapshot.\n *\n * The band is sold in credits, and a credit is `ASSIST_CREDIT_COST_USD` of\n * spend, so what was used is the dollars over that — rounded up, the one\n * conversion the customer's own meter uses.\n */\nexport function aiUsageAxes(): PluginUsageAxesDeclaration {\n return {\n costAxes: [\n {\n id: 'assist',\n order: 80,\n fields: ['assistCostUsd'],\n live: {\n collection: 'assistUsage',\n fields: [ASSIST_PROVIDER_COST_FIELD, 'estCostUsd'],\n },\n },\n ],\n bands: [\n {\n id: 'assistCredits',\n label: 'Assist credits',\n order: 90,\n fields: ['assistCostUsd'],\n entitlement: 'assistCreditsPerMonth',\n unitCostUsd: ASSIST_CREDIT_COST_USD,\n },\n ],\n }\n}\n"],"names":["ASSIST_CREDIT_COST_USD","ASSIST_PROVIDER_COST_FIELD","aiUsageAxes","costAxes","id","order","fields","live","collection","bands","label","entitlement","unitCostUsd"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAGD,SACEA,sBAAsB,EACtBC,0BAA0B,QACrB,wCAAuC;AAE9C;;;;;;;;;;;;;;;;;;;;CAoBC,GACD,OAAO,SAASC;IACd,OAAO;QACLC,UAAU;YACR;gBACEC,IAAI;gBACJC,OAAO;gBACPC,QAAQ;oBAAC;iBAAgB;gBACzBC,MAAM;oBACJC,YAAY;oBACZF,QAAQ;wBAACL;wBAA4B;qBAAa;gBACpD;YACF;SACD;QACDQ,OAAO;YACL;gBACEL,IAAI;gBACJM,OAAO;gBACPL,OAAO;gBACPC,QAAQ;oBAAC;iBAAgB;gBACzBK,aAAa;gBACbC,aAAaZ;YACf;SACD;IACH;AACF"}
1
+ {"version":3,"sources":["../../../../../../libs/plugins/ai/src/lib/usage-axes.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { PluginUsageAxesDeclaration } from '@aglyn/aglyn/plugin-manager/plugin-usage-axes'\nimport { AI_USAGE_METER_ID } from './constants'\nimport {\n ASSIST_CREDIT_COST_USD,\n ASSIST_PROVIDER_COST_FIELD,\n} from './usage/assist-credits'\n\n/**\n * THE AI PLUGIN'S METER (AGL-3080): provider spend, in the platform's cost\n * model and against the credit band in its utilization table. Compiled into\n * core by the manifest generator (`register.usageAxes`).\n *\n * The rollup records `assistCostUsd` — what the month's tokens cost US, at\n * the provider's rates (AGL-3015) — so the axis enters the cost model at ×1\n * and names no rate. It is the one line on the platform whose unit cost is\n * real money paid to a third party, and the only one that can clear the\n * $2/site floor on its own, which is why a margin surface that could not see\n * it would rate a token-heavy workspace exactly as it rates an idle one.\n *\n * LIVE, because the rollup is a snapshot from when the cron ran and assist\n * keeps spending after it: a reader that fetches the month's\n * `assistUsage/{month}` document takes the provider figure, or the billed\n * one on a month closed before the two were split, over the snapshot.\n *\n * The band is sold in credits, and a credit is `ASSIST_CREDIT_COST_USD` of\n * spend, so what was used is the dollars over that — rounded up, the one\n * conversion the customer's own meter uses.\n *\n * On the usage BUDGET the month's spend is the billed figure (`estCostUsd`),\n * shown to the customer in credits and never in dollars: the dollars are our\n * cost, and publishing them would put our model choice and our margin on a\n * billing page. It counts toward the budget only from the month\n * `BILL_ASSIST_TOKENS_FROM` names, because assist is a plan entitlement with\n * no per-token price until then, and a budget that added it would be a\n * surprise bill invented by a notification.\n */\n/** The AI plugin's line of a workspace's monthly spend, by the id it declares. */\nexport const AI_ASSIST_SPEND_LINE_ID = 'assist'\n\nexport function aiUsageAxes(): PluginUsageAxesDeclaration {\n return {\n costAxes: [\n {\n id: 'assist',\n order: 80,\n fields: ['assistCostUsd'],\n // The month's credit draw and the overage that entered `billedCents`\n // (AGL-2930), which the usage sweep writes beside the spend: the\n // staff usage table's AI columns, `null` on a rollup written before\n // the sweep recorded credits, and never a cost.\n staffFields: ['assistCredits', 'assistOverageUsd'],\n live: {\n collection: 'assistUsage',\n fields: [ASSIST_PROVIDER_COST_FIELD, 'estCostUsd'],\n },\n },\n ],\n bands: [\n {\n id: 'assistCredits',\n label: 'Assist credits',\n order: 90,\n fields: ['assistCostUsd'],\n entitlement: 'assistCreditsPerMonth',\n unitCostUsd: ASSIST_CREDIT_COST_USD,\n },\n ],\n meters: [{ id: AI_USAGE_METER_ID }],\n spendLines: [\n {\n id: AI_ASSIST_SPEND_LINE_ID,\n label: 'Assist',\n live: { collection: 'assistUsage', field: 'estCostUsd' },\n billedFromEnv: 'BILL_ASSIST_TOKENS_FROM',\n unit: { costUsd: ASSIST_CREDIT_COST_USD, label: 'Assist credits' },\n },\n ],\n }\n}\n"],"names":["AI_USAGE_METER_ID","ASSIST_CREDIT_COST_USD","ASSIST_PROVIDER_COST_FIELD","AI_ASSIST_SPEND_LINE_ID","aiUsageAxes","costAxes","id","order","fields","staffFields","live","collection","bands","label","entitlement","unitCostUsd","meters","spendLines","field","billedFromEnv","unit","costUsd"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAGD,SAASA,iBAAiB,QAAQ,iBAAa;AAC/C,SACEC,sBAAsB,EACtBC,0BAA0B,QACrB,4BAAwB;AAE/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BC,GACD,gFAAgF,GAChF,OAAO,MAAMC,0BAA0B,SAAQ;AAE/C,OAAO,SAASC;IACd,OAAO;QACLC,UAAU;YACR;gBACEC,IAAI;gBACJC,OAAO;gBACPC,QAAQ;oBAAC;iBAAgB;gBACzB,qEAAqE;gBACrE,iEAAiE;gBACjE,oEAAoE;gBACpE,gDAAgD;gBAChDC,aAAa;oBAAC;oBAAiB;iBAAmB;gBAClDC,MAAM;oBACJC,YAAY;oBACZH,QAAQ;wBAACN;wBAA4B;qBAAa;gBACpD;YACF;SACD;QACDU,OAAO;YACL;gBACEN,IAAI;gBACJO,OAAO;gBACPN,OAAO;gBACPC,QAAQ;oBAAC;iBAAgB;gBACzBM,aAAa;gBACbC,aAAad;YACf;SACD;QACDe,QAAQ;YAAC;gBAAEV,IAAIN;YAAkB;SAAE;QACnCiB,YAAY;YACV;gBACEX,IAAIH;gBACJU,OAAO;gBACPH,MAAM;oBAAEC,YAAY;oBAAeO,OAAO;gBAAa;gBACvDC,eAAe;gBACfC,MAAM;oBAAEC,SAASpB;oBAAwBY,OAAO;gBAAiB;YACnE;SACD;IACH;AACF"}