@agile-team/mach-report 2.16.0 → 2.18.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 (177) hide show
  1. package/README.md +25 -12
  2. package/dist/{ExcelBindingWizard-CP6h2x1f.cjs → ExcelBindingWizard-Czn3C2yE.cjs} +1 -1
  3. package/dist/{ExcelBindingWizard-HhB3hAJE.js → ExcelBindingWizard-DMGZj6I6.js} +3 -3
  4. package/dist/ParamEditor-KzDQvbHY.js +732 -0
  5. package/dist/ParamEditor-oDfD8LgE.cjs +1 -0
  6. package/dist/{ReportBatchPanel-ruxcbfY6.js → ReportBatchPanel-BJK7PvZ4.js} +39 -39
  7. package/dist/ReportBatchPanel-DnmNRssu.cjs +1 -0
  8. package/dist/ReportParamPanel-mQkeN70Q.js +1020 -0
  9. package/dist/ReportParamPanel-sOANVRz-.cjs +1 -0
  10. package/dist/ReportPreview-BxWWTUL5.js +5583 -0
  11. package/dist/ReportPreview-Yf99omi3.cjs +6 -0
  12. package/dist/{ReportTemplateLibrary-DcwrH-63.js → ReportTemplateLibrary-BFjB08Wu.js} +1 -1
  13. package/dist/{ReportTemplateLibrary-BDlNT8JN.cjs → ReportTemplateLibrary-BO42QnWd.cjs} +1 -1
  14. package/dist/RuleEditor-CqxT1a-W.js +2337 -0
  15. package/dist/RuleEditor-D7YWigD9.cjs +1 -0
  16. package/dist/{TemplateOutlinePanel-CGrT5DFN.cjs → TemplateOutlinePanel-B0XX350V.cjs} +1 -1
  17. package/dist/{TemplateOutlinePanel-SXCjaPKR.js → TemplateOutlinePanel-zG0DrsIB.js} +2 -2
  18. package/dist/{TemplateReusePanel-6Z3wRFz8.cjs → TemplateReusePanel-BD0HSKp_.cjs} +1 -1
  19. package/dist/{TemplateReusePanel-lHLOS9Wn.js → TemplateReusePanel-Czwe5GbC.js} +2 -2
  20. package/dist/{TemplateReviewPanel-Dpk7sLcF.cjs → TemplateReviewPanel-CA5sdffM.cjs} +1 -1
  21. package/dist/{TemplateReviewPanel-CJ9PLc48.js → TemplateReviewPanel-NhmQI65C.js} +2 -2
  22. package/dist/analytics.cjs +1 -1
  23. package/dist/analytics.d.cts +163 -42
  24. package/dist/analytics.d.ts +163 -42
  25. package/dist/analytics.js +76 -141
  26. package/dist/artifact-integrity.json +110 -108
  27. package/dist/assets-2eC3mOcV.js +232 -0
  28. package/dist/assets-B0Hxn4l6.cjs +1 -0
  29. package/dist/{auto-uVBjX1j5.cjs → auto-B0EZFIK1.cjs} +1 -1
  30. package/dist/{auto-YR7a4BtF.js → auto-BlchZ1b8.js} +10 -10
  31. package/dist/{batch-WzDIXJAt.js → batch-DGCt44XM.js} +1 -1
  32. package/dist/{batch-z6Aw5GEY.cjs → batch-DYcokH4v.cjs} +1 -1
  33. package/dist/charts-Dlv8j2AG.js +141 -0
  34. package/dist/charts-aCtoswXq.cjs +1 -0
  35. package/dist/codes.cjs +9 -9
  36. package/dist/codes.d.cts +54 -0
  37. package/dist/codes.d.ts +54 -0
  38. package/dist/codes.js +12097 -13668
  39. package/dist/column-visual-BpgQVWwT.js +238 -0
  40. package/dist/column-visual-CtYxnBCP.cjs +1 -0
  41. package/dist/component-tree-6TV7W6Yj.cjs +1 -0
  42. package/dist/component-tree-CvW4lzpv.js +67 -0
  43. package/dist/computed-4TnxzgIh.cjs +1 -0
  44. package/dist/computed-C8NRZQss.js +739 -0
  45. package/dist/data-bar-Ce38juRZ.cjs +1 -0
  46. package/dist/data-bar-PtjXhMgN.js +9 -0
  47. package/dist/dataset-DL83majE.js +161 -0
  48. package/dist/dataset-IrlXbUvh.cjs +1 -0
  49. package/dist/designer--TKECSEc.cjs +2 -0
  50. package/dist/designer-d6hJS41w.js +5683 -0
  51. package/dist/designer.cjs +1 -1
  52. package/dist/designer.d.cts +835 -45
  53. package/dist/designer.d.ts +835 -45
  54. package/dist/designer.js +23 -20
  55. package/dist/{encoding-BYF9ZTl9.cjs → encoding-B--eZpp1.cjs} +1 -1
  56. package/dist/{encoding-BOGq4qYL.js → encoding-mctOLocI.js} +2 -2
  57. package/dist/{font-loader-EKLzOJxf.cjs → font-loader-DBBJ5KE9.cjs} +1 -1
  58. package/dist/{font-loader-CzI1GuBc.js → font-loader-DW8tIaNp.js} +1 -1
  59. package/dist/index-CPh6tqge.js +1575 -0
  60. package/dist/index-CUNw7dL9.cjs +1 -0
  61. package/dist/index.cjs +8 -8
  62. package/dist/index.d.cts +534 -16
  63. package/dist/index.d.ts +534 -16
  64. package/dist/index.js +1393 -955
  65. package/dist/json-snapshot-By4ZVVUt.js +1967 -0
  66. package/dist/json-snapshot-jiXff4lc.cjs +2 -0
  67. package/dist/matrix-0hywp0-F.cjs +1 -0
  68. package/dist/matrix-Dy-tyY7E.js +381 -0
  69. package/dist/param-validation-C-8sRJLq.cjs +1 -0
  70. package/dist/param-validation-CnDEd2l-.js +333 -0
  71. package/dist/{pdf-DJ5S6ukC.js → pdf-CKROKygt.js} +1845 -1845
  72. package/dist/{pdf-ByVCb1i6.cjs → pdf-DqyxJ96U.cjs} +47 -47
  73. package/dist/pdf.cjs +1 -1
  74. package/dist/pdf.d.cts +66 -0
  75. package/dist/pdf.d.ts +66 -0
  76. package/dist/pdf.js +2 -2
  77. package/dist/{plugin-C2j5_mhx.js → plugin-ByjF2kiV.js} +5 -5
  78. package/dist/{plugin-Dr39GBRG.cjs → plugin-DM1M2wlI.cjs} +1 -1
  79. package/dist/prefill-B8H9qwE4.js +371 -0
  80. package/dist/prefill-D7EswyTI.cjs +1 -0
  81. package/dist/{prepared-DqtpvRTn.js → prepared-BE-4jfX5.js} +2 -2
  82. package/dist/{prepared-DdrjLC7L.cjs → prepared-CGVphji3.cjs} +1 -1
  83. package/dist/{protocol-BzwMP4Vw.cjs → protocol-ByRVzzQG.cjs} +1 -1
  84. package/dist/{protocol-kt4Iy6-3.js → protocol-Cr81vFSQ.js} +3 -3
  85. package/dist/{record-bindings-CZWBJ1fU.js → record-bindings-DEJtmo3p.js} +67 -107
  86. package/dist/record-bindings-ehjnCDHt.cjs +1 -0
  87. package/dist/{region-binding-workflow-CWNvIjkV.js → region-binding-workflow-CBg0l_tj.js} +2 -2
  88. package/dist/{region-binding-workflow-CqSMxQ4p.cjs → region-binding-workflow-D05tOYn3.cjs} +1 -1
  89. package/dist/report-encoding-worker.cjs +1 -1
  90. package/dist/report-encoding-worker.js +1 -1
  91. package/dist/{report-params-B1RzkhJj.js → report-params-D9tBuM9B.js} +1 -1
  92. package/dist/{report-params-WDGrA4oP.cjs → report-params-VTg8MoCp.cjs} +1 -1
  93. package/dist/runtime-CDA6d263.cjs +1 -0
  94. package/dist/runtime-CEMvybO7.js +170 -0
  95. package/dist/sbom.cdx.json +1 -1
  96. package/dist/server/node.d.cts +121 -7
  97. package/dist/server/node.d.ts +121 -7
  98. package/dist/server-node.cjs +4 -4
  99. package/dist/server-node.js +3446 -2115
  100. package/dist/server.cjs +1 -1
  101. package/dist/server.d.cts +417 -29
  102. package/dist/server.d.ts +417 -29
  103. package/dist/server.js +787 -544
  104. package/dist/sha256-BDQ1Qk7A.js +158 -0
  105. package/dist/sha256-DgZAKXqI.cjs +1 -0
  106. package/dist/style.css +1 -1
  107. package/dist/template-bindings-Cg5oBLFT.cjs +1 -0
  108. package/dist/template-bindings-TKnXM7ll.js +62 -0
  109. package/dist/{template-catalog-BtR2JmCL.js → template-catalog-CmbWOJqy.js} +16 -16
  110. package/dist/template-catalog-Utu4GP09.cjs +1 -0
  111. package/dist/{template-fragments-BVsbxs4a.cjs → template-fragments-C_zSHJAa.cjs} +1 -1
  112. package/dist/{template-fragments-By0aZC1D.js → template-fragments-DWgo9tlZ.js} +2 -2
  113. package/dist/{template-outline-BwRV_eRo.cjs → template-outline-DWkzZXVC.cjs} +1 -1
  114. package/dist/{template-outline-cnWfT_LK.js → template-outline-DiADphlq.js} +1 -1
  115. package/dist/{template-registry-Cw3vRTX2.js → template-registry-BIhIHOab.js} +319 -314
  116. package/dist/template-registry-DzWswQI5.cjs +1 -0
  117. package/dist/vue/async.d.cts +636 -35
  118. package/dist/vue/async.d.ts +636 -35
  119. package/dist/vue/index.d.cts +746 -67
  120. package/dist/vue/index.d.ts +746 -67
  121. package/dist/vue-async.cjs +1 -1
  122. package/dist/vue-async.js +3 -3
  123. package/dist/vue.cjs +1 -1
  124. package/dist/vue.js +94 -89
  125. package/dist/{workbook-session-Cbts-22R.cjs → workbook-session-B94EwVa_.cjs} +1 -1
  126. package/dist/{workbook-session-BeSO8PFB.js → workbook-session-BoScoOg-.js} +2 -2
  127. package/dist/worker.cjs +1 -1
  128. package/dist/worker.d.cts +75 -7
  129. package/dist/worker.d.ts +75 -7
  130. package/dist/worker.js +4 -4
  131. package/dist/xlsx.cjs +4 -4
  132. package/dist/xlsx.d.cts +208 -15
  133. package/dist/xlsx.d.ts +208 -15
  134. package/dist/xlsx.js +288 -252
  135. package/package.json +1 -1
  136. package/dist/ParamEditor-CUQLgoxa.cjs +0 -1
  137. package/dist/ParamEditor-OKesP_nO.js +0 -594
  138. package/dist/ReportBatchPanel-cZCAMAwH.cjs +0 -1
  139. package/dist/ReportPreview-BcDKCLiK.js +0 -4834
  140. package/dist/ReportPreview-Bk9nLfO9.cjs +0 -6
  141. package/dist/RuleEditor-BX5S8RSF.cjs +0 -1
  142. package/dist/RuleEditor-CGl9XY2s.js +0 -2037
  143. package/dist/assets-CqIbfbTr.js +0 -126
  144. package/dist/assets-e4YSke8n.cjs +0 -1
  145. package/dist/capabilities-DDwXr_cA.js +0 -103
  146. package/dist/capabilities-DNLyZdNw.cjs +0 -1
  147. package/dist/component-tree-Ca6YYfHq.js +0 -61
  148. package/dist/component-tree-DkGLEfZC.cjs +0 -1
  149. package/dist/computed-C-4C2S5h.js +0 -521
  150. package/dist/computed-CGV2a809.cjs +0 -1
  151. package/dist/config-Dg_o8e7m.cjs +0 -1
  152. package/dist/config-XQ4qrQ7Q.js +0 -844
  153. package/dist/dataset-BkRmwgeJ.cjs +0 -1
  154. package/dist/dataset-H5pFuQGU.js +0 -121
  155. package/dist/designer-BfQSahxq.js +0 -5163
  156. package/dist/designer-CPPdeM5_.cjs +0 -2
  157. package/dist/diagnostic-notification-B9K9We3h.cjs +0 -1
  158. package/dist/diagnostic-notification-qGAYZdkB.js +0 -7
  159. package/dist/drill-CsdjgkRM.cjs +0 -1
  160. package/dist/drill-DIGsZfyB.js +0 -145
  161. package/dist/json-snapshot-D6ioHth9.js +0 -1702
  162. package/dist/json-snapshot-DknkjvxP.cjs +0 -2
  163. package/dist/matrix-CGRGkn5s.js +0 -112
  164. package/dist/matrix-gEO7ZM_u.cjs +0 -1
  165. package/dist/param-validation-C3HlcLLO.cjs +0 -1
  166. package/dist/param-validation-Do7Eg8Zv.js +0 -181
  167. package/dist/record-bindings-DUX1VMlR.cjs +0 -1
  168. package/dist/runtime-BjKBI530.js +0 -168
  169. package/dist/runtime-CBFEPKEs.cjs +0 -1
  170. package/dist/sha256-BshdOkCC.cjs +0 -1
  171. package/dist/sha256-DTG-Gq8i.js +0 -157
  172. package/dist/template-bindings-C2SpvsMU.js +0 -58
  173. package/dist/template-bindings-CEtWyiLX.cjs +0 -1
  174. package/dist/template-catalog-C2NLdrwB.cjs +0 -1
  175. package/dist/template-registry-C62vpv4a.cjs +0 -1
  176. package/dist/tree-BX380Rr7.cjs +0 -1
  177. package/dist/tree-CjVZLRw7.js +0 -172
