@robosystems/client 0.5.6 → 0.5.8

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/types.gen.ts CHANGED
@@ -157,7 +157,9 @@ export type ArtifactResponse = {
157
157
  kind: 'metric';
158
158
  } & MetricMechanics) | ({
159
159
  kind: 'rollforward';
160
- } & RollforwardMechanics);
160
+ } & RollforwardMechanics) | ({
161
+ kind: 'forecast';
162
+ } & ForecastMechanics);
161
163
  };
162
164
 
163
165
  /**
@@ -1230,6 +1232,89 @@ export type ClosePeriodResponse = {
1230
1232
  evaluated_structure_ids?: Array<string>;
1231
1233
  };
1232
1234
 
1235
+ /**
1236
+ * ComputeForecastRequest
1237
+ *
1238
+ * Request body for the ``compute-forecast`` operation.
1239
+ *
1240
+ * Walks the scenario's driver cascade month-by-month forward from the
1241
+ * forecast block's ``base_period``: lever-driven Derive rules in
1242
+ * dependency order, carry-forward for unmodeled IS lines, calc-DAG
1243
+ * subtotals — upserting one scenario IS FactSet (+ a working-capital BS
1244
+ * set) per forward month, all keyed by the forecast block's
1245
+ * ``scenario_id``. Re-running replaces each month's values (the
1246
+ * compute-metrics drift semantics). Deterministic and non-AI — no
1247
+ * credits consumed.
1248
+ */
1249
+ export type ComputeForecastRequest = {
1250
+ /**
1251
+ * Structure Id
1252
+ *
1253
+ * Forecast block structure (block_type='forecast') to compute.
1254
+ */
1255
+ structure_id: string;
1256
+ /**
1257
+ * Months
1258
+ *
1259
+ * Forward months to compute — defaults to the block's full horizon_months; must not exceed it (lever assertions don't extend past the horizon).
1260
+ */
1261
+ months?: number | null;
1262
+ /**
1263
+ * Entity Id
1264
+ *
1265
+ * Entity to compute for. Defaults to the lever FactSet's entity (the entity the scenario was authored against).
1266
+ */
1267
+ entity_id?: string | null;
1268
+ };
1269
+
1270
+ /**
1271
+ * ComputeForecastResponse
1272
+ *
1273
+ * Response for the ``compute-forecast`` operation.
1274
+ */
1275
+ export type ComputeForecastResponse = {
1276
+ /**
1277
+ * Structure Id
1278
+ */
1279
+ structure_id: string;
1280
+ /**
1281
+ * Scenario Id
1282
+ *
1283
+ * The scenario key every emitted FactSet carries — the forecast block's own structure id.
1284
+ */
1285
+ scenario_id: string;
1286
+ /**
1287
+ * Entity Id
1288
+ */
1289
+ entity_id: string;
1290
+ /**
1291
+ * Base Period
1292
+ *
1293
+ * Seed month the walk projected from.
1294
+ */
1295
+ base_period: string;
1296
+ /**
1297
+ * Months
1298
+ *
1299
+ * Forward months requested.
1300
+ */
1301
+ months: number;
1302
+ /**
1303
+ * Months Computed
1304
+ */
1305
+ months_computed?: Array<ForecastMonthLite>;
1306
+ /**
1307
+ * Skipped
1308
+ */
1309
+ skipped?: Array<SkippedForecastLite>;
1310
+ /**
1311
+ * Diagnostics
1312
+ *
1313
+ * Articulation notes — a missing cash/earnings anchor, schedule contributions with no base-set landing spot, an absent cash-flow structure. Informational; the walk still computed.
1314
+ */
1315
+ diagnostics?: Array<string>;
1316
+ };
1317
+
1233
1318
  /**
1234
1319
  * ComputeMetricsRequest
1235
1320
  *
@@ -1267,6 +1352,12 @@ export type ComputeMetricsRequest = {
1267
1352
  * Entity to compute for. Defaults to the graph's earliest-created entity (the primary entity for single-entity graphs).
1268
1353
  */
1269
1354
  entity_id?: string | null;
