@agile-team/mach-report 2.14.0 → 2.16.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 (282) hide show
  1. package/README.md +26 -16
  2. package/THIRD_PARTY_NOTICES.md +3 -1
  3. package/dist/{ExcelBindingWizard-CLT2p7P3.cjs → ExcelBindingWizard-CP6h2x1f.cjs} +1 -1
  4. package/dist/{ExcelBindingWizard-CvsWR8Ga.js → ExcelBindingWizard-HhB3hAJE.js} +3 -3
  5. package/dist/ParamEditor-CUQLgoxa.cjs +1 -0
  6. package/dist/ParamEditor-OKesP_nO.js +594 -0
  7. package/dist/{ReportBatchPanel-DkxTzBkD.cjs → ReportBatchPanel-cZCAMAwH.cjs} +1 -1
  8. package/dist/{ReportBatchPanel-LqVgiqp7.js → ReportBatchPanel-ruxcbfY6.js} +39 -39
  9. package/dist/ReportPreview-BcDKCLiK.js +4834 -0
  10. package/dist/ReportPreview-Bk9nLfO9.cjs +6 -0
  11. package/dist/{ReportTemplateLibrary-cQ1sqNYo.cjs → ReportTemplateLibrary-BDlNT8JN.cjs} +1 -1
  12. package/dist/{ReportTemplateLibrary-MjWEtc7X.js → ReportTemplateLibrary-DcwrH-63.js} +1 -1
  13. package/dist/{RuleEditor-BaR6xUiI.cjs → RuleEditor-BX5S8RSF.cjs} +1 -1
  14. package/dist/{RuleEditor-ChuXMlei.js → RuleEditor-CGl9XY2s.js} +5 -5
  15. package/dist/{TemplateOutlinePanel-BHKP89Xz.cjs → TemplateOutlinePanel-CGrT5DFN.cjs} +1 -1
  16. package/dist/{TemplateOutlinePanel-Dci6aRn1.js → TemplateOutlinePanel-SXCjaPKR.js} +2 -2
  17. package/dist/{TemplateReusePanel-CY5eO2Sh.cjs → TemplateReusePanel-6Z3wRFz8.cjs} +1 -1
  18. package/dist/{TemplateReusePanel-B7Gmyc1z.js → TemplateReusePanel-lHLOS9Wn.js} +2 -2
  19. package/dist/{TemplateReviewPanel-DjlX3xpt.js → TemplateReviewPanel-CJ9PLc48.js} +2 -2
  20. package/dist/{TemplateReviewPanel-JvZe9_4G.cjs → TemplateReviewPanel-Dpk7sLcF.cjs} +1 -1
  21. package/dist/analytics.cjs +1 -1
  22. package/dist/analytics.d.cts +5 -1
  23. package/dist/analytics.d.ts +5 -1
  24. package/dist/analytics.js +154 -60
  25. package/dist/artifact-integrity.json +143 -0
  26. package/dist/assets-CqIbfbTr.js +126 -0
  27. package/dist/assets-e4YSke8n.cjs +1 -0
  28. package/dist/auto-YR7a4BtF.js +240 -0
  29. package/dist/auto-uVBjX1j5.cjs +1 -0
  30. package/dist/batch-WzDIXJAt.js +220 -0
  31. package/dist/batch-z6Aw5GEY.cjs +1 -0
  32. package/dist/capabilities-DDwXr_cA.js +103 -0
  33. package/dist/capabilities-DNLyZdNw.cjs +1 -0
  34. package/dist/codes.d.cts +4 -0
  35. package/dist/codes.d.ts +4 -0
  36. package/dist/component-tree-Ca6YYfHq.js +61 -0
  37. package/dist/component-tree-DkGLEfZC.cjs +1 -0
  38. package/dist/{computed-Bvk0W15F.js → computed-C-4C2S5h.js} +3 -3
  39. package/dist/config-Dg_o8e7m.cjs +1 -0
  40. package/dist/config-XQ4qrQ7Q.js +844 -0
  41. package/dist/designer-BfQSahxq.js +5163 -0
  42. package/dist/designer-CPPdeM5_.cjs +2 -0
  43. package/dist/designer.cjs +1 -1
  44. package/dist/designer.d.cts +197 -16
  45. package/dist/designer.d.ts +197 -16
  46. package/dist/designer.js +1 -1
  47. package/dist/diagnostic-notification-B9K9We3h.cjs +1 -0
  48. package/dist/diagnostic-notification-qGAYZdkB.js +7 -0
  49. package/dist/drill-CsdjgkRM.cjs +1 -0
  50. package/dist/drill-DIGsZfyB.js +145 -0
  51. package/dist/encoding-BOGq4qYL.js +21 -0
  52. package/dist/encoding-BYF9ZTl9.cjs +1 -0
  53. package/dist/{font-loader-DHto6Lra.js → font-loader-CzI1GuBc.js} +1 -1
  54. package/dist/{font-loader-vhCT8znW.cjs → font-loader-EKLzOJxf.cjs} +1 -1
  55. package/dist/index.cjs +8 -9
  56. package/dist/index.d.cts +84 -4
  57. package/dist/index.d.ts +84 -4
  58. package/dist/index.js +829 -833
  59. package/dist/json-snapshot-D6ioHth9.js +1702 -0
  60. package/dist/json-snapshot-DknkjvxP.cjs +2 -0
  61. package/dist/licenses/_bwip-js_generic-4.11.4.txt +24 -0
  62. package/dist/licenses/_fast-csv_format-4.3.5.txt +22 -0
  63. package/dist/licenses/_fast-csv_parse-4.3.6.txt +22 -0
  64. package/dist/licenses/_pdf-lib_fontkit-1.1.1.txt +326 -0
  65. package/dist/licenses/_pdf-lib_standard-fonts-1.0.0.txt +22 -0
  66. package/dist/licenses/_pdf-lib_upng-1.0.1.txt +22 -0
  67. package/dist/licenses/_types_node-14.18.63.txt +22 -0
  68. package/dist/licenses/_types_pako-2.0.3.txt +22 -0
  69. package/dist/licenses/_types_pegjs-0.10.6.txt +22 -0
  70. package/dist/licenses/archiver-5.3.2.txt +23 -0
  71. package/dist/licenses/archiver-utils-2.1.0.txt +23 -0
  72. package/dist/licenses/archiver-utils-3.0.4.txt +23 -0
  73. package/dist/licenses/async-3.2.6.txt +20 -0
  74. package/dist/licenses/balanced-match-1.0.2.txt +22 -0
  75. package/dist/licenses/base64-js-1.5.1.txt +22 -0
  76. package/dist/licenses/big-integer-1.6.52.txt +25 -0
  77. package/dist/licenses/binary-0.3.0.txt +178 -0
  78. package/dist/licenses/bl-4.1.0.txt +14 -0
  79. package/dist/licenses/bluebird-3.4.7.txt +22 -0
  80. package/dist/licenses/brace-expansion-1.1.21.txt +22 -0
  81. package/dist/licenses/brace-expansion-2.1.7.txt +22 -0
  82. package/dist/licenses/buffer-5.7.1.txt +22 -0
  83. package/dist/licenses/buffer-crc32-0.2.13.txt +20 -0
  84. package/dist/licenses/buffer-indexof-polyfill-1.0.2.txt +23 -0
  85. package/dist/licenses/buffers-0.1.1.txt +140 -0
  86. package/dist/licenses/chainsaw-0.1.0.txt +184 -0
  87. package/dist/licenses/compress-commons-4.1.2.txt +23 -0
  88. package/dist/licenses/concat-map-0.0.1.txt +19 -0
  89. package/dist/licenses/core-util-is-1.0.3.txt +20 -0
  90. package/dist/licenses/crc-32-1.2.2.txt +202 -0
  91. package/dist/licenses/crc32-stream-4.0.3.txt +23 -0
  92. package/dist/licenses/dayjs-1.11.23.txt +22 -0
  93. package/dist/licenses/duplexer2-0.1.4.txt +27 -0
  94. package/dist/licenses/end-of-stream-1.4.5.txt +22 -0
  95. package/dist/licenses/exceljs-4.4.0.txt +23 -0
  96. package/dist/licenses/fast-csv-4.3.6.txt +22 -0
  97. package/dist/licenses/fast-png-6.4.0.txt +22 -0
  98. package/dist/licenses/fs-constants-1.0.0.txt +22 -0
  99. package/dist/licenses/fs.realpath-1.0.0.txt +44 -0
  100. package/dist/licenses/fstream-1.0.12.txt +16 -0
  101. package/dist/licenses/glob-7.2.3.txt +22 -0
  102. package/dist/licenses/graceful-fs-4.2.11.txt +16 -0
  103. package/dist/licenses/ieee754-1.2.1.txt +12 -0
  104. package/dist/licenses/immediate-3.0.6.txt +21 -0
  105. package/dist/licenses/inflight-1.0.6.txt +16 -0
  106. package/dist/licenses/inherits-2.0.4.txt +17 -0
  107. package/dist/licenses/iobuffer-5.4.0.txt +23 -0
  108. package/dist/licenses/isarray-1.0.0.txt +61 -0
  109. package/dist/licenses/jszip-3.10.2.txt +652 -0
  110. package/dist/licenses/lazystream-1.0.1.txt +24 -0
  111. package/dist/licenses/lie-3.3.0.txt +8 -0
  112. package/dist/licenses/listenercount-1.0.1.txt +6 -0
  113. package/dist/licenses/lodash.defaults-4.2.0.txt +48 -0
  114. package/dist/licenses/lodash.difference-4.5.0.txt +48 -0
  115. package/dist/licenses/lodash.escaperegexp-4.1.2.txt +48 -0
  116. package/dist/licenses/lodash.flatten-4.4.0.txt +48 -0
  117. package/dist/licenses/lodash.groupby-4.6.0.txt +48 -0
  118. package/dist/licenses/lodash.isboolean-3.0.3.txt +23 -0
  119. package/dist/licenses/lodash.isequal-4.5.0.txt +48 -0
  120. package/dist/licenses/lodash.isfunction-3.0.9.txt +48 -0
  121. package/dist/licenses/lodash.isnil-4.0.0.txt +23 -0
  122. package/dist/licenses/lodash.isplainobject-4.0.6.txt +48 -0
  123. package/dist/licenses/lodash.isundefined-3.0.1.txt +23 -0
  124. package/dist/licenses/lodash.union-4.6.0.txt +48 -0
  125. package/dist/licenses/lodash.uniq-4.5.0.txt +48 -0
  126. package/dist/licenses/minimatch-3.1.5.txt +16 -0
  127. package/dist/licenses/minimatch-5.1.9.txt +16 -0
  128. package/dist/licenses/minimist-1.2.8.txt +19 -0
  129. package/dist/licenses/mkdirp-0.5.6.txt +22 -0
  130. package/dist/licenses/node-sql-parser-5.4.0.txt +202 -0
  131. package/dist/licenses/normalize-path-3.0.0.txt +22 -0
  132. package/dist/licenses/once-1.4.0.txt +16 -0
  133. package/dist/licenses/pako-1.0.11.txt +22 -0
  134. package/dist/licenses/pako-2.2.0.txt +22 -0
  135. package/dist/licenses/path-is-absolute-1.0.1.txt +22 -0
  136. package/dist/licenses/pdf-lib-1.17.1.txt +22 -0
  137. package/dist/licenses/process-nextick-args-2.0.1.txt +20 -0
  138. package/dist/licenses/readable-stream-2.3.8.txt +48 -0
  139. package/dist/licenses/readable-stream-3.6.2.txt +48 -0
  140. package/dist/licenses/readdir-glob-1.1.3.txt +202 -0
  141. package/dist/licenses/rimraf-2.7.1.txt +16 -0
  142. package/dist/licenses/safe-buffer-5.1.2.txt +22 -0
  143. package/dist/licenses/safe-buffer-5.2.1.txt +22 -0
  144. package/dist/licenses/saxes-5.0.1.txt +397 -0
  145. package/dist/licenses/setimmediate-1.0.5.txt +21 -0
  146. package/dist/licenses/string_decoder-1.1.1.txt +49 -0
  147. package/dist/licenses/string_decoder-1.3.0.txt +49 -0
  148. package/dist/licenses/tar-stream-2.2.0.txt +22 -0
  149. package/dist/licenses/tmp-0.2.7.txt +22 -0
  150. package/dist/licenses/traverse-0.3.9.txt +25 -0
  151. package/dist/licenses/tslib-1.14.1.txt +13 -0
  152. package/dist/licenses/unzipper-0.10.14.txt +26 -0
  153. package/dist/licenses/util-deprecate-1.0.2.txt +25 -0
  154. package/dist/licenses/uuid-11.1.1.txt +10 -0
  155. package/dist/licenses/wrappy-1.0.2.txt +16 -0
  156. package/dist/licenses/xmlchars-2.2.0.txt +19 -0
  157. package/dist/licenses/zip-stream-4.1.1.txt +23 -0
  158. package/dist/matrix-CGRGkn5s.js +112 -0
  159. package/dist/matrix-gEO7ZM_u.cjs +1 -0
  160. package/dist/media-B7vnpD8k.cjs +1 -0
  161. package/dist/media-Y90dHK9z.js +70 -0
  162. package/dist/param-validation-C3HlcLLO.cjs +1 -0
  163. package/dist/param-validation-Do7Eg8Zv.js +181 -0
  164. package/dist/{pdf-AyJGb22z.cjs → pdf-ByVCb1i6.cjs} +49 -49
  165. package/dist/{pdf-8UPQebOE.js → pdf-DJ5S6ukC.js} +4924 -4872
  166. package/dist/pdf.cjs +1 -1
  167. package/dist/pdf.d.cts +20 -3
  168. package/dist/pdf.d.ts +20 -3
  169. package/dist/pdf.js +2 -2
  170. package/dist/{plugin-BGKf-Tqg.js → plugin-C2j5_mhx.js} +2 -2
  171. package/dist/{plugin-CktLH_Iy.cjs → plugin-Dr39GBRG.cjs} +1 -1
  172. package/dist/prepared-DdrjLC7L.cjs +1 -0
  173. package/dist/prepared-DqtpvRTn.js +87 -0
  174. package/dist/progress-B0ctFpKf.cjs +1 -0
  175. package/dist/progress-BXzlVbIp.js +29 -0
  176. package/dist/progress-DJBd9Rb9.cjs +1 -0
  177. package/dist/progress-Hc2vxoCs.js +52 -0
  178. package/dist/protocol-BzwMP4Vw.cjs +1 -0
  179. package/dist/protocol-kt4Iy6-3.js +90 -0
  180. package/dist/record-bindings-CZWBJ1fU.js +195 -0
  181. package/dist/record-bindings-DUX1VMlR.cjs +1 -0
  182. package/dist/{region-binding-workflow-DEJbhpCv.js → region-binding-workflow-CWNvIjkV.js} +1 -1
  183. package/dist/{region-binding-workflow-BzfbxRiR.cjs → region-binding-workflow-CqSMxQ4p.cjs} +1 -1
  184. package/dist/report-encoding-worker.cjs +1 -0
  185. package/dist/report-encoding-worker.d.ts +1 -0
  186. package/dist/report-encoding-worker.js +2 -0
  187. package/dist/{report-params-B44imUd4.js → report-params-B1RzkhJj.js} +1 -1
  188. package/dist/{report-params-SJfhKgaX.cjs → report-params-WDGrA4oP.cjs} +1 -1
  189. package/dist/rich-text-layout-ALlMoYOG.cjs +3 -0
  190. package/dist/rich-text-layout-Ct5WrY1g.js +102 -0
  191. package/dist/runtime-BjKBI530.js +168 -0
  192. package/dist/runtime-CBFEPKEs.cjs +1 -0
  193. package/dist/sbom.cdx.json +3982 -0
  194. package/dist/server/node.d.cts +106 -2
  195. package/dist/server/node.d.ts +106 -2
  196. package/dist/server-node.cjs +5 -1
  197. package/dist/server-node.js +4634 -539
  198. package/dist/server.cjs +1 -1
  199. package/dist/server.d.cts +780 -5
  200. package/dist/server.d.ts +780 -5
  201. package/dist/server.js +773 -691
  202. package/dist/sha256-BshdOkCC.cjs +1 -0
  203. package/dist/sha256-DTG-Gq8i.js +157 -0
  204. package/dist/style-67OqfNed.js +73 -0
  205. package/dist/style-C22Pbv3T.cjs +1 -0
  206. package/dist/style.css +1 -1
  207. package/dist/template-bindings-C2SpvsMU.js +58 -0
  208. package/dist/template-bindings-CEtWyiLX.cjs +1 -0
  209. package/dist/template-catalog-BtR2JmCL.js +414 -0
  210. package/dist/template-catalog-C2NLdrwB.cjs +1 -0
  211. package/dist/{template-fragments-DFUpq5QM.cjs → template-fragments-BVsbxs4a.cjs} +1 -1
  212. package/dist/{template-fragments-CLkGo6To.js → template-fragments-By0aZC1D.js} +21 -21
  213. package/dist/{template-outline-B3xVkzSv.cjs → template-outline-BwRV_eRo.cjs} +1 -1
  214. package/dist/{template-outline-CFenM1PV.js → template-outline-cnWfT_LK.js} +3 -3
  215. package/dist/template-registry-C62vpv4a.cjs +1 -0
  216. package/dist/template-registry-Cw3vRTX2.js +801 -0
  217. package/dist/textwrap-BEIg2w8y.js +110 -0
  218. package/dist/textwrap-BI-yJ6Wt.cjs +4 -0
  219. package/dist/{tree-CqcQ99NM.js → tree-CjVZLRw7.js} +1 -1
  220. package/dist/vue/async.d.cts +189 -14
  221. package/dist/vue/async.d.ts +189 -14
  222. package/dist/vue/index.d.cts +246 -22
  223. package/dist/vue/index.d.ts +246 -22
  224. package/dist/vue-async.cjs +1 -1
  225. package/dist/vue-async.js +3 -3
  226. package/dist/vue.cjs +1 -1
  227. package/dist/vue.js +80 -78
  228. package/dist/{workbook-session-BfK1yHOO.js → workbook-session-BeSO8PFB.js} +5460 -5295
  229. package/dist/{workbook-session-DNa2RHNG.cjs → workbook-session-Cbts-22R.cjs} +19 -19
  230. package/dist/worker.cjs +1 -1
  231. package/dist/worker.d.cts +104 -2
  232. package/dist/worker.d.ts +104 -2
  233. package/dist/worker.js +12 -156
  234. package/dist/xlsx-node.cjs +35 -35
  235. package/dist/xlsx-node.js +2138 -2137
  236. package/dist/xlsx.cjs +4 -4
  237. package/dist/xlsx.d.cts +24 -10
  238. package/dist/xlsx.d.ts +24 -10
  239. package/dist/xlsx.js +303 -277
  240. package/package.json +7 -4
  241. package/dist/ParamEditor-CflQV3eQ.js +0 -526
  242. package/dist/ParamEditor-vIDzvpPV.cjs +0 -1
  243. package/dist/ReportPreview-CvbqLUzM.cjs +0 -6
  244. package/dist/ReportPreview-D_ywJ_-H.js +0 -4533
  245. package/dist/assets-C2U-e-Sz.cjs +0 -4
  246. package/dist/assets-Q0wUwNrV.js +0 -217
  247. package/dist/batch-DzaTNLWI.js +0 -371
  248. package/dist/batch-xMkqYiTr.cjs +0 -1
  249. package/dist/capabilities-CK_7hizc.js +0 -63
  250. package/dist/capabilities-CsZ-pNHR.cjs +0 -1
  251. package/dist/config-0UIohTS7.cjs +0 -1
  252. package/dist/config-Dt9NtCPl.js +0 -566
  253. package/dist/data-explanation-BktvER5B.cjs +0 -1
  254. package/dist/data-explanation-C_J6jYNi.js +0 -16
  255. package/dist/defaults-DXhiM1ZD.js +0 -10
  256. package/dist/defaults-xhmcLLrf.cjs +0 -1
  257. package/dist/designer-Ci1LizA9.js +0 -5020
  258. package/dist/designer-rtmVIIdN.cjs +0 -2
  259. package/dist/grid-strokes-Cr7DwUux.cjs +0 -1
  260. package/dist/grid-strokes-DyyG1q_o.js +0 -53
  261. package/dist/json-snapshot-BeFT3Tso.js +0 -1952
  262. package/dist/json-snapshot-D1NTP2oI.cjs +0 -2
  263. package/dist/matrix-DVyWiYsd.cjs +0 -1
  264. package/dist/matrix-yZsGnldA.js +0 -227
  265. package/dist/page-window-index-CIuT4BAv.js +0 -43
  266. package/dist/page-window-index-DEjnM6IB.cjs +0 -1
  267. package/dist/param-validation-BlHHXs6u.js +0 -153
  268. package/dist/param-validation-DCK039V1.cjs +0 -1
  269. package/dist/progress-7OSZbFok.js +0 -39
  270. package/dist/progress-BnLiS5eH.cjs +0 -1
  271. package/dist/render-plan-7xpGrCEl.cjs +0 -1
  272. package/dist/render-plan-Ck6koX9L.js +0 -13
  273. package/dist/style-CQ1PK8ZB.js +0 -67
  274. package/dist/style-UgIJSA1F.cjs +0 -1
  275. package/dist/task-events-DQ276fn2.cjs +0 -1
  276. package/dist/task-events-Dpsvf_t2.js +0 -47
  277. package/dist/template-bindings-BJR4k7qZ.cjs +0 -1
  278. package/dist/template-bindings-Daui7hLF.js +0 -252
  279. package/dist/template-registry-COXDEJEM.js +0 -570
  280. package/dist/template-registry-D3SjENi6.cjs +0 -1
  281. package/dist/validate-BJ5HIWY8.cjs +0 -1
  282. package/dist/validate-CkQBWCeg.js +0 -163