package/dist/server.d.ts CHANGED
@@ -22,6 +22,22 @@ declare type AggregateOperation = "sum" | "count" | "avg" | "min" | "max" | "wei
22
22
 
23
23
  declare type AggregateOperation_2 = "sum" | "count" | "avg" | "min" | "max" | "weightedAvg";
24
24
 
25
+ declare interface AggregateRequest {
26
+ op: AggregateOperation;
27
+ field?: string;
28
+ weightField?: string;
29
+ numeric?: "number" | "decimal";
30
+ digits?: number;
31
+ }
32
+
33
+ declare interface AggregateRequest_2 {
34
+ op: AggregateOperation_2;
35
+ field?: string;
36
+ weightField?: string;
37
+ numeric?: "number" | "decimal";
38
+ digits?: number;
39
+ }
40
+
25
41
  declare interface AssetRenderBudget {
26
42
  /** Maximum newly rendered assets, default 1000. Existing imageData is kept unchanged. */
27
43
  maxAssets?: number;
@@ -35,6 +51,8 @@ declare interface AssetRenderBudget {
35
51
 
36
52
  declare interface AssetRenderOptions extends OutputDiagnosticOptions, ImageMediaOptions {
37
53
  assetRenderers?: Partial<Record<ImageComponentKind, ComponentImageRenderer>>;
54
+ /** Explicit id/version registry; unbound components continue using assetRenderers by kind. */
55
+ assetRegistry?: ComponentAssetRegistry;
38
56
  assetBudget?: AssetRenderBudget;
39
57
  /** Default throw prevents an incomplete export; placeholder retains the component and emits diagnostics. */
40
58
  assetFailure?: "throw" | "placeholder";
@@ -117,6 +135,45 @@ declare type ColumnFormat_2 = {
117
135
  pattern?: string;
118
136
  };
119
137
 
138
+ declare type ColumnVisual = {
139
+ /** Defaults to the column field; never changes the cell's raw value or business identity. */
140
+ field?: string;
141
+ /** Numeric text requires explicit opt-in; formatting an identifier does not turn it into a measure. */
142
+ numeric?: "number" | "decimal";
143
+ min?: number;
144
+ max?: number;
145
+ } & ({
146
+ kind: "colorScale";
147
+ lowColor?: string;
148
+ highColor?: string;
149
+ } | {
150
+ kind: "dataBar";
151
+ color?: string;
152
+ negativeColor?: string;
153
+ });
154
+
155
+ declare type ColumnVisual_2 = {
156
+ /** Defaults to the column field; never changes the cell's raw value or business identity. */
157
+ field?: string;
158
+ /** Numeric text requires explicit opt-in; formatting an identifier does not turn it into a measure. */
159
+ numeric?: "number" | "decimal";
160
+ min?: number;
161
+ max?: number;
162
+ } & ({
163
+ kind: "colorScale";
164
+ lowColor?: string;
165
+ highColor?: string;
166
+ } | {
167
+ kind: "dataBar";
168
+ color?: string;
169
+ negativeColor?: string;
170
+ });
171
+
172
+ declare interface ComponentAssetRegistry {
173
+ rendererFor(component: Readonly<PlanComponent>): ComponentImageRenderer | undefined;
174
+ hasExtension(id: string, version: string, kind: string): boolean;
175
+ }
176
+
120
177
  /** A literal own field of the current label record; expressions and paths are not evaluated. */
121
178
  declare interface ComponentBinding {
122
179
  field: string;
@@ -219,6 +276,9 @@ declare interface ComputedField_2 extends ExpressionOptions_2 {
219
276
 
220
277
  export declare function createManagerTemplateCatalog(manager: ReportTemplateManager, metadata?: (document: ReportTemplateDocument) => Pick<LocalTemplateCatalogItem, "category" | "tags">): ReportTemplateCatalogProvider;
221
278
 
279
+ /** Bounded, single-process reference store. Scope is host-authorized identity, never a client permission. */
280
+ export declare function createMemoryReportDocumentStore(options?: ReportDocumentBudget): ReportDocumentStore;
281
+
222
282
  /** Session-local intents; durable hosts should supply their own authorized stable IDs. */
223
283
  export declare function createMemoryReportInstanceIds(maximum?: number): {
224
284
  forCase(templateId: string, caseId: string): string;
@@ -270,6 +330,13 @@ export declare function createReportInstanceManager(store: ReportInstanceStore,
270
330
  /** Durable at-least-once dispatch; export/artifact handlers must be idempotent by scope+taskId. */
271
331
  export declare function createReportJobService(options: ReportJobServiceOptions): ReportJobService;
272
332
 
333
+ /** OpenAPI 3.1 for the minimal Java/Node wire contract. Host registers routes and authorizes IDs before describe(). */
334
+ export declare function createReportOpenApi(descriptions: readonly ReportDescription[], options?: {
335
+ title?: string;
336
+ version?: string;
337
+ basePath?: string;
338
+ }): Record<string, unknown>;
339
+
273
340
  /** 无 Vue、无 HTTP 框架的可选服务端外观;PDF/Excel 仅在对应 export 调用时加载。 */
274
341
  export declare function createReportRuntime(options: ReportRuntimeOptions): ReportRuntime;
275
342
 
@@ -342,6 +409,12 @@ declare interface FormulaAdapter {
342
409
  }
343
410
 
344
411
  declare interface GridCell {
412
+ /** Resolved visual only. Original value, text, editability and source are unchanged. */
413
+ dataBar?: {
414
+ start: number;
415
+ end: number;
416
+ color: string;
417
+ };
345
418
  /** Styled cell content; text remains a plain-text fallback. Imported rich cells are read-only. */
346
419
  richParagraphs?: RichParagraph[];
347
420
  text?: string;
@@ -368,6 +441,12 @@ declare interface GridCell {
368
441
  }
369
442
 
370
443
  declare interface GridCell_2 {
444
+ /** Resolved visual only. Original value, text, editability and source are unchanged. */
445
+ dataBar?: {
446
+ start: number;
447
+ end: number;
448
+ color: string;
449
+ };
371
450
  /** Styled cell content; text remains a plain-text fallback. Imported rich cells are read-only. */
372
451
  richParagraphs?: RichParagraph_2[];
373
452
  text?: string;
@@ -472,6 +551,8 @@ declare interface ListColumn {
472
551
  format?: ColumnFormat;
473
552
  /** 条件格式规则(声明式,命中合并进单元格样式;如负数红字) */
474
553
  rules?: StyleRule[];
554
+ /** Optional resolved color scale or value-preserving data bar. */
555
+ visual?: ColumnVisual;
475
556
  /** 内容列编辑控制;仍需由预览显式开启 editing,不影响表头/小计只读规则。 */
476
557
  editable?: boolean;
477
558
  /** 空值列或特殊数据类型可显式声明编辑输入类型。 */
@@ -498,6 +579,8 @@ declare interface ListColumn_2 {
498
579
  format?: ColumnFormat_2;
499
580
  /** 条件格式规则(声明式,命中合并进单元格样式;如负数红字) */
500
581
  rules?: StyleRule_2[];
582
+ /** Optional resolved color scale or value-preserving data bar. */
583
+ visual?: ColumnVisual_2;
501
584
  /** 内容列编辑控制;仍需由预览显式开启 editing,不影响表头/小计只读规则。 */
502
585
  editable?: boolean;
503
586
  /** 空值列或特殊数据类型可显式声明编辑输入类型。 */
@@ -709,6 +792,46 @@ declare interface LocalTemplateCatalogItem {
709
792
  tags?: string[];
710
793
  }
711
794
 
795
+ declare interface MatrixAxisOptions {
796
+ /** Display names in the same outer-to-inner order as the dimension fields. */
797
+ labels?: readonly string[];
798
+ /** Per-level sibling order; omitted levels retain first-seen order. */
799
+ sort?: readonly MatrixDimensionOrder[];
800
+ /** One-based prefix depths. Leaf depths are not subtotals. */
801
+ subtotals?: readonly number[];
802
+ }
803
+
804
+ declare interface MatrixAxisOptions_2 {
805
+ /** Display names in the same outer-to-inner order as the dimension fields. */
806
+ labels?: readonly string[];
807
+ /** Per-level sibling order; omitted levels retain first-seen order. */
808
+ sort?: readonly MatrixDimensionOrder_2[];
809
+ /** One-based prefix depths. Leaf depths are not subtotals. */
810
+ subtotals?: readonly number[];
811
+ }
812
+
813
+ declare type MatrixDimensionOrder = "source" | "asc" | "desc";
814
+
815
+ declare type MatrixDimensionOrder_2 = "source" | "asc" | "desc";
816
+
817
+ declare interface MatrixHierarchyOptions {
818
+ row?: MatrixAxisOptions;
819
+ column?: MatrixAxisOptions;
820
+ /** Only null/missing values use this label; empty strings and zero stay distinct. */
821
+ emptyLabel?: string;
822
+ subtotalLabel?: string;
823
+ totalLabel?: string;
824
+ }
825
+
826
+ declare interface MatrixHierarchyOptions_2 {
827
+ row?: MatrixAxisOptions_2;
828
+ column?: MatrixAxisOptions_2;
829
+ /** Only null/missing values use this label; empty strings and zero stay distinct. */
830
+ emptyLabel?: string;
831
+ subtotalLabel?: string;
832
+ totalLabel?: string;
833
+ }
834
+
712
835
  declare interface MatrixTableOptions {
713
836
  rowFields: readonly string[];
714
837
  columnFields: readonly string[];
@@ -723,6 +846,10 @@ declare interface MatrixTableOptions {
723
846
  maxColumns?: number;
724
847
  maxInputRows?: number;
725
848
  maxCells?: number;
849
+ /** Opt-in hierarchical dimensions, physical merged headers and prefix subtotals. */
850
+ hierarchy?: MatrixHierarchyOptions;
851
+ /** Hierarchical aggregate work, checked before measure reads; default 10 million updates. */
852
+ maxAggregateUpdates?: number;
726
853
  }
727
854
 
728
855
  declare interface MatrixTableOptions_2 {
@@ -739,6 +866,10 @@ declare interface MatrixTableOptions_2 {
739
866
  maxColumns?: number;
740
867
  maxInputRows?: number;
741
868
  maxCells?: number;
869
+ /** Opt-in hierarchical dimensions, physical merged headers and prefix subtotals. */
870
+ hierarchy?: MatrixHierarchyOptions_2;
871
+ /** Hierarchical aggregate work, checked before measure reads; default 10 million updates. */
872
+ maxAggregateUpdates?: number;
742
873
  }
743
874
 
744
875
  export declare interface MemoryReportInstanceStoreOptions {
@@ -758,6 +889,11 @@ declare interface OutputDiagnostic {
758
889
  componentPath?: readonly number[];
759
890
  kind: string;
760
891
  nid?: string;
892
+ /** Declarative extension identity only; no property values or business binding data enter diagnostics. */
893
+ extension?: {
894
+ id: string;
895
+ version: string;
896
+ };
761
897
  message: string;
762
898
  }
763
899
 
@@ -785,6 +921,8 @@ declare interface PaginateOptions {
785
921
  maxPages?: number;
786
922
  /** Actual grid cells, including repeated furniture and nested children; checked before each page is appended. */
787
923
  maxCells?: number;
924
+ /** Shared bound-chart primitive budget, checked before expansion; default 50000, range 1..1000000. */
925
+ maxChartComponents?: number;
788
926
  signal?: AbortSignal;
789
927
  /** Streaming total-page anchors can skip the bounded counting pass when known. */
790
928
  knownTotalPages?: number;
@@ -797,6 +935,8 @@ declare interface PaginateOptions {
797
935
  export declare function parseReportTemplatePackage(input: unknown, options?: ReportTemplatePackageOptions): ReportTemplatePackage;
798
936
 
799
937
  declare interface PlanComponent {
938
+ /** Template-only aggregate binding, expanded into shared primitives during layout. */
939
+ chartBinding?: ReportChartBinding;
800
940
  /** Optional QR/barcode encoding configuration; no encoder is loaded by the core. */
801
941
  code?: CodeOptions;
802
942
  /** Template-only binding; resolved and removed before constructing the output plan. */
@@ -826,6 +966,8 @@ declare interface PlanComponent {
826
966
  }
827
967
 
828
968
  declare interface PlanComponent_2 {
969
+ /** Template-only aggregate binding, expanded into shared primitives during layout. */
970
+ chartBinding?: ReportChartBinding_2;
829
971
  /** Optional QR/barcode encoding configuration; no encoder is loaded by the core. */
830
972
  code?: CodeOptions_2;
831
973
  /** Template-only binding; resolved and removed before constructing the output plan. */
@@ -940,6 +1082,21 @@ export declare interface PreparedReport {
940
1082
 
941
1083
  declare type PublicationAssets = Omit<AssetRenderOptions, "signal">;
942
1084
 
1085
+ /** Progressive consumption ends at the currently committed boundary; caller may resume with nextPage. */
1086
+ export declare function readReportDocumentPages(store: ReportDocumentStore, input: {
1087
+ scope: string;
1088
+ id: string;
1089
+ version: string;
1090
+ fromPage?: number;
1091
+ limit?: number;
1092
+ maxBytes?: number;
1093
+ signal?: AbortSignal;
1094
+ }): Promise<{
1095
+ manifest: ReportDocumentManifest;
1096
+ pages: PlanPage[];
1097
+ nextPage: number;
1098
+ }>;
1099
+
943
1100
  declare interface RenderPlan {
944
1101
  schemaVersion: string;
945
1102
  /** 编辑需要模板重算上下文;跨 Worker/JSON 保留要求,但不声明本地会话可用。 */
@@ -947,6 +1104,8 @@ declare interface RenderPlan {
947
1104
  pages: PlanPage[];
948
1105
  }
949
1106
 
1107
+ export declare const REPORT_HTTP_CONTRACT_VERSION = "1.0";
1108
+
950
1109
  export declare interface ReportBatchCase {
951
1110
  id: string;
952
1111
  params: Record<string, string>;
@@ -1034,6 +1193,100 @@ declare interface ReportCellTableIdentity {
1034
1193
 
1035
1194
  declare type ReportCellValue = string | number | boolean | null;
1036
1195
 
1196
+ /** Serializable binding; data and authorization continue to come from the existing report source. */
1197
+ declare interface ReportChartBinding {
1198
+ dataset: string;
1199
+ categoryField: string;
1200
+ measures: readonly ReportChartMeasure[];
1201
+ type: ReportChartOptions["type"];
1202
+ sort?: "asc" | "desc";
1203
+ title?: string;
1204
+ showValues?: boolean;
1205
+ maxRows?: number;
1206
+ maxCategories?: number;
1207
+ }
1208
+
1209
+ /** Serializable binding; data and authorization continue to come from the existing report source. */
1210
+ declare interface ReportChartBinding_2 {
1211
+ dataset: string;
1212
+ categoryField: string;
1213
+ measures: readonly ReportChartMeasure_2[];
1214
+ type: ReportChartOptions_2["type"];
1215
+ sort?: "asc" | "desc";
1216
+ title?: string;
1217
+ showValues?: boolean;
1218
+ maxRows?: number;
1219
+ maxCategories?: number;
1220
+ }
1221
+
1222
+ declare interface ReportChartMeasure extends AggregateRequest {
1223
+ label?: string;
1224
+ color?: string;
1225
+ }
1226
+
1227
+ declare interface ReportChartMeasure_2 extends AggregateRequest_2 {
1228
+ label?: string;
1229
+ color?: string;
1230
+ }
1231
+
1232
+ declare interface ReportChartOptions {
1233
+ type: "bar" | "line" | "stackedBar" | "percentBar";
1234
+ categories: readonly string[];
1235
+ series: readonly ReportChartSeries[];
1236
+ leftMm: number;
1237
+ topMm: number;
1238
+ widthMm: number;
1239
+ heightMm: number;
1240
+ title?: string;
1241
+ showValues?: boolean;
1242
+ }
1243
+
1244
+ declare interface ReportChartOptions_2 {
1245
+ type: "bar" | "line" | "stackedBar" | "percentBar";
1246
+ categories: readonly string[];
1247
+ series: readonly ReportChartSeries_2[];
1248
+ leftMm: number;
1249
+ topMm: number;
1250
+ widthMm: number;
1251
+ heightMm: number;
1252
+ title?: string;
1253
+ showValues?: boolean;
1254
+ }
1255
+
1256
+ declare interface ReportChartSeries {
1257
+ name: string;
1258
+ values: readonly (number | null)[];
1259
+ color?: string;
1260
+ }
1261
+
1262
+ declare interface ReportChartSeries_2 {
1263
+ name: string;
1264
+ values: readonly (number | null)[];
1265
+ color?: string;
1266
+ }
1267
+
1268
+ declare interface ReportComparison {
1269
+ field: string;
1270
+ op: ">" | ">=" | "<" | "<=" | "==" | "!=" | "between" | "contains" | "isNull" | "isNotNull";
1271
+ /** Legacy scalar thresholds remain supported. Use right for field-to-field comparisons. */
1272
+ value?: ReportPredicateScalar;
1273
+ right?: ReportPredicateOperand;
1274
+ values?: readonly [ReportPredicateScalar, ReportPredicateScalar];
1275
+ numeric?: "number" | "decimal";
1276
+ valueType?: "number" | "decimal" | "text" | "date" | "boolean";
1277
+ }
1278
+
1279
+ declare interface ReportComparison_2 {
1280
+ field: string;
1281
+ op: ">" | ">=" | "<" | "<=" | "==" | "!=" | "between" | "contains" | "isNull" | "isNotNull";
1282
+ /** Legacy scalar thresholds remain supported. Use right for field-to-field comparisons. */
1283
+ value?: ReportPredicateScalar_2;
1284
+ right?: ReportPredicateOperand_2;
1285
+ values?: readonly [ReportPredicateScalar_2, ReportPredicateScalar_2];
1286
+ numeric?: "number" | "decimal";
1287
+ valueType?: "number" | "decimal" | "text" | "date" | "boolean";
1288
+ }
1289
+
1037
1290
  declare interface ReportDataTarget {
1038
1291
  datasetId: string;
1039
1292
  field: string;
@@ -1085,6 +1338,46 @@ declare interface ReportDiagnostic {
1085
1338
  target?: ReportDataTarget;
1086
1339
  }
1087
1340
 
1341
+ export declare interface ReportDocumentBudget {
1342
+ maxDocuments?: number;
1343
+ maxBytes?: number;
1344
+ maxPages?: number;
1345
+ maxPageBytes?: number;
1346
+ maxManifestBytes?: number;
1347
+ }
1348
+
1349
+ export declare class ReportDocumentError extends Error {
1350
+ readonly code: "input" | "capacity" | "conflict" | "missing" | "closed";
1351
+ constructor(code: "input" | "capacity" | "conflict" | "missing" | "closed", message: string);
1352
+ }
1353
+
1354
+ export declare interface ReportDocumentManifest {
1355
+ scope: string;
1356
+ id: string;
1357
+ version: string;
1358
+ /** CAS token increases after each append and completion. */
1359
+ revision: number;
1360
+ state: "building" | "complete" | "failed";
1361
+ failure?: {
1362
+ code: "cancelled" | "generation";
1363
+ message: string;
1364
+ };
1365
+ pageCount: number;
1366
+ bytes: number;
1367
+ plan: Omit<RenderPlan, "pages">;
1368
+ metadata?: Omit<PreparedReport, "plan">;
1369
+ }
1370
+
1371
+ export declare interface ReportDocumentStore {
1372
+ create(input: Pick<ReportDocumentManifest, "scope" | "id" | "version" | "plan">, signal?: AbortSignal): Promise<ReportDocumentManifest>;
1373
+ append(scope: string, id: string, version: string, expectedRevision: number, page: PlanPage, signal?: AbortSignal): Promise<ReportDocumentManifest>;
1374
+ complete(scope: string, id: string, version: string, expectedRevision: number, metadata?: Omit<PreparedReport, "plan">, signal?: AbortSignal): Promise<ReportDocumentManifest>;
1375
+ fail(scope: string, id: string, version: string, expectedRevision: number, failure: NonNullable<ReportDocumentManifest["failure"]>): Promise<ReportDocumentManifest>;
1376
+ read(scope: string, id: string, signal?: AbortSignal): Promise<ReportDocumentManifest | undefined>;
1377
+ readPage(scope: string, id: string, version: string, index: number, signal?: AbortSignal): Promise<PlanPage | undefined>;
1378
+ remove(scope: string, id: string, version: string, signal?: AbortSignal): Promise<boolean>;
1379
+ }
1380
+
1088
1381
  declare type ReportExpression = {
1089
1382
  field: string;
1090
1383
  } | {
@@ -1094,7 +1387,9 @@ declare type ReportExpression = {
1094
1387
  field?: string;
1095
1388
  weightField?: string;
1096
1389
  } | {
1097
- op: "add" | "subtract" | "multiply" | "divide" | "coalesce";
1390
+ op: ReportExpressionOperation;
1391
+ /** Required for if; args are [then, else], and only the selected branch is evaluated. */
1392
+ condition?: ReportPredicate;
1098
1393
  args: readonly ReportExpression[];
1099
1394
  };
1100
1395
 
@@ -1107,11 +1402,25 @@ declare type ReportExpression_2 = {
1107
1402
  field?: string;
1108
1403
  weightField?: string;
1109
1404
  } | {
1110
- op: "add" | "subtract" | "multiply" | "divide" | "coalesce";
1405
+ op: ReportExpressionOperation_2;
1406
+ /** Required for if; args are [then, else], and only the selected branch is evaluated. */
1407
+ condition?: ReportPredicate_2;
1111
1408
  args: readonly ReportExpression_2[];
1112
1409
  };
1113
1410
 
1114
- declare interface ReportFieldContract {
1411
+ declare type ReportExpressionOperation = "add" | "subtract" | "multiply" | "divide" | "coalesce" | "if" | "round" | "abs" | "concat" | "trim" | "upper" | "lower" | "dateYear" | "dateMonth" | "dateDay";
1412
+
1413
+ declare type ReportExpressionOperation_2 = "add" | "subtract" | "multiply" | "divide" | "coalesce" | "if" | "round" | "abs" | "concat" | "trim" | "upper" | "lower" | "dateYear" | "dateMonth" | "dateDay";
1414
+
1415
+ declare type ReportFieldAggregation = "sum" | "avg" | "min" | "max" | "count" | "none";
1416
+
1417
+ declare interface ReportFieldCalculation {
1418
+ /** Business-owned explanation, never executable JavaScript or an inferred business formula. */
1419
+ description: string;
1420
+ dependsOn: readonly string[];
1421
+ }
1422
+
1423
+ declare interface ReportFieldContract extends ReportFieldSemantics {
1115
1424
  field: string;
1116
1425
  label?: string;
1117
1426
  type: "text" | "number" | "boolean" | "date" | "decimal";
@@ -1126,6 +1435,17 @@ declare interface ReportFieldContract {
1126
1435
  unit?: string;
1127
1436
  }
1128
1437
 
1438
+ declare interface ReportFieldSemantics {
1439
+ description?: string;
1440
+ /** Explicit meaning of null/missing; does not convert blanks into zero. */
1441
+ missingMeaning?: string;
1442
+ /** Recommended aggregation; none marks non-additive measures such as ratios. No aggregation runs implicitly. */
1443
+ aggregation?: ReportFieldAggregation;
1444
+ /** Shared presentation only; raw values and calculation precision remain unchanged. */
1445
+ format?: ColumnFormat;
1446
+ calculation?: ReportFieldCalculation;
1447
+ }
1448
+
1129
1449
  declare interface ReportFlowBand {
1130
1450
  /** Exact stable component IDs. Static components use nid, lists use id. */
1131
1451
  componentIds: string[];
@@ -1152,6 +1472,22 @@ export declare interface ReportGenerationInput {
1152
1472
  signal?: AbortSignal;
1153
1473
  }
1154
1474
 
1475
+ /** Stable transport mapping; unexpected errors never expose exception details or stacks. */
1476
+ export declare function reportHttpError(error: unknown, correlationId: string): {
1477
+ status: number;
1478
+ body: ReportHttpErrorBody;
1479
+ };
1480
+
1481
+ export declare interface ReportHttpErrorBody {
1482
+ error: {
1483
+ code: string;
1484
+ message: string;
1485
+ correlationId: string;
1486
+ path?: string;
1487
+ issues?: Record<string, string>[];
1488
+ };
1489
+ }
1490
+
1155
1491
  export declare interface ReportInstanceArtifact {
1156
1492
  key: string;
1157
1493
  format: "pdf" | "xlsx";
@@ -1344,6 +1680,8 @@ declare interface ReportLoadContext {
1344
1680
  signal?: AbortSignal;
1345
1681
  }
1346
1682
 
1683
+ declare type ReportNumberRange = readonly [number, number];
1684
+
1347
1685
  export declare interface ReportPackageFixture {
1348
1686
  name: string;
1349
1687
  /** Explicit host confirmation; the SDK does not infer that business values are anonymous. */
@@ -1397,12 +1735,9 @@ declare interface ReportParamDef {
1397
1735
  field: string;
1398
1736
  /** 显示名(缺省用 field) */
1399
1737
  label?: string;
1400
- type?: "text" | "number" | "date" | "month" | "year" | "dateRange" | "select";
1738
+ type?: "text" | "number" | "date" | "month" | "year" | "dateRange" | "select" | "multiSelect" | "cascader" | "numberRange";
1401
1739
  /** select 选项 */
1402
- options?: Array<{
1403
- label: string;
1404
- value: string;
1405
- }>;
1740
+ options?: ReportParamTreeOption[];
1406
1741
  /** Opaque host-resolved source key. No URL, credentials or executable code is stored. */
1407
1742
  optionsSource?: string;
1408
1743
  /** Select dependencies must be declared parameters; changing a parent clears descendants. */
@@ -1415,6 +1750,9 @@ declare interface ReportParamDef {
1415
1750
  max?: number | string;
1416
1751
  minLength?: number;
1417
1752
  maxLength?: number;
1753
+ /** multiSelect item count (maximum 100). Cascader paths are bounded to 16 levels. */
1754
+ minItems?: number;
1755
+ maxItems?: number;
1418
1756
  }
1419
1757
 
1420
1758
  /** 报表参数定义(声明式,模板自描述参数面:渲染组件据此生成查询面板) */
@@ -1423,12 +1761,9 @@ declare interface ReportParamDef_2 {
1423
1761
  field: string;
1424
1762
  /** 显示名(缺省用 field) */
1425
1763
  label?: string;
1426
- type?: "text" | "number" | "date" | "month" | "year" | "dateRange" | "select";
1764
+ type?: "text" | "number" | "date" | "month" | "year" | "dateRange" | "select" | "multiSelect" | "cascader" | "numberRange";
1427
1765
  /** select 选项 */
1428
- options?: Array<{
1429
- label: string;
1430
- value: string;
1431
- }>;
1766
+ options?: ReportParamTreeOption_2[];
1432
1767
  /** Opaque host-resolved source key. No URL, credentials or executable code is stored. */
1433
1768
  optionsSource?: string;
1434
1769
  /** Select dependencies must be declared parameters; changing a parent clears descendants. */
@@ -1441,6 +1776,9 @@ declare interface ReportParamDef_2 {
1441
1776
  max?: number | string;
1442
1777
  minLength?: number;
1443
1778
  maxLength?: number;
1779
+ /** multiSelect item count (maximum 100). Cascader paths are bounded to 16 levels. */
1780
+ minItems?: number;
1781
+ maxItems?: number;
1444
1782
  }
1445
1783
 
1446
1784
  declare interface ReportParamIssue {
@@ -1450,14 +1788,30 @@ declare interface ReportParamIssue {
1450
1788
  message: string;
1451
1789
  }
1452
1790
 
1453
- declare type ReportParamIssueCode = "definition" | "required" | "type" | "option" | "dependency" | "minimum" | "maximum" | "minLength" | "maxLength";
1791
+ declare type ReportParamIssueCode = "definition" | "required" | "type" | "option" | "dependency" | "minimum" | "maximum" | "minLength" | "maxLength" | "minItems" | "maxItems";
1792
+
1793
+ /** Cascader values are unique within each sibling list. */
1794
+ declare interface ReportParamTreeOption {
1795
+ label: string;
1796
+ value: string;
1797
+ children?: ReportParamTreeOption[];
1798
+ }
1799
+
1800
+ /** Cascader values are unique within each sibling list. */
1801
+ declare interface ReportParamTreeOption_2 {
1802
+ label: string;
1803
+ value: string;
1804
+ children?: ReportParamTreeOption_2[];
1805
+ }
1806
+
1807
+ declare type ReportParamTypedValue = string | number | string[] | ReportNumberRange;
1454
1808
 
1455
1809
  declare interface ReportParamValidation {
1456
1810
  ok: boolean;
1457
1811
  /** 保留历史取数契约的字符串形式;未知参数保留,不能代替接口权限白名单。 */
1458
1812
  values: Record<string, string>;
1459
1813
  /** JSON Schema 对应的规范值:number 参数转换为有限数字。 */
1460
- typedValues: Record<string, string | number>;
1814
+ typedValues: Record<string, ReportParamTypedValue>;
1461
1815
  issues: ReportParamIssue[];
1462
1816
  }
1463
1817
 
@@ -1473,6 +1827,38 @@ export declare interface ReportPdfFontOptions {
1473
1827
  };
1474
1828
  }
1475
1829
 
1830
+ declare type ReportPredicate = ReportComparison | {
1831
+ all: readonly ReportPredicate[];
1832
+ } | {
1833
+ any: readonly ReportPredicate[];
1834
+ } | {
1835
+ not: ReportPredicate;
1836
+ };
1837
+
1838
+ declare type ReportPredicate_2 = ReportComparison_2 | {
1839
+ all: readonly ReportPredicate_2[];
1840
+ } | {
1841
+ any: readonly ReportPredicate_2[];
1842
+ } | {
1843
+ not: ReportPredicate_2;
1844
+ };
1845
+
1846
+ declare type ReportPredicateOperand = {
1847
+ field: string;
1848
+ } | {
1849
+ value: ReportPredicateScalar;
1850
+ };
1851
+
1852
+ declare type ReportPredicateOperand_2 = {
1853
+ field: string;
1854
+ } | {
1855
+ value: ReportPredicateScalar_2;
1856
+ };
1857
+
1858
+ declare type ReportPredicateScalar = string | number | boolean | null;
1859
+
1860
+ declare type ReportPredicateScalar_2 = string | number | boolean | null;
1861
+
1476
1862
  /** 查询是唯一基础能力;权限、HTTP、数据库和事务都留在宿主适配器内。 */
1477
1863
  declare interface ReportProvider {
1478
1864
  query(context: ReportLoadContext): ReportQueryResult | Promise<ReportQueryResult>;
@@ -1540,6 +1926,8 @@ export declare interface ReportRuntimeBudget {
1540
1926
  maxRows?: number;
1541
1927
  maxPages?: number;
1542
1928
  maxCells?: number;
1929
+ /** Aggregate bound-chart primitives per prepare, before expansion; default 50000, hard maximum 1000000. */
1930
+ maxChartComponents?: number;
1543
1931
  maxOutputBytes?: number;
1544
1932
  /** Bound the plain JSON snapshot accepted by exportPrepared (default 64 MB). */
1545
1933
  maxPreparedBytes?: number;
@@ -1568,6 +1956,7 @@ export declare interface ReportRuntimeExportInput extends ReportRuntimeInput {
1568
1956
  sheetMode?: "auto" | "pages" | "continuous";
1569
1957
  valueMode?: "text" | "raw";
1570
1958
  paperSize?: "auto" | "a3" | "a4" | "a5";
1959
+ maxDataBars?: number;
1571
1960
  sheetName?: (sheetIndex: number) => string;
1572
1961
  };
1573
1962
  }
@@ -2048,26 +2437,14 @@ export declare function snapshotReportInstance(value: ReportInstanceSnapshot, ma
2048
2437
 
2049
2438
  /** 条件格式规则求值(声明式,见 ListColumn.rules) */
2050
2439
  declare interface StyleRule {
2051
- when: {
2052
- field: string;
2053
- op: ">" | ">=" | "<" | "<=" | "==" | "!=";
2054
- value: number | string;
2055
- /** Explicit decimal comparisons retain decimal thresholds as text. */
2056
- numeric?: "number" | "decimal";
2057
- };
2440
+ when: ReportPredicate;
2058
2441
  /** 命中时合并进单元格样式(color/bold/backgroundColor 等) */
2059
2442
  style: Record<string, unknown>;
2060
2443
  }
2061
2444
 
2062
2445
  /** 条件格式规则求值(声明式,见 ListColumn.rules) */
2063
2446
  declare interface StyleRule_2 {
2064
- when: {
2065
- field: string;
2066
- op: ">" | ">=" | "<" | "<=" | "==" | "!=";
2067
- value: number | string;
2068
- /** Explicit decimal comparisons retain decimal thresholds as text. */
2069
- numeric?: "number" | "decimal";
2070
- };
2447
+ when: ReportPredicate_2;
2071
2448
  /** 命中时合并进单元格样式(color/bold/backgroundColor 等) */
2072
2449
  style: Record<string, unknown>;
2073
2450
  }
@@ -2186,4 +2563,15 @@ declare type ValueFormat = ColumnFormat;
2186
2563
  /** The same declarative formatting used by list columns, before any output backend. */
2187
2564
  declare type ValueFormat_2 = ColumnFormat_2;
2188
2565
 
2566
+ /** Accepts paginateTemplatePages/AsyncIterable without retaining all pages; partial documents stay inspectable on failure. */
2567
+ export declare function writeReportDocument(store: ReportDocumentStore, input: {
2568
+ scope: string;
2569
+ id: string;
2570
+ version: string;
2571
+ plan: Omit<RenderPlan, "pages">;
2572
+ pages: Iterable<PlanPage> | AsyncIterable<PlanPage>;
2573
+ metadata?: Omit<PreparedReport, "plan">;
2574
+ signal?: AbortSignal;
2575
+ }): Promise<ReportDocumentManifest>;
2576
+
2189
2577
  export { }