@ffschrattenecker/tm1-mcp-server 6.0.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 (475) hide show
  1. package/CHANGELOG.md +1211 -0
  2. package/LICENSE +21 -0
  3. package/NOTICE +34 -0
  4. package/README.md +276 -0
  5. package/dist/config.d.ts +35 -0
  6. package/dist/config.js +238 -0
  7. package/dist/http-transport.d.ts +8 -0
  8. package/dist/http-transport.js +132 -0
  9. package/dist/index.d.ts +18 -0
  10. package/dist/index.js +164 -0
  11. package/dist/lib/callgraph/callGraph.d.ts +124 -0
  12. package/dist/lib/callgraph/callGraph.js +334 -0
  13. package/dist/lib/callgraph/choreGraph.d.ts +23 -0
  14. package/dist/lib/callgraph/choreGraph.js +102 -0
  15. package/dist/lib/callgraph/dataFlow.d.ts +74 -0
  16. package/dist/lib/callgraph/dataFlow.js +271 -0
  17. package/dist/lib/callgraph/datasourceMembership.d.ts +31 -0
  18. package/dist/lib/callgraph/datasourceMembership.js +142 -0
  19. package/dist/lib/callgraph/lintTypes.d.ts +28 -0
  20. package/dist/lib/callgraph/lintTypes.js +2 -0
  21. package/dist/lib/callgraph/mdxMembers.d.ts +29 -0
  22. package/dist/lib/callgraph/mdxMembers.js +97 -0
  23. package/dist/lib/callgraph/referenceIndex.d.ts +179 -0
  24. package/dist/lib/callgraph/referenceIndex.js +584 -0
  25. package/dist/lib/callgraph/rulesLinter.d.ts +55 -0
  26. package/dist/lib/callgraph/rulesLinter.js +776 -0
  27. package/dist/lib/callgraph/rulesParser.d.ts +26 -0
  28. package/dist/lib/callgraph/rulesParser.js +71 -0
  29. package/dist/lib/callgraph/subsetUsage.d.ts +16 -0
  30. package/dist/lib/callgraph/subsetUsage.js +134 -0
  31. package/dist/lib/callgraph/tiParser.d.ts +21 -0
  32. package/dist/lib/callgraph/tiParser.js +672 -0
  33. package/dist/lib/callgraph/tiSignatures.d.ts +32 -0
  34. package/dist/lib/callgraph/tiSignatures.js +6185 -0
  35. package/dist/lib/callgraph/tm1-adapter.d.ts +32 -0
  36. package/dist/lib/callgraph/tm1-adapter.js +159 -0
  37. package/dist/lib/callgraph/types.d.ts +53 -0
  38. package/dist/lib/callgraph/types.js +2 -0
  39. package/dist/lib/callgraph/variableEnv.d.ts +86 -0
  40. package/dist/lib/callgraph/variableEnv.js +214 -0
  41. package/dist/lib/cell-address.d.ts +12 -0
  42. package/dist/lib/cell-address.js +71 -0
  43. package/dist/lib/complexity/antipatterns.d.ts +22 -0
  44. package/dist/lib/complexity/antipatterns.js +302 -0
  45. package/dist/lib/complexity/comment-classifier.d.ts +24 -0
  46. package/dist/lib/complexity/comment-classifier.js +43 -0
  47. package/dist/lib/complexity/cross-process.d.ts +78 -0
  48. package/dist/lib/complexity/cross-process.js +114 -0
  49. package/dist/lib/complexity/process-metrics.d.ts +78 -0
  50. package/dist/lib/complexity/process-metrics.js +278 -0
  51. package/dist/lib/complexity/rules-metrics.d.ts +31 -0
  52. package/dist/lib/complexity/rules-metrics.js +99 -0
  53. package/dist/lib/concurrency.d.ts +11 -0
  54. package/dist/lib/concurrency.js +27 -0
  55. package/dist/lib/control-name.d.ts +10 -0
  56. package/dist/lib/control-name.js +10 -0
  57. package/dist/lib/coordinate-error.d.ts +3 -0
  58. package/dist/lib/coordinate-error.js +29 -0
  59. package/dist/lib/credential-format.d.ts +23 -0
  60. package/dist/lib/credential-format.js +25 -0
  61. package/dist/lib/cube-stats/fetcher.d.ts +106 -0
  62. package/dist/lib/cube-stats/fetcher.js +194 -0
  63. package/dist/lib/feeders/brackets.d.ts +47 -0
  64. package/dist/lib/feeders/brackets.js +195 -0
  65. package/dist/lib/feeders/element-type-cache.d.ts +42 -0
  66. package/dist/lib/feeders/element-type-cache.js +86 -0
  67. package/dist/lib/feeders/static-heuristics.d.ts +101 -0
  68. package/dist/lib/feeders/static-heuristics.js +202 -0
  69. package/dist/lib/git-process.d.ts +67 -0
  70. package/dist/lib/git-process.js +243 -0
  71. package/dist/lib/mask-secrets.d.ts +10 -0
  72. package/dist/lib/mask-secrets.js +99 -0
  73. package/dist/lib/mdx.d.ts +3 -0
  74. package/dist/lib/mdx.js +13 -0
  75. package/dist/lib/naming/odata-filter.d.ts +15 -0
  76. package/dist/lib/naming/odata-filter.js +81 -0
  77. package/dist/lib/naming/rules.d.ts +34 -0
  78. package/dist/lib/naming/rules.js +215 -0
  79. package/dist/lib/pro-parser.d.ts +19 -0
  80. package/dist/lib/pro-parser.js +260 -0
  81. package/dist/lib/pro-serializer.d.ts +19 -0
  82. package/dist/lib/pro-serializer.js +170 -0
  83. package/dist/lib/process-parts-schema.d.ts +45 -0
  84. package/dist/lib/process-parts-schema.js +46 -0
  85. package/dist/lib/process-refs.d.ts +88 -0
  86. package/dist/lib/process-refs.js +441 -0
  87. package/dist/lib/rules-outline.d.ts +29 -0
  88. package/dist/lib/rules-outline.js +68 -0
  89. package/dist/lib/rules-patch.d.ts +6 -0
  90. package/dist/lib/rules-patch.js +59 -0
  91. package/dist/lib/safe-regex.d.ts +15 -0
  92. package/dist/lib/safe-regex.js +37 -0
  93. package/dist/lib/sample-cells.d.ts +48 -0
  94. package/dist/lib/sample-cells.js +146 -0
  95. package/dist/lib/slim-json-schema.d.ts +20 -0
  96. package/dist/lib/slim-json-schema.js +68 -0
  97. package/dist/lib/strip-comments.d.ts +23 -0
  98. package/dist/lib/strip-comments.js +61 -0
  99. package/dist/lib/tm1-events.d.ts +16 -0
  100. package/dist/lib/tm1-events.js +29 -0
  101. package/dist/lib/v12-compat/deprecated-ti.d.ts +17 -0
  102. package/dist/lib/v12-compat/deprecated-ti.js +257 -0
  103. package/dist/lib/v12-compat/scanner.d.ts +10 -0
  104. package/dist/lib/v12-compat/scanner.js +43 -0
  105. package/dist/lib/variables-ui-data.d.ts +26 -0
  106. package/dist/lib/variables-ui-data.js +77 -0
  107. package/dist/load-env.d.ts +2 -0
  108. package/dist/load-env.js +29 -0
  109. package/dist/logger.d.ts +4 -0
  110. package/dist/logger.js +60 -0
  111. package/dist/prompts/index.d.ts +3 -0
  112. package/dist/prompts/index.js +141 -0
  113. package/dist/resources/index.d.ts +5 -0
  114. package/dist/resources/index.js +237 -0
  115. package/dist/resources/list-handler.d.ts +40 -0
  116. package/dist/resources/list-handler.js +86 -0
  117. package/dist/resources/subscriptions.d.ts +19 -0
  118. package/dist/resources/subscriptions.js +80 -0
  119. package/dist/schemas/cells.d.ts +17 -0
  120. package/dist/schemas/cells.js +13 -0
  121. package/dist/schemas/common.d.ts +16 -0
  122. package/dist/schemas/common.js +14 -0
  123. package/dist/schemas/index.d.ts +10 -0
  124. package/dist/schemas/index.js +23 -0
  125. package/dist/schemas/metadata.d.ts +70 -0
  126. package/dist/schemas/metadata.js +47 -0
  127. package/dist/schemas/monitoring.d.ts +95 -0
  128. package/dist/schemas/monitoring.js +69 -0
  129. package/dist/schemas/processes.d.ts +74 -0
  130. package/dist/schemas/processes.js +66 -0
  131. package/dist/schemas/scheduling.d.ts +13 -0
  132. package/dist/schemas/scheduling.js +13 -0
  133. package/dist/schemas/security.d.ts +19 -0
  134. package/dist/schemas/security.js +16 -0
  135. package/dist/schemas/subsets.d.ts +12 -0
  136. package/dist/schemas/subsets.js +12 -0
  137. package/dist/schemas/views.d.ts +9 -0
  138. package/dist/schemas/views.js +9 -0
  139. package/dist/session-manager.d.ts +79 -0
  140. package/dist/session-manager.js +281 -0
  141. package/dist/tm1-client/connection/profile.d.ts +13 -0
  142. package/dist/tm1-client/connection/profile.js +99 -0
  143. package/dist/tm1-client/dispatcher.d.ts +5 -0
  144. package/dist/tm1-client/dispatcher.js +31 -0
  145. package/dist/tm1-client/http.d.ts +81 -0
  146. package/dist/tm1-client/http.js +547 -0
  147. package/dist/tm1-client/services/batch-service.d.ts +123 -0
  148. package/dist/tm1-client/services/batch-service.js +455 -0
  149. package/dist/tm1-client/services/cell-service.d.ts +71 -0
  150. package/dist/tm1-client/services/cell-service.js +333 -0
  151. package/dist/tm1-client/services/cellset-transform.d.ts +26 -0
  152. package/dist/tm1-client/services/cellset-transform.js +80 -0
  153. package/dist/tm1-client/services/chore-service.d.ts +68 -0
  154. package/dist/tm1-client/services/chore-service.js +179 -0
  155. package/dist/tm1-client/services/chore-status.d.ts +11 -0
  156. package/dist/tm1-client/services/chore-status.js +127 -0
  157. package/dist/tm1-client/services/cube-service.d.ts +134 -0
  158. package/dist/tm1-client/services/cube-service.js +294 -0
  159. package/dist/tm1-client/services/dimension-service.d.ts +118 -0
  160. package/dist/tm1-client/services/dimension-service.js +249 -0
  161. package/dist/tm1-client/services/element-service.d.ts +245 -0
  162. package/dist/tm1-client/services/element-service.js +809 -0
  163. package/dist/tm1-client/services/fallback.d.ts +44 -0
  164. package/dist/tm1-client/services/fallback.js +72 -0
  165. package/dist/tm1-client/services/file-service.d.ts +53 -0
  166. package/dist/tm1-client/services/file-service.js +218 -0
  167. package/dist/tm1-client/services/hierarchy-service.d.ts +129 -0
  168. package/dist/tm1-client/services/hierarchy-service.js +332 -0
  169. package/dist/tm1-client/services/monitoring-service.d.ts +34 -0
  170. package/dist/tm1-client/services/monitoring-service.js +123 -0
  171. package/dist/tm1-client/services/odata-page.d.ts +71 -0
  172. package/dist/tm1-client/services/odata-page.js +87 -0
  173. package/dist/tm1-client/services/process-service.d.ts +278 -0
  174. package/dist/tm1-client/services/process-service.js +874 -0
  175. package/dist/tm1-client/services/process-status.d.ts +21 -0
  176. package/dist/tm1-client/services/process-status.js +89 -0
  177. package/dist/tm1-client/services/security-service.d.ts +50 -0
  178. package/dist/tm1-client/services/security-service.js +93 -0
  179. package/dist/tm1-client/services/server-service.d.ts +116 -0
  180. package/dist/tm1-client/services/server-service.js +504 -0
  181. package/dist/tm1-client/services/subset-service.d.ts +37 -0
  182. package/dist/tm1-client/services/subset-service.js +122 -0
  183. package/dist/tm1-client/services/view-service.d.ts +46 -0
  184. package/dist/tm1-client/services/view-service.js +287 -0
  185. package/dist/tm1-client.d.ts +56 -0
  186. package/dist/tm1-client.js +126 -0
  187. package/dist/tools/analysis/analyze-callgraph.d.ts +28 -0
  188. package/dist/tools/analysis/analyze-callgraph.js +350 -0
  189. package/dist/tools/analysis/analyze-chore-graph.d.ts +2 -0
  190. package/dist/tools/analysis/analyze-chore-graph.js +148 -0
  191. package/dist/tools/analysis/analyze-object-usage.d.ts +2 -0
  192. package/dist/tools/analysis/analyze-object-usage.js +143 -0
  193. package/dist/tools/analysis/audit-complexity.d.ts +2 -0
  194. package/dist/tools/analysis/audit-complexity.js +255 -0
  195. package/dist/tools/analysis/audit-feeders.d.ts +2 -0
  196. package/dist/tools/analysis/audit-feeders.js +417 -0
  197. package/dist/tools/analysis/audit-naming.d.ts +2 -0
  198. package/dist/tools/analysis/audit-naming.js +379 -0
  199. package/dist/tools/analysis/check-v12-readiness.d.ts +2 -0
  200. package/dist/tools/analysis/check-v12-readiness.js +136 -0
  201. package/dist/tools/analysis/find-orphan-dimensions.d.ts +2 -0
  202. package/dist/tools/analysis/find-orphan-dimensions.js +55 -0
  203. package/dist/tools/analysis/invalidate-callgraph-cache.d.ts +2 -0
  204. package/dist/tools/analysis/invalidate-callgraph-cache.js +40 -0
  205. package/dist/tools/analysis/trace-data-flow.d.ts +2 -0
  206. package/dist/tools/analysis/trace-data-flow.js +138 -0
  207. package/dist/tools/annotations.d.ts +12 -0
  208. package/dist/tools/annotations.js +61 -0
  209. package/dist/tools/celldata/check-feeders.d.ts +2 -0
  210. package/dist/tools/celldata/check-feeders.js +48 -0
  211. package/dist/tools/celldata/check-writable-coords.d.ts +2 -0
  212. package/dist/tools/celldata/check-writable-coords.js +126 -0
  213. package/dist/tools/celldata/execute-mdx.d.ts +17 -0
  214. package/dist/tools/celldata/execute-mdx.js +126 -0
  215. package/dist/tools/celldata/get-cell-value.d.ts +2 -0
  216. package/dist/tools/celldata/get-cell-value.js +30 -0
  217. package/dist/tools/celldata/get-view-definition.d.ts +2 -0
  218. package/dist/tools/celldata/get-view-definition.js +29 -0
  219. package/dist/tools/celldata/get-view.d.ts +2 -0
  220. package/dist/tools/celldata/get-view.js +55 -0
  221. package/dist/tools/celldata/sample-cells.d.ts +2 -0
  222. package/dist/tools/celldata/sample-cells.js +101 -0
  223. package/dist/tools/celldata/trace-cell-calculation.d.ts +2 -0
  224. package/dist/tools/celldata/trace-cell-calculation.js +53 -0
  225. package/dist/tools/celldata/trace-feeders.d.ts +2 -0
  226. package/dist/tools/celldata/trace-feeders.js +44 -0
  227. package/dist/tools/celldata/write-cells.d.ts +2 -0
  228. package/dist/tools/celldata/write-cells.js +65 -0
  229. package/dist/tools/confirm.d.ts +10 -0
  230. package/dist/tools/confirm.js +64 -0
  231. package/dist/tools/define-tool.d.ts +51 -0
  232. package/dist/tools/define-tool.js +49 -0
  233. package/dist/tools/dimension-management/bulk-upsert-elements.d.ts +2 -0
  234. package/dist/tools/dimension-management/bulk-upsert-elements.js +103 -0
  235. package/dist/tools/dimension-management/create-dimension.d.ts +2 -0
  236. package/dist/tools/dimension-management/create-dimension.js +22 -0
  237. package/dist/tools/dimension-management/create-element-attribute.d.ts +2 -0
  238. package/dist/tools/dimension-management/create-element-attribute.js +26 -0
  239. package/dist/tools/dimension-management/create-element.d.ts +2 -0
  240. package/dist/tools/dimension-management/create-element.js +31 -0
  241. package/dist/tools/dimension-management/create-hierarchy.d.ts +2 -0
  242. package/dist/tools/dimension-management/create-hierarchy.js +22 -0
  243. package/dist/tools/dimension-management/delete-dimension.d.ts +2 -0
  244. package/dist/tools/dimension-management/delete-dimension.js +25 -0
  245. package/dist/tools/dimension-management/delete-element.d.ts +2 -0
  246. package/dist/tools/dimension-management/delete-element.js +26 -0
  247. package/dist/tools/dimension-management/delete-elements.d.ts +2 -0
  248. package/dist/tools/dimension-management/delete-elements.js +44 -0
  249. package/dist/tools/dimension-management/delete-hierarchy.d.ts +2 -0
  250. package/dist/tools/dimension-management/delete-hierarchy.js +35 -0
  251. package/dist/tools/dimension-management/get-element-attribute-values.d.ts +2 -0
  252. package/dist/tools/dimension-management/get-element-attribute-values.js +77 -0
  253. package/dist/tools/dimension-management/list-element-attributes.d.ts +2 -0
  254. package/dist/tools/dimension-management/list-element-attributes.js +31 -0
  255. package/dist/tools/dimension-management/move-element.d.ts +2 -0
  256. package/dist/tools/dimension-management/move-element.js +28 -0
  257. package/dist/tools/dimension-management/update-element-attribute-value.d.ts +2 -0
  258. package/dist/tools/dimension-management/update-element-attribute-value.js +80 -0
  259. package/dist/tools/dimension-management/update-element.d.ts +2 -0
  260. package/dist/tools/dimension-management/update-element.js +35 -0
  261. package/dist/tools/error-format.d.ts +22 -0
  262. package/dist/tools/error-format.js +130 -0
  263. package/dist/tools/fileops/delete-file.d.ts +2 -0
  264. package/dist/tools/fileops/delete-file.js +32 -0
  265. package/dist/tools/fileops/get-file-content.d.ts +2 -0
  266. package/dist/tools/fileops/get-file-content.js +76 -0
  267. package/dist/tools/fileops/list-files.d.ts +2 -0
  268. package/dist/tools/fileops/list-files.js +43 -0
  269. package/dist/tools/fileops/search-files.d.ts +2 -0
  270. package/dist/tools/fileops/search-files.js +76 -0
  271. package/dist/tools/fileops/upload-file.d.ts +2 -0
  272. package/dist/tools/fileops/upload-file.js +69 -0
  273. package/dist/tools/format.d.ts +57 -0
  274. package/dist/tools/format.js +157 -0
  275. package/dist/tools/hierarchy.d.ts +6 -0
  276. package/dist/tools/hierarchy.js +27 -0
  277. package/dist/tools/index.d.ts +4 -0
  278. package/dist/tools/index.js +263 -0
  279. package/dist/tools/local-file.d.ts +16 -0
  280. package/dist/tools/local-file.js +88 -0
  281. package/dist/tools/metadata/get-ancestors.d.ts +2 -0
  282. package/dist/tools/metadata/get-ancestors.js +36 -0
  283. package/dist/tools/metadata/get-descendants.d.ts +2 -0
  284. package/dist/tools/metadata/get-descendants.js +64 -0
  285. package/dist/tools/metadata/get-hierarchy.d.ts +2 -0
  286. package/dist/tools/metadata/get-hierarchy.js +130 -0
  287. package/dist/tools/metadata/list-chores.d.ts +2 -0
  288. package/dist/tools/metadata/list-chores.js +62 -0
  289. package/dist/tools/metadata/list-cubes.d.ts +2 -0
  290. package/dist/tools/metadata/list-cubes.js +128 -0
  291. package/dist/tools/metadata/list-dimensions.d.ts +2 -0
  292. package/dist/tools/metadata/list-dimensions.js +131 -0
  293. package/dist/tools/metadata/list-processes-grouped.d.ts +2 -0
  294. package/dist/tools/metadata/list-processes-grouped.js +96 -0
  295. package/dist/tools/metadata/list-processes.d.ts +2 -0
  296. package/dist/tools/metadata/list-processes.js +108 -0
  297. package/dist/tools/metadata/resolve-default-members.d.ts +2 -0
  298. package/dist/tools/metadata/resolve-default-members.js +46 -0
  299. package/dist/tools/model-building/check-cube-rule.d.ts +2 -0
  300. package/dist/tools/model-building/check-cube-rule.js +51 -0
  301. package/dist/tools/model-building/clear-cube.d.ts +2 -0
  302. package/dist/tools/model-building/clear-cube.js +46 -0
  303. package/dist/tools/model-building/create-cube.d.ts +2 -0
  304. package/dist/tools/model-building/create-cube.js +34 -0
  305. package/dist/tools/model-building/delete-cube.d.ts +2 -0
  306. package/dist/tools/model-building/delete-cube.js +27 -0
  307. package/dist/tools/model-building/get-all-cube-rules.d.ts +2 -0
  308. package/dist/tools/model-building/get-all-cube-rules.js +149 -0
  309. package/dist/tools/model-building/get-cube-rules.d.ts +2 -0
  310. package/dist/tools/model-building/get-cube-rules.js +69 -0
  311. package/dist/tools/model-building/rules-source.d.ts +21 -0
  312. package/dist/tools/model-building/rules-source.js +49 -0
  313. package/dist/tools/model-building/search-rules.d.ts +2 -0
  314. package/dist/tools/model-building/search-rules.js +132 -0
  315. package/dist/tools/model-building/set-cube-rules.d.ts +2 -0
  316. package/dist/tools/model-building/set-cube-rules.js +81 -0
  317. package/dist/tools/model-building/unload-cube.d.ts +2 -0
  318. package/dist/tools/model-building/unload-cube.js +23 -0
  319. package/dist/tools/operations/diagnose-process-error.d.ts +2 -0
  320. package/dist/tools/operations/diagnose-process-error.js +178 -0
  321. package/dist/tools/operations/error-log-helpers.d.ts +25 -0
  322. package/dist/tools/operations/error-log-helpers.js +57 -0
  323. package/dist/tools/operations/get-audit-log.d.ts +2 -0
  324. package/dist/tools/operations/get-audit-log.js +70 -0
  325. package/dist/tools/operations/get-cube-stats.d.ts +2 -0
  326. package/dist/tools/operations/get-cube-stats.js +107 -0
  327. package/dist/tools/operations/get-error-log-content.d.ts +2 -0
  328. package/dist/tools/operations/get-error-log-content.js +164 -0
  329. package/dist/tools/operations/get-jobs.d.ts +3 -0
  330. package/dist/tools/operations/get-jobs.js +51 -0
  331. package/dist/tools/operations/get-message-log.d.ts +2 -0
  332. package/dist/tools/operations/get-message-log.js +63 -0
  333. package/dist/tools/operations/get-server-info.d.ts +2 -0
  334. package/dist/tools/operations/get-server-info.js +180 -0
  335. package/dist/tools/operations/get-server-state.d.ts +2 -0
  336. package/dist/tools/operations/get-server-state.js +129 -0
  337. package/dist/tools/operations/get-sessions.d.ts +2 -0
  338. package/dist/tools/operations/get-sessions.js +76 -0
  339. package/dist/tools/operations/get-threads.d.ts +3 -0
  340. package/dist/tools/operations/get-threads.js +50 -0
  341. package/dist/tools/operations/get-transaction-log.d.ts +2 -0
  342. package/dist/tools/operations/get-transaction-log.js +63 -0
  343. package/dist/tools/operations/list-error-logs.d.ts +8 -0
  344. package/dist/tools/operations/list-error-logs.js +157 -0
  345. package/dist/tools/operations/save-data.d.ts +2 -0
  346. package/dist/tools/operations/save-data.js +50 -0
  347. package/dist/tools/pagination.d.ts +32 -0
  348. package/dist/tools/pagination.js +116 -0
  349. package/dist/tools/scheduling/create-chore.d.ts +2 -0
  350. package/dist/tools/scheduling/create-chore.js +93 -0
  351. package/dist/tools/scheduling/delete-chore.d.ts +2 -0
  352. package/dist/tools/scheduling/delete-chore.js +22 -0
  353. package/dist/tools/scheduling/execute-chore.d.ts +2 -0
  354. package/dist/tools/scheduling/execute-chore.js +52 -0
  355. package/dist/tools/scheduling/toggle-chore.d.ts +2 -0
  356. package/dist/tools/scheduling/toggle-chore.js +22 -0
  357. package/dist/tools/scheduling/update-chore.d.ts +2 -0
  358. package/dist/tools/scheduling/update-chore.js +71 -0
  359. package/dist/tools/schemas/common.d.ts +10 -0
  360. package/dist/tools/schemas/common.js +23 -0
  361. package/dist/tools/schemas/items-analysis.d.ts +394 -0
  362. package/dist/tools/schemas/items-analysis.js +419 -0
  363. package/dist/tools/schemas/items-cells.d.ts +70 -0
  364. package/dist/tools/schemas/items-cells.js +65 -0
  365. package/dist/tools/schemas/items-common.d.ts +18 -0
  366. package/dist/tools/schemas/items-common.js +39 -0
  367. package/dist/tools/schemas/items-fileops.d.ts +11 -0
  368. package/dist/tools/schemas/items-fileops.js +13 -0
  369. package/dist/tools/schemas/items-metadata.d.ts +262 -0
  370. package/dist/tools/schemas/items-metadata.js +184 -0
  371. package/dist/tools/schemas/items-monitoring.d.ts +79 -0
  372. package/dist/tools/schemas/items-monitoring.js +78 -0
  373. package/dist/tools/schemas/items-processes.d.ts +279 -0
  374. package/dist/tools/schemas/items-processes.js +235 -0
  375. package/dist/tools/schemas/items-scheduling.d.ts +25 -0
  376. package/dist/tools/schemas/items-scheduling.js +26 -0
  377. package/dist/tools/schemas/items-security.d.ts +19 -0
  378. package/dist/tools/schemas/items-security.js +12 -0
  379. package/dist/tools/schemas/items-subsets.d.ts +2 -0
  380. package/dist/tools/schemas/items-subsets.js +4 -0
  381. package/dist/tools/schemas/items-views.d.ts +38 -0
  382. package/dist/tools/schemas/items-views.js +26 -0
  383. package/dist/tools/schemas/items.d.ts +12 -0
  384. package/dist/tools/schemas/items.js +23 -0
  385. package/dist/tools/schemas/markdown-capable.d.ts +21 -0
  386. package/dist/tools/schemas/markdown-capable.js +58 -0
  387. package/dist/tools/schemas/output-schema.d.ts +24 -0
  388. package/dist/tools/schemas/output-schema.js +25 -0
  389. package/dist/tools/security/assign-client-group.d.ts +2 -0
  390. package/dist/tools/security/assign-client-group.js +20 -0
  391. package/dist/tools/security/create-client.d.ts +2 -0
  392. package/dist/tools/security/create-client.js +28 -0
  393. package/dist/tools/security/delete-client.d.ts +2 -0
  394. package/dist/tools/security/delete-client.js +22 -0
  395. package/dist/tools/security/get-client.d.ts +2 -0
  396. package/dist/tools/security/get-client.js +20 -0
  397. package/dist/tools/security/list-clients.d.ts +2 -0
  398. package/dist/tools/security/list-clients.js +86 -0
  399. package/dist/tools/security/list-groups.d.ts +2 -0
  400. package/dist/tools/security/list-groups.js +43 -0
  401. package/dist/tools/security/remove-client-group.d.ts +2 -0
  402. package/dist/tools/security/remove-client-group.js +27 -0
  403. package/dist/tools/security/update-client.d.ts +2 -0
  404. package/dist/tools/security/update-client.js +22 -0
  405. package/dist/tools/subsets/create-subset.d.ts +2 -0
  406. package/dist/tools/subsets/create-subset.js +44 -0
  407. package/dist/tools/subsets/delete-subset.d.ts +2 -0
  408. package/dist/tools/subsets/delete-subset.js +26 -0
  409. package/dist/tools/subsets/get-subset.d.ts +2 -0
  410. package/dist/tools/subsets/get-subset.js +29 -0
  411. package/dist/tools/subsets/list-subsets.d.ts +2 -0
  412. package/dist/tools/subsets/list-subsets.js +36 -0
  413. package/dist/tools/subsets/update-subset.d.ts +2 -0
  414. package/dist/tools/subsets/update-subset.js +33 -0
  415. package/dist/tools/ti-development/check-process-code.d.ts +2 -0
  416. package/dist/tools/ti-development/check-process-code.js +96 -0
  417. package/dist/tools/ti-development/compile-process.d.ts +2 -0
  418. package/dist/tools/ti-development/compile-process.js +32 -0
  419. package/dist/tools/ti-development/copy-process.d.ts +2 -0
  420. package/dist/tools/ti-development/copy-process.js +32 -0
  421. package/dist/tools/ti-development/delete-process.d.ts +2 -0
  422. package/dist/tools/ti-development/delete-process.js +26 -0
  423. package/dist/tools/ti-development/diff-process-with-file.d.ts +2 -0
  424. package/dist/tools/ti-development/diff-process-with-file.js +208 -0
  425. package/dist/tools/ti-development/diff-processes.d.ts +2 -0
  426. package/dist/tools/ti-development/diff-processes.js +312 -0
  427. package/dist/tools/ti-development/execute-process.d.ts +8 -0
  428. package/dist/tools/ti-development/execute-process.js +109 -0
  429. package/dist/tools/ti-development/export-process-to-git.d.ts +2 -0
  430. package/dist/tools/ti-development/export-process-to-git.js +113 -0
  431. package/dist/tools/ti-development/export-process-to-pro.d.ts +2 -0
  432. package/dist/tools/ti-development/export-process-to-pro.js +117 -0
  433. package/dist/tools/ti-development/get-all-processes-code.d.ts +2 -0
  434. package/dist/tools/ti-development/get-all-processes-code.js +131 -0
  435. package/dist/tools/ti-development/get-process-code.d.ts +2 -0
  436. package/dist/tools/ti-development/get-process-code.js +100 -0
  437. package/dist/tools/ti-development/get-process-datasource.d.ts +2 -0
  438. package/dist/tools/ti-development/get-process-datasource.js +20 -0
  439. package/dist/tools/ti-development/get-process-parameters.d.ts +2 -0
  440. package/dist/tools/ti-development/get-process-parameters.js +25 -0
  441. package/dist/tools/ti-development/get-process-variables.d.ts +2 -0
  442. package/dist/tools/ti-development/get-process-variables.js +38 -0
  443. package/dist/tools/ti-development/get-process.d.ts +2 -0
  444. package/dist/tools/ti-development/get-process.js +163 -0
  445. package/dist/tools/ti-development/import-pro-file.d.ts +2 -0
  446. package/dist/tools/ti-development/import-pro-file.js +153 -0
  447. package/dist/tools/ti-development/import-process-from-git.d.ts +2 -0
  448. package/dist/tools/ti-development/import-process-from-git.js +198 -0
  449. package/dist/tools/ti-development/install-pro-bundle.d.ts +2 -0
  450. package/dist/tools/ti-development/install-pro-bundle.js +288 -0
  451. package/dist/tools/ti-development/preflight.d.ts +39 -0
  452. package/dist/tools/ti-development/preflight.js +56 -0
  453. package/dist/tools/ti-development/process-backup.d.ts +29 -0
  454. package/dist/tools/ti-development/process-backup.js +118 -0
  455. package/dist/tools/ti-development/search-code.d.ts +2 -0
  456. package/dist/tools/ti-development/search-code.js +208 -0
  457. package/dist/tools/ti-development/upsert-process.d.ts +2 -0
  458. package/dist/tools/ti-development/upsert-process.js +167 -0
  459. package/dist/tools/ti-development/validate-process-refs.d.ts +2 -0
  460. package/dist/tools/ti-development/validate-process-refs.js +73 -0
  461. package/dist/tools/views/create-mdx-view.d.ts +2 -0
  462. package/dist/tools/views/create-mdx-view.js +21 -0
  463. package/dist/tools/views/create-native-view.d.ts +2 -0
  464. package/dist/tools/views/create-native-view.js +81 -0
  465. package/dist/tools/views/delete-view.d.ts +2 -0
  466. package/dist/tools/views/delete-view.js +23 -0
  467. package/dist/tools/views/list-views.d.ts +2 -0
  468. package/dist/tools/views/list-views.js +32 -0
  469. package/dist/tools/with-annotations.d.ts +6 -0
  470. package/dist/tools/with-annotations.js +339 -0
  471. package/dist/types.d.ts +409 -0
  472. package/dist/types.js +91 -0
  473. package/dist/version.d.ts +4 -0
  474. package/dist/version.js +18 -0
  475. package/package.json +107 -0
