@chengxianglibra/dsh-data-analysis 0.1.2 → 0.2.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 (212) hide show
  1. package/README.md +136 -99
  2. package/cordis.patch.yml +1 -1
  3. package/lib/bin/environment.js +8 -6
  4. package/lib/client/credentials/changes.js +74 -0
  5. package/lib/client/credentials/create-datasource.js +126 -22
  6. package/lib/client/credentials/credential-draft.js +42 -0
  7. package/lib/client/credentials/defaults.js +11 -0
  8. package/lib/client/credentials/descriptions.js +46 -0
  9. package/lib/client/credentials/install.js +209 -81
  10. package/lib/client/credentials/model.js +323 -51
  11. package/lib/client/credentials/report-publishing.js +96 -0
  12. package/lib/client/credentials/styles.js +13 -9
  13. package/lib/client/i18n/context.js +22 -0
  14. package/lib/client/i18n/copy.js +57 -0
  15. package/lib/client/i18n/credentials.js +475 -0
  16. package/lib/client/i18n/host.js +27 -0
  17. package/lib/client/i18n/navigation.js +41 -0
  18. package/lib/client/i18n/presentation.js +577 -0
  19. package/lib/client/i18n/python.js +36 -0
  20. package/lib/client/i18n/semantic.js +441 -0
  21. package/lib/client/input-context.js +21 -0
  22. package/lib/client/python-tool/card.js +35 -0
  23. package/lib/client/python-tool/execution-error.js +35 -0
  24. package/lib/client/python-tool/install.js +9 -0
  25. package/lib/client/python-tool/model.js +101 -0
  26. package/lib/client/right-tabs/install.js +535 -0
  27. package/lib/client/right-tabs/live-delivery.js +58 -0
  28. package/lib/client/right-tabs/navigation.js +47 -0
  29. package/lib/client/right-tabs/page.js +178 -0
  30. package/lib/client/right-tabs/styles.js +11 -0
  31. package/lib/client/rpc.js +5 -0
  32. package/lib/client/semantic-reference.js +10 -0
  33. package/lib/client/workspace-header-action.js +14 -1
  34. package/lib/client/workspace-shortcuts.js +26 -0
  35. package/lib/client.js +365 -242
  36. package/lib/compatibility.js +1 -1
  37. package/lib/datasource/authoring.js +43 -4
  38. package/lib/datasource/bridge-programs.js +23 -20
  39. package/lib/datasource/bridge.js +46 -3
  40. package/lib/datasource/changes-contract.js +41 -0
  41. package/lib/datasource/changes.js +49 -0
  42. package/lib/datasource/configure.js +39 -0
  43. package/lib/datasource/defaults.js +25 -0
  44. package/lib/datasource/index.js +2 -1
  45. package/lib/datasource/python-options.js +21 -0
  46. package/lib/datasource/python.js +116 -25
  47. package/lib/datasource/rpc.js +75 -13
  48. package/lib/datasource/service.js +286 -11
  49. package/lib/datasource/test.js +2 -1
  50. package/lib/disclosure/activation.js +19 -7
  51. package/lib/disclosure/execution-guidance.js +52 -0
  52. package/lib/disclosure/help.js +4 -1
  53. package/lib/environment/runtime.js +35 -34
  54. package/lib/environment/workspace.js +18 -1
  55. package/lib/lifecycle.js +33 -0
  56. package/lib/plugin-agents.js +154 -0
  57. package/lib/plugin.js +94 -172
  58. package/lib/presentation/asset.js +34 -0
  59. package/lib/presentation/assets/portable.js +14 -14
  60. package/lib/presentation/assets/static.js +344 -73
  61. package/lib/presentation/build/index.js +3 -2
  62. package/lib/presentation/commit.js +19 -12
  63. package/lib/presentation/contracts/asset-path.js +9 -0
  64. package/lib/presentation/contracts/catalog.js +62 -0
  65. package/lib/presentation/contracts/charts.js +0 -23
  66. package/lib/presentation/contracts/index.js +17 -5
  67. package/lib/presentation/contracts/types.js +1 -1
  68. package/lib/presentation/delivery.js +45 -30
  69. package/lib/presentation/export-html.js +214 -0
  70. package/lib/presentation/files.js +4 -5
  71. package/lib/presentation/projection/index.js +2 -1
  72. package/lib/presentation/projection/program.js +2 -9
  73. package/lib/presentation/projection/sql-code.js +13 -13
  74. package/lib/presentation/reports.js +114 -17
  75. package/lib/presentation/rpc.js +96 -58
  76. package/lib/presentation/tool.js +6 -10
  77. package/lib/report-publishing/adapters.js +111 -0
  78. package/lib/report-publishing/config.js +69 -0
  79. package/lib/report-publishing/service.js +180 -0
  80. package/lib/rpc.js +49 -0
  81. package/lib/semantic-browser/contracts.js +17 -0
  82. package/lib/semantic-browser/program.js +10 -0
  83. package/lib/semantic-browser/service.js +40 -6
  84. package/lib/semantic-reference/bridge.js +10 -1
  85. package/lib/semantic-reference/contracts.js +20 -6
  86. package/lib/semantic-reference/environment.js +56 -0
  87. package/lib/semantic-reference/labels.js +16 -0
  88. package/lib/semantic-reference/rpc.js +39 -18
  89. package/lib/semantic-reference/search.js +5 -4
  90. package/lib/semantic-reference/usage.js +12 -3
  91. package/lib/tool-lifecycle.js +22 -0
  92. package/lib/types/client/credentials/changes.d.ts +9 -0
  93. package/lib/types/client/credentials/create-datasource.d.ts +3 -1
  94. package/lib/types/client/credentials/credential-draft.d.ts +14 -0
  95. package/lib/types/client/credentials/defaults.d.ts +2 -0
  96. package/lib/types/client/credentials/descriptions.d.ts +1 -0
  97. package/lib/types/client/credentials/install.d.ts +19 -1
  98. package/lib/types/client/credentials/model.d.ts +31 -11
  99. package/lib/types/client/credentials/report-publishing.d.ts +5 -0
  100. package/lib/types/client/credentials/styles.d.ts +1 -1
  101. package/lib/types/client/i18n/context.d.ts +17 -0
  102. package/lib/types/client/i18n/copy.d.ts +806 -0
  103. package/lib/types/client/i18n/credentials.d.ts +475 -0
  104. package/lib/types/client/i18n/host.d.ts +16 -0
  105. package/lib/types/client/i18n/navigation.d.ts +41 -0
  106. package/lib/types/client/i18n/presentation.d.ts +577 -0
  107. package/lib/types/client/i18n/python.d.ts +19 -0
  108. package/lib/types/client/i18n/semantic.d.ts +441 -0
  109. package/lib/types/client/input-context.d.ts +19 -0
  110. package/lib/types/client/presentation/ask-dsh.d.ts +4 -8
  111. package/lib/types/client/presentation/catalog-model.d.ts +24 -0
  112. package/lib/types/client/presentation/catalog.d.ts +20 -0
  113. package/lib/types/client/presentation/chart-tooltip.d.ts +2 -2
  114. package/lib/types/client/presentation/context-reference.d.ts +12 -0
  115. package/lib/types/client/presentation/copy-context.d.ts +2 -2
  116. package/lib/types/client/presentation/delivery-model.d.ts +27 -6
  117. package/lib/types/client/presentation/delivery.d.ts +8 -7
  118. package/lib/types/client/presentation/download.d.ts +2 -0
  119. package/lib/types/client/presentation/export-menu.d.ts +26 -0
  120. package/lib/types/client/presentation/export-view.d.ts +63 -0
  121. package/lib/types/client/presentation/host-entry.d.ts +8 -2
  122. package/lib/types/client/presentation/icons.d.ts +1 -1
  123. package/lib/types/client/presentation/model.d.ts +14 -15
  124. package/lib/types/client/presentation/reader.d.ts +15 -2
  125. package/lib/types/client/presentation/reference-source.d.ts +9 -0
  126. package/lib/types/client/presentation/source-code-model.d.ts +2 -1
  127. package/lib/types/client/presentation/source-code.d.ts +0 -5
  128. package/lib/types/client/presentation/source-dialog.d.ts +1 -2
  129. package/lib/types/client/presentation/sources.d.ts +5 -5
  130. package/lib/types/client/presentation/styles.d.ts +1 -1
  131. package/lib/types/client/presentation/table.d.ts +5 -1
  132. package/lib/types/client/python-tool/card.d.ts +2 -0
  133. package/lib/types/client/python-tool/execution-error.d.ts +3 -0
  134. package/lib/types/client/python-tool/install.d.ts +2 -0
  135. package/lib/types/client/python-tool/model.d.ts +20 -0
  136. package/lib/types/client/right-tabs/install.d.ts +18 -0
  137. package/lib/types/client/right-tabs/live-delivery.d.ts +8 -0
  138. package/lib/types/client/right-tabs/navigation.d.ts +17 -0
  139. package/lib/types/client/right-tabs/page.d.ts +36 -0
  140. package/lib/types/client/right-tabs/styles.d.ts +2 -0
  141. package/lib/types/client/rpc.d.ts +3 -0
  142. package/lib/types/client/semantic-reference.d.ts +4 -0
  143. package/lib/types/client/workspace-header-action.d.ts +1 -1
  144. package/lib/types/client/workspace-shortcuts.d.ts +15 -0
  145. package/lib/types/client.d.ts +6 -3
  146. package/lib/types/compatibility.d.ts +1 -1
  147. package/lib/types/datasource/authoring.d.ts +10 -0
  148. package/lib/types/datasource/bridge.d.ts +23 -2
  149. package/lib/types/datasource/changes-contract.d.ts +18 -0
  150. package/lib/types/datasource/changes.d.ts +15 -0
  151. package/lib/types/datasource/configure.d.ts +7 -0
  152. package/lib/types/datasource/defaults.d.ts +7 -0
  153. package/lib/types/datasource/index.d.ts +6 -1
  154. package/lib/types/datasource/python-options.d.ts +9 -0
  155. package/lib/types/datasource/python.d.ts +17 -2
  156. package/lib/types/datasource/rpc.d.ts +2 -1
  157. package/lib/types/datasource/service.d.ts +48 -5
  158. package/lib/types/datasource/test.d.ts +1 -1
  159. package/lib/types/disclosure/activation.d.ts +2 -1
  160. package/lib/types/disclosure/execution-guidance.d.ts +6 -0
  161. package/lib/types/disclosure/help.d.ts +1 -1
  162. package/lib/types/environment/types.d.ts +2 -1
  163. package/lib/types/environment/workspace.d.ts +1 -0
  164. package/lib/types/lifecycle.d.ts +8 -0
  165. package/lib/types/plugin-agents.d.ts +27 -0
  166. package/lib/types/plugin.d.ts +12 -28
  167. package/lib/types/presentation/asset.d.ts +6 -0
  168. package/lib/types/presentation/build/index.d.ts +7 -2
  169. package/lib/types/presentation/commit.d.ts +1 -1
  170. package/lib/types/presentation/contracts/asset-path.d.ts +2 -0
  171. package/lib/types/presentation/contracts/catalog.d.ts +27 -0
  172. package/lib/types/presentation/contracts/charts.d.ts +0 -2
  173. package/lib/types/presentation/contracts/types.d.ts +7 -4
  174. package/lib/types/presentation/delivery.d.ts +1 -1
  175. package/lib/types/presentation/export-html.d.ts +13 -0
  176. package/lib/types/presentation/reports.d.ts +6 -1
  177. package/lib/types/presentation/rpc.d.ts +3 -2
  178. package/lib/types/presentation/tool.d.ts +2 -2
  179. package/lib/types/report-publishing/adapters.d.ts +6 -0
  180. package/lib/types/report-publishing/config.d.ts +22 -0
  181. package/lib/types/report-publishing/service.d.ts +68 -0
  182. package/lib/types/rpc.d.ts +3 -0
  183. package/lib/types/semantic-browser/contracts.d.ts +7 -0
  184. package/lib/types/semantic-browser/service.d.ts +7 -1
  185. package/lib/types/semantic-reference/bridge.d.ts +1 -0
  186. package/lib/types/semantic-reference/contracts.d.ts +5 -2
  187. package/lib/types/semantic-reference/environment.d.ts +22 -0
  188. package/lib/types/semantic-reference/labels.d.ts +16 -0
  189. package/lib/types/semantic-reference/rpc.d.ts +1 -1
  190. package/lib/types/semantic-reference/search.d.ts +1 -1
  191. package/lib/types/tool-lifecycle.d.ts +4 -0
  192. package/lib/types/workspace-identity.d.ts +6 -0
  193. package/lib/workspace-identity.js +9 -0
  194. package/package.json +83 -61
  195. package/python/presentation-kit/dist/dsh_data_analysis_presentation_kit-1.1.0-py3-none-any.whl +0 -0
  196. package/skills/dsh-data-analysis-files/SKILL.md +32 -0
  197. package/skills/dsh-data-analysis-files/references/examples.md +93 -0
  198. package/skills/dsh-data-analysis-presentation/SKILL.md +10 -6
  199. package/skills/dsh-data-analysis-presentation/references/examples/artifact.draft.json +13 -4
  200. package/skills/dsh-data-analysis-presentation/references/examples/charts.draft.json +3 -2
  201. package/skills/dsh-data-analysis-presentation/references/examples/comparison.draft.json +3 -2
  202. package/skills/dsh-data-analysis-presentation/references/examples/computed-sources.draft.json +12 -5
  203. package/skills/dsh-data-analysis-presentation/references/examples/computed.draft.json +3 -2
  204. package/skills/dsh-data-analysis-presentation/references/examples/interaction.draft.json +3 -2
  205. package/skills/dsh-data-analysis-presentation/references/examples/source-only.draft.json +12 -4
  206. package/skills/dsh-data-analysis-presentation/references/examples.md +3 -1
  207. package/skills/dsh-data-analysis-presentation/references/export-html.md +7 -0
  208. package/skills/dsh-data-analysis-presentation/references/interaction.md +1 -1
  209. package/skills/dsh-data-analysis-presentation/references/narrative.md +1 -1
  210. package/skills/dsh-data-analysis-presentation/references/publishing.md +3 -0
  211. package/skills/dsh-data-analysis-presentation/references/schema.md +25 -1
  212. package/lib/types/client/presentation/install.d.ts +0 -15
