@spottoai/types-package 1.0.2-dev1138.1 → 1.0.2-dev1138.2

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 (90) hide show
  1. package/dist/azure/financialAnalytics.d.ts +12 -6
  2. package/dist/azure/financialAnalytics.d.ts.map +1 -1
  3. package/dist/azure/financialAnalyticsDelivery.d.ts +70 -3
  4. package/dist/azure/financialAnalyticsDelivery.d.ts.map +1 -1
  5. package/dist/azure/financialAnalyticsDelivery.js +4 -1
  6. package/dist/azure/financialAnalyticsDelivery.js.map +1 -1
  7. package/dist/azure/financialAnalyticsDeliveryValidation.d.ts +9 -1
  8. package/dist/azure/financialAnalyticsDeliveryValidation.d.ts.map +1 -1
  9. package/dist/azure/financialAnalyticsDeliveryValidation.js +190 -10
  10. package/dist/azure/financialAnalyticsDeliveryValidation.js.map +1 -1
  11. package/dist/azure/financialAnalyticsValidation.d.ts.map +1 -1
  12. package/dist/azure/financialAnalyticsValidation.js +40 -12
  13. package/dist/azure/financialAnalyticsValidation.js.map +1 -1
  14. package/dist/azure/financialDataflow.d.ts +38 -2
  15. package/dist/azure/financialDataflow.d.ts.map +1 -1
  16. package/dist/azure/financialDataflow.js.map +1 -1
  17. package/dist/azure/financialDataflowKernel.d.ts +29 -0
  18. package/dist/azure/financialDataflowKernel.d.ts.map +1 -0
  19. package/dist/azure/financialDataflowKernel.js +117 -0
  20. package/dist/azure/financialDataflowKernel.js.map +1 -0
  21. package/dist/azure/financialDataflowValidation.d.ts +4 -1
  22. package/dist/azure/financialDataflowValidation.d.ts.map +1 -1
  23. package/dist/azure/financialDataflowValidation.js +59 -4
  24. package/dist/azure/financialDataflowValidation.js.map +1 -1
  25. package/dist/azure/financialEvidenceAssessmentValidation.d.ts.map +1 -1
  26. package/dist/azure/financialEvidenceAssessmentValidation.js +7 -0
  27. package/dist/azure/financialEvidenceAssessmentValidation.js.map +1 -1
  28. package/dist/azure/financialPolicy.d.ts +16 -3
  29. package/dist/azure/financialPolicy.d.ts.map +1 -1
  30. package/dist/azure/financialPolicyDelivery.d.ts +75 -1
  31. package/dist/azure/financialPolicyDelivery.d.ts.map +1 -1
  32. package/dist/azure/financialPolicyDelivery.js +5 -1
  33. package/dist/azure/financialPolicyDelivery.js.map +1 -1
  34. package/dist/azure/financialPolicyDeliveryValidation.d.ts +16 -2
  35. package/dist/azure/financialPolicyDeliveryValidation.d.ts.map +1 -1
  36. package/dist/azure/financialPolicyDeliveryValidation.js +238 -5
  37. package/dist/azure/financialPolicyDeliveryValidation.js.map +1 -1
  38. package/dist/azure/financialPolicyKernel.d.ts +38 -0
  39. package/dist/azure/financialPolicyKernel.d.ts.map +1 -0
  40. package/dist/azure/financialPolicyKernel.js +232 -0
  41. package/dist/azure/financialPolicyKernel.js.map +1 -0
  42. package/dist/azure/financialPolicyValidation.d.ts +1 -0
  43. package/dist/azure/financialPolicyValidation.d.ts.map +1 -1
  44. package/dist/azure/financialPolicyValidation.js +106 -16
  45. package/dist/azure/financialPolicyValidation.js.map +1 -1
  46. package/dist/azure/financialSavingsAuthority.d.ts +29 -0
  47. package/dist/azure/financialSavingsAuthority.d.ts.map +1 -1
  48. package/dist/azure/financialSavingsAuthority.js +2 -1
  49. package/dist/azure/financialSavingsAuthority.js.map +1 -1
  50. package/dist/azure/financialSavingsAuthorityValidation.d.ts.map +1 -1
  51. package/dist/azure/financialSavingsAuthorityValidation.js +3 -0
  52. package/dist/azure/financialSavingsAuthorityValidation.js.map +1 -1
  53. package/dist/azure/financialSavingsCoordinateValidation.d.ts.map +1 -1
  54. package/dist/azure/financialSavingsCoordinateValidation.js +36 -0
  55. package/dist/azure/financialSavingsCoordinateValidation.js.map +1 -1
  56. package/dist/azure/financialScope.d.ts +2 -0
  57. package/dist/azure/financialScope.d.ts.map +1 -1
  58. package/dist/azure/financialScope.js +2 -0
  59. package/dist/azure/financialScope.js.map +1 -1
  60. package/dist/azure/financialScopeBaseline.d.ts +8 -2
  61. package/dist/azure/financialScopeBaseline.d.ts.map +1 -1
  62. package/dist/azure/financialScopeBaseline.js +14 -1
  63. package/dist/azure/financialScopeBaseline.js.map +1 -1
  64. package/dist/azure/financialScopeBaselineValidation.d.ts.map +1 -1
  65. package/dist/azure/financialScopeBaselineValidation.js +15 -1
  66. package/dist/azure/financialScopeBaselineValidation.js.map +1 -1
  67. package/dist/azure/financialScopeEvidence.d.ts +1 -1
  68. package/dist/azure/financialScopeEvidence.d.ts.map +1 -1
  69. package/dist/azure/views.d.ts +14 -3
  70. package/dist/azure/views.d.ts.map +1 -1
  71. package/dist/azure/views.js.map +1 -1
  72. package/dist/esm/azure/financialAnalyticsDelivery.js +3 -0
  73. package/dist/esm/azure/financialAnalyticsDeliveryValidation.js +184 -11
  74. package/dist/esm/azure/financialAnalyticsValidation.js +40 -12
  75. package/dist/esm/azure/financialDataflowKernel.js +111 -0
  76. package/dist/esm/azure/financialDataflowValidation.js +55 -3
  77. package/dist/esm/azure/financialEvidenceAssessmentValidation.js +7 -0
  78. package/dist/esm/azure/financialPolicyDelivery.js +4 -0
  79. package/dist/esm/azure/financialPolicyDeliveryValidation.js +227 -7
  80. package/dist/esm/azure/financialPolicyKernel.js +225 -0
  81. package/dist/esm/azure/financialPolicyValidation.js +105 -16
  82. package/dist/esm/azure/financialSavingsAuthority.js +1 -0
  83. package/dist/esm/azure/financialSavingsAuthorityValidation.js +3 -0
  84. package/dist/esm/azure/financialSavingsCoordinateValidation.js +36 -0
  85. package/dist/esm/azure/financialScope.js +2 -0
  86. package/dist/esm/azure/financialScopeBaseline.js +12 -0
  87. package/dist/esm/azure/financialScopeBaselineValidation.js +15 -1
  88. package/dist/events/cost.d.ts +4 -0
  89. package/dist/events/cost.d.ts.map +1 -1
  90. package/package.json +1 -1