@@ -0,0 +1,33 @@
1
+ import { z } from "zod";
2
+ import { actionResponse } from "../format.js";
3
+ import { IDEMPOTENT_WRITE } from "../annotations.js";
4
+ import { MutationResultSchema } from "../schemas/items.js";
5
+ import { defineTool } from "../define-tool.js";
6
+ import { HIERARCHY_NAME_OPTIONAL, resolveHierarchy } from "../hierarchy.js";
7
+ export const registerUpdateSubset = defineTool({
8
+ name: "tm1_update_subset",
9
+ description: "Update a public TM1 subset (partial). Pass expression to replace the MDX, or elements to switch the subset to a static list (resets Expression to ''). Pass alias to change the alias attribute.",
10
+ annotations: IDEMPOTENT_WRITE,
11
+ output: MutationResultSchema,
12
+ input: {
13
+ dimensionName: z.string().describe("Dimension name"),
14
+ ...HIERARCHY_NAME_OPTIONAL,
15
+ subsetName: z.string().describe("Existing subset name"),
16
+ expression: z.string().optional().describe("New MDX expression"),
17
+ elements: z
18
+ .array(z.string())
19
+ .optional()
20
+ .describe("New static element list (clears MDX)"),
21
+ alias: z.string().optional().describe("New alias attribute"),
22
+ },
23
+ handler: async ({ dimensionName, hierarchyName, subsetName, expression, elements, alias }, tm1Client) => {
24
+ const hierarchy = resolveHierarchy(dimensionName, hierarchyName);
25
+ await tm1Client.subsets.update(dimensionName, hierarchy, subsetName, {
26
+ expression,
27
+ elements,
28
+ alias,
29
+ });
30
+ return actionResponse({ success: true, subsetName });
31
+ },
32
+ });
33
+ //# sourceMappingURL=update-subset.js.map
@@ -0,0 +1,2 @@
1
+ export declare const registerCheckProcessCode: import("../define-tool.js").ToolRegistrar;
2
+ //# sourceMappingURL=check-process-code.d.ts.map
@@ -0,0 +1,96 @@
1
+ import { z } from "zod";
2
+ import { TM1ErrorCode } from "../../types.js";
3
+ import { parameterSchema, variableSchema, dataSourceSchema, } from "../../lib/process-parts-schema.js";
4
+ import { CompileErrorSchema } from "../schemas/items.js";
5
+ import { READ_ONLY } from "../annotations.js";
6
+ import { defineTool } from "../define-tool.js";
7
+ export const registerCheckProcessCode = defineTool({
8
+ name: "tm1_check_process_code",
9
+ description: [
10
+ "Validate TI process code WITHOUT saving it on the server (POST /api/v1/CompileProcess unbound).",
11
+ "Pre-flight check before tm1_upsert_process to avoid create-with-rollback patterns.",
12
+ "Returns 'valid' or a list of syntax errors with procedure (Prolog/Metadata/Data/Epilog) and line number.",
13
+ "Omitted tabs are validated as EMPTY: the result covers only tabsChecked, and partial=true says the check did not see a whole process — validate every tab you will install.",
14
+ ],
15
+ annotations: READ_ONLY,
16
+ output: {
17
+ ok: z.boolean(),
18
+ processName: z.string(),
19
+ errorCount: z.number().int(),
20
+ errors: z.array(CompileErrorSchema),
21
+ tabsChecked: z.array(z.string()),
22
+ partial: z.boolean(),
23
+ },
24
+ input: {
25
+ processName: z
26
+ .string()
27
+ .optional()
28
+ .describe("Process name used in the synthetic body (no save). Default '_compile_check'."),
29
+ prolog: z.string().optional().describe("Prolog tab TI code"),
30
+ metadata: z.string().optional().describe("Metadata tab TI code"),
31
+ data: z.string().optional().describe("Data tab TI code"),
32
+ epilog: z.string().optional().describe("Epilog tab TI code"),
33
+ parameters: z
34
+ .array(parameterSchema)
35
+ .optional()
36
+ .describe("TI parameters (Name, Type, defaultValue, optional Prompt). When omitted and baseProcess is set, inherited from baseProcess."),
37
+ variables: z
38
+ .array(variableSchema)
39
+ .optional()
40
+ .describe("TI variables (column mapping for ASCII/ODBC). When omitted and baseProcess is set, inherited from baseProcess."),
41
+ dataSource: dataSourceSchema
42
+ .optional()
43
+ .describe("DataSource config — defaults to { type: 'None' } when omitted"),
44
+ baseProcess: z
45
+ .string()
46
+ .optional()
47
+ .describe("Existing process name to inherit parameters and variables from. Prevents 'undefined parameter' compile errors when validating code that references params defined on the saved process. Explicit parameters/variables override the inherited values."),
48
+ },
49
+ handler: async ({ processName, prolog, metadata, data, epilog, parameters, variables, dataSource, baseProcess, }, tm1Client) => {
50
+ let resolvedParams = parameters;
51
+ let resolvedVars = variables;
52
+ if (baseProcess) {
53
+ if (!resolvedParams)
54
+ resolvedParams = await tm1Client.processes.getParameters(baseProcess);
55
+ if (!resolvedVars)
56
+ resolvedVars = await tm1Client.processes.getVariables(baseProcess);
57
+ }
58
+ const result = await tm1Client.processes.check({
59
+ ...(processName !== undefined ? { name: processName } : {}),
60
+ ...(prolog !== undefined ? { prolog } : {}),
61
+ ...(metadata !== undefined ? { metadata } : {}),
62
+ ...(data !== undefined ? { data } : {}),
63
+ ...(epilog !== undefined ? { epilog } : {}),
64
+ ...(resolvedParams !== undefined ? { parameters: resolvedParams } : {}),
65
+ ...(resolvedVars !== undefined ? { variables: resolvedVars } : {}),
66
+ ...(dataSource !== undefined ? { dataSource: dataSource } : {}),
67
+ });
68
+ // Syntax errors are the expected output of a validator, so the failure
69
+ // payload carries its own code/message/hint — otherwise the isError
70
+ // normalizer stamps a generic TM1_ERROR envelope over it.
71
+ // Omitted tabs compile as empty, so a clean result on a fragment says
72
+ // nothing about the tabs that were left out — report what was covered.
73
+ const provided = { prolog, metadata, data, epilog };
74
+ const tabsChecked = Object.keys(provided).filter((t) => provided[t] !== undefined);
75
+ const payload = {
76
+ ok: result.success,
77
+ processName: processName ?? "_compile_check",
78
+ errorCount: result.errors.length,
79
+ errors: result.errors,
80
+ tabsChecked,
81
+ partial: tabsChecked.length < 4,
82
+ ...(result.success
83
+ ? {}
84
+ : {
85
+ code: TM1ErrorCode.VALIDATION_ERROR,
86
+ message: `TI syntax check failed: ${result.errors.length} error(s)`,
87
+ hint: "Nothing was saved. Fix the lines listed in errors[] (procedure + lineNumber) and re-run tm1_check_process_code before tm1_upsert_process.",
88
+ }),
89
+ };
90
+ return {
91
+ isError: !result.success || undefined,
92
+ content: [{ type: "text", text: JSON.stringify(payload) }],
93
+ };
94
+ },
95
+ });
96
+ //# sourceMappingURL=check-process-code.js.map
@@ -0,0 +1,2 @@
1
+ export declare const registerCompileProcess: import("../define-tool.js").ToolRegistrar;
2
+ //# sourceMappingURL=compile-process.d.ts.map
@@ -0,0 +1,32 @@
1
+ import { z } from "zod";
2
+ import { CompileErrorSchema } from "../schemas/items.js";
3
+ import { READ_ONLY } from "../annotations.js";
4
+ import { defineTool } from "../define-tool.js";
5
+ export const registerCompileProcess = defineTool({
6
+ name: "tm1_compile_process",
7
+ description: "Compile a TI process to validate its syntax without executing it. Returns compile errors with line numbers and procedure (Prolog/Metadata/Data/Epilog) when present.",
8
+ annotations: READ_ONLY,
9
+ output: {
10
+ ok: z.boolean(),
11
+ processName: z.string(),
12
+ errorCount: z.number().int(),
13
+ errors: z.array(CompileErrorSchema),
14
+ },
15
+ input: {
16
+ processName: z.string().describe("TI process name to compile"),
17
+ },
18
+ handler: async ({ processName }, tm1Client) => {
19
+ const result = await tm1Client.processes.compile(processName);
20
+ const payload = {
21
+ ok: result.success,
22
+ processName,
23
+ errorCount: result.errors.length,
24
+ errors: result.errors,
25
+ };
26
+ return {
27
+ isError: !result.success || undefined,
28
+ content: [{ type: "text", text: JSON.stringify(payload) }],
29
+ };
30
+ },
31
+ });
32
+ //# sourceMappingURL=compile-process.js.map
@@ -0,0 +1,2 @@
1
+ export declare const registerCopyProcess: import("../define-tool.js").ToolRegistrar;
2
+ //# sourceMappingURL=copy-process.d.ts.map
@@ -0,0 +1,32 @@
1
+ import { z } from "zod";
2
+ import { actionResponse } from "../format.js";
3
+ import { CopyProcessResultSchema } from "../schemas/items.js";
4
+ import { WRITE } from "../annotations.js";
5
+ import { defineTool } from "../define-tool.js";
6
+ import { TM1Error, TM1ErrorCode } from "../../types.js";
7
+ export const registerCopyProcess = defineTool({
8
+ name: "tm1_copy_process",
9
+ description: "Copy a TI process to a new name. Carries over code, parameters, variables, datasource and the " +
10
+ "UI-only state — including which datasource columns are set to Ignore. Never overwrites: an existing targetName fails with CONFLICT.",
11
+ annotations: WRITE,
12
+ output: CopyProcessResultSchema,
13
+ input: {
14
+ sourceName: z.string().describe("Name of the source TI process"),
15
+ targetName: z.string().describe("Name for the new copy"),
16
+ },
17
+ handler: async ({ sourceName, targetName }, tm1Client) => {
18
+ // TM1 refuses the POST itself ("already exists", 400) and leaves the
19
+ // target untouched — verified live on 11.8. Checking first turns that
20
+ // generic 400 into a CONFLICT that says what to do.
21
+ if (await tm1Client.processes.exists(targetName)) {
22
+ throw new TM1Error({
23
+ code: TM1ErrorCode.CONFLICT,
24
+ message: `Process '${targetName}' already exists; copy_process never overwrites.`,
25
+ hint: "Pick a new targetName, or deploy onto the existing process with tm1_upsert_process.",
26
+ });
27
+ }
28
+ await tm1Client.processes.copy(sourceName, targetName);
29
+ return actionResponse({ success: true, sourceName, targetName });
30
+ },
31
+ });
32
+ //# sourceMappingURL=copy-process.js.map
@@ -0,0 +1,2 @@
1
+ export declare const registerDeleteProcess: import("../define-tool.js").ToolRegistrar;
2
+ //# sourceMappingURL=delete-process.d.ts.map
@@ -0,0 +1,26 @@
1
+ import { z } from "zod";
2
+ import { actionResponse } from "../format.js";
3
+ import { CONFIRM_SCHEMA, requireConfirm } from "../confirm.js";
4
+ import { DESTRUCTIVE } from "../annotations.js";
5
+ import { MutationResultSchema } from "../schemas/items.js";
6
+ import { defineTool } from "../define-tool.js";
7
+ export const registerDeleteProcess = defineTool({
8
+ name: "tm1_delete_process",
9
+ description: [
10
+ "Delete a TurboIntegrator process from the TM1 server.",
11
+ "Irreversible. Safety: pass confirm=<process name verbatim>. Mismatched confirm rejects the call.",
12
+ "Before: tm1_analyze_object_usage to find chores or other processes that reference it; tm1_analyze_chore_graph to confirm no chore depends on it.",
13
+ ],
14
+ annotations: DESTRUCTIVE,
15
+ output: MutationResultSchema,
16
+ input: {
17
+ processName: z.string().describe("Name of the TI process to delete"),
18
+ ...CONFIRM_SCHEMA,
19
+ },
20
+ handler: async ({ processName, confirm }, tm1Client) => {
21
+ requireConfirm(confirm, processName, "process");
22
+ await tm1Client.processes.delete(processName);
23
+ return actionResponse({ success: true, processName });
24
+ },
25
+ });
26
+ //# sourceMappingURL=delete-process.js.map
@@ -0,0 +1,2 @@
1
+ export declare const registerDiffProcessWithFile: import("../define-tool.js").ToolRegistrar;
2
+ //# sourceMappingURL=diff-process-with-file.d.ts.map
@@ -0,0 +1,208 @@
1
+ import { promises as fs } from "node:fs";
2
+ import { resolveLocalPath } from "../local-file.js";
3
+ import { z } from "zod";
4
+ import { TM1Error, TM1ErrorCode } from "../../types.js";
5
+ import { parseProFile } from "../../lib/pro-parser.js";
6
+ import { ignoredColumnsOf } from "../../lib/variables-ui-data.js";
7
+ import { maskCode, resolveMaskSecrets } from "../../lib/mask-secrets.js";
8
+ import { DiffProcessResultSchema } from "../schemas/items.js";
9
+ import { READ_ONLY, withVersion } from "../annotations.js";
10
+ import { defineTool } from "../define-tool.js";
11
+ function tabDiff(name, installed, file) {
12
+ const norm = (s) => s.replace(/\r\n/g, "\n").trimEnd();
13
+ return {
14
+ tab: name,
15
+ installedLines: norm(installed).split("\n").length,
16
+ fileLines: norm(file).split("\n").length,
17
+ identical: norm(installed) === norm(file),
18
+ };
19
+ }
20
+ function diffParams(installed, file) {
21
+ const map = (arr) => new Map(arr.map((p) => [p.name, p]));
22
+ const a = map(installed);
23
+ const b = map(file);
24
+ const added = [];
25
+ const removed = [];
26
+ const changed = [];
27
+ for (const [name, fp] of b) {
28
+ const ip = a.get(name);
29
+ if (!ip) {
30
+ added.push(name);
31
+ }
32
+ else if (ip.type !== fp.type ||
33
+ String(ip.defaultValue ?? "") !== String(fp.defaultValue ?? "") ||
34
+ (ip.prompt ?? "") !== (fp.prompt ?? "")) {
35
+ changed.push({ name, installed: ip, file: fp });
36
+ }
37
+ }
38
+ for (const name of a.keys()) {
39
+ if (!b.has(name))
40
+ removed.push(name);
41
+ }
42
+ return { added, removed, changed };
43
+ }
44
+ function diffVars(installed, file) {
45
+ const map = (arr) => new Map(arr.map((v) => [v.name, v]));
46
+ const a = map(installed);
47
+ const b = map(file);
48
+ const added = [];
49
+ const removed = [];
50
+ const changed = [];
51
+ for (const [name, fv] of b) {
52
+ const iv = a.get(name);
53
+ if (!iv)
54
+ added.push(name);
55
+ else if (iv.type !== fv.type || iv.position !== fv.position) {
56
+ changed.push({ name, installed: iv, file: fv });
57
+ }
58
+ }
59
+ for (const name of a.keys())
60
+ if (!b.has(name))
61
+ removed.push(name);
62
+ return { added, removed, changed };
63
+ }
64
+ // A column set to "Ignore" has no variable, so diffVars cannot see it: without
65
+ // this the .pro and the installed process look identical even when they skip
66
+ // different columns.
67
+ function diffIgnoredColumns(installed, file) {
68
+ const a = new Map(installed.map((c) => [c.position, c]));
69
+ const b = new Map(file.map((c) => [c.position, c]));
70
+ const added = [];
71
+ const removed = [];
72
+ const renamed = [];
73
+ for (const [position, fc] of b) {
74
+ const ic = a.get(position);
75
+ if (!ic) {
76
+ added.push(position);
77
+ continue;
78
+ }
79
+ if (ic.name !== fc.name)
80
+ renamed.push({
81
+ position,
82
+ ...(ic.name !== undefined ? { installed: ic.name } : {}),
83
+ ...(fc.name !== undefined ? { file: fc.name } : {}),
84
+ });
85
+ }
86
+ for (const position of a.keys())
87
+ if (!b.has(position))
88
+ removed.push(position);
89
+ return {
90
+ identical: added.length === 0 && removed.length === 0 && renamed.length === 0,
91
+ added,
92
+ removed,
93
+ renamed,
94
+ };
95
+ }
96
+ function diffDataSource(installed, file) {
97
+ const diffs = [];
98
+ if (installed.type !== file.type)
99
+ diffs.push(`type: ${installed.type} → ${file.type}`);
100
+ const fields = [
101
+ "dataSourceNameForServer",
102
+ "dataSourceNameForClient",
103
+ "asciiDelimiterChar",
104
+ "asciiQuoteCharacter",
105
+ "asciiDecimalSeparator",
106
+ "asciiThousandSeparator",
107
+ "asciiHeaderRecords",
108
+ "view",
109
+ "subset",
110
+ "userName",
111
+ // See diff-processes.ts: the ODBC query is substance, the password is noise.
112
+ "query",
113
+ ];
114
+ for (const f of fields) {
115
+ const a = installed[f];
116
+ const b = file[f];
117
+ if ((a ?? "") !== (b ?? ""))
118
+ diffs.push(`${String(f)}: ${JSON.stringify(a)} → ${JSON.stringify(b)}`);
119
+ }
120
+ return { identical: diffs.length === 0, differences: diffs };
121
+ }
122
+ export const registerDiffProcessWithFile = defineTool({
123
+ name: "tm1_diff_process_with_file",
124
+ description: "Compare an installed TI process on the server against a local .pro file. Returns per-tab identical flags + line counts, parameter diff (added/removed/changed), variable diff, and datasource diff. Use before tm1_import_pro_file to preview what will change.",
125
+ annotations: withVersion(READ_ONLY, "v11"),
126
+ output: DiffProcessResultSchema,
127
+ input: {
128
+ filePath: z
129
+ .string()
130
+ .optional()
131
+ .describe("Absolute path to the .pro file on the MCP server host. Disabled unless TM1_LOCAL_FILE_ROOT is set; the path must resolve within that directory. Otherwise pass 'content' inline."),
132
+ content: z.string().optional().describe("Raw .pro file content as string"),
133
+ processName: z
134
+ .string()
135
+ .optional()
136
+ .describe("Override process name. Default: from .pro 602 line."),
137
+ maskSecrets: z
138
+ .boolean()
139
+ .optional()
140
+ .default(true)
141
+ .describe("Redact credential literals on BOTH sides before diffing (so a cred present on only one side can't leak via the diff). " +
142
+ "Masks the password arg of ODBCOpen() and quoted values assigned to credential-named identifiers (pPwd, sToken, …). " +
143
+ "Default: true. Set false only when explicitly auditing credentials."),
144
+ },
145
+ handler: async ({ filePath, content, processName, maskSecrets }, tm1Client) => {
146
+ if (!filePath && !content) {
147
+ throw new TM1Error({
148
+ code: TM1ErrorCode.VALIDATION_ERROR,
149
+ message: "Provide filePath or content",
150
+ });
151
+ }
152
+ let body = content ?? "";
153
+ if (!body && filePath) {
154
+ body = await fs.readFile(resolveLocalPath(filePath), "utf8");
155
+ }
156
+ const parsed = parseProFile(body);
157
+ const name = processName ?? parsed.name;
158
+ if (!name) {
159
+ throw new TM1Error({
160
+ code: TM1ErrorCode.VALIDATION_ERROR,
161
+ message: "Process name not found in .pro and no override provided",
162
+ });
163
+ }
164
+ const [installedCode, installedParams, installedLayout, installedDs] = await Promise.all([
165
+ tm1Client.processes.getCode(name),
166
+ tm1Client.processes.getParameters(name),
167
+ tm1Client.processes.getVariableLayout(name),
168
+ tm1Client.processes.getDataSource(name),
169
+ ]);
170
+ const mask = resolveMaskSecrets(maskSecrets) ? maskCode : (s) => s;
171
+ const tabs = [
172
+ tabDiff("prolog", mask(installedCode.prolog), mask(parsed.prolog)),
173
+ tabDiff("metadata", mask(installedCode.metadata), mask(parsed.metadata)),
174
+ tabDiff("data", mask(installedCode.data), mask(parsed.data)),
175
+ tabDiff("epilog", mask(installedCode.epilog), mask(parsed.epilog)),
176
+ ];
177
+ const params = diffParams(installedParams, parsed.parameters);
178
+ const variables = diffVars(installedLayout.variables, parsed.variables);
179
+ const ignoredColumns = diffIgnoredColumns(installedLayout.ignoredColumns, ignoredColumnsOf(parsed.variablesUIData));
180
+ const dataSource = diffDataSource(installedDs, parsed.dataSource);
181
+ const allIdentical = tabs.every((t) => t.identical) &&
182
+ params.added.length === 0 &&
183
+ params.removed.length === 0 &&
184
+ params.changed.length === 0 &&
185
+ variables.added.length === 0 &&
186
+ variables.removed.length === 0 &&
187
+ variables.changed.length === 0 &&
188
+ ignoredColumns.identical &&
189
+ dataSource.identical;
190
+ return {
191
+ content: [
192
+ {
193
+ type: "text",
194
+ text: JSON.stringify({
195
+ processName: name,
196
+ identical: allIdentical,
197
+ tabs,
198
+ parameters: params,
199
+ variables,
200
+ ignoredColumns,
201
+ dataSource,
202
+ }, null, 2),
203
+ },
204
+ ],
205
+ };
206
+ },
207
+ });
208
+ //# sourceMappingURL=diff-process-with-file.js.map
@@ -0,0 +1,2 @@
1
+ export declare const registerDiffProcesses: import("../define-tool.js").ToolRegistrar;
2
+ //# sourceMappingURL=diff-processes.d.ts.map