@@ -0,0 +1,36 @@
1
+ export const zh = {
2
+ 'marivo.python.input': '输入',
3
+ 'marivo.python.output': '输出',
4
+ 'marivo.python.raw': '原始输入/输出',
5
+ 'marivo.python.inspect': '查看',
6
+ 'marivo.python.copy': '复制代码',
7
+ 'marivo.python.copied': '已复制',
8
+ 'marivo.python.copy-failed': '复制失败,请重试或从原始输入中复制。',
9
+ 'marivo.python.running': '进行中',
10
+ 'marivo.python.succeeded': '执行成功',
11
+ 'marivo.python.failed': '失败',
12
+ 'marivo.python.cancelled': '已取消',
13
+ 'marivo.python.timed-out': '已超时',
14
+ 'marivo.python.not-started': '未执行',
15
+ 'marivo.python.warning': '执行完成,有警告',
16
+ 'marivo.python.unknown': '执行结果未确认',
17
+ 'marivo.python.truncated': '输出已截断;此处仅展示工具返回的内容。',
18
+ };
19
+ export const en = {
20
+ 'marivo.python.input': 'Input',
21
+ 'marivo.python.output': 'Output',
22
+ 'marivo.python.raw': 'Raw input / output',
23
+ 'marivo.python.inspect': 'Inspect',
24
+ 'marivo.python.copy': 'Copy code',
25
+ 'marivo.python.copied': 'Copied',
26
+ 'marivo.python.copy-failed': 'Copy failed. Retry or copy from the raw input.',
27
+ 'marivo.python.running': 'In progress',
28
+ 'marivo.python.succeeded': 'Execution succeeded',
29
+ 'marivo.python.failed': 'Failed',
30
+ 'marivo.python.cancelled': 'Cancelled',
31
+ 'marivo.python.timed-out': 'Timed out',
32
+ 'marivo.python.not-started': 'Not executed',
33
+ 'marivo.python.warning': 'Execution completed with warnings',
34
+ 'marivo.python.unknown': 'Execution outcome unconfirmed',
35
+ 'marivo.python.truncated': 'Output was truncated; only the returned content is shown.',
36
+ };
@@ -0,0 +1,441 @@
1
+ /** Plugin-owned copy; keys are stable identifiers, never business labels. */
2
+ export const zh = {
3
+ 'marivo.semantic.second': '秒',
4
+ 'marivo.semantic.minute': '分钟',
5
+ 'marivo.semantic.hour': '小时',
6
+ 'marivo.semantic.day': '日',
7
+ 'marivo.semantic.week': '周',
8
+ 'marivo.semantic.month': '月',
9
+ 'marivo.semantic.quarter': '季度',
10
+ 'marivo.semantic.year': '年',
11
+ 'marivo.semantic.structured-display-is-not-yet-supported-for-this-expression': '当前表达式语法尚不支持结构化展示',
12
+ 'marivo.semantic.no-expression-description-is-available-for-this-definition': '当前定义没有可用的表达式说明',
13
+ 'marivo.semantic.expression-exceeds-the-description-size-limit': '表达式超过描述大小上限',
14
+ 'marivo.semantic.aggregation': '聚合',
15
+ 'marivo.semantic.ratio': '比率',
16
+ 'marivo.semantic.linear-combination': '线性组合',
17
+ 'marivo.semantic.cumulative': '累计',
18
+ 'marivo.semantic.ibis-expression': 'Ibis 表达式',
19
+ 'marivo.semantic.cumulative-from-the-beginning-of-all-history': '从全部历史起点累计',
20
+ 'marivo.semantic.rolling-cumulative-over-value-value': '滚动累计 {p0} {p1}',
21
+ 'marivo.semantic.from': '从',
22
+ 'marivo.semantic.of': '的',
23
+ 'marivo.semantic.period-start-resetting-each-period': '周期起点累计,每个周期重新开始',
24
+ 'marivo.semantic.cumulative-from-the-current-value-resetting-each-period': '从当前{p0}起点累计,每个周期重新开始',
25
+ 'marivo.semantic.this-cumulative-rule-cannot-be-displayed-yet': '累计规则暂不支持展示',
26
+ 'marivo.semantic.the-current-runtime-did-not-provide-displayable-ibis-expression': '当前 Runtime 未提供可展示的 Ibis 表达式文本。',
27
+ 'marivo.semantic.expression-copied': '表达式已复制',
28
+ 'marivo.semantic.copy-failed-select-the-code-to-copy-manually': '复制失败,请手动选择代码复制。',
29
+ 'marivo.semantic.copy-ibis-expression': '复制 Ibis 表达式',
30
+ 'marivo.semantic.constant-values-are-hidden-as-redacted': '常量值已隐藏为 REDACTED 标记。',
31
+ 'marivo.semantic.aggregation-target': '聚合目标',
32
+ 'marivo.semantic.value': '数值',
33
+ 'marivo.semantic.weight': '权重',
34
+ 'marivo.semantic.numerator': '分子',
35
+ 'marivo.semantic.denominator': '分母',
36
+ 'marivo.semantic.term-value-value': '第 {p0} 项({p1})',
37
+ 'marivo.semantic.base-metric': '基础指标',
38
+ 'marivo.semantic.base-metric-558': '基础指标:',
39
+ 'marivo.semantic.this-computation-type-cannot-be-displayed-yet': '当前计算类型暂不支持展示',
40
+ 'marivo.semantic.this-object-has-no-public-computation-definition': '当前对象没有公开的计算定义。',
41
+ 'marivo.semantic.cumulative-time-axis': '累计时间轴',
42
+ 'marivo.semantic.uses-the-default-time-axis-determined-by-observation-context': '使用默认时间轴,需观察上下文确定',
43
+ 'marivo.semantic.time-grain-timezone': '时间粒度 / 时区',
44
+ 'marivo.semantic.not-declared': '未声明',
45
+ 'marivo.semantic.period-calendar': '周期日历',
46
+ 'marivo.semantic.calendar-level': '日历层级',
47
+ 'marivo.semantic.calendar-boundary-timezone': '日历边界时区',
48
+ 'marivo.semantic.filters-in-definition': '定义内过滤条件',
49
+ 'marivo.semantic.determined-by-the-formula-and-its-components': '由计算公式及组成对象确定',
50
+ 'marivo.semantic.not-applicable': '不适用',
51
+ 'marivo.semantic.unsupported-rule-status-value': '暂不支持的规则状态:{p0}',
52
+ 'marivo.semantic.time-fold-rule': '时间折叠规则',
53
+ 'marivo.semantic.declared-rule': '声明规则',
54
+ 'marivo.semantic.metric-override': '指标覆盖',
55
+ 'marivo.semantic.effective-rule': '有效规则',
56
+ 'marivo.semantic.metric-computation': '指标计算口径',
57
+ 'marivo.semantic.computation': '计算口径',
58
+ 'marivo.semantic.referenced-object-definitions': '引用对象定义',
59
+ 'marivo.semantic.showing-the-first-40-referenced-definitions-click-an-object': '当前展示前 40 个引用对象的定义,点击对象名称可继续查看。',
60
+ 'marivo.semantic.data-source-and-grain': '数据来源与粒度',
61
+ 'marivo.semantic.primary-key': '主键:',
62
+ 'marivo.semantic.expand-one-more-level': '再展开一层',
63
+ 'marivo.semantic.zoom-in': '放大关系图',
64
+ 'marivo.semantic.zoom-out': '缩小关系图',
65
+ 'marivo.semantic.center-graph': '回到中心',
66
+ 'marivo.semantic.declared-relationships-level': '对象声明关系 · 第',
67
+ 'marivo.semantic.drag-the-background-to-pan-click-an-object-for': '层 · 拖动空白处平移,点击对象查看详情',
68
+ 'marivo.semantic.the-graph-shows-at-most-60-objects-see-the': '图中最多显示 60 个对象;完整关联可在关系列表中查看。',
69
+ 'marivo.semantic.local-relationship-graph': '当前对象的局部关系图',
70
+ 'marivo.semantic.object-relationships-an-equivalent-clickable-list-is-available-below': '对象关系;下方提供同等的可点击关系列表',
71
+ 'marivo.semantic.view-value': '查看 {p0}',
72
+ 'marivo.semantic.relationships': '图中关系(',
73
+ 'marivo.semantic.owning-domain': '所属业务域',
74
+ 'marivo.semantic.owner': '负责人',
75
+ 'marivo.semantic.default-domain': '默认业务域',
76
+ 'marivo.semantic.engine-type': '引擎类型',
77
+ 'marivo.semantic.owning-datasource': '所属数据源',
78
+ 'marivo.semantic.primary-key-600': '主键',
79
+ 'marivo.semantic.owning-entity': '所属实体',
80
+ 'marivo.semantic.additivity': '可加性',
81
+ 'marivo.semantic.parse-kind': '解析类型',
82
+ 'marivo.semantic.data-type': '数据类型',
83
+ 'marivo.semantic.time-grain': '时间粒度',
84
+ 'marivo.semantic.format': '格式',
85
+ 'marivo.semantic.timezone': '时区',
86
+ 'marivo.semantic.default-time-dimension': '默认时间维度',
87
+ 'marivo.semantic.sample-interval': '采样间隔',
88
+ 'marivo.semantic.metric-type': '指标类型',
89
+ 'marivo.semantic.declared-entities': '声明实体',
90
+ 'marivo.semantic.root-entity': '根实体',
91
+ 'marivo.semantic.aggregation-method': '聚合方式',
92
+ 'marivo.semantic.aggregation-object': '聚合对象',
93
+ 'marivo.semantic.aggregation-object-type': '聚合对象类型',
94
+ 'marivo.semantic.measure-source': '度量来源',
95
+ 'marivo.semantic.time-fold': '时间折叠',
96
+ 'marivo.semantic.state-time-dimension': '状态时间维度',
97
+ 'marivo.semantic.fanout-policy': '扇出策略',
98
+ 'marivo.semantic.fixed-filter': '固定筛选',
99
+ 'marivo.semantic.effective-entities': '有效实体',
100
+ 'marivo.semantic.candidate-dimensions': '候选维度',
101
+ 'marivo.semantic.candidate-time-dimensions': '候选时间维度',
102
+ 'marivo.semantic.measure-lineage': '度量来源关系',
103
+ 'marivo.semantic.weighted-value': '加权值',
104
+ 'marivo.semantic.composition': '组合方式',
105
+ 'marivo.semantic.components': '组成对象',
106
+ 'marivo.semantic.linear-terms': '线性项',
107
+ 'marivo.semantic.required-relationships': '所需关系',
108
+ 'marivo.semantic.parity-status': '一致性状态',
109
+ 'marivo.semantic.from-entity': '起始实体',
110
+ 'marivo.semantic.to-entity': '目标实体',
111
+ 'marivo.semantic.from-keys': '起始连接键',
112
+ 'marivo.semantic.to-keys': '目标连接键',
113
+ 'marivo.semantic.source-entity': '来源实体',
114
+ 'marivo.semantic.identity-dimension': '身份维度',
115
+ 'marivo.semantic.occurrence-time': '发生时间',
116
+ 'marivo.semantic.participants': '参与者',
117
+ 'marivo.semantic.event-predicate-type': '事件筛选类型',
118
+ 'marivo.semantic.definition-fingerprint': '定义指纹',
119
+ 'marivo.semantic.subject': '主体',
120
+ 'marivo.semantic.states': '状态',
121
+ 'marivo.semantic.initial-events': '初始事件',
122
+ 'marivo.semantic.transitions': '状态转换',
123
+ 'marivo.semantic.date-dimension': '日期维度',
124
+ 'marivo.semantic.boundary-timezone': '边界时区',
125
+ 'marivo.semantic.coverage': '覆盖范围',
126
+ 'marivo.semantic.correspondences': '对应关系',
127
+ 'marivo.semantic.snapshot-status': '快照状态',
128
+ 'marivo.semantic.snapshot-digest': '快照摘要',
129
+ 'marivo.semantic.occurrence-id': '发生标识',
130
+ 'marivo.semantic.start-time': '开始时间',
131
+ 'marivo.semantic.end-time': '结束时间',
132
+ 'marivo.semantic.category': '分类',
133
+ 'marivo.semantic.occurrence-count': '发生次数',
134
+ 'marivo.semantic.working-day-dimension': '工作日维度',
135
+ 'marivo.semantic.source-type': '来源类型',
136
+ 'marivo.semantic.source-table': '来源表',
137
+ 'marivo.semantic.source-database': '来源库',
138
+ 'marivo.semantic.parents': '上级对象(parents)',
139
+ 'marivo.semantic.children': '下级对象(children)',
140
+ 'marivo.semantic.dependents': '引用此对象(dependents)',
141
+ 'marivo.semantic.level-key': '层级键',
142
+ 'marivo.semantic.period-count': '周期数',
143
+ 'marivo.semantic.direct-finer-levels': '直接细粒度层级',
144
+ 'marivo.semantic.direct-coarser-levels': '直接粗粒度层级',
145
+ 'marivo.semantic.rollup-targets': '汇总目标',
146
+ 'marivo.semantic.version-type': '版本类型',
147
+ 'marivo.semantic.version-partition-field': '版本分区字段',
148
+ 'marivo.semantic.version-grain': '版本粒度',
149
+ 'marivo.semantic.version-timezone': '版本时区',
150
+ 'marivo.semantic.version-format': '版本格式',
151
+ 'marivo.semantic.valid-from': '有效起点',
152
+ 'marivo.semantic.valid-to': '有效终点',
153
+ 'marivo.semantic.validity-interval': '有效区间',
154
+ 'marivo.semantic.open-ended-value': '开放终点值',
155
+ 'marivo.semantic.workspace-is-unavailable-select-it-again': 'Workspace 已不可用,请重新选择。',
156
+ 'marivo.semantic.cannot-load-the-semantic-layer-please-retry': '无法加载语义层,请重试。',
157
+ 'marivo.semantic.cannot-load-the-semantic-layer-check-the-connection-and': '无法加载语义层,请检查连接后重试。',
158
+ 'marivo.semantic.added-to-question': '已加入提问',
159
+ 'marivo.semantic.could-not-add-to-the-question-the-session-workspace': '加入提问失败,会话、Workspace 或草稿可能已变化,请检查后重试。',
160
+ 'marivo.semantic.copy-failed-select-the-text-to-copy-manually': '复制失败,请手动选择文字复制。',
161
+ 'marivo.semantic.back-to-list': '返回列表',
162
+ 'marivo.semantic.back-to-previous-object': '返回上个对象',
163
+ 'marivo.semantic.copy-reference': '复制引用',
164
+ 'marivo.semantic.no-input-is-available-for-the-session-owning-this': '当前页面没有可用的所属会话输入框',
165
+ 'marivo.semantic.adding': '正在加入…',
166
+ 'marivo.semantic.add-to-question': '加入提问',
167
+ 'marivo.semantic.object-detail-categories': '对象详情分类',
168
+ 'marivo.semantic.overview': '概览',
169
+ 'marivo.semantic.definition': '定义',
170
+ 'marivo.semantic.relationships-692': '关系',
171
+ 'marivo.semantic.business-definition': '业务定义',
172
+ 'marivo.semantic.no-business-definition': '未填写业务定义',
173
+ 'marivo.semantic.no-domain-specified': '未指定业务域',
174
+ 'marivo.semantic.usage-constraints': '使用约束',
175
+ 'marivo.semantic.additional-properties': '补充属性',
176
+ 'marivo.semantic.semantic-properties': '语义属性',
177
+ 'marivo.semantic.definition-location': '定义位置',
178
+ 'marivo.semantic.only-the-datasource-type-is-shown-here-without-connection': '此处仅展示数据源类型,不展示连接配置或凭证。',
179
+ 'marivo.semantic.file-sources-show-only-their-type-file-addresses-and': '文件来源仅展示类型;文件地址与请求配置不在此页面披露。',
180
+ 'marivo.semantic.catalog-declared-relationships-candidate-dimensions-do-not-mean-every': 'Catalog 声明的对象关系。候选维度不代表任意查询组合已通过验证。',
181
+ 'marivo.semantic.collapse-graph': '收起关系图',
182
+ 'marivo.semantic.view-graph': '查看关系图',
183
+ 'marivo.semantic.no-relationships-declared': '没有声明关联对象。',
184
+ 'marivo.semantic.object-not-included-in-this-catalog': ' · 当前目录未包含此对象',
185
+ 'marivo.semantic.semantic-object-browser': '语义层对象浏览器',
186
+ 'marivo.semantic.updated': '更新于',
187
+ 'marivo.semantic.refresh-semantic-layer': '刷新语义层',
188
+ 'marivo.semantic.current-semantic-definitions-are-shown-here-report-data-and': '此处展示当前语义定义;报告数据与来源仍是生成时的快照。',
189
+ 'marivo.semantic.workspace-list-unavailable-check-the-host-connection': 'Workspace 列表暂不可用,请检查 Host 连接。',
190
+ 'marivo.semantic.loading-semantic-objects': '正在读取语义层对象…',
191
+ 'marivo.semantic.previously-loaded-content-is-still-shown': '当前仍显示上次加载内容。',
192
+ 'marivo.semantic.previously-loaded-content-is-still-shown-714': ' 当前显示上次成功加载的内容。',
193
+ 'marivo.semantic.loading-workspaces': '正在读取 Workspace 列表…',
194
+ 'marivo.semantic.this-session-has-no-workspace-return-to-the-session': '当前会话未绑定 Workspace,请返回会话后重试。',
195
+ 'marivo.semantic.loading-object-catalog': '正在加载对象目录',
196
+ 'marivo.semantic.object-catalog-not-loaded': '尚未加载对象目录',
197
+ 'marivo.semantic.this-project-has-no-semantic-objects': '当前项目没有语义层对象。',
198
+ 'marivo.semantic.object-categories': '对象分类',
199
+ 'marivo.semantic.domain': '业务域',
200
+ 'marivo.semantic.filter-domains': '筛选业务域',
201
+ 'marivo.semantic.all-domains': '全部业务域',
202
+ 'marivo.semantic.all-objects': '全部对象',
203
+ 'marivo.semantic.object-list': '对象列表',
204
+ 'marivo.semantic.search-semantic-objects': '搜索语义对象',
205
+ 'marivo.semantic.search-names-references-and-business-definitions': '搜索名称、引用、业务定义',
206
+ 'marivo.semantic.objects': '个对象',
207
+ 'marivo.semantic.no-matching-objects-adjust-the-search-or-filters': '没有匹配对象,请调整搜索或筛选条件。',
208
+ 'marivo.semantic.object-details': '对象详情',
209
+ 'marivo.semantic.the-selected-object-is-no-longer-in-this-catalog': '所选对象已不在当前 Catalog 中,请重新选择。',
210
+ 'marivo.semantic.select-an-object-to-view-its-business-definition-and': '选择一个对象,查看业务定义与关联。',
211
+ 'marivo.semantic.not-in-this-catalog': '(当前目录未包含)',
212
+ 'marivo.semantic.dimension': '维度',
213
+ 'marivo.semantic.measure': '度量',
214
+ 'marivo.semantic.time-dimension': '时间维度',
215
+ 'marivo.semantic.relationship': '关系',
216
+ 'marivo.semantic.event': '事件',
217
+ 'marivo.semantic.state-model': '状态模型',
218
+ 'marivo.semantic.temporal-set': '时间集合',
219
+ 'marivo.semantic.work-schedule': '工作日程',
220
+ 'marivo.semantic.entity': '实体',
221
+ };
222
+ export const en = {
223
+ 'marivo.semantic.second': 'second',
224
+ 'marivo.semantic.minute': 'minute',
225
+ 'marivo.semantic.hour': 'hour',
226
+ 'marivo.semantic.day': 'day',
227
+ 'marivo.semantic.week': 'week',
228
+ 'marivo.semantic.month': 'month',
229
+ 'marivo.semantic.quarter': 'quarter',
230
+ 'marivo.semantic.year': 'year',
231
+ 'marivo.semantic.structured-display-is-not-yet-supported-for-this-expression': 'Structured display is not yet supported for this expression syntax',
232
+ 'marivo.semantic.no-expression-description-is-available-for-this-definition': 'No expression description is available for this definition',
233
+ 'marivo.semantic.expression-exceeds-the-description-size-limit': 'Expression exceeds the description size limit',
234
+ 'marivo.semantic.aggregation': 'Aggregation',
235
+ 'marivo.semantic.ratio': 'Ratio',
236
+ 'marivo.semantic.linear-combination': 'Linear combination',
237
+ 'marivo.semantic.cumulative': 'Cumulative',
238
+ 'marivo.semantic.ibis-expression': 'Ibis expression',
239
+ 'marivo.semantic.cumulative-from-the-beginning-of-all-history': 'Cumulative from the beginning of all history',
240
+ 'marivo.semantic.rolling-cumulative-over-value-value': 'Rolling cumulative over {p0} {p1}',
241
+ 'marivo.semantic.from': 'From',
242
+ 'marivo.semantic.of': 'of',
243
+ 'marivo.semantic.period-start-resetting-each-period': 'period start, resetting each period',
244
+ 'marivo.semantic.cumulative-from-the-current-value-resetting-each-period': 'Cumulative from the current {p0}, resetting each period',
245
+ 'marivo.semantic.this-cumulative-rule-cannot-be-displayed-yet': 'This cumulative rule cannot be displayed yet',
246
+ 'marivo.semantic.the-current-runtime-did-not-provide-displayable-ibis-expression': 'The current Runtime did not provide displayable Ibis expression text.',
247
+ 'marivo.semantic.expression-copied': 'Expression copied',
248
+ 'marivo.semantic.copy-failed-select-the-code-to-copy-manually': 'Copy failed. Select the code to copy manually.',
249
+ 'marivo.semantic.copy-ibis-expression': 'Copy Ibis expression',
250
+ 'marivo.semantic.constant-values-are-hidden-as-redacted': 'Constant values are hidden as REDACTED.',
251
+ 'marivo.semantic.aggregation-target': 'Aggregation target',
252
+ 'marivo.semantic.value': 'Value',
253
+ 'marivo.semantic.weight': 'Weight',
254
+ 'marivo.semantic.numerator': 'Numerator',
255
+ 'marivo.semantic.denominator': 'Denominator',
256
+ 'marivo.semantic.term-value-value': 'Term {p0} ({p1})',
257
+ 'marivo.semantic.base-metric': 'Base metric',
258
+ 'marivo.semantic.base-metric-558': 'Base metric:',
259
+ 'marivo.semantic.this-computation-type-cannot-be-displayed-yet': 'This computation type cannot be displayed yet',
260
+ 'marivo.semantic.this-object-has-no-public-computation-definition': 'This object has no public computation definition.',
261
+ 'marivo.semantic.cumulative-time-axis': 'Cumulative time axis',
262
+ 'marivo.semantic.uses-the-default-time-axis-determined-by-observation-context': 'Uses the default time axis, determined by observation context',
263
+ 'marivo.semantic.time-grain-timezone': 'Time grain / timezone',
264
+ 'marivo.semantic.not-declared': 'Not declared',
265
+ 'marivo.semantic.period-calendar': 'Period calendar',
266
+ 'marivo.semantic.calendar-level': 'Calendar level',
267
+ 'marivo.semantic.calendar-boundary-timezone': 'Calendar boundary timezone',
268
+ 'marivo.semantic.filters-in-definition': 'Filters in definition',
269
+ 'marivo.semantic.determined-by-the-formula-and-its-components': 'Determined by the formula and its components',
270
+ 'marivo.semantic.not-applicable': 'Not applicable',
271
+ 'marivo.semantic.unsupported-rule-status-value': 'Unsupported rule status: {p0}',
272
+ 'marivo.semantic.time-fold-rule': 'Time fold rule',
273
+ 'marivo.semantic.declared-rule': 'Declared rule',
274
+ 'marivo.semantic.metric-override': 'Metric override',
275
+ 'marivo.semantic.effective-rule': 'Effective rule',
276
+ 'marivo.semantic.metric-computation': 'Metric computation',
277
+ 'marivo.semantic.computation': 'Computation',
278
+ 'marivo.semantic.referenced-object-definitions': 'Referenced object definitions',
279
+ 'marivo.semantic.showing-the-first-40-referenced-definitions-click-an-object': 'Showing the first 40 referenced definitions. Click an object name to inspect it.',
280
+ 'marivo.semantic.data-source-and-grain': 'Data source and grain',
281
+ 'marivo.semantic.primary-key': 'Primary key:',
282
+ 'marivo.semantic.expand-one-more-level': 'Expand one more level',
283
+ 'marivo.semantic.zoom-in': 'Zoom in',
284
+ 'marivo.semantic.zoom-out': 'Zoom out',
285
+ 'marivo.semantic.center-graph': 'Center graph',
286
+ 'marivo.semantic.declared-relationships-level': 'Declared relationships · Level',
287
+ 'marivo.semantic.drag-the-background-to-pan-click-an-object-for': '· Drag the background to pan; click an object for details',
288
+ 'marivo.semantic.the-graph-shows-at-most-60-objects-see-the': 'The graph shows at most 60 objects. See the relationship list for all connections.',
289
+ 'marivo.semantic.local-relationship-graph': 'Local relationship graph',
290
+ 'marivo.semantic.object-relationships-an-equivalent-clickable-list-is-available-below': 'Object relationships; an equivalent clickable list is available below',
291
+ 'marivo.semantic.view-value': 'View {p0}',
292
+ 'marivo.semantic.relationships': 'Relationships (',
293
+ 'marivo.semantic.owning-domain': 'Owning domain',
294
+ 'marivo.semantic.owner': 'Owner',
295
+ 'marivo.semantic.default-domain': 'Default domain',
296
+ 'marivo.semantic.engine-type': 'Engine type',
297
+ 'marivo.semantic.owning-datasource': 'Owning datasource',
298
+ 'marivo.semantic.primary-key-600': 'Primary key',
299
+ 'marivo.semantic.owning-entity': 'Owning entity',
300
+ 'marivo.semantic.additivity': 'Additivity',
301
+ 'marivo.semantic.parse-kind': 'Parse kind',
302
+ 'marivo.semantic.data-type': 'Data type',
303
+ 'marivo.semantic.time-grain': 'Time grain',
304
+ 'marivo.semantic.format': 'Format',
305
+ 'marivo.semantic.timezone': 'Timezone',
306
+ 'marivo.semantic.default-time-dimension': 'Default time dimension',
307
+ 'marivo.semantic.sample-interval': 'Sample interval',
308
+ 'marivo.semantic.metric-type': 'Metric type',
309
+ 'marivo.semantic.declared-entities': 'Declared entities',
310
+ 'marivo.semantic.root-entity': 'Root entity',
311
+ 'marivo.semantic.aggregation-method': 'Aggregation method',
312
+ 'marivo.semantic.aggregation-object': 'Aggregation object',
313
+ 'marivo.semantic.aggregation-object-type': 'Aggregation object type',
314
+ 'marivo.semantic.measure-source': 'Measure source',
315
+ 'marivo.semantic.time-fold': 'Time fold',
316
+ 'marivo.semantic.state-time-dimension': 'State time dimension',
317
+ 'marivo.semantic.fanout-policy': 'Fanout policy',
318
+ 'marivo.semantic.fixed-filter': 'Fixed filter',
319
+ 'marivo.semantic.effective-entities': 'Effective entities',
320
+ 'marivo.semantic.candidate-dimensions': 'Candidate dimensions',
321
+ 'marivo.semantic.candidate-time-dimensions': 'Candidate time dimensions',
322
+ 'marivo.semantic.measure-lineage': 'Measure lineage',
323
+ 'marivo.semantic.weighted-value': 'Weighted value',
324
+ 'marivo.semantic.composition': 'Composition',
325
+ 'marivo.semantic.components': 'Components',
326
+ 'marivo.semantic.linear-terms': 'Linear terms',
327
+ 'marivo.semantic.required-relationships': 'Required relationships',
328
+ 'marivo.semantic.parity-status': 'Parity status',
329
+ 'marivo.semantic.from-entity': 'From entity',
330
+ 'marivo.semantic.to-entity': 'To entity',
331
+ 'marivo.semantic.from-keys': 'From keys',
332
+ 'marivo.semantic.to-keys': 'To keys',
333
+ 'marivo.semantic.source-entity': 'Source entity',
334
+ 'marivo.semantic.identity-dimension': 'Identity dimension',
335
+ 'marivo.semantic.occurrence-time': 'Occurrence time',
336
+ 'marivo.semantic.participants': 'Participants',
337
+ 'marivo.semantic.event-predicate-type': 'Event predicate type',
338
+ 'marivo.semantic.definition-fingerprint': 'Definition fingerprint',
339
+ 'marivo.semantic.subject': 'Subject',
340
+ 'marivo.semantic.states': 'States',
341
+ 'marivo.semantic.initial-events': 'Initial events',
342
+ 'marivo.semantic.transitions': 'Transitions',
343
+ 'marivo.semantic.date-dimension': 'Date dimension',
344
+ 'marivo.semantic.boundary-timezone': 'Boundary timezone',
345
+ 'marivo.semantic.coverage': 'Coverage',
346
+ 'marivo.semantic.correspondences': 'Correspondences',
347
+ 'marivo.semantic.snapshot-status': 'Snapshot status',
348
+ 'marivo.semantic.snapshot-digest': 'Snapshot digest',
349
+ 'marivo.semantic.occurrence-id': 'Occurrence ID',
350
+ 'marivo.semantic.start-time': 'Start time',
351
+ 'marivo.semantic.end-time': 'End time',
352
+ 'marivo.semantic.category': 'Category',
353
+ 'marivo.semantic.occurrence-count': 'Occurrence count',
354
+ 'marivo.semantic.working-day-dimension': 'Working day dimension',
355
+ 'marivo.semantic.source-type': 'Source type',
356
+ 'marivo.semantic.source-table': 'Source table',
357
+ 'marivo.semantic.source-database': 'Source database',
358
+ 'marivo.semantic.parents': 'Parents',
359
+ 'marivo.semantic.children': 'Children',
360
+ 'marivo.semantic.dependents': 'Dependents',
361
+ 'marivo.semantic.level-key': 'Level key',
362
+ 'marivo.semantic.period-count': 'Period count',
363
+ 'marivo.semantic.direct-finer-levels': 'Direct finer levels',
364
+ 'marivo.semantic.direct-coarser-levels': 'Direct coarser levels',
365
+ 'marivo.semantic.rollup-targets': 'Rollup targets',
366
+ 'marivo.semantic.version-type': 'Version type',
367
+ 'marivo.semantic.version-partition-field': 'Version partition field',
368
+ 'marivo.semantic.version-grain': 'Version grain',
369
+ 'marivo.semantic.version-timezone': 'Version timezone',
370
+ 'marivo.semantic.version-format': 'Version format',
371
+ 'marivo.semantic.valid-from': 'Valid from',
372
+ 'marivo.semantic.valid-to': 'Valid to',
373
+ 'marivo.semantic.validity-interval': 'Validity interval',
374
+ 'marivo.semantic.open-ended-value': 'Open-ended value',
375
+ 'marivo.semantic.workspace-is-unavailable-select-it-again': 'Workspace is unavailable. Select it again.',
376
+ 'marivo.semantic.cannot-load-the-semantic-layer-please-retry': 'Cannot load the semantic layer. Please retry.',
377
+ 'marivo.semantic.cannot-load-the-semantic-layer-check-the-connection-and': 'Cannot load the semantic layer. Check the connection and retry.',
378
+ 'marivo.semantic.added-to-question': 'Added to question',
379
+ 'marivo.semantic.could-not-add-to-the-question-the-session-workspace': 'Could not add to the question. The session, Workspace or draft may have changed. Check and retry.',
380
+ 'marivo.semantic.copy-failed-select-the-text-to-copy-manually': 'Copy failed. Select the text to copy manually.',
381
+ 'marivo.semantic.back-to-list': 'Back to list',
382
+ 'marivo.semantic.back-to-previous-object': 'Back to previous object',
383
+ 'marivo.semantic.copy-reference': 'Copy reference',
384
+ 'marivo.semantic.no-input-is-available-for-the-session-owning-this': 'No input is available for the session owning this page',
385
+ 'marivo.semantic.adding': 'Adding…',
386
+ 'marivo.semantic.add-to-question': 'Add to question',
387
+ 'marivo.semantic.object-detail-categories': 'Object detail categories',
388
+ 'marivo.semantic.overview': 'Overview',
389
+ 'marivo.semantic.definition': 'Definition',
390
+ 'marivo.semantic.relationships-692': 'Relationships',
391
+ 'marivo.semantic.business-definition': 'Business definition',
392
+ 'marivo.semantic.no-business-definition': 'No business definition',
393
+ 'marivo.semantic.no-domain-specified': 'No domain specified',
394
+ 'marivo.semantic.usage-constraints': 'Usage constraints',
395
+ 'marivo.semantic.additional-properties': 'Additional properties',
396
+ 'marivo.semantic.semantic-properties': 'Semantic properties',
397
+ 'marivo.semantic.definition-location': 'Definition location',
398
+ 'marivo.semantic.only-the-datasource-type-is-shown-here-without-connection': 'Only the datasource type is shown here, without connection configuration or credentials.',
399
+ 'marivo.semantic.file-sources-show-only-their-type-file-addresses-and': 'File sources show only their type. File addresses and request configuration are not disclosed here.',
400
+ 'marivo.semantic.catalog-declared-relationships-candidate-dimensions-do-not-mean-every': 'Catalog-declared relationships. Candidate dimensions do not mean every query combination has been validated.',
401
+ 'marivo.semantic.collapse-graph': 'Collapse graph',
402
+ 'marivo.semantic.view-graph': 'View graph',
403
+ 'marivo.semantic.no-relationships-declared': 'No relationships declared.',
404
+ 'marivo.semantic.object-not-included-in-this-catalog': ' · Object not included in this catalog',
405
+ 'marivo.semantic.semantic-object-browser': 'Semantic object browser',
406
+ 'marivo.semantic.updated': 'Updated',
407
+ 'marivo.semantic.refresh-semantic-layer': 'Refresh semantic layer',
408
+ 'marivo.semantic.current-semantic-definitions-are-shown-here-report-data-and': 'Current semantic definitions are shown here. Report data and sources remain snapshots from generation time.',
409
+ 'marivo.semantic.workspace-list-unavailable-check-the-host-connection': 'Workspace list unavailable. Check the Host connection.',
410
+ 'marivo.semantic.loading-semantic-objects': 'Loading semantic objects…',
411
+ 'marivo.semantic.previously-loaded-content-is-still-shown': 'Previously loaded content is still shown.',
412
+ 'marivo.semantic.previously-loaded-content-is-still-shown-714': ' Previously loaded content is still shown.',
413
+ 'marivo.semantic.loading-workspaces': 'Loading Workspaces…',
414
+ 'marivo.semantic.this-session-has-no-workspace-return-to-the-session': 'This session has no Workspace. Return to the session and retry.',
415
+ 'marivo.semantic.loading-object-catalog': 'Loading object catalog',
416
+ 'marivo.semantic.object-catalog-not-loaded': 'Object catalog not loaded',
417
+ 'marivo.semantic.this-project-has-no-semantic-objects': 'This project has no semantic objects.',
418
+ 'marivo.semantic.object-categories': 'Object categories',
419
+ 'marivo.semantic.domain': 'Domain',
420
+ 'marivo.semantic.filter-domains': 'Filter domains',
421
+ 'marivo.semantic.all-domains': 'All domains',
422
+ 'marivo.semantic.all-objects': 'All objects',
423
+ 'marivo.semantic.object-list': 'Object list',
424
+ 'marivo.semantic.search-semantic-objects': 'Search semantic objects',
425
+ 'marivo.semantic.search-names-references-and-business-definitions': 'Search names, references and business definitions',
426
+ 'marivo.semantic.objects': 'objects',
427
+ 'marivo.semantic.no-matching-objects-adjust-the-search-or-filters': 'No matching objects. Adjust the search or filters.',
428
+ 'marivo.semantic.object-details': 'Object details',
429
+ 'marivo.semantic.the-selected-object-is-no-longer-in-this-catalog': 'The selected object is no longer in this Catalog. Select another.',
430
+ 'marivo.semantic.select-an-object-to-view-its-business-definition-and': 'Select an object to view its business definition and relationships.',
431
+ 'marivo.semantic.not-in-this-catalog': '(not in this catalog)',
432
+ 'marivo.semantic.dimension': 'Dimension',
433
+ 'marivo.semantic.measure': 'Measure',
434
+ 'marivo.semantic.time-dimension': 'Time dimension',
435
+ 'marivo.semantic.relationship': 'Relationship',
436
+ 'marivo.semantic.event': 'Event',
437
+ 'marivo.semantic.state-model': 'State model',
438
+ 'marivo.semantic.temporal-set': 'Temporal set',
439
+ 'marivo.semantic.work-schedule': 'Work schedule',
440
+ 'marivo.semantic.entity': 'Entity',
441
+ };
@@ -0,0 +1,21 @@
1
+ export function ownedInput(host, sessionId, workspaceId) {
2
+ const workspaces = host.workspaces.list.getSnapshot();
3
+ const owners = workspaces.items.filter((item) => item.sessionIds.includes(sessionId));
4
+ if (!sessionId ||
5
+ !workspaceId ||
6
+ host.sessions.list.getSnapshot().current !== sessionId ||
7
+ workspaces.phase !== 'ready' ||
8
+ workspaces.state === 'error' ||
9
+ owners.length !== 1 ||
10
+ owners[0].workspaceId !== workspaceId)
11
+ throw new Error('input-owner-unavailable');
12
+ const actx = host.sessions.scope(sessionId);
13
+ if (!actx)
14
+ throw new Error('input-owner-unavailable');
15
+ return { actx, input: host.conversation.input.for(actx), workspace: owners[0] };
16
+ }
17
+ /** Host detect coordinates count each atomic reference as one character. */
18
+ export function inputEnd({ draft, draftRev, occurrences, }) {
19
+ const end = occurrences.reduce((length, item) => length - item.length + 1, draft.length);
20
+ return { start: end, end, draftRev };
21
+ }
@@ -0,0 +1,35 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { CodeBlock, DisclosureRow, IconCodeOutline16, writeClipboard, } from '@deepseek-ai/dsh-client-ui-primitives';
3
+ import { useMemo, useState } from 'react';
4
+ import { useCopy } from "../i18n/context.js";
5
+ import { pythonToolModel } from "./model.js";
6
+ const styles = `
7
+ .mp-tool{min-width:0;max-width:100%;font-size:12px;color:var(--dsw-alias-label-primary,#1d3036)}
8
+ .mp-summary{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;margin-left:8px;color:var(--dsw-alias-label-secondary,#5b7076)}
9
+ .mp-body{min-width:0;margin:8px 0 8px 20px;border:1px solid var(--dsw-alias-border-l2,#dce5e5);border-radius:8px;padding:12px;display:grid;gap:12px}
10
+ .mp-body section,.mp-body details{min-width:0}.mp-body h4{font-size:12px;margin:0 0 6px}
11
+ .mp-scroll{max-height:360px;overflow:auto;min-width:0}.mp-body pre{font:12px/1.6 ui-monospace,SFMono-Regular,Consolas,monospace;white-space:pre;tab-size:4;margin:0}
12
+ .mp-code pre{white-space:pre!important;overflow:visible!important;max-height:none!important}
13
+ .mp-code button{display:none}.mp-input-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}.mp-input-heading h4{margin:0}
14
+ .mp-facts{display:flex;flex-wrap:wrap;gap:6px 16px;margin:0}.mp-facts div{display:flex;gap:6px;min-width:0}.mp-facts dd{margin:0;overflow-wrap:anywhere}.mp-facts dt{color:var(--dsw-alias-label-secondary,#5b7076)}
15
+ .mp-notice{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;color:var(--dsw-alias-state-warn-label,#805b20)}
16
+ .mp-body button{font:inherit;cursor:pointer}.mp-body summary{cursor:pointer}.mp-state{font-size:11px;margin-left:8px}
17
+ .mp-inspect{border:1px solid var(--dsw-alias-border-l2,#dce5e5);border-radius:6px;padding:3px 8px;background:var(--dsw-alias-bg-base,#fff);color:inherit}
18
+ .mp-tool[data-state=failed] .mp-state,.mp-tool[data-state=warning] .mp-state,.mp-tool[data-state=timed-out] .mp-state{color:var(--dsw-alias-state-warn-label,#805b20)}
19
+ `;
20
+ export function PythonToolCard({ block, inspect }) {
21
+ const t = useCopy();
22
+ const [open, setOpen] = useState(false);
23
+ const [copy, setCopy] = useState();
24
+ const model = useMemo(() => pythonToolModel(block), [block]);
25
+ const copySource = async () => {
26
+ if (model.code === undefined)
27
+ return;
28
+ const code = model.code;
29
+ const ok = await writeClipboard(code).catch(() => false);
30
+ setCopy({ code, ok });
31
+ };
32
+ return (_jsxs("div", { className: "mp-tool", "data-state": model.state, children: [_jsx("style", { children: styles }), _jsx(DisclosureRow, { icon: _jsx(IconCodeOutline16, {}), title: "marivo_python", open: open, expandable: true, expandOnRowClick: true, keepContentWhenOpen: true, onToggle: () => setOpen((value) => !value), collapsedContent: _jsxs(_Fragment, { children: [_jsx("span", { className: "mp-summary", children: model.summary }), _jsx("span", { className: "mp-state", children: t(`marivo.python.${model.state}`) })] }), children: open && (_jsxs("div", { className: "mp-body", children: [_jsxs("section", { "aria-label": t('marivo.python.input'), children: [_jsxs("div", { className: "mp-input-heading", children: [_jsx("h4", { children: t('marivo.python.input') }), model.code !== undefined && (_jsx("button", { type: "button", className: "mp-inspect", onClick: () => void copySource(), children: t(copy?.code === model.code && copy.ok
33
+ ? 'marivo.python.copied'
34
+ : 'marivo.python.copy') }))] }), copy && copy.code === model.code && !copy.ok && (_jsx("p", { role: "status", className: "mp-notice", children: t('marivo.python.copy-failed') })), _jsx("div", { className: "mp-scroll", children: model.code === undefined ? (_jsx("pre", { children: model.input })) : (_jsx(CodeBlock, { code: `${model.code}\n`, lang: "python", className: "mp-code", copyLabel: t('marivo.python.copy'), copiedLabel: t('marivo.python.copied') })) })] }), _jsxs("dl", { className: "mp-facts", children: [model.datasources !== undefined && (_jsxs("div", { children: [_jsx("dt", { children: "datasources" }), _jsx("dd", { children: JSON.stringify(model.datasources) })] })), model.timeoutMs !== undefined && (_jsxs("div", { children: [_jsx("dt", { children: "timeoutMs" }), _jsxs("dd", { children: [model.timeoutMs, " ms"] })] })), model.facts.map(({ name, value }) => (_jsxs("div", { children: [_jsx("dt", { children: name }), _jsx("dd", { children: value })] }, name)))] }), model.notices.map((notice) => (_jsx("p", { className: "mp-notice", children: notice }, notice))), model.facts.some((fact) => fact.name === 'truncated' && fact.value === 'true') && (_jsx("p", { className: "mp-notice", children: t('marivo.python.truncated') })), ['stdout', 'stderr'].map((name) => model[name] === undefined ? null : (_jsxs("section", { "aria-label": name, children: [_jsx("h4", { children: name }), _jsx("pre", { className: "mp-scroll", children: model[name] })] }, name))), model.fallback !== undefined && (_jsxs("section", { "aria-label": t('marivo.python.output'), children: [_jsx("h4", { children: t('marivo.python.output') }), _jsx("pre", { className: "mp-scroll", children: model.fallback })] })), _jsxs("details", { children: [_jsx("summary", { children: t('marivo.python.raw') }), _jsx("h4", { children: t('marivo.python.input') }), _jsx("pre", { className: "mp-scroll", children: model.input }), model.output !== undefined && (_jsxs(_Fragment, { children: [_jsx("h4", { children: t('marivo.python.output') }), _jsx("pre", { className: "mp-scroll", children: model.output })] }))] }), inspect && (_jsx("div", { children: _jsx("button", { type: "button", className: "mp-inspect", onClick: inspect, children: t('marivo.python.inspect') }) }))] })) })] }));
35
+ }
@@ -0,0 +1,35 @@
1
+ const phases = new Set(['preparing', 'executing', 'capturing-code']);
2
+ const reasons = new Set([
3
+ 'not-started',
4
+ 'succeeded',
5
+ 'nonzero-exit',
6
+ 'timed-out',
7
+ 'cancelled',
8
+ 'unknown',
9
+ ]);
10
+ const duration = (value) => typeof value === 'number' && Number.isFinite(value) && value >= 0;
11
+ /** Decode the plugin's error suffix after Harness has reduced Error to its message. */
12
+ export function executionErrorSummary(text) {
13
+ const marker = '; execution=';
14
+ const index = text.indexOf(marker);
15
+ if (index <= 0)
16
+ return undefined;
17
+ try {
18
+ const value = JSON.parse(text.slice(index + marker.length));
19
+ if (value === null || typeof value !== 'object' || Array.isArray(value))
20
+ return undefined;
21
+ const summary = value;
22
+ if (typeof summary.phase !== 'string' ||
23
+ !phases.has(summary.phase) ||
24
+ typeof summary.reason !== 'string' ||
25
+ !reasons.has(summary.reason) ||
26
+ !duration(summary.elapsedMs) ||
27
+ !['requestedTimeoutMs', 'effectiveTimeoutMs', 'executionElapsedMs'].every((key) => summary[key] === null || duration(summary[key])) ||
28
+ !(summary.nextAction === null || typeof summary.nextAction === 'string'))
29
+ return undefined;
30
+ return summary;
31
+ }
32
+ catch {
33
+ return undefined;
34
+ }
35
+ }
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { localized } from "../i18n/host.js";
3
+ import { PythonToolCard } from "./card.js";
4
+ export function installPythonTool(ctx) {
5
+ const LocalizedCard = localized(ctx, PythonToolCard);
6
+ ctx.slots.inject('tool.call.toolview', () => ctx.slots.register({ name: 'tool.call.toolview', key: 'marivo_python', locale: 'marivo.python' }, function PythonToolView(props) {
7
+ return _jsx(LocalizedCard, { ...props });
8
+ }));
9
+ }