1355
+ /**
1356
+ * Scenario Id
1357
+ *
1358
+ * Compute on a scenario slice: operands bind that scenario's facts (actuals as the fallback across the seam) and the standing metric set is stamped with the scenario. None (the default) computes actuals only. Pass a forecast block's structure id after compute-forecast to extend the metric series into its forward months.
1359
+ */
1360
+ scenario_id?: string | null;
1270
1361
  };
1271
1362
 
1272
1363
  /**
@@ -2067,6 +2158,55 @@ export type CreateEventHandlerRequest = {
2067
2158
  };
2068
2159
  };
2069
2160
 
2161
+ /**
2162
+ * CreateForecastRequest
2163
+ *
2164
+ * Create a forecast block — the authored scenario container.
2165
+ *
2166
+ * ``base_period`` defaults to the fiscal calendar's
2167
+ * ``closed_through_period`` (else the newest actual report month) —
2168
+ * the walk projects forward from the last closed actuals. The resolved
2169
+ * value is stored in the mechanics so recompute is deterministic.
2170
+ */
2171
+ export type CreateForecastRequest = {
2172
+ /**
2173
+ * Name
2174
+ *
2175
+ * Human-readable scenario name.
2176
+ */
2177
+ name: string;
2178
+ /**
2179
+ * Scenario Kind
2180
+ *
2181
+ * What kind of scenario this is — metadata for display/filtering, not machinery. All kinds compute identically.
2182
+ */
2183
+ scenario_kind?: 'budget' | 'forecast' | 'projection';
2184
+ /**
2185
+ * Horizon Months
2186
+ *
2187
+ * Forward months to project past the base period.
2188
+ */
2189
+ horizon_months?: number;
2190
+ /**
2191
+ * Base Period
2192
+ *
2193
+ * Seed month (``YYYY-MM``) the walk projects forward from. Defaults to the fiscal calendar's closed-through period, else the newest actual report month. Resolved and stored at create time.
2194
+ */
2195
+ base_period?: string | null;
2196
+ /**
2197
+ * Levers
2198
+ *
2199
+ * Lever assertions — at least one.
2200
+ */
2201
+ levers: Array<LeverAssertionRequest>;
2202
+ /**
2203
+ * Entity Id
2204
+ *
2205
+ * Entity the scenario belongs to. Defaults to the graph's earliest-created entity (single-entity convention).
2206
+ */
2207
+ entity_id?: string | null;
2208
+ };
2209
+
2070
2210
  /**
2071
2211
  * CreateGraphRequest
2072
2212
  *
@@ -2124,6 +2264,8 @@ export type CreateInformationBlockRequest = ({
2124
2264
  } & CreateScheduleArm) | ({
2125
2265
  block_type: 'rollforward';
2126
2266
  } & CreateRollforwardArm) | ({
2267
+ block_type: 'forecast';
2268
+ } & CreateForecastArm) | ({
2127
2269
  block_type: 'balance_sheet' | 'cash_flow_statement' | 'comprehensive_income' | 'equity_statement' | 'income_statement' | 'metric' | 'regulatory_disclosure';
2128
2270
  } & CreateLegacyArm);
2129
2271
 
@@ -3132,6 +3274,24 @@ export type DeleteFileOp = {
3132
3274
  cascade?: boolean;
3133
3275
  };
3134
3276
 
3277
+ /**
3278
+ * DeleteForecastRequest
3279
+ *
3280
+ * Delete a forecast block.
3281
+ *
3282
+ * Removes the scenario's entire parallel universe: the lever FactSet
3283
+ * AND every computed scenario FactSet (the forward statement/metric
3284
+ * months keyed by this scenario). Actuals are never touched.
3285
+ */
3286
+ export type DeleteForecastRequest = {
3287
+ /**
3288
+ * Structure Id
3289
+ *
3290
+ * Structure ID of the forecast block.
3291
+ */
3292
+ structure_id: string;
3293
+ };
3294
+
3135
3295
  /**
3136
3296
  * DeleteGraphOp
3137
3297
  *
@@ -3178,6 +3338,8 @@ export type DeleteInformationBlockRequest = ({
3178
3338
  } & DeleteScheduleArm) | ({
3179
3339
  block_type: 'rollforward';
3180
3340
  } & DeleteRollforwardArm) | ({
3341
+ block_type: 'forecast';
3342
+ } & DeleteForecastArm) | ({
3181
3343
  block_type: 'balance_sheet' | 'cash_flow_statement' | 'comprehensive_income' | 'equity_statement' | 'income_statement' | 'metric' | 'regulatory_disclosure';
3182
3344
  } & DeleteLegacyArm);
3183
3345
 
@@ -4580,7 +4742,7 @@ export type FactSetLite = {
4580
4742
  /**
4581
4743
  * Factset Type
4582
4744
  *
4583
- * 'report' | 'schedule' | 'custom' | 'disclosure'. Enum closure enforced by the ``public.fact_sets`` CHECK constraint.
4745
+ * 'report' | 'schedule' | 'custom' | 'disclosure' | 'metric'. Enum closure enforced by the ``public.fact_sets`` CHECK constraint.
4584
4746
  */