package/dist/server.d.cts CHANGED
@@ -8,8 +8,20 @@ declare interface AggregateDefinition {
8
8
  digits?: number;
9
9
  }
10
10
 
11
+ declare interface AggregateDefinition_2 {
12
+ /** Output column; valueField defaults to this field. */
13
+ field: string;
14
+ op: AggregateOperation_2;
15
+ valueField?: string;
16
+ weightField?: string;
17
+ numeric?: "number" | "decimal";
18
+ digits?: number;
19
+ }
20
+
11
21
  declare type AggregateOperation = "sum" | "count" | "avg" | "min" | "max" | "weightedAvg";
12
22
 
23
+ declare type AggregateOperation_2 = "sum" | "count" | "avg" | "min" | "max" | "weightedAvg";
24
+
13
25
  declare interface AssetRenderBudget {
14
26
  /** Maximum newly rendered assets, default 1000. Existing imageData is kept unchanged. */
15
27
  maxAssets?: number;
@@ -21,7 +33,7 @@ declare interface AssetRenderBudget {
21
33
  maxDurationMs?: number;
22
34
  }
23
35
 
24
- declare interface AssetRenderOptions extends OutputDiagnosticOptions {
36
+ declare interface AssetRenderOptions extends OutputDiagnosticOptions, ImageMediaOptions {
25
37
  assetRenderers?: Partial<Record<ImageComponentKind, ComponentImageRenderer>>;
26
38
  assetBudget?: AssetRenderBudget;
27
39
  /** Default throw prevents an incomplete export; placeholder retains the component and emits diagnostics. */
@@ -47,6 +59,18 @@ declare interface CodeOptions {
47
59
  showText?: boolean;
48
60
  }
49
61
 
62
+ /** Serializable symbol settings. Encoders remain in the optional /codes entry. */
63
+ declare interface CodeOptions_2 {
64
+ /** Explicit content, including an empty value, takes precedence over legacy fallbackText. */
65
+ value?: string;
66
+ symbology?: "code128" | "code39" | "ean13" | "ean8";
67
+ errorCorrection?: "L" | "M" | "Q" | "H";
68
+ /** White modules around a symbol: QR >=4, linear >=10, EAN >=11. */
69
+ quietZoneModules?: number;
70
+ /** Human-readable content below a linear barcode. */
71
+ showText?: boolean;
72
+ }
73
+
50
74
  /**
51
75
  * 列值格式化(声明式、JSON 可序列化)。
52
76
  * 在 paginate 的 cellText 出口统一消费:格式化发生在进 RenderPlan 之前,
@@ -70,6 +94,29 @@ declare type ColumnFormat = {
70
94
  pattern?: string;
71
95
  };
72
96
 
97
+ /**
98
+ * 列值格式化(声明式、JSON 可序列化)。
99
+ * 在 paginate 的 cellText 出口统一消费:格式化发生在进 RenderPlan 之前,
100
+ * 三后端(DOM/Canvas/PDF)零改动。
101
+ *
102
+ * 语义约定(v0.9 固化):
103
+ * - number.digits 显式给出 → 精确保留(12.5 + digits:2 → "12.50")
104
+ * - number.thousands 默认 false(千分位显式开启)
105
+ * - date 字符串按"本地时区的日历日"解析(YYYY-MM-DD / YYYY/MM/DD 直取年月日,
106
+ * 不经 Date 字符串构造——后者按 UTC 零点,负时区环境会少一天)
107
+ */
108
+ declare type ColumnFormat_2 = {
109
+ kind: "number";
110
+ thousands?: boolean;
111
+ digits?: number;
112
+ } | {
113
+ kind: "percent";
114
+ digits?: number;
115
+ } | {
116
+ kind: "date";
117
+ pattern?: string;
118
+ };
119
+
73
120
  /** A literal own field of the current label record; expressions and paths are not evaluated. */
74
121
  declare interface ComponentBinding {
75
122
  field: string;
@@ -79,6 +126,15 @@ declare interface ComponentBinding {
79
126
  emptyText?: string;
80
127
  }
81
128
 
129
+ /** A literal own field of the current label record; expressions and paths are not evaluated. */
130
+ declare interface ComponentBinding_2 {
131
+ field: string;
132
+ format?: ValueFormat_2;
133
+ prefix?: string;
134
+ suffix?: string;
135
+ emptyText?: string;
136
+ }
137
+
82
138
  declare interface ComponentImageContext {
83
139
  readonly component: Readonly<PlanComponent>;
84
140
  readonly pageIndex: number;
@@ -91,6 +147,8 @@ declare type ComponentImageRenderer = (context: ComponentImageContext) => string
91
147
 
92
148
  declare type ComponentKind = "text" | "image" | "barcode" | "qrcode" | "chart" | "line" | "rect" | "ellipse";
93
149
 
150
+ declare type ComponentKind_2 = "text" | "image" | "barcode" | "qrcode" | "chart" | "line" | "rect" | "ellipse";
151
+
94
152
  declare interface ComponentStyle {
95
153
  fontSizePx?: number;
96
154
  fontSize?: number;
@@ -115,6 +173,30 @@ declare interface ComponentStyle {
115
173
  rotateDeg?: number;
116
174
  }
117
175
 
176
+ declare interface ComponentStyle_2 {
177
+ fontSizePx?: number;
178
+ fontSize?: number;
179
+ fontFamily?: string;
180
+ bold?: boolean;
181
+ italic?: boolean;
182
+ underline?: boolean;
183
+ color?: string;
184
+ backgroundColor?: string;
185
+ align?: "left" | "center" | "right" | "justify";
186
+ verticalAlign?: "top" | "middle" | "bottom";
187
+ lineColor?: string;
188
+ borderColor?: string;
189
+ lineWidthPt?: number;
190
+ borderTop?: boolean;
191
+ borderRight?: boolean;
192
+ borderBottom?: boolean;
193
+ borderLeft?: boolean;
194
+ lineHeight?: number;
195
+ letterSpacing?: number;
196
+ opacity?: number;
197
+ rotateDeg?: number;
198
+ }
199
+
118
200
  declare interface ComputedField extends ExpressionOptions {
119
201
  field: string;
120
202
  expression: ReportExpression | string;
@@ -125,6 +207,23 @@ declare interface ComputedField extends ExpressionOptions {
125
207
  dependsOn?: readonly string[];
126
208
  }
127
209
 
210
+ declare interface ComputedField_2 extends ExpressionOptions_2 {
211
+ field: string;
212
+ expression: ReportExpression_2 | string;
213
+ /** Scope controls aggregate inputs; row expressions may reference the current row in any scope. */
214
+ scope?: "row" | "group" | "dataset";
215
+ groupBy?: readonly string[];
216
+ /** String adapter expressions cannot be inspected; declare dependencies explicitly. */
217
+ dependsOn?: readonly string[];
218
+ }
219
+
220
+ export declare function createManagerTemplateCatalog(manager: ReportTemplateManager, metadata?: (document: ReportTemplateDocument) => Pick<LocalTemplateCatalogItem, "category" | "tags">): ReportTemplateCatalogProvider;
221
+
222
+ /** Session-local intents; durable hosts should supply their own authorized stable IDs. */
223
+ export declare function createMemoryReportInstanceIds(maximum?: number): {
224
+ forCase(templateId: string, caseId: string): string;
225
+ };
226
+
128
227
  /** Bounded reference store for tests/local sessions. Production hosts implement durable transactional CAS. */
129
228
  export declare function createMemoryReportInstanceStore(options?: MemoryReportInstanceStoreOptions): ReportInstanceStore;
130
229
 
@@ -180,6 +279,31 @@ export declare function createReportTaskQueue(options?: {
180
279
  maxQueued?: number;
181
280
  }): ReportTaskQueue;
182
281
 
282
+ /** Export explicitly selected metadata/samples; external resource bytes stay in host-managed storage. */
283
+ export declare function createReportTemplatePackage(input: Omit<ReportTemplatePackage, "schemaVersion" | "resources" | "minimumVersion"> & {
284
+ resources?: ReportPackageResource[];
285
+ minimumVersion?: string;
286
+ }, options?: ReportTemplatePackageOptions): ReportTemplatePackage;
287
+
288
+ /** Optional package-owned catalog → draft publication → immutable batch/instance wiring. */
289
+ export declare function createReportWorkflow(options: ReportWorkflowOptions): {
290
+ catalog: ReportTemplateCatalogProvider;
291
+ publish: (input: ReportWorkflowPublishInput) => Promise<ReportTemplateRecord_2>;
292
+ /** Resolve only a manager-owned publication, then keep that exact revision for this batch. */
293
+ batch(id: string, request?: {
294
+ expectedRevision?: string;
295
+ signal?: AbortSignal;
296
+ }): Promise<{
297
+ document: ReportTemplateDocument;
298
+ execute(item: ReportBatchCase, { signal }: {
299
+ signal?: AbortSignal;
300
+ }): Promise<{
301
+ instanceId: string;
302
+ label: string;
303
+ }>;
304
+ }>;
305
+ };
306
+
183
307
  declare interface DatasetContract {
184
308
  fields: readonly ReportFieldContract[];
185
309
  rowKey?: string;
@@ -201,6 +325,13 @@ declare interface ExpressionOptions {
201
325
  divisionByZero?: "null" | "error";
202
326
  }
203
327
 
328
+ declare interface ExpressionOptions_2 {
329
+ numeric?: "number" | "decimal";
330
+ digits?: number;
331
+ nulls?: "propagate" | "error";
332
+ divisionByZero?: "null" | "error";
333
+ }
334
+
204
335
  declare interface FormulaAdapter {
205
336
  /** Explicit trusted engine; core never evaluates source code/macros/external workbook references. */
206
337
  evaluate(expression: string, context: {
@@ -211,6 +342,8 @@ declare interface FormulaAdapter {
211
342
  }
212
343
 
213
344
  declare interface GridCell {
345
+ /** Styled cell content; text remains a plain-text fallback. Imported rich cells are read-only. */
346
+ richParagraphs?: RichParagraph[];
214
347
  text?: string;
215
348
  rawText?: string;
216
349
  /** 原始值,仅供 Excel raw 模式消费;不参与预览、分页与 PDF 绘制。 */
@@ -234,8 +367,47 @@ declare interface GridCell {
234
367
  style?: ComponentStyle;
235
368
  }
236
369
 
370
+ declare interface GridCell_2 {
371
+ /** Styled cell content; text remains a plain-text fallback. Imported rich cells are read-only. */
372
+ richParagraphs?: RichParagraph_2[];
373
+ text?: string;
374
+ rawText?: string;
375
+ /** 原始值,仅供 Excel raw 模式消费;不参与预览、分页与 PDF 绘制。 */
376
+ value?: string | number | boolean | null;
377
+ /** Excel 数字格式(例如 #,##0.00 / 0.00%),不改变 text。 */
378
+ numberFormat?: string;
379
+ /** Physical left inset for hierarchical labels; raw value stays unchanged. */
380
+ indentMm?: number;
381
+ /** 编辑输入类型;省略时只按原始值推断,数字字符串不会被转换为数值。 */
382
+ valueType?: "text" | "number" | "boolean";
383
+ /** 单元格级编辑控制;预览仍需显式开启 editing。 */
384
+ editable?: boolean;
385
+ source?: ReportCellSource_2;
386
+ /** SDK 派生结果不映射业务来源,始终只读(包括覆盖同名源字段的计算)。 */
387
+ derived?: boolean;
388
+ /** Excel 公式保留元数据;当前引擎不计算公式,公式格始终只读。 */
389
+ formula?: string;
390
+ children?: PlanComponent_2[];
391
+ colSpan?: number;
392
+ rowSpan?: number;
393
+ style?: ComponentStyle_2;
394
+ }
395
+
237
396
  declare type ImageComponentKind = "image" | "chart" | "barcode" | "qrcode";
238
397
 
398
+ /** Bounded binary image inspection shared by PDF, Excel and template import. No decoder is loaded. */
399
+ declare interface ImageMediaOptions {
400
+ maxImageBytes?: number;
401
+ maxTotalImageBytes?: number;
402
+ maxImages?: number;
403
+ /** Decoded pixels per unique image, default 16 million. */
404
+ maxImagePixels?: number;
405
+ /** Total decoded pixels for unique media, default 64 million. */
406
+ maxTotalImagePixels?: number;
407
+ /** Maximum source dimension, default 16384 pixels. */
408
+ maxImageDimension?: number;
409
+ }
410
+
239
411
  export declare interface LabelStreamContext {
240
412
  index: number;
241
413
  rowOffset: number;
@@ -282,6 +454,9 @@ export declare interface LabelStreamReceipt {
282
454
  /** auto:真实数字/显式数值格式居右,日期与布尔居中,其他内容居左。 */
283
455
  declare type ListAlignment = NonNullable<ComponentStyle["align"]> | "auto";
284
456
 
457
+ /** auto:真实数字/显式数值格式居右,日期与布尔居中,其他内容居左。 */
458
+ declare type ListAlignment_2 = NonNullable<ComponentStyle_2["align"]> | "auto";
459
+
285
460
  declare interface ListColumn {
286
461
  header: string;
287
462
  field: string;
@@ -308,6 +483,32 @@ declare interface ListColumn {
308
483
  visibleWhen?: StyleRule["when"];
309
484
  }
310
485
 
486
+ declare interface ListColumn_2 {
487
+ header: string;
488
+ field: string;
489
+ widthMm: number;
490
+ style?: ComponentStyle_2;
491
+ /** 内容对齐,优先于 style.align;数值字符串不会自动判为数字。 */
492
+ align?: ListAlignment_2;
493
+ /** 独立的表头对齐,不改变内容对齐。 */
494
+ headerAlign?: ComponentStyle_2["align"];
495
+ /** 独立的表头样式,优先于列表级表头样式。 */
496
+ headerStyle?: ComponentStyle_2;
497
+ /** 值格式化(声明式):千分位/小数位、百分比、日期 pattern */
498
+ format?: ColumnFormat_2;
499
+ /** 条件格式规则(声明式,命中合并进单元格样式;如负数红字) */
500
+ rules?: StyleRule_2[];
501
+ /** 内容列编辑控制;仍需由预览显式开启 editing,不影响表头/小计只读规则。 */
502
+ editable?: boolean;
503
+ /** 空值列或特殊数据类型可显式声明编辑输入类型。 */
504
+ valueType?: GridCell_2["valueType"];
505
+ /** 字段语义用于 auto 对齐;明确声明编号,避免把数字编号当成度量。 */
506
+ semanticRole?: "identifier" | "dimension" | "measure" | "date" | "text";
507
+ hidden?: boolean;
508
+ /** Condition hides cell content, preserving its physical layout in preview and exports. */
509
+ visibleWhen?: StyleRule_2["when"];
510
+ }
511
+
311
512
  declare interface ListComponent {
312
513
  kind: "list";
313
514
  /** Opaque serializable layout annotations; interpreted only by explicit optional adapters. */
@@ -361,6 +562,59 @@ declare interface ListComponent {
361
562
  grandTotal?: ListGrandTotal;
362
563
  }
363
564
 
565
+ declare interface ListComponent_2 {
566
+ kind: "list";
567
+ /** Opaque serializable layout annotations; interpreted only by explicit optional adapters. */
568
+ meta?: Record<string, unknown>;
569
+ id?: string;
570
+ /** 宽表标记用于连续 Excel;不改变低层列表的列宽和分页算法。 */
571
+ layout?: "page" | "wide";
572
+ /** 逻辑表名称,供 Excel Sheet 命名;不额外生成标题组件。 */
573
+ title?: string;
574
+ leftMm: number;
575
+ topMm: number;
576
+ widthMm: number;
577
+ dataset: string;
578
+ /** Headerless record/region bindings do not allocate a synthetic list header. */
579
+ header?: boolean;
580
+ /** A fixed record region rejects multiple rows instead of dropping source data. */
581
+ cardinality?: "record";
582
+ /** 数据集中稳定业务主键的字段名;省略时编辑仅有计划内坐标。 */
583
+ rowKey?: string;
584
+ revisionField?: string;
585
+ sourceTokenField?: string;
586
+ columns: ListColumn_2[];
587
+ fontSizePt?: number;
588
+ headerBold?: boolean;
589
+ rowHeightMm?: number;
590
+ paddingMm?: number;
591
+ headerEveryPage?: boolean;
592
+ headerBackgroundColor?: string;
593
+ /** 内容默认对齐,列配置可覆盖;低层模板缺省仍为 left。 */
594
+ align?: ListAlignment_2;
595
+ /** 表头默认对齐,列配置可覆盖。 */
596
+ headerAlign?: ComponentStyle_2["align"];
597
+ headerStyle?: ComponentStyle_2;
598
+ /** 可选多行合并表头;列宽按列表物理列对齐,供 Excel 业务模板复用。 */
599
+ headerGrid?: PlanGrid_2;
600
+ border?: boolean;
601
+ /** 分组小计(组头/组尾小计/组头防孤行) */
602
+ groupBy?: ListGroupBy_2;
603
+ /** Ordered outer-to-inner grouping; groupBy remains the single-level shorthand. */
604
+ groups?: ListGroupBy_2[];
605
+ computed?: ComputedField_2[];
606
+ /** Dynamic pivot of the current source dataset, with read-only derived identities. */
607
+ matrix?: MatrixTableOptions_2;
608
+ /** Full ordered hierarchy; source parent values and descendant-leaf rollups are explicit. */
609
+ tree?: TreeTableOptions_2;
610
+ /** Explicit row visibility; hidden rows do not participate in summaries. */
611
+ rowVisibleWhen?: StyleRule_2["when"];
612
+ /** Master/detail relation is keyed by business identity, never by display row index. */
613
+ detail?: ListDetail_2;
614
+ /** 末尾总合计行(依赖 groupBy.subtotal 或显式 fields) */
615
+ grandTotal?: ListGrandTotal_2;
616
+ }
617
+
364
618
  declare interface ListDetail {
365
619
  dataset: string;
366
620
  parentKey: string;
@@ -377,6 +631,22 @@ declare interface ListDetail {
377
631
  unmatched?: "error" | "ignore";
378
632
  }
379
633
 
634
+ declare interface ListDetail_2 {
635
+ dataset: string;
636
+ parentKey: string;
637
+ foreignKey: string;
638
+ rowKey?: string;
639
+ /** 子表独立的并发契约;省略时不继承主表字段。 */
640
+ revisionField?: string;
641
+ sourceTokenField?: string;
642
+ columns: ListColumn_2[];
643
+ rowHeightMm?: number;
644
+ header?: boolean;
645
+ label?: string;
646
+ /** Unmatched children fail by default; opt-in ignore is explicit. */
647
+ unmatched?: "error" | "ignore";
648
+ }
649
+
380
650
  declare type ListGrandTotal = boolean | {
381
651
  label?: string;
382
652
  style?: ComponentStyle;
@@ -385,6 +655,14 @@ declare type ListGrandTotal = boolean | {
385
655
  aggregates?: AggregateDefinition[];
386
656
  };
387
657
 
658
+ declare type ListGrandTotal_2 = boolean | {
659
+ label?: string;
660
+ style?: ComponentStyle_2;
661
+ /** 合计列(缺省沿用 groupBy.subtotal) */
662
+ fields?: string[];
663
+ aggregates?: AggregateDefinition_2[];
664
+ };
665
+
388
666
  /** 分组小计配置(声明式,见 ListComponent.groupBy) */
389
667
  declare interface ListGroupBy {
390
668
  /** 分组字段(值变化即切组) */
@@ -403,6 +681,34 @@ declare interface ListGroupBy {
403
681
  repeatHeader?: boolean;
404
682
  }
405
683
 
684
+ /** 分组小计配置(声明式,见 ListComponent.groupBy) */
685
+ declare interface ListGroupBy_2 {
686
+ /** 分组字段(值变化即切组) */
687
+ field: string;
688
+ /** 组头文案模板,{value} 占位(默认 "{value}") */
689
+ headerTemplate?: string;
690
+ headerStyle?: ComponentStyle_2;
691
+ /** 需要小计的列字段(组尾输出合计行;数值列求和,其余输出首值/留空) */
692
+ subtotal?: string[];
693
+ subtotalStyle?: ComponentStyle_2;
694
+ subtotalLabel?: string;
695
+ /** 组头防孤行(默认 true:页尾放不下"组头+首行"时整体换页) */
696
+ keepWithNext?: boolean;
697
+ aggregates?: AggregateDefinition_2[];
698
+ /** Repeat this group heading after page breaks within the group. */
699
+ repeatHeader?: boolean;
700
+ }
701
+
702
+ declare interface LocalTemplateCatalogItem {
703
+ /** Editable document: prefer the latest draft; otherwise use the published document. */
704
+ document: ReportTemplateDocument;
705
+ published?: ReportTemplateDocument;
706
+ draftRevision?: string;
707
+ publishedRevision?: string;
708
+ category?: string;
709
+ tags?: string[];
710
+ }
711
+
406
712
  declare interface MatrixTableOptions {
407
713
  rowFields: readonly string[];
408
714
  columnFields: readonly string[];
@@ -419,6 +725,22 @@ declare interface MatrixTableOptions {
419
725
  maxCells?: number;
420
726
  }
421
727
 
728
+ declare interface MatrixTableOptions_2 {
729
+ rowFields: readonly string[];
730
+ columnFields: readonly string[];
731
+ measures: readonly (AggregateDefinition_2 & {
732
+ label?: string;
733
+ })[];
734
+ totals?: boolean;
735
+ rowHeader?: string;
736
+ columnWidthMm?: number;
737
+ rowWidthMm?: number;
738
+ maxRows?: number;
739
+ maxColumns?: number;
740
+ maxInputRows?: number;
741
+ maxCells?: number;
742
+ }
743
+
422
744
  export declare interface MemoryReportInstanceStoreOptions {
423
745
  maxInstances?: number;
424
746
  maxRevisions?: number;
@@ -427,7 +749,7 @@ export declare interface MemoryReportInstanceStoreOptions {
427
749
  }
428
750
 
429
751
  declare interface OutputDiagnostic {
430
- code: "missing-image" | "unsupported-component" | "unsupported-image-format" | "unsupported-style" | "rich-text-flattened" | "nested-components-omitted" | "async-image-required" | "image-decode-failed" | "asset-render-failed" | "asset-budget-exceeded";
752
+ code: "invalid-image-data" | "image-budget-exceeded" | "component-render-failed" | "unsupported-text" | "output-degraded" | "missing-image" | "unsupported-component" | "unsupported-image-format" | "unsupported-style" | "rich-text-flattened" | "nested-components-omitted" | "async-image-required" | "image-decode-failed" | "asset-render-failed" | "asset-budget-exceeded";
431
753
  severity: "warning";
432
754
  format: OutputFormat;
433
755
  pageIndex: number;
@@ -471,6 +793,9 @@ declare interface PaginateOptions {
471
793
  formula?: FormulaAdapter;
472
794
  }
473
795
 
796
+ /** Parse a bounded manifest without network access, code execution, registration or publication. */
797
+ export declare function parseReportTemplatePackage(input: unknown, options?: ReportTemplatePackageOptions): ReportTemplatePackage;
798
+
474
799
  declare interface PlanComponent {
475
800
  /** Optional QR/barcode encoding configuration; no encoder is loaded by the core. */
476
801
  code?: CodeOptions;
@@ -500,6 +825,35 @@ declare interface PlanComponent {
500
825
  fallbackText?: string;
501
826
  }
502
827
 
828
+ declare interface PlanComponent_2 {
829
+ /** Optional QR/barcode encoding configuration; no encoder is loaded by the core. */
830
+ code?: CodeOptions_2;
831
+ /** Template-only binding; resolved and removed before constructing the output plan. */
832
+ binding?: ComponentBinding_2;
833
+ /** Template page furniture repeats per page and reserves its vertical band. */
834
+ pageAnchor?: "header" | "footer";
835
+ kind: ComponentKind_2;
836
+ leftMm: number;
837
+ topMm: number;
838
+ widthMm: number;
839
+ heightMm: number;
840
+ nid?: string;
841
+ rkey?: string;
842
+ text?: string;
843
+ rawText?: string;
844
+ lines?: string[];
845
+ richParagraphs?: RichParagraph_2[];
846
+ imageData?: string;
847
+ /** 明确指定线段方向;省略保持历史水平线行为。 */
848
+ lineDirection?: "down" | "up";
849
+ grid?: PlanGrid_2;
850
+ table?: PlanTableFragment_2;
851
+ style?: ComponentStyle_2;
852
+ meta?: Record<string, unknown>;
853
+ /** MachReport 扩展字段:未知 kind 的兜底渲染标记 */
854
+ fallbackText?: string;
855
+ }
856
+
503
857
  declare interface PlanGrid {
504
858
  /** 行内允许 null 空位;渲染器按空单元格处理 */
505
859
  cells: (GridCell | null)[][];
@@ -510,6 +864,16 @@ declare interface PlanGrid {
510
864
  paddingMm?: number;
511
865
  }
512
866
 
867
+ declare interface PlanGrid_2 {
868
+ /** 行内允许 null 空位;渲染器按空单元格处理 */
869
+ cells: (GridCell_2 | null)[][];
870
+ colWidthsMm?: number[];
871
+ rowHeightsMm?: number[];
872
+ gapMm?: number;
873
+ /** 单元格四边内距;旧静态网格默认 0.5mm,分页列表使用其真实测量内距。 */
874
+ paddingMm?: number;
875
+ }
876
+
513
877
  declare interface PlanPage {
514
878
  meta?: Record<string, unknown>;
515
879
  /** wide 表示完整自然列宽;页面仅为预览的垂直窗口分段。 */
@@ -540,6 +904,23 @@ declare interface PlanTableFragment {
540
904
  };
541
905
  }
542
906
 
907
+ /** 列表的逻辑行来源;用于连续 Excel 重组,避免按文本猜测重复表头。 */
908
+ declare interface PlanTableFragment_2 {
909
+ /** 在整个计划中唯一的逻辑表身份;同一表的分页片段共享身份。 */
910
+ id: string;
911
+ /** 表头固定 -1;其余行(包括组头/小计/总计)从 0 连续递增。 */
912
+ rowIndex: number;
913
+ role: "header" | "body" | "group-header" | "subtotal" | "grand-total";
914
+ /** 按物理列顺序保存字段身份;不以表头显示文本判断列结构。 */
915
+ columnKeys: string[];
916
+ layout?: "page" | "wide";
917
+ title?: string;
918
+ /** 只有宿主声明稳定 rowKey 时生成,不能用显示顺序替代业务主键。 */
919
+ source?: Omit<ReportCellSource_2, "field" | "rowKey"> & {
920
+ rowKey?: string | number;
921
+ };
922
+ }
923
+
543
924
  export declare interface PreparedReport {
544
925
  plan: RenderPlan;
545
926
  diagnostics: ReportDiagnostic[];
@@ -548,6 +929,8 @@ export declare interface PreparedReport {
548
929
  revision?: string;
549
930
  sourceToken?: string;
550
931
  }>;
932
+ /** Ordered occurrences; legacy revisions remains last-value-by-ID for compatibility. */
933
+ sources?: ReportRuntimeSource[];
551
934
  /** Captured metrics identity; absence on old saved instances remains supported with diagnostics. */
552
935
  layout?: {
553
936
  textMetrics: "heuristic" | "provided" | "font-bytes";
@@ -621,6 +1004,19 @@ declare interface ReportCellEdit {
621
1004
 
622
1005
  /** 可持久化的业务身份与计划坐标独立;权限及并发校验仍由业务服务器执行。 */
623
1006
  declare interface ReportCellSource {
1007
+ /** Source identity across report occurrences; sharing must be explicitly declared. */
1008
+ sourceScope?: string;
1009
+ datasetId: string;
1010
+ rowKey: string | number;
1011
+ field: string;
1012
+ revision?: string | number;
1013
+ sourceToken?: string;
1014
+ }
1015
+
1016
+ /** 可持久化的业务身份与计划坐标独立;权限及并发校验仍由业务服务器执行。 */
1017
+ declare interface ReportCellSource_2 {
1018
+ /** Source identity across report occurrences; sharing must be explicitly declared. */
1019
+ sourceScope?: string;
624
1020
  datasetId: string;
625
1021
  rowKey: string | number;
626
1022
  field: string;
@@ -644,9 +1040,13 @@ declare interface ReportDataTarget {
644
1040
  rowKey?: string | number;
645
1041
  /** Use table identity when the same dataset appears in several tables. */
646
1042
  tableId?: string;
1043
+ /** Assigned by the source/runtime when several reports share dataset names. */
1044
+ reportScope?: string;
647
1045
  }
648
1046
 
649
1047
  declare interface ReportDefinition {
1048
+ /** Explicitly shared editable data identity. Omit to isolate each report occurrence. */
1049
+ sourceScope?: string;
650
1050
  /** 静态模板或宿主提供的异步模板加载器;动态模板默认每次重新读取,不缓存版本。 */
651
1051
  template: ReportTemplate | ReportTemplateLoader;
652
1052
  /** 静态数据;load 存在时优先使用 load 的结果。 */
@@ -698,6 +1098,19 @@ declare type ReportExpression = {
698
1098
  args: readonly ReportExpression[];
699
1099
  };
700
1100
 
1101
+ declare type ReportExpression_2 = {
1102
+ field: string;
1103
+ } | {
1104
+ value: string | number | boolean | null;
1105
+ } | {
1106
+ aggregate: AggregateOperation_2;
1107
+ field?: string;
1108
+ weightField?: string;
1109
+ } | {
1110
+ op: "add" | "subtract" | "multiply" | "divide" | "coalesce";
1111
+ args: readonly ReportExpression_2[];
1112
+ };
1113
+
701
1114
  declare interface ReportFieldContract {
702
1115
  field: string;
703
1116
  label?: string;
@@ -721,6 +1134,14 @@ declare interface ReportFlowBand {
721
1134
  heightMm: number;
722
1135
  }
723
1136
 
1137
+ declare interface ReportFlowBand_2 {
1138
+ /** Exact stable component IDs. Static components use nid, lists use id. */
1139
+ componentIds: string[];
1140
+ /** Source-template coordinates; following bands keep their original gap. */
1141
+ topMm: number;
1142
+ heightMm: number;
1143
+ }
1144
+
724
1145
  export declare interface ReportGenerationInput {
725
1146
  scope: string;
726
1147
  id: string;
@@ -771,7 +1192,9 @@ export declare interface ReportInstanceSnapshot {
771
1192
  sourceRevisions: Record<string, string>;
772
1193
  plan: RenderPlan;
773
1194
  /** Exact generation diagnostics, row statistics and font metrics; optional for legacy instances. */
774
- output?: Omit<PreparedReport, "plan" | "revisions">;
1195
+ output?: Omit<PreparedReport, "plan" | "revisions" | "sources"> & {
1196
+ sources?: Array<Omit<ReportRuntimeSource, "sourceToken">>;
1197
+ };
775
1198
  /** Private storage keys; signed download URLs must be generated by the host after authorization. */
776
1199
  artifacts?: ReportInstanceArtifact[];
777
1200
  }
@@ -795,6 +1218,10 @@ export declare class ReportJobError extends Error {
795
1218
  export declare interface ReportJobExecutionContext {
796
1219
  scope: string;
797
1220
  taskId: string;
1221
+ /** Immutable claim generation; compare atomically at the host artifact commit boundary. */
1222
+ readonly attempt: number;
1223
+ /** Opaque tuple identity, scoped to this claim; never a credential. */
1224
+ readonly executionToken: string;
798
1225
  signal: AbortSignal;
799
1226
  reportProgress(completed: number, total?: number): Promise<void>;
800
1227
  }
@@ -917,10 +1344,53 @@ declare interface ReportLoadContext {
917
1344
  signal?: AbortSignal;
918
1345
  }
919
1346
 
1347
+ export declare interface ReportPackageFixture {
1348
+ name: string;
1349
+ /** Explicit host confirmation; the SDK does not infer that business values are anonymous. */
1350
+ deidentified: true;
1351
+ datasets: DatasetRows;
1352
+ params?: Record<string, string>;
1353
+ }
1354
+
1355
+ export declare interface ReportPackageImageTarget {
1356
+ pageIndex: number;
1357
+ /** Top component index, then optional repeated grid-row / cell / child triplets. */
1358
+ componentPath: number[];
1359
+ }
1360
+
1361
+ export declare interface ReportPackageResource {
1362
+ id: string;
1363
+ kind: "font" | "image";
1364
+ mediaType: "font/ttf" | "font/otf" | "image/png" | "image/jpeg";
1365
+ bytes: number;
1366
+ sha256: string;
1367
+ license?: string;
1368
+ font?: {
1369
+ family: string;
1370
+ face: "regular" | "bold" | "italic" | "boldItalic";
1371
+ };
1372
+ targets?: ReportPackageImageTarget[];
1373
+ }
1374
+
1375
+ export declare interface ReportPackageResourceBytes {
1376
+ bytes: Uint8Array;
1377
+ mediaType: ReportPackageResource["mediaType"];
1378
+ }
1379
+
1380
+ export declare function reportPackageResourceDigest(bytes: Uint8Array): string;
1381
+
1382
+ export declare type ReportPackageResourceResolver = (resource: Readonly<ReportPackageResource>, context: {
1383
+ signal: AbortSignal;
1384
+ }) => ReportPackageResourceBytes | Promise<ReportPackageResourceBytes>;
1385
+
920
1386
  declare interface ReportPageFlow {
921
1387
  bands: ReportFlowBand[];
922
1388
  }
923
1389
 
1390
+ declare interface ReportPageFlow_2 {
1391
+ bands: ReportFlowBand_2[];
1392
+ }
1393
+
924
1394
  /** 报表参数定义(声明式,模板自描述参数面:渲染组件据此生成查询面板) */
925
1395
  declare interface ReportParamDef {
926
1396
  /** 参数名(传入 params,与数据集 SQL #{field} 绑定对应) */
@@ -933,6 +1403,36 @@ declare interface ReportParamDef {
933
1403
  label: string;
934
1404
  value: string;
935
1405
  }>;
1406
+ /** Opaque host-resolved source key. No URL, credentials or executable code is stored. */
1407
+ optionsSource?: string;
1408
+ /** Select dependencies must be declared parameters; changing a parent clears descendants. */
1409
+ dependsOn?: string[];
1410
+ defaultValue?: string;
1411
+ required?: boolean;
1412
+ placeholder?: string;
1413
+ /** 数字上下界;日期/月/年使用对应规范字符串;dateRange 对两端使用 YYYY-MM-DD 边界(含边界)。 */
1414
+ min?: number | string;
1415
+ max?: number | string;
1416
+ minLength?: number;
1417
+ maxLength?: number;
1418
+ }
1419
+
1420
+ /** 报表参数定义(声明式,模板自描述参数面:渲染组件据此生成查询面板) */
1421
+ declare interface ReportParamDef_2 {
1422
+ /** 参数名(传入 params,与数据集 SQL #{field} 绑定对应) */
1423
+ field: string;
1424
+ /** 显示名(缺省用 field) */
1425
+ label?: string;
1426
+ type?: "text" | "number" | "date" | "month" | "year" | "dateRange" | "select";
1427
+ /** select 选项 */
1428
+ options?: Array<{
1429
+ label: string;
1430
+ value: string;
1431
+ }>;
1432
+ /** Opaque host-resolved source key. No URL, credentials or executable code is stored. */
1433
+ optionsSource?: string;
1434
+ /** Select dependencies must be declared parameters; changing a parent clears descendants. */
1435
+ dependsOn?: string[];
936
1436
  defaultValue?: string;
937
1437
  required?: boolean;
938
1438
  placeholder?: string;
@@ -950,7 +1450,7 @@ declare interface ReportParamIssue {
950
1450
  message: string;
951
1451
  }
952
1452
 
953
- declare type ReportParamIssueCode = "definition" | "required" | "type" | "option" | "minimum" | "maximum" | "minLength" | "maxLength";
1453
+ declare type ReportParamIssueCode = "definition" | "required" | "type" | "option" | "dependency" | "minimum" | "maximum" | "minLength" | "maxLength";
954
1454
 
955
1455
  declare interface ReportParamValidation {
956
1456
  ok: boolean;
@@ -1064,10 +1564,11 @@ export declare interface ReportRuntimeExportInput extends ReportRuntimeInput {
1064
1564
  format: "pdf" | "xlsx";
1065
1565
  /** strict 在编码前拒绝已识别的输出降级;默认保留诊断并继续。 */
1066
1566
  fidelity?: "warn" | "strict";
1067
- xlsx?: {
1567
+ xlsx?: ImageMediaOptions & {
1068
1568
  sheetMode?: "auto" | "pages" | "continuous";
1069
1569
  valueMode?: "text" | "raw";
1070
1570
  paperSize?: "auto" | "a3" | "a4" | "a5";
1571
+ sheetName?: (sheetIndex: number) => string;
1071
1572
  };
1072
1573
  }
1073
1574
 
@@ -1098,6 +1599,8 @@ export declare interface ReportRuntimeOptions {
1098
1599
  /** Encode an existing plan without querying providers or repaginating. */
1099
1600
  export declare interface ReportRuntimePreparedExportInput extends ReportTaskMonitoring {
1100
1601
  prepared: PreparedReport;
1602
+ /** verify checks font metric identity; preserve explicitly keeps existing geometry, with a diagnostic. Encoding fidelity is unchanged. */
1603
+ layoutPolicy?: "verify" | "preserve";
1101
1604
  format: ReportRuntimeExportInput["format"];
1102
1605
  fidelity?: ReportRuntimeExportInput["fidelity"];
1103
1606
  pdf?: ReportPdfFontOptions;
@@ -1105,6 +1608,15 @@ export declare interface ReportRuntimePreparedExportInput extends ReportTaskMoni
1105
1608
  signal?: AbortSignal;
1106
1609
  }
1107
1610
 
1611
+ /** One query occurrence; repeated report IDs retain independent provenance. */
1612
+ export declare interface ReportRuntimeSource {
1613
+ reportId: string;
1614
+ reportIndex: number;
1615
+ reportScope: string;
1616
+ revision?: string;
1617
+ sourceToken?: string;
1618
+ }
1619
+
1108
1620
  export declare interface ReportRuntimeStats {
1109
1621
  rows: number;
1110
1622
  pages: number;
@@ -1195,6 +1707,55 @@ declare interface ReportTemplate {
1195
1707
  pages: TemplatePage[];
1196
1708
  }
1197
1709
 
1710
+ declare interface ReportTemplate_2 {
1711
+ schemaVersion?: string;
1712
+ /** 参数定义(可选;宿主也可经 ReportPreview 的 paramDefs prop 提供,prop 优先) */
1713
+ params?: ReportParamDef_2[];
1714
+ /** Fixed label pages repeat in record → copy → template-page order. */
1715
+ repeat?: ReportTemplateRepeat_2;
1716
+ pages: TemplatePage_2[];
1717
+ }
1718
+
1719
+ declare interface ReportTemplateCatalogEntry extends ReportTemplateSummary {
1720
+ category?: string;
1721
+ tags?: string[];
1722
+ updatedAt?: string;
1723
+ /** Optional lifecycle metadata. revision continues to identify the editable document. */
1724
+ draftRevision?: string;
1725
+ publishedRevision?: string;
1726
+ }
1727
+
1728
+ declare interface ReportTemplateCatalogOpenContext {
1729
+ mode: "edit" | "published";
1730
+ }
1731
+
1732
+ declare interface ReportTemplateCatalogPage {
1733
+ items: ReportTemplateCatalogEntry[];
1734
+ next?: string;
1735
+ categories?: Array<{
1736
+ id: string;
1737
+ label: string;
1738
+ count?: number;
1739
+ }>;
1740
+ }
1741
+
1742
+ /** Discovery metadata is separate from executable templates and from enterprise account authorization. */
1743
+ declare interface ReportTemplateCatalogProvider {
1744
+ search(request: ReportTemplateCatalogQuery): Promise<ReportTemplateCatalogPage>;
1745
+ get(id: string, context: {
1746
+ signal?: AbortSignal;
1747
+ mode?: ReportTemplateCatalogOpenContext["mode"];
1748
+ }): Promise<ReportTemplateDocument | undefined>;
1749
+ }
1750
+
1751
+ declare interface ReportTemplateCatalogQuery {
1752
+ query?: string;
1753
+ category?: string;
1754
+ cursor?: string;
1755
+ limit?: number;
1756
+ signal?: AbortSignal;
1757
+ }
1758
+
1198
1759
  declare interface ReportTemplateChange {
1199
1760
  kind: "added" | "removed" | "modified" | "moved";
1200
1761
  category: "metadata" | "structure" | "binding" | "calculation" | "format";
@@ -1222,6 +1783,17 @@ declare interface ReportTemplateDocument {
1222
1783
  template: ReportTemplate;
1223
1784
  }
1224
1785
 
1786
+ /** 可存入数据库/文件的纯 JSON 模板;数据、接口与鉴权仍由宿主提供。 */
1787
+ declare interface ReportTemplateDocument_2 {
1788
+ schemaVersion: "1.0";
1789
+ id: string;
1790
+ name: string;
1791
+ /** 宿主的发布版本/乐观锁标识,不由引擎自动递增。 */
1792
+ revision?: string;
1793
+ description?: string;
1794
+ template: ReportTemplate_2;
1795
+ }
1796
+
1225
1797
  declare interface ReportTemplateFixture {
1226
1798
  name: string;
1227
1799
  datasets: DatasetRows;
@@ -1230,6 +1802,35 @@ declare interface ReportTemplateFixture {
1230
1802
 
1231
1803
  declare type ReportTemplateLoader = (context: ReportLoadContext) => ReportTemplate | Promise<ReportTemplate>;
1232
1804
 
1805
+ declare interface ReportTemplateManager {
1806
+ list(signal?: AbortSignal): ReturnType<ReportTemplateStore["list"]>;
1807
+ get(id: string, options?: {
1808
+ draft?: boolean;
1809
+ signal?: AbortSignal;
1810
+ }): Promise<ReportTemplateDocument | undefined>;
1811
+ history(id: string, signal?: AbortSignal): Promise<readonly ReportTemplateVersion[]>;
1812
+ saveDraft(input: unknown, options: TemplateMutationOptions): Promise<ReportTemplateRecord>;
1813
+ publish(id: string, options: TemplateMutationOptions): Promise<ReportTemplateRecord>;
1814
+ rollback(id: string, revision: string, options: TemplateMutationOptions): Promise<ReportTemplateRecord>;
1815
+ }
1816
+
1817
+ export declare interface ReportTemplatePackage {
1818
+ schemaVersion: "1.0";
1819
+ minimumVersion: string;
1820
+ document: ReportTemplateDocument;
1821
+ contracts?: Record<string, DatasetContract>;
1822
+ resources: ReportPackageResource[];
1823
+ fixtures?: ReportPackageFixture[];
1824
+ }
1825
+
1826
+ export declare interface ReportTemplatePackageOptions {
1827
+ /** Installed SDK version, compared before any resolver or persistence is called. */
1828
+ runtimeVersion?: string;
1829
+ maxBytes?: number;
1830
+ maxResourceBytes?: number;
1831
+ signal?: AbortSignal;
1832
+ }
1833
+
1233
1834
  declare interface ReportTemplateProvider {
1234
1835
  list(context: {
1235
1836
  signal?: AbortSignal;
@@ -1239,6 +1840,22 @@ declare interface ReportTemplateProvider {
1239
1840
  }): Promise<ReportTemplateDocument | undefined>;
1240
1841
  }
1241
1842
 
1843
+ declare interface ReportTemplateRecord {
1844
+ id: string;
1845
+ revision: string;
1846
+ draft?: ReportTemplateDocument;
1847
+ publishedRevision?: string;
1848
+ published?: ReportTemplateDocument;
1849
+ }
1850
+
1851
+ declare interface ReportTemplateRecord_2 {
1852
+ id: string;
1853
+ revision: string;
1854
+ draft?: ReportTemplateDocument_2;
1855
+ publishedRevision?: string;
1856
+ published?: ReportTemplateDocument_2;
1857
+ }
1858
+
1242
1859
  /** Every record emits its copies, each containing all template pages in their original order. */
1243
1860
  declare interface ReportTemplateRepeat {
1244
1861
  dataset: string;
@@ -1249,6 +1866,16 @@ declare interface ReportTemplateRepeat {
1249
1866
  };
1250
1867
  }
1251
1868
 
1869
+ /** Every record emits its copies, each containing all template pages in their original order. */
1870
+ declare interface ReportTemplateRepeat_2 {
1871
+ dataset: string;
1872
+ rowKey?: string;
1873
+ /** Whole copies per record, 1..1000. The field value must be a number, never a numeric string. */
1874
+ copies?: number | {
1875
+ field: string;
1876
+ };
1877
+ }
1878
+
1252
1879
  declare interface ReportTemplateReview {
1253
1880
  ok: boolean;
1254
1881
  changes?: ReportTemplateDiff;
@@ -1286,11 +1913,78 @@ declare interface ReportTemplateReviewOptions {
1286
1913
  strictOutputs?: boolean;
1287
1914
  }
1288
1915
 
1916
+ /** compareAndSwap 必须由宿主数据库/文件适配器保证原子性,不能用先读再无条件写替代。 */
1917
+ declare interface ReportTemplateStore {
1918
+ read(id: string, signal?: AbortSignal): Promise<ReportTemplateRecord | undefined>;
1919
+ list(signal?: AbortSignal): Promise<Array<{
1920
+ id: string;
1921
+ revision: string;
1922
+ publishedRevision?: string;
1923
+ }>>;
1924
+ history(id: string, signal?: AbortSignal): Promise<ReportTemplateVersion[]>;
1925
+ getVersion(id: string, revision: string, signal?: AbortSignal): Promise<ReportTemplateVersion | undefined>;
1926
+ /** 状态更新和 publication 的不可变追加必须处于同一原子事务;草稿写入不读取历史。 */
1927
+ compareAndSwap(id: string, expectedRevision: string | null, next: ReportTemplateRecord, options: TemplateStoreWriteOptions): Promise<boolean>;
1928
+ }
1929
+
1289
1930
  declare type ReportTemplateSummary = Omit<ReportTemplateDocument, "template">;
1290
1931
 
1932
+ declare interface ReportTemplateVersion {
1933
+ revision: string;
1934
+ publishedAt: string;
1935
+ document: ReportTemplateDocument;
1936
+ restoredFrom?: string;
1937
+ }
1938
+
1291
1939
  /** Optional business explanations never replace raw data or schema validation. */
1292
1940
  declare type ReportValueState = "missing-source" | "not-applicable" | "not-calculable";
1293
1941
 
1942
+ /** Structural bridge: no Vue/designer dependency is loaded by the workflow. */
1943
+ export declare interface ReportWorkflowEditor {
1944
+ readonly saving?: boolean;
1945
+ readonly blocked?: boolean;
1946
+ readonly pendingLocalChanges: boolean;
1947
+ save(): void | Promise<void>;
1948
+ }
1949
+
1950
+ export declare interface ReportWorkflowOptions {
1951
+ templates: ReportTemplateManager;
1952
+ instances: ReportInstanceStore;
1953
+ scope: string;
1954
+ data: Omit<ReportDefinition, "template"> | ((document: ReportTemplateDocument) => Omit<ReportDefinition, "template">);
1955
+ runtime?: Omit<ReportRuntimeOptions, "reports">;
1956
+ pdf?: ReportPdfFontOptions;
1957
+ instanceId?(templateId: string, caseId: string): string;
1958
+ title?(document: ReportTemplateDocument, item: ReportBatchCase, params: Record<string, string>): string;
1959
+ catalog?: ReportTemplateCatalogProvider;
1960
+ catalogMetadata?(document: ReportTemplateDocument): Pick<LocalTemplateCatalogItem, "category" | "tags">;
1961
+ }
1962
+
1963
+ export declare interface ReportWorkflowPublishInput {
1964
+ editor: ReportWorkflowEditor;
1965
+ document(): ReportTemplateDocument;
1966
+ successfulSaves(): number;
1967
+ afterSave(): Promise<unknown>;
1968
+ }
1969
+
1970
+ export declare interface ResolvedReportPackageFont {
1971
+ id: string;
1972
+ family: string;
1973
+ face: NonNullable<ReportPackageResource["font"]>["face"];
1974
+ bytes: Uint8Array;
1975
+ }
1976
+
1977
+ /** Verify all host-resolved bytes before returning a hydrated independent document. No implicit save. */
1978
+ export declare function resolveReportTemplatePackage(input: unknown, options: ReportTemplatePackageOptions & {
1979
+ resolve: ReportPackageResourceResolver;
1980
+ maxDurationMs?: number;
1981
+ }): Promise<{
1982
+ document: ReportTemplateDocument;
1983
+ fonts: ResolvedReportPackageFont[];
1984
+ contracts: Record<string, DatasetContract> | undefined;
1985
+ fixtures: ReportPackageFixture[];
1986
+ }>;
1987
+
1294
1988
  /** Publication gate with actual sequential PDF/XLSX encoding, no business query or implicit save. */
1295
1989
  export declare function reviewReportPublication(input: unknown, options?: ReportPublicationOptions): Promise<ReportPublicationReview>;
1296
1990
 
@@ -1303,6 +1997,15 @@ declare interface RichParagraph {
1303
1997
  indentMm?: number;
1304
1998
  }
1305
1999
 
2000
+ declare interface RichParagraph_2 {
2001
+ segments: RichSegment_2[];
2002
+ align?: ComponentStyle_2["align"];
2003
+ lineHeight?: number;
2004
+ spaceBeforeMm?: number;
2005
+ spaceAfterMm?: number;
2006
+ indentMm?: number;
2007
+ }
2008
+
1306
2009
  declare interface RichSegment {
1307
2010
  kind?: "text" | "field";
1308
2011
  text?: string;
@@ -1310,6 +2013,13 @@ declare interface RichSegment {
1310
2013
  style?: ComponentStyle;
1311
2014
  }
1312
2015
 
2016
+ declare interface RichSegment_2 {
2017
+ kind?: "text" | "field";
2018
+ text?: string;
2019
+ field?: string;
2020
+ style?: ComponentStyle_2;
2021
+ }
2022
+
1313
2023
  /** Bounded fixed-label consumption, not cross-chunk aggregation or a new durable task queue.
1314
2024
  * The next source chunk is pulled only after execute + onReceipt complete. Earlier receipts
1315
2025
  * remain committed if a later chunk fails; use onReceipt for a durable incremental manifest.
@@ -1324,6 +2034,8 @@ export declare function runReportBatch<T>(input: readonly ReportBatchCase[], exe
1324
2034
  signal: AbortSignal;
1325
2035
  }) => Promise<T>, options?: ReportBatchOptions): Promise<ReportBatchOutcome<T>[]>;
1326
2036
 
2037
+ export declare function saveAndPublishReportTemplate(manager: ReportTemplateManager, options: ReportWorkflowPublishInput): Promise<ReportTemplateRecord_2>;
2038
+
1327
2039
  /** Canonical plain JSON rejects getters/scripts and gives stable idempotency without coercion. */
1328
2040
  export declare function serializeJobJson(value: unknown, budget?: {
1329
2041
  maxNodes?: number;
@@ -1347,8 +2059,28 @@ declare interface StyleRule {
1347
2059
  style: Record<string, unknown>;
1348
2060
  }
1349
2061
 
2062
+ /** 条件格式规则求值(声明式,见 ListColumn.rules) */
2063
+ 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
+ };
2071
+ /** 命中时合并进单元格样式(color/bold/backgroundColor 等) */
2072
+ style: Record<string, unknown>;
2073
+ }
2074
+
1350
2075
  declare type TemplateComponent = PlanComponent | ListComponent;
1351
2076
 
2077
+ declare type TemplateComponent_2 = PlanComponent_2 | ListComponent_2;
2078
+
2079
+ declare interface TemplateMutationOptions {
2080
+ expectedRevision: string | null;
2081
+ signal?: AbortSignal;
2082
+ }
2083
+
1352
2084
  declare interface TemplatePage {
1353
2085
  widthMm: number;
1354
2086
  heightMm: number;
@@ -1364,6 +2096,26 @@ declare interface TemplatePage {
1364
2096
  meta?: Record<string, unknown>;
1365
2097
  }
1366
2098
 
2099
+ declare interface TemplatePage_2 {
2100
+ widthMm: number;
2101
+ heightMm: number;
2102
+ /** 宽表保持全列自然宽度,页高只控制内部纵向分段。 */
2103
+ layout?: "page" | "wide";
2104
+ marginTopMm?: number;
2105
+ marginBottomMm?: number;
2106
+ marginLeftMm?: number;
2107
+ marginRightMm?: number;
2108
+ components: TemplateComponent_2[];
2109
+ /** Explicit vertical bands preserve source gaps as dynamic regions expand. */
2110
+ flow?: ReportPageFlow_2;
2111
+ meta?: Record<string, unknown>;
2112
+ }
2113
+
2114
+ declare interface TemplateStoreWriteOptions {
2115
+ publication?: ReportTemplateVersion;
2116
+ signal?: AbortSignal;
2117
+ }
2118
+
1367
2119
  /**
1368
2120
  * 文本测量与折行(分页/Canvas/PDF 共用的唯一折行真相源)。
1369
2121
  *
@@ -1404,6 +2156,26 @@ declare interface TreeTableOptions {
1404
2156
  maxAggregationVisits?: number;
1405
2157
  }
1406
2158
 
2159
+ /** A serialized tree contract. Sibling and root order follow input order. */
2160
+ declare interface TreeTableOptions_2 {
2161
+ input: "flat" | "nested";
2162
+ idField: string;
2163
+ /** Flat roots have null/undefined parent values. */
2164
+ parentField?: string;
2165
+ /** Nested child arrays, defaults to children. Every node still needs an ID. */
2166
+ childrenField?: string;
2167
+ labelField: string;
2168
+ indentMm?: number;
2169
+ orphan?: "error" | "root";
2170
+ /** Source preserves parent values; leaf-aggregate derives only parents from descendant leaves. */
2171
+ parentValues?: "source" | "leaf-aggregate";
2172
+ aggregates?: AggregateDefinition_2[];
2173
+ maxRows?: number;
2174
+ maxDepth?: number;
2175
+ /** Bounded leaf-to-ancestor aggregate work; default one million. */
2176
+ maxAggregationVisits?: number;
2177
+ }
2178
+
1407
2179
  export declare function validateJobRecord(record: ReportJobRecord, scope: string, id: string, expectedRevision: number | null): void;
1408
2180
 
1409
2181
  export declare function validateJobTransition(previous: ReportJobRecord | undefined, next: ReportJobRecord): void;
@@ -1411,4 +2183,7 @@ export declare function validateJobTransition(previous: ReportJobRecord | undefi
1411
2183
  /** The same declarative formatting used by list columns, before any output backend. */
1412
2184
  declare type ValueFormat = ColumnFormat;
1413
2185
 
2186
+ /** The same declarative formatting used by list columns, before any output backend. */
2187
+ declare type ValueFormat_2 = ColumnFormat_2;
2188
+
1414
2189
  export { }