@@ -2,7 +2,7 @@ import { multiplyExactDecimalValues, parseCanonicalDecimal, subtractExactDecimal
2
2
  import { sha256Utf8 } from '../common/sha256.js';
3
3
  import { isCanonicalExactMoney } from './financialValidationPrimitives.js';
4
4
  import { FINANCIAL_POLICY_DEFINITION_CONTRACT_VERSION_V1, FINANCIAL_POLICY_EVALUATION_CONTRACT_VERSION_V1, } from './financialPolicy.js';
5
- import { FINANCIAL_DATAFLOW_LIMITS_V1, canonicalizeFinancialDataflowJsonV1, canonicalizeFinancialDataflowCoordinateV1, hasFinancialDataflowExactFieldsV1, isFinancialDataflowCurrencyV1, createFinancialDataflowCoordinateIdV1, isFinancialDataflowHashV1, isFinancialDataflowIdentityV1, isFinancialDataflowIsoInstantV1, isFinancialDataflowRecordV1, isFinancialDataflowScopeV1, isFinancialDataflowSortedUniqueStringsV1, isFinancialDataflowValueWithinLimitsV1, } from './financialDataflowValidation.js';
5
+ import { FINANCIAL_DATAFLOW_LIMITS_V1, canonicalizeFinancialDataflowJsonV1, canonicalizeFinancialDataflowCoordinateV1, hasFinancialDataflowExactFieldsV1, isFinancialDataflowCurrencyV1, createFinancialDataflowCoordinateIdV1, isFinancialDataflowHashV1, isFinancialDataflowIdentityV1, isFinancialDataflowIsoInstantV1, isFinancialDataflowRecordV1, isFinancialDataflowScopeSelectorV1, isFinancialDataflowSortedUniqueStringsV1, isFinancialDataflowValueWithinLimitsV1, } from './financialDataflowValidation.js';
6
6
  import { isCurrentSpendCompositionV1 } from './financialDataflowValidation.js';
7
7
  import { isFinancialAnalyticsProjectionV1 } from './financialAnalyticsValidation.js';
8
8
  const COST_BASES = new Set(['billed', 'amortized']);
@@ -10,6 +10,12 @@ const ESTIMATE_LENSES = new Set(['billing-only', 'include-estimates', 'estimates
10
10
  const MATCHED_THRESHOLD_KINDS = new Set(['amount', 'percent', 'minimum-amount', 'minimum-delta', 'minimum-percent-change']);
11
11
  const MAX_THRESHOLDS = 64;
12
12
  const MAX_DESTINATIONS = 256;
13
+ const isCanonicalPolicyRevision = (value) => {
14
+ if (typeof value !== 'string' || !/^[1-9]\d*$/.test(value))
15
+ return false;
16
+ const parsed = Number(value);
17
+ return Number.isSafeInteger(parsed) && String(parsed) === value;
18
+ };
13
19
  const isCanonicalDecimal = (value) => typeof value === 'string' && isCanonicalExactMoney({ amount: value, currencyCode: 'AUD' });
14
20
  const isNonNegativeDecimal = (value) => {
15
21
  if (!isCanonicalDecimal(value))
@@ -46,11 +52,36 @@ const isThresholdSet = (value) => {
46
52
  }
47
53
  return new Set(value.amounts).size === value.amounts.length && new Set(value.percents).size === value.percents.length;
48
54
  };
55
+ const isScopeSelectorBoundToProviderAccounts = (selector, providerAccountRefs) => {
56
+ if (!isFinancialDataflowScopeSelectorV1(selector) || !Array.isArray(providerAccountRefs))
57
+ return false;
58
+ const providerSubscriptions = providerAccountRefs.map(value => {
59
+ if (typeof value !== 'string' || !value.toLowerCase().startsWith('azure-subscription:'))
60
+ return undefined;
61
+ const subscriptionId = value.slice('azure-subscription:'.length).trim().toLowerCase();
62
+ return subscriptionId || undefined;
63
+ });
64
+ if (providerSubscriptions.some(value => value === undefined))
65
+ return false;
66
+ const authorized = new Set(providerSubscriptions);
67
+ if (selector.kind === 'subscription' || selector.kind === 'multi-subscription') {
68
+ const selected = selector.subscriptionIds.map(value => value.trim().toLowerCase());
69
+ return selected.length === authorized.size && selected.every(value => authorized.has(value));
70
+ }
71
+ if (selector.kind === 'tag-scope')
72
+ return true;
73
+ const ids = selector.kind === 'resource' ? selector.resourceIds : selector.resourceGroupIds;
74
+ return ids.every(value => {
75
+ const match = /^\/subscriptions\/([^/]+)(?:\/|$)/i.exec(value.trim());
76
+ return match?.[1] !== undefined && authorized.has(match[1].toLowerCase());
77
+ });
78
+ };
49
79
  const isCoordinateRequest = (value, companyId) => isFinancialDataflowRecordV1(value) &&
50
80
  hasFinancialDataflowExactFieldsV1(value, [
51
81
  'provider',
52
82
  'providerAccountRefs',
53
83
  'scope',
84
+ 'scopeSelector',
54
85
  'period',
55
86
  'costBasis',
56
87
  'estimateLens',
@@ -59,11 +90,19 @@ const isCoordinateRequest = (value, companyId) => isFinancialDataflowRecordV1(va
59
90
  value.provider === 'azure' &&
60
91
  isFinancialDataflowSortedUniqueStringsV1(value.providerAccountRefs, FINANCIAL_DATAFLOW_LIMITS_V1.maximumProviderAccounts) &&
61
92
  value.providerAccountRefs.length > 0 &&
62
- isFinancialDataflowScopeV1(value.scope) &&
93
+ isFinancialDataflowRecordV1(value.scope) &&
94
+ hasFinancialDataflowExactFieldsV1(value.scope, ['kind', 'scopeId']) &&
95
+ ['resource', 'resource-group', 'subscription', 'tag-scope', 'multi-subscription'].includes(String(value.scope.kind)) &&
96
+ isFinancialDataflowIdentityV1(value.scope.scopeId) &&
97
+ isFinancialDataflowScopeSelectorV1(value.scopeSelector) &&
98
+ value.scopeSelector.kind === value.scope.kind &&
99
+ isScopeSelectorBoundToProviderAccounts(value.scopeSelector, value.providerAccountRefs) &&
63
100
  isFinancialDataflowRecordV1(value.period) &&
64
- hasFinancialDataflowExactFieldsV1(value.period, ['kind', 'timeZone']) &&
101
+ hasFinancialDataflowExactFieldsV1(value.period, ['kind', 'dateBasis'], ['timeZone']) &&
65
102
  (value.period.kind === 'calendar-month' || value.period.kind === 'rolling-30-days') &&
66
- isFinancialDataflowIdentityV1(value.period.timeZone) &&
103
+ (value.period.dateBasis === 'utc'
104
+ ? value.period.timeZone === undefined
105
+ : value.period.dateBasis === 'company-local' && isFinancialDataflowIdentityV1(value.period.timeZone)) &&
67
106
  typeof value.costBasis === 'string' &&
68
107
  COST_BASES.has(value.costBasis) &&
69
108
  typeof value.estimateLens === 'string' &&
@@ -89,13 +128,14 @@ const isCriteria = (value, currencyCode) => {
89
128
  (value.minimumDelta === undefined || isNonNegativeDecimal(value.minimumDelta)) &&
90
129
  (value.minimumPercentChange === undefined || isNonNegativeDecimal(value.minimumPercentChange)));
91
130
  };
92
- const isDefinitionIdentity = (value) => {
131
+ export const isFinancialPolicyDefinitionRevisionIdentityPreimageV1 = (value) => {
93
132
  if (!isFinancialDataflowRecordV1(value) ||
94
133
  !hasFinancialDataflowExactFieldsV1(value, [
95
134
  'schemaVersion',
96
135
  'contractVersion',
97
136
  'companyId',
98
137
  'definitionId',
138
+ 'displayName',
99
139
  'revision',
100
140
  'effectiveState',
101
141
  'coordinateRequest',
@@ -110,7 +150,8 @@ const isDefinitionIdentity = (value) => {
110
150
  value.contractVersion !== FINANCIAL_POLICY_DEFINITION_CONTRACT_VERSION_V1 ||
111
151
  !isFinancialDataflowIdentityV1(value.companyId) ||
112
152
  !isFinancialDataflowIdentityV1(value.definitionId) ||
113
- !isFinancialDataflowIdentityV1(value.revision) ||
153
+ !isFinancialDataflowIdentityV1(value.displayName) ||
154
+ !isCanonicalPolicyRevision(value.revision) ||
114
155
  !['enabled', 'disabled', 'deleted'].includes(String(value.effectiveState)) ||
115
156
  !isCoordinateRequest(value.coordinateRequest, value.companyId) ||
116
157
  !isFinancialDataflowRecordV1(value.coordinateRequest) ||
@@ -126,10 +167,22 @@ const isDefinitionIdentity = (value) => {
126
167
  !isFinancialDataflowIdentityV1(value.authoredByUserId)) {
127
168
  return false;
128
169
  }
129
- return value.effectiveState !== 'enabled' || value.destinationRefIds.length > 0;
170
+ if (value.criteria.kind === 'budget' &&
171
+ value.criteria.forecastThresholds !== undefined &&
172
+ (value.coordinateRequest.period.kind !== 'calendar-month' || value.coordinateRequest.estimateLens !== 'billing-only')) {
173
+ return false;
174
+ }
175
+ if (value.criteria.kind === 'cost-anomaly' &&
176
+ (value.coordinateRequest.period.kind !== 'rolling-30-days' || value.coordinateRequest.estimateLens !== 'billing-only')) {
177
+ return false;
178
+ }
179
+ // Alert Instance state is the canonical internal policy side effect.
180
+ // External destinations are optional and must not determine whether an
181
+ // enabled policy is valid or evaluable.
182
+ return true;
130
183
  };
131
184
  export const canonicalizeFinancialPolicyDefinitionRevisionIdentityV1 = (value) => {
132
- if (!isFinancialDataflowValueWithinLimitsV1(value) || !isDefinitionIdentity(value)) {
185
+ if (!isFinancialDataflowValueWithinLimitsV1(value) || !isFinancialPolicyDefinitionRevisionIdentityPreimageV1(value)) {
133
186
  throw new TypeError('Invalid FinancialPolicyDefinitionRevisionIdentityPreimageV1.');
134
187
  }
135
188
  const criteria = value.criteria.kind === 'budget'
@@ -171,7 +224,7 @@ export const isFinancialPolicyDefinitionRevisionV1 = (value) => {
171
224
  return false;
172
225
  const { policyDefinitionRevisionId, ...identity } = value;
173
226
  return (isFinancialDataflowHashV1(policyDefinitionRevisionId) &&
174
- isDefinitionIdentity(identity) &&
227
+ isFinancialPolicyDefinitionRevisionIdentityPreimageV1(identity) &&
175
228
  policyDefinitionRevisionId === createFinancialPolicyDefinitionRevisionIdV1(identity));
176
229
  };
177
230
  const isMatchedThresholds = (value) => Array.isArray(value) &&
@@ -216,8 +269,12 @@ const isEvaluationIdentity = (value) => {
216
269
  !isMatchedThresholds(value.matchedThresholds)) {
217
270
  return false;
218
271
  }
219
- const analyticsRequired = value.signalKind === 'budget-forecast' || value.signalKind === 'cost-anomaly';
220
- return analyticsRequired ? isFinancialDataflowHashV1(value.analyticsProjectionId) : value.analyticsProjectionId === undefined;
272
+ const analyticsSignal = value.signalKind === 'budget-forecast' || value.signalKind === 'cost-anomaly';
273
+ if (!analyticsSignal)
274
+ return value.analyticsProjectionId === undefined;
275
+ if (value.result !== 'unavailable')
276
+ return isFinancialDataflowHashV1(value.analyticsProjectionId);
277
+ return value.analyticsProjectionId === undefined || isFinancialDataflowHashV1(value.analyticsProjectionId);
221
278
  };
222
279
  export const canonicalizeFinancialPolicyEvaluationIdentityV1 = (value) => {
223
280
  if (!isFinancialDataflowValueWithinLimitsV1(value) || !isEvaluationIdentity(value)) {
@@ -332,6 +389,10 @@ const safeAnomalyMatchedThresholds = (definition, analyticsProjection) => {
332
389
  return undefined;
333
390
  }
334
391
  };
392
+ const isExpectedCalendarMonthTargetPartial = (composition) => composition.coordinate.period.windowKind === 'calendar-month' &&
393
+ composition.amount.status === 'partial' &&
394
+ composition.amount.reasonCodes.length === 1 &&
395
+ composition.amount.reasonCodes[0] === 'coverage-incomplete';
335
396
  /** Validates definition, coordinate, financial input, and signal links after authorization. */
336
397
  export const isFinancialPolicyEvaluationCompatibleV1 = (evaluation, definition, currentSpendComposition, analyticsProjection) => {
337
398
  if (!isFinancialPolicyEvaluationV1(evaluation) ||
@@ -355,13 +416,15 @@ export const isFinancialPolicyEvaluationCompatibleV1 = (evaluation, definition,
355
416
  !sameStrings(request.providerAccountRefs, coordinate.providerAccountRefs) ||
356
417
  request.scope.kind !== coordinate.scope.kind ||
357
418
  request.scope.scopeId !== coordinate.scope.scopeId ||
358
- request.scope.scopeFingerprint !== coordinate.scope.scopeFingerprint ||
359
419
  request.costBasis !== coordinate.costBasis ||
360
420
  request.estimateLens !== coordinate.estimateLens ||
361
- request.requiredAccountingCurrencyCode !== currency ||
362
421
  coordinate.requestedCurrencyCode !== request.requiredAccountingCurrencyCode ||
422
+ (currency === undefined
423
+ ? currentSpendComposition.amount.status !== 'unavailable'
424
+ : request.requiredAccountingCurrencyCode !== currency) ||
363
425
  request.period.kind !== coordinate.period.windowKind ||
364
- request.period.timeZone !== periodTimeZone) {
426
+ request.period.dateBasis !== coordinate.period.requested.dateBasis ||
427
+ (request.period.dateBasis === 'company-local' && request.period.timeZone !== periodTimeZone)) {
365
428
  return false;
366
429
  }
367
430
  if (evaluation.result === 'matched' ? evaluation.matchedThresholds.length === 0 : evaluation.matchedThresholds.length > 0)
@@ -403,7 +466,16 @@ export const isFinancialPolicyEvaluationCompatibleV1 = (evaluation, definition,
403
466
  return evaluation.result === 'unavailable' && evaluation.matchedThresholds.length === 0;
404
467
  }
405
468
  if (currentSpendComposition.amount.status === 'partial') {
406
- return evaluation.result === 'partial' && evaluation.matchedThresholds.length === 0;
469
+ if (!isExpectedCalendarMonthTargetPartial(currentSpendComposition)) {
470
+ return evaluation.result === 'partial' && evaluation.matchedThresholds.length === 0;
471
+ }
472
+ if (definition.criteria.kind !== 'budget' || definition.criteria.currentSpendThresholds === undefined)
473
+ return false;
474
+ const expectedThresholds = safeBudgetMatchedThresholds(currentSpendComposition.amount.knownAmount, definition.criteria.budget.amount, definition.criteria.currentSpendThresholds);
475
+ if (expectedThresholds === undefined)
476
+ return false;
477
+ return (evaluation.result === (expectedThresholds.length > 0 ? 'matched' : 'not-matched') &&
478
+ hasExactMatchedThresholds(evaluation.matchedThresholds, expectedThresholds));
407
479
  }
408
480
  if (definition.criteria.kind !== 'budget' || definition.criteria.currentSpendThresholds === undefined)
409
481
  return false;
@@ -413,6 +485,12 @@ export const isFinancialPolicyEvaluationCompatibleV1 = (evaluation, definition,
413
485
  return (evaluation.result === (expectedThresholds.length > 0 ? 'matched' : 'not-matched') &&
414
486
  hasExactMatchedThresholds(evaluation.matchedThresholds, expectedThresholds));
415
487
  }
488
+ if (evaluation.result === 'unavailable' &&
489
+ evaluation.analyticsProjectionId === undefined &&
490
+ analyticsProjection === undefined &&
491
+ (evaluation.signalKind === 'budget-forecast' || evaluation.signalKind === 'cost-anomaly')) {
492
+ return evaluation.matchedThresholds.length === 0 && evaluation.reasonCode === 'analytics-projection-unavailable';
493
+ }
416
494
  if (!isFinancialAnalyticsProjectionV1(analyticsProjection) ||
417
495
  evaluation.analyticsProjectionId !== analyticsProjection.analyticsProjectionId ||
418
496
  analyticsProjection.coordinate.companyId !== coordinate.companyId ||
@@ -429,10 +507,21 @@ export const isFinancialPolicyEvaluationCompatibleV1 = (evaluation, definition,
429
507
  const actualAnalyticsKind = analyticsProjection.status === 'unavailable' ? analyticsProjection.resultKind : analyticsProjection.result.kind;
430
508
  if (actualAnalyticsKind !== expectedAnalyticsKind)
431
509
  return false;
510
+ if (analyticsProjection.currentSpendCompositionId !== undefined &&
511
+ analyticsProjection.currentSpendCompositionId !== currentSpendComposition.compositionId) {
512
+ return false;
513
+ }
514
+ if (evaluation.signalKind === 'budget-forecast' &&
515
+ analyticsProjection.status !== 'unavailable' &&
516
+ analyticsProjection.currentSpendCompositionId !== currentSpendComposition.compositionId) {
517
+ return false;
518
+ }
432
519
  if (currentSpendComposition.amount.status === 'unavailable' || analyticsProjection.status === 'unavailable') {
433
520
  return evaluation.result === 'unavailable' && evaluation.matchedThresholds.length === 0;
434
521
  }
435
- if (currentSpendComposition.amount.status === 'partial' || analyticsProjection.status === 'partial') {
522
+ if (analyticsProjection.status === 'partial' ||
523
+ (currentSpendComposition.amount.status === 'partial' &&
524
+ !(evaluation.signalKind === 'budget-forecast' && isExpectedCalendarMonthTargetPartial(currentSpendComposition)))) {
436
525
  return evaluation.result === 'partial' && evaluation.matchedThresholds.length === 0;
437
526
  }
438
527
  if (evaluation.result !== 'matched' && evaluation.result !== 'not-matched')
@@ -1,4 +1,5 @@
1
1
  export const FINANCIAL_SAVINGS_AUTHORITY_SCHEMA_VERSION_V1 = 1;
2
2
  export const FINANCIAL_SAVINGS_AUTHORITY_CONTRACT_VERSION_V1 = 'financial-savings-authority/v1';
3
+ export const FINANCIAL_SAVINGS_RESOURCE_PROJECTION_CONTRACT_VERSION_V1 = 'financial-savings-resource-projection/v1';
3
4
  export const FINANCIAL_ELIGIBILITY_ASSESSMENT_SCHEMA_VERSION_V1 = 1;
4
5
  export const FINANCIAL_ELIGIBILITY_ASSESSMENT_CONTRACT_VERSION_V1 = 'financial-eligibility-assessment/v1';
@@ -39,6 +39,9 @@ export const canonicalizeFinancialSavingsAuthorityIdentityV1 = (value) => JSON.s
39
39
  resourceContributions: [...coordinate.resourceContributions]
40
40
  .sort((left, right) => left.ownerScopeId.localeCompare(right.ownerScopeId))
41
41
  .map(contribution => ({ ...contribution, allocationIds: [...contribution.allocationIds].sort() })),
42
+ recommendationContributions: [...coordinate.recommendationContributions]
43
+ .sort((left, right) => `${left.ownerScopeId}\u0000${left.recommendationId}`.localeCompare(`${right.ownerScopeId}\u0000${right.recommendationId}`))
44
+ .map(contribution => ({ ...contribution, allocationIds: [...contribution.allocationIds].sort() })),
42
45
  aggregate: { ...coordinate.aggregate, allocationIds: [...coordinate.aggregate.allocationIds].sort() },
43
46
  }),
44
47
  }));
@@ -126,6 +126,7 @@ const validateAvailableCoordinate = (value, authorityCoordinate, eligibilityById
126
126
  'activations',
127
127
  'allocations',
128
128
  'resourceContributions',
129
+ 'recommendationContributions',
129
130
  'aggregate',
130
131
  ]) ||
131
132
  !isFinancialSavingsHash(value.currentAggregateBaselineId) ||
@@ -151,6 +152,8 @@ const validateAvailableCoordinate = (value, authorityCoordinate, eligibilityById
151
152
  value.allocations.length > 20000 ||
152
153
  !Array.isArray(value.resourceContributions) ||
153
154
  value.resourceContributions.length > 20000 ||
155
+ !Array.isArray(value.recommendationContributions) ||
156
+ value.recommendationContributions.length > 20000 ||
154
157
  !isFinancialSavingsRecord(value.aggregate) ||
155
158
  !hasExactFinancialSavingsFields(value.aggregate, ['allocationIds', 'savingsMinorUnits']) ||
156
159
  !Array.isArray(value.aggregate.allocationIds) ||
@@ -307,8 +310,41 @@ const validateAvailableCoordinate = (value, authorityCoordinate, eligibilityById
307
310
  contributedAllocationIds.push(...contribution.allocationIds);
308
311
  }
309
312
  const allocationIds = [...allocationById.keys()];
313
+ const recommendationContributionAllocationIds = [];
314
+ const recommendationContributionKeys = new Set();
315
+ for (const contribution of value.recommendationContributions) {
316
+ if (!isFinancialSavingsRecord(contribution) ||
317
+ !hasExactFinancialSavingsFields(contribution, [
318
+ 'ownerScopeId',
319
+ 'recommendationId',
320
+ 'allocationIds',
321
+ 'savingsMinorUnits',
322
+ ]) ||
323
+ !isFinancialSavingsIdentity(contribution.ownerScopeId) ||
324
+ !isFinancialSavingsIdentity(contribution.recommendationId) ||
325
+ !Array.isArray(contribution.allocationIds) ||
326
+ contribution.allocationIds.length === 0 ||
327
+ contribution.allocationIds.length > 20000 ||
328
+ !contribution.allocationIds.every(isFinancialSavingsHash) ||
329
+ new Set(contribution.allocationIds).size !== contribution.allocationIds.length ||
330
+ !isFinancialSavingsMinorUnits(contribution.savingsMinorUnits))
331
+ return false;
332
+ const contributionKey = `${contribution.ownerScopeId}\u0000${contribution.recommendationId}`;
333
+ if (recommendationContributionKeys.has(contributionKey))
334
+ return false;
335
+ const allocations = contribution.allocationIds.map(id => allocationById.get(id));
336
+ if (allocations.some(allocation => !allocation ||
337
+ allocation.ownerScopeId !== contribution.ownerScopeId ||
338
+ allocation.recommendationId !== contribution.recommendationId) ||
339
+ sumFinancialSavingsMinorUnits(allocations.map(allocation => allocation.savingsMinorUnits)) !== contribution.savingsMinorUnits)
340
+ return false;
341
+ recommendationContributionKeys.add(contributionKey);
342
+ recommendationContributionAllocationIds.push(...contribution.allocationIds);
343
+ }
310
344
  return (haveSameFinancialSavingsSet(contributedAllocationIds, allocationIds) &&
311
345
  new Set(contributedAllocationIds).size === contributedAllocationIds.length &&
346
+ haveSameFinancialSavingsSet(recommendationContributionAllocationIds, allocationIds) &&
347
+ new Set(recommendationContributionAllocationIds).size === recommendationContributionAllocationIds.length &&
312
348
  haveSameFinancialSavingsSet(value.aggregate.allocationIds, allocationIds) &&
313
349
  new Set(value.aggregate.allocationIds).size === value.aggregate.allocationIds.length &&
314
350
  value.aggregate.savingsMinorUnits === sumFinancialSavingsMinorUnits(value.allocations.map(allocation => allocation.savingsMinorUnits)));
@@ -15,11 +15,13 @@ export * from './financialSavingsSurfaceProjection.js';
15
15
  export * from './financialSavingsSurfaceProjectionValidation.js';
16
16
  export * from './financialDataflow.js';
17
17
  export * from './financialDataflowValidation.js';
18
+ export * from './financialDataflowKernel.js';
18
19
  export * from './financialAnalytics.js';
19
20
  export * from './financialAnalyticsValidation.js';
20
21
  export * from './financialAnalyticsDelivery.js';
21
22
  export * from './financialAnalyticsDeliveryValidation.js';
22
23
  export * from './financialPolicy.js';
23
24
  export * from './financialPolicyValidation.js';
25
+ export * from './financialPolicyKernel.js';
24
26
  export * from './financialPolicyDelivery.js';
25
27
  export * from './financialPolicyDeliveryValidation.js';
@@ -1,5 +1,16 @@
1
1
  export const FINANCIAL_SCOPE_BASELINE_SCHEMA_VERSION_V2 = 2;
2
2
  export const FINANCIAL_SCOPE_BASELINE_CONTRACT_VERSION_V2 = 'financial-scope-baseline/v2';
3
+ /**
4
+ * True only when the produced evidence covers the entire requested interval.
5
+ * Partial periods remain valid monetary evidence for display and forecasting,
6
+ * but must not be used as the current side of an optimization projection.
7
+ */
8
+ export const isCompleteFinancialBaselinePeriodV2 = (period) => period.observed !== undefined &&
9
+ period.observed.startDate === period.requested.startDate &&
10
+ period.observed.endDateExclusive === period.requested.endDateExclusive &&
11
+ period.observed.dateBasis === period.requested.dateBasis &&
12
+ period.observed.timeZone === period.requested.timeZone &&
13
+ period.gaps.length === 0;
3
14
  export const FINANCIAL_SCOPE_BASELINE_UNAVAILABLE_REASONS_V2 = [
4
15
  'evidence-not-produced',
5
16
  'evidence-not-matched',
@@ -15,5 +26,6 @@ export const FINANCIAL_SCOPE_BASELINE_UNAVAILABLE_REASONS_V2 = [
15
26
  'mixed-generation',
16
27
  'member-incompatible',
17
28
  'reconciliation-failure',
29
+ 'scope-membership-empty',
18
30
  'unsupported-scope',
19
31
  ];
@@ -17,6 +17,13 @@ const EVIDENCE_ROLES = new Set([
17
17
  'retail-rate',
18
18
  'commitment-quote',
19
19
  'fx-conversion',
20
+ 'commercial-arrangement',
21
+ 'provider-access-observation',
22
+ 'configuration-timeline',
23
+ 'provider-price-schedule',
24
+ 'pricing-function',
25
+ 'charge-inclusion-policy',
26
+ 'settlement-revision',
20
27
  'eligibility-rule',
21
28
  'recommendation-scenario-set',
22
29
  'recommendation-lifecycle',
@@ -35,7 +42,14 @@ const OWNER_SCOPE_KINDS = new Set(['canonical-resource-owner', 'composite-resour
35
42
  const AGGREGATE_SCOPE_KINDS = new Set(['subscription-aggregate', 'portfolio-currency-group']);
36
43
  const COST_BASES = new Set(['billed', 'amortized']);
37
44
  const ESTIMATE_LENSES = new Set(['actual-only', 'actual-plus-estimated', 'estimates-only']);
38
- const WINDOW_KINDS = new Set(['rolling-30-days', 'calendar-month', 'provider-billing-period', 'stable-billing-window', 'daily']);
45
+ const WINDOW_KINDS = new Set([
46
+ 'rolling-30-days',
47
+ 'calendar-month',
48
+ 'provider-billing-period',
49
+ 'stable-billing-window',
50
+ 'analytics-history',
51
+ 'daily',
52
+ ]);
39
53
  const SETTLEMENT_STATES = new Set(['settled', 'unsettled', 'mixed', 'unknown']);
40
54
  const CHARGE_CLASSIFICATIONS = new Set(['usage', 'purchase', 'adjustment', 'tax', 'credit', 'refund', 'residual']);
41
55
  const UNAVAILABLE_REASONS = new Set(FINANCIAL_SCOPE_BASELINE_UNAVAILABLE_REASONS_V2);
@@ -367,5 +367,9 @@ export interface CostAlertInstance extends BaseAlertInstance<CostAlertSummary, C
367
367
  summary?: CostAlertSummary;
368
368
  breakdown?: CostAlertBreakdownSummary;
369
369
  definitionSnapshot?: string;
370
+ /** Immutable Financial Policy evaluation reference for historical detail reads. */
371
+ financialPolicyEvaluationId?: string;
372
+ financialPolicyDefinitionRevisionId?: string;
373
+ financialPolicySignalKind?: 'budget-current-spend' | 'budget-forecast' | 'cost-anomaly';
370
374
  }
371
375
  //# sourceMappingURL=cost.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cost.d.ts","sourceRoot":"","sources":["../../src/events/cost.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cost.d.ts","sourceRoot":"","sources":["../../src/events/cost.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spottoai/types-package",
3
- "version": "1.0.2-dev1138.1",
3
+ "version": "1.0.2-dev1138.2",
4
4
  "description": "Shared TypeScript interfaces for SpottoAI",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",