4585
4747
  factset_type: string;
4586
4748
  /**
@@ -4593,6 +4755,12 @@ export type FactSetLite = {
4593
4755
  * Back-pointer to the ``reports`` table while ``report_id`` still lives on facts. Drops out once the retirement migration lands.
4594
4756
  */
4595
4757
  report_id?: string | null;
4758
+ /**
4759
+ * Scenario Id
4760
+ *
4761
+ * Scenario axis (the forecast engine). NULL = actuals; non-NULL names the owning forecast block whose parallel universe this set belongs to.
4762
+ */
4763
+ scenario_id?: string | null;
4596
4764
  /**
4597
4765
  * Provenance
4598
4766
  *
@@ -4918,6 +5086,116 @@ export type FiscalPeriodSummary = {
4918
5086
  closed_at?: string | null;
4919
5087
  };
4920
5088
 
5089
+ /**
5090
+ * ForecastMechanics
5091
+ *
5092
+ * Authored scenario container for ``block_type='forecast'`` (FP&A F-1).
5093
+ *
5094
+ * The block IS the scenario: its structure id is the ``scenario_id``
5095
+ * every derived forward FactSet carries (NULL = actuals). The authored
5096
+ * surface is exactly this — scenario identity, horizon, base period,
5097
+ * lever assertions; everything downstream is derived by
5098
+ * ``compute-forecast`` (levers → driven rs-gaap anchors via the
5099
+ * rs-driver Derive rules → carry-forward for unmodeled IS lines →
5100
+ * calc-DAG subtotals), landing in the EXISTING statement/metric block
5101
+ * types stamped with the scenario. Reads directly from the typed
5102
+ * ``structures.artifact_mechanics`` JSONB column.
5103
+ */
5104
+ export type ForecastMechanics = {
5105
+ /**
5106
+ * Kind
5107
+ */
5108
+ kind?: 'forecast';
5109
+ /**
5110
+ * Scenario Kind
5111
+ *
5112
+ * Scenario kind — display/filter metadata, not machinery.
5113
+ */
5114
+ scenario_kind?: 'budget' | 'forecast' | 'projection';
5115
+ /**
5116
+ * Horizon Months
5117
+ *
5118
+ * Forward months projected past the base period.
5119
+ */
5120
+ horizon_months: number;
5121
+ /**
5122
+ * Base Period
5123
+ *
5124
+ * Seed month (``YYYY-MM``) the walk projects forward from — resolved at create time (request → fiscal calendar closed-through → newest actual report month) and stored so recompute is deterministic.
5125
+ */
5126
+ base_period: string;
5127
+ /**
5128
+ * Levers
5129
+ *
5130
+ * Expanded lever assertions (authoring order).
5131
+ */
5132
+ levers: Array<LeverAssertionLite>;
5133
+ /**
5134
+ * Computed Months
5135
+ *
5136
+ * Number of forward months with computed scenario FactSets. Runtime state filled at envelope-build time — 0 until the first compute-forecast run.
5137
+ */
5138
+ computed_months?: number;
5139
+ };
5140
+
5141
+ /**
5142
+ * ForecastMonthLite
5143
+ *
5144
+ * One computed forward month in a ``compute-forecast`` response.
5145
+ */
5146
+ export type ForecastMonthLite = {
5147
+ /**
5148
+ * Period
5149
+ *
5150
+ * Month key (``YYYY-MM``).
5151
+ */
5152
+ period: string;
5153
+ /**
5154
+ * Period Start
5155
+ */
5156
+ period_start: string;
5157
+ /**
5158
+ * Period End
5159
+ */
5160
+ period_end: string;
5161
+ /**
5162
+ * Income Statement Fact Set Id
5163
+ *
5164
+ * Scenario IS FactSet upserted for the month.
5165
+ */
5166
+ income_statement_fact_set_id?: string | null;
5167
+ /**
5168
+ * Balance Sheet Fact Set Id
5169
+ *
5170
+ * Scenario BS FactSet upserted for the month — the full roll: carry-forward, rule-driven working capital, schedule movements, RE roll, balancing cash (A = L + E by construction).
5171
+ */
5172
+ balance_sheet_fact_set_id?: string | null;
5173
+ /**
5174
+ * Cash Flow Fact Set Id
5175
+ *
5176
+ * Scenario CF FactSet upserted for the month — indirect-method, derived from BS deltas + NI, reconciled to the balancing ΔCash.
5177
+ */
5178
+ cash_flow_fact_set_id?: string | null;
5179
+ /**
5180
+ * Computed Count
5181
+ *
5182
+ * Number of facts emitted for the month across all sets.
5183
+ */
5184
+ computed_count?: number;
5185
+ /**
5186
+ * Verification Passed
5187
+ *
5188
+ * Whether every rule evaluated against the month's scenario sets passed (None = no rules ran for the month).
5189
+ */
5190
+ verification_passed?: boolean | null;
5191
+ /**
5192
+ * Verification Failures
5193
+ *
5194
+ * Failed/errored rule messages for the month (capped).
5195
+ */
5196
+ verification_failures?: Array<string>;
5197
+ };
5198
+
4921
5199
  /**
4922
5200
  * ForgetOp
4923
5201
  *
@@ -6764,6 +7042,87 @@ export type LedgerEntityResponse = {
6764
7042
  updated_at?: string | null;
6765
7043
  };
6766
7044
 
7045
+ /**
7046
+ * LeverAssertionLite
7047
+ *
7048
+ * One lever's persisted assertion inside ``ForecastMechanics``.
7049
+ *
7050
+ * The create handler expands the wire-level assertion (uniform ``value``
7051
+ * + per-month overrides) into the explicit ``values_by_period`` map so
7052
+ * compute never interpolates — every asserted month is stated. The
7053
+ * values are duplicated as authored facts in the scenario's lever
7054
+ * FactSet (rules for mechanics, **facts for values** — the facts are
7055
+ * what ``compute-forecast`` binds); this mechanics copy is the
7056
+ * operator-legible round-trip shape.
7057
+ */
7058
+ export type LeverAssertionLite = {
7059
+ /**
7060
+ * Qname
7061
+ *
7062
+ * rs-driver lever element qname.
7063
+ */
7064
+ qname: string;
7065
+ /**
7066
+ * Element Id
7067
+ *
7068
+ * Resolved tenant element id.
7069
+ */
7070
+ element_id: string;
7071
+ /**
7072
+ * Item Type
7073
+ *
7074
+ * Format family from the catalog (percent | days | ...).
7075
+ */
7076
+ item_type?: string | null;
7077
+ /**
7078
+ * Values By Period
7079
+ *
7080
+ * Expanded per-month assertions keyed by ``YYYY-MM``.
7081
+ */
7082
+ values_by_period: {
7083
+ [key: string]: number;
7084
+ };
7085
+ };
7086
+
7087
+ /**
7088
+ * LeverAssertionRequest
7089
+ *
7090
+ * One lever's asserted values for the scenario.
7091
+ *
7092
+ * ``qname`` must resolve to an ``rs-driver:*`` catalog element (the
7093
+ * create handler rejects anything else). Value conventions follow the
7094
+ * catalog: percent levers are decimals per month (0.03 = 3%/month),
7095
+ * days levers are day counts.
7096
+ *
7097
+ * ``value`` is a uniform fill across the whole horizon;
7098
+ * ``values_by_period`` overrides individual months (``"YYYY-MM"``
7099
+ * keys). At least one of the two must be provided. Months covered by
7100
+ * neither carry no assertion — the lever's rule is inactive for that
7101
+ * month and its target falls to the engine's carry-forward default.
7102
+ */
7103
+ export type LeverAssertionRequest = {
7104
+ /**
7105
+ * Qname
7106
+ *
7107
+ * QName of the rs-driver lever element (e.g. ``rs-driver:RevenueGrowthRate``).
7108
+ */
7109
+ qname: string;
7110
+ /**
7111
+ * Value
7112
+ *
7113
+ * Uniform value asserted for every month of the horizon.
7114
+ */
7115
+ value?: number | null;
7116
+ /**
7117
+ * Values By Period
7118
+ *
7119
+ * Per-month overrides keyed by ``YYYY-MM``. Wins over ``value`` for the months it names.
7120
+ */
7121
+ values_by_period?: {
7122
+ [key: string]: number;
7123
+ } | null;
7124
+ };
7125
+
6767
7126
  /**
6768
7127
  * LineItemMetadataPredicate
6769
7128
  *
@@ -7684,6 +8043,52 @@ export type OperationEnvelopeClosePeriodResponse = {
7684
8043
  idempotentReplay?: boolean;
7685
8044
  };
7686
8045
 
8046
+ /**
8047
+ * OperationEnvelope[ComputeForecastResponse]
8048
+ */
8049
+ export type OperationEnvelopeComputeForecastResponse = {
8050
+ /**
8051
+ * Operation
8052
+ *
8053
+ * Kebab-case operation name
8054
+ */
8055
+ operation: string;
8056
+ /**
8057
+ * Operationid
8058
+ *
8059
+ * op_-prefixed ULID for audit and SSE correlation
8060
+ */
8061
+ operationId: string;
8062
+ /**
8063
+ * Status
8064
+ *
8065
+ * Operation lifecycle state
8066
+ */
8067
+ status: 'completed' | 'pending' | 'failed';
8068
+ /**
8069
+ * Command-specific result payload
8070
+ */
8071
+ result?: ComputeForecastResponse | null;
8072
+ /**
8073
+ * At
8074
+ *
8075
+ * ISO-8601 UTC timestamp
8076
+ */
8077
+ at: string;
8078
+ /**
8079
+ * Createdby
8080
+ *
8081
+ * User ID that initiated the operation (null for legacy callers)
8082
+ */
8083
+ createdBy?: string | null;
8084
+ /**
8085
+ * Idempotentreplay
8086
+ *
8087
+ * True when this envelope came from the idempotency cache — the underlying command did not execute again. False on fresh executions.
8088
+ */
8089
+ idempotentReplay?: boolean;
8090
+ };
8091
+
7687
8092
  /**
7688
8093
  * OperationEnvelope[ComputeMetricsResponse]
7689
8094
  */
@@ -10639,6 +11044,12 @@ export type RenderingPeriodLite = {
10639
11044
  * Label
10640
11045
  */
10641
11046
  label?: string | null;
11047
+ /**
11048
+ * Forecast
11049
+ *
11050
+ * True when this column comes from a forecast scenario's FactSet — the machine-readable seam marker (labels also carry a '(forecast)' suffix, but consumers should key styling off this flag, not label parsing). None/absent = an actuals column.
11051
+ */
11052
+ forecast?: boolean | null;
10642
11053
  };
10643
11054
 
10644
11055
  /**
@@ -12100,6 +12511,39 @@ export type ShareResultItem = {
12100
12511
  fact_count?: number;
12101
12512
  };
12102
12513
 
12514
+ /**
12515
+ * SkippedForecastLite
12516
+ *
12517
+ * One rule/month soft-skip in a ``compute-forecast`` response.
12518
+ *
12519
+ * A skipped rule never aborts the walk — its target falls back to the
12520
+ * carry-forward value for that month (when a prior value exists).
12521
+ */
12522
+ export type SkippedForecastLite = {
12523
+ /**
12524
+ * Rule Id
12525
+ */
12526
+ rule_id?: string | null;
12527
+ /**
12528
+ * Element Qname
12529
+ */
12530
+ element_qname?: string | null;
12531
+ /**
12532
+ * Period
12533
+ *
12534
+ * Month key (``YYYY-MM``) of the skip.
12535
+ */
12536
+ period: string;
12537
+ /**
12538
+ * Reason
12539
+ */
12540
+ reason: string;
12541
+ /**
12542
+ * Missing
12543
+ */
12544
+ missing?: Array<string>;
12545
+ };
12546
+
12103
12547
  /**
12104
12548
  * SkippedMetricLite
12105
12549
  *
@@ -13813,6 +14257,48 @@ export type UpdateEventHandlerRequest = {
13813
14257
  };
13814
14258
  };
13815
14259
 
14260
+ /**
14261
+ * UpdateForecastRequest
14262
+ *
14263
+ * Update a forecast block in place.
14264
+ *
14265
+ * Mutable: name, scenario_kind, horizon_months, base_period, levers.
14266
+ * ``levers`` is a **full replace** when provided (partial lever edits
14267
+ * would make the asserted set ambiguous). Updating does NOT recompute —
14268
+ * previously computed scenario months go stale until the next
14269
+ * ``compute-forecast`` run (the compute-metrics drift semantics).
14270
+ */
14271
+ export type UpdateForecastRequest = {
14272
+ /**
14273
+ * Structure Id
14274
+ *
14275
+ * Structure ID of the forecast block.
14276
+ */
14277
+ structure_id: string;
14278
+ /**
14279
+ * Name
14280
+ */
14281
+ name?: string | null;
14282
+ /**
14283
+ * Scenario Kind
14284
+ */
14285
+ scenario_kind?: 'budget' | 'forecast' | 'projection' | null;
14286
+ /**
14287
+ * Horizon Months
14288
+ */
14289
+ horizon_months?: number | null;
14290
+ /**
14291
+ * Base Period
14292
+ */
14293
+ base_period?: string | null;
14294
+ /**
14295
+ * Levers
14296
+ *
14297
+ * Full replacement of the lever set when provided.
14298
+ */
14299
+ levers?: Array<LeverAssertionRequest> | null;
14300
+ };
14301
+
13816
14302
  /**
13817
14303
  * UpdateInformationBlockRequest
13818
14304
  *
@@ -13827,6 +14313,8 @@ export type UpdateInformationBlockRequest = ({
13827
14313
  } & UpdateScheduleArm) | ({
13828
14314
  block_type: 'rollforward';
13829
14315
  } & UpdateRollforwardArm) | ({
14316
+ block_type: 'forecast';
14317
+ } & UpdateForecastArm) | ({
13830
14318
  block_type: 'balance_sheet' | 'cash_flow_statement' | 'comprehensive_income' | 'equity_statement' | 'income_statement' | 'metric' | 'regulatory_disclosure';
13831
14319
  } & UpdateLegacyArm);
13832
14320
 
@@ -14639,6 +15127,29 @@ export type ViewProjections = {
14639
15127
  chart?: ChartLite | null;
14640
15128
  };
14641
15129
 
15130
+ /**
15131
+ * _CreateForecastArm
15132
+ *
15133
+ * Create-information-block body for ``block_type="forecast"``.
15134
+ *
15135
+ * Carries a typed forecast payload — the authored scenario container:
15136
+ * scenario identity, horizon, base period, lever assertions on
15137
+ * ``rs-driver:*`` catalog elements. Run ``compute-forecast`` after
15138
+ * creating to derive the forward months.
15139
+ */
15140
+ export type CreateForecastArm = {
15141
+ /**
15142
+ * Block Type
15143
+ *
15144
+ * Discriminator value selecting this arm.
15145
+ */
15146
+ block_type: 'forecast';
15147
+ /**
15148
+ * Forecast creation payload.
15149
+ */
15150
+ payload: CreateForecastRequest;
15151
+ };
15152
+
14642
15153
  /**
14643
15154
  * _CreateLegacyArm
14644
15155
  *
@@ -14715,6 +15226,27 @@ export type CreateScheduleArm = {
14715
15226
  payload: CreateScheduleRequest;
14716
15227
  };
14717
15228
 
15229
+ /**
15230
+ * _DeleteForecastArm
15231
+ *
15232
+ * Delete-information-block body for ``block_type="forecast"``.
15233
+ *
15234
+ * Removes the scenario's entire parallel universe — the lever FactSet
15235
+ * and every computed scenario FactSet. Actuals are never touched.
15236
+ */
15237
+ export type DeleteForecastArm = {
15238
+ /**
15239
+ * Block Type
15240
+ *
15241
+ * Discriminator value selecting this arm.
15242
+ */
15243
+ block_type: 'forecast';
15244
+ /**
15245
+ * Forecast delete payload.
15246
+ */
15247
+ payload: DeleteForecastRequest;
15248
+ };
15249
+
14718
15250
  /**
14719
15251
  * _DeleteLegacyArm
14720
15252
  *
@@ -14783,6 +15315,28 @@ export type DeleteScheduleArm = {
14783
15315
  payload: DeleteScheduleRequest;
14784
15316
  };
14785
15317
 
15318
+ /**
15319
+ * _UpdateForecastArm
15320
+ *
15321
+ * Update-information-block body for ``block_type="forecast"``.
15322
+ *
15323
+ * Mutable: name, scenario_kind, horizon_months, base_period, levers
15324
+ * (full replace). Updating does not recompute — run ``compute-forecast``
15325
+ * to refresh the scenario's derived months.
15326
+ */
15327
+ export type UpdateForecastArm = {
15328
+ /**
15329
+ * Block Type
15330
+ *
15331
+ * Discriminator value selecting this arm.
15332
+ */
15333
+ block_type: 'forecast';
15334
+ /**
15335
+ * Forecast update payload.
15336
+ */
15337
+ payload: UpdateForecastRequest;
15338
+ };
15339
+
14786
15340
  /**
14787
15341
  * _UpdateLegacyArm
14788
15342
  *
@@ -22403,6 +22957,70 @@ export type ComputeMetricsResponses = {
22403
22957
 
22404
22958
  export type ComputeMetricsResponse2 = ComputeMetricsResponses[keyof ComputeMetricsResponses];
22405
22959
 
22960
+ export type ComputeForecastData = {
22961
+ body: ComputeForecastRequest;
22962
+ headers?: {
22963
+ /**
22964
+ * Idempotency-Key
22965
+ */
22966
+ 'Idempotency-Key'?: string | null;
22967
+ };
22968
+ path: {
22969
+ /**
22970
+ * Graph Id
22971
+ */
22972
+ graph_id: string;
22973
+ };
22974
+ query?: never;
22975
+ url: '/extensions/roboledger/{graph_id}/operations/compute-forecast';
22976
+ };
22977
+
22978
+ export type ComputeForecastErrors = {
22979
+ /**
22980
+ * Invalid request
22981
+ */
22982
+ 400: ErrorResponse;
22983
+ /**
22984
+ * Authentication required
22985
+ */
22986
+ 401: ErrorResponse;
22987
+ /**
22988
+ * Access denied
22989
+ */
22990
+ 403: ErrorResponse;
22991
+ /**
22992
+ * Resource not found
22993
+ */
22994
+ 404: ErrorResponse;
22995
+ /**
22996
+ * Idempotency-Key conflict — key reused with different body
22997
+ */
22998
+ 409: ErrorResponse;
22999
+ /**
23000
+ * Validation error
23001
+ */
23002
+ 422: ErrorResponse;
23003
+ /**
23004
+ * Rate limit exceeded
23005
+ */
23006
+ 429: ErrorResponse;
23007
+ /**
23008
+ * Internal server error
23009
+ */
23010
+ 500: ErrorResponse;
23011
+ };
23012
+
23013
+ export type ComputeForecastError = ComputeForecastErrors[keyof ComputeForecastErrors];
23014
+
23015
+ export type ComputeForecastResponses = {
23016
+ /**
23017
+ * Successful Response
23018
+ */
23019
+ 200: OperationEnvelopeComputeForecastResponse;
23020
+ };
23021
+
23022
+ export type ComputeForecastResponse2 = ComputeForecastResponses[keyof ComputeForecastResponses];
23023
+
22406
23024
  export type BindTextBlockData = {
22407
23025
  body: BindTextBlockRequest;
22408
23026
  headers?: {