@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,51 @@
1
+ import { z } from "zod";
2
+ import { PAGINATION_SCHEMA, paginate } from "../pagination.js";
3
+ import { actionResponse, FORMAT_SCHEMA, pageResponse, columnsOf, } from "../format.js";
4
+ import { DESTRUCTIVE, READ_ONLY } from "../annotations.js";
5
+ import { JobSchema, MutationResultSchema } from "../schemas/items.js";
6
+ import { defineTool } from "../define-tool.js";
7
+ import { pageShapeFor } from "../schemas/common.js";
8
+ // v12-only: Jobs replace v11 Threads as the "what is running" surface. On a v11
9
+ // connection these tools are not registered (thread tools are instead).
10
+ const registerListJobs = defineTool({
11
+ name: "tm1_list_jobs",
12
+ description: "List active jobs (Activity) on a TM1 v12 database — the running tasks that replaced v11 threads. Paginated (default 50/page). (v12 only)",
13
+ annotations: READ_ONLY,
14
+ enabled: (tm1Client) => tm1Client.version === 12,
15
+ output: pageShapeFor(JobSchema),
16
+ input: { ...PAGINATION_SCHEMA, ...FORMAT_SCHEMA },
17
+ handler: async ({ limit, offset, fetchAll, format }, tm1Client) => {
18
+ const jobs = await tm1Client.monitoring.getJobs();
19
+ const page = paginate(jobs, limit, offset, fetchAll);
20
+ const columns = columnsOf([
21
+ "id",
22
+ "description",
23
+ "state",
24
+ "elapsedTime",
25
+ ]);
26
+ return pageResponse(page, format, { title: "Jobs", columns });
27
+ },
28
+ });
29
+ const registerCancelJob = defineTool({
30
+ name: "tm1_cancel_job",
31
+ description: [
32
+ "Cancel a running TM1 v12 job by its ID. Use tm1_list_jobs to find the ID.",
33
+ "Non-idempotent: cancelling a finished job errors. Before: tm1_list_jobs to confirm the job is still running.",
34
+ "(v12 only)",
35
+ ],
36
+ annotations: DESTRUCTIVE,
37
+ enabled: (tm1Client) => tm1Client.version === 12,
38
+ output: MutationResultSchema,
39
+ input: {
40
+ jobId: z.string().describe("Job ID to cancel"),
41
+ },
42
+ handler: async ({ jobId }, tm1Client) => {
43
+ await tm1Client.monitoring.cancelJob(jobId);
44
+ return actionResponse({ success: true, jobId });
45
+ },
46
+ });
47
+ export const registerGetJobs = (server, tm1Client) => {
48
+ registerListJobs(server, tm1Client);
49
+ registerCancelJob(server, tm1Client);
50
+ };
51
+ //# sourceMappingURL=get-jobs.js.map
@@ -0,0 +1,2 @@
1
+ export declare const registerGetMessageLog: import("../define-tool.js").ToolRegistrar;
2
+ //# sourceMappingURL=get-message-log.d.ts.map
@@ -0,0 +1,63 @@
1
+ import { z } from "zod";
2
+ import { FORMAT_SCHEMA, payloadResponse, renderTable, columnsOf, } from "../format.js";
3
+ import { MessageLogEntrySchema } from "../schemas/items.js";
4
+ import { READ_ONLY, withVersion } from "../annotations.js";
5
+ import { defineTool } from "../define-tool.js";
6
+ export const registerGetMessageLog = defineTool({
7
+ name: "tm1_get_message_log",
8
+ description: "Fetch recent TM1 server message log entries, newest first. Useful for debugging TI process errors. The `filter`/`level`/`since` filters are applied SERVER-SIDE, so a matching entry is found even when it is older than the newest `top` rows (no false 'no error found'). When an entry references a TI error file, the parsed filename is surfaced as `errorFile` — pass it straight to tm1_get_error_log_content to read the failure detail. (v11 only)",
9
+ annotations: withVersion(READ_ONLY, "v11"),
10
+ // v12 deprecated MessageLogEntry/MessageLogEntries (and the MessageLog /
11
+ // TailMessageLog functions) in 12.0.0; all of them serve empty with no
12
+ // successor endpoint.
13
+ enabled: (tm1Client) => tm1Client.version === 11,
14
+ output: {
15
+ count: z.number().int(),
16
+ entries: z.array(MessageLogEntrySchema),
17
+ },
18
+ input: {
19
+ top: z
20
+ .number()
21
+ .int()
22
+ .min(1)
23
+ .max(500)
24
+ .optional()
25
+ .default(100)
26
+ .describe("Number of entries to fetch (default: 100, max: 500). Applied AFTER the filters, so a filter still finds older matches beyond the newest 500 rows."),
27
+ filter: z
28
+ .string()
29
+ .optional()
30
+ .describe("Optional text filter — only entries whose message contains this string are returned (case-insensitive). Pushed to the server, so matches older than `top` are found."),
31
+ level: z
32
+ .string()
33
+ .optional()
34
+ .describe("Optional exact level filter, e.g. 'ERROR', 'WARN', 'INFO'."),
35
+ since: z
36
+ .string()
37
+ .optional()
38
+ .describe("Only entries on or after this timestamp (UTC). Date '2026-06-01' or datetime '2026-06-01T00:00:00' (a 'Z' is added if missing)."),
39
+ until: z
40
+ .string()
41
+ .optional()
42
+ .describe("Only entries on or before this timestamp (UTC). Same format as since."),
43
+ ...FORMAT_SCHEMA,
44
+ },
45
+ handler: async ({ top, filter, level, since, until, format }, tm1Client) => {
46
+ const filtered = await tm1Client.server.getMessageLog({
47
+ top,
48
+ filter,
49
+ level,
50
+ since,
51
+ until,
52
+ });
53
+ const payload = { count: filtered.length, entries: filtered };
54
+ const columns = columnsOf([
55
+ "timestamp",
56
+ "level",
57
+ "message",
58
+ "errorFile",
59
+ ]);
60
+ return payloadResponse(payload, format, (p) => `## Message log\n\n${p.count} entries\n\n${renderTable(p.entries, columns)}`);
61
+ },
62
+ });
63
+ //# sourceMappingURL=get-message-log.js.map
@@ -0,0 +1,2 @@
1
+ export declare const registerGetServerInfo: import("../define-tool.js").ToolRegistrar;
2
+ //# sourceMappingURL=get-server-info.d.ts.map
@@ -0,0 +1,180 @@
1
+ import { FORMAT_SCHEMA, payloadResponse, renderKV } from "../format.js";
2
+ import { maskSecretsDeep } from "../../lib/mask-secrets.js";
3
+ import { READ_ONLY } from "../annotations.js";
4
+ import { ServerInfoSchema } from "../schemas/items.js";
5
+ import { defineTool } from "../define-tool.js";
6
+ import { NAME, VERSION } from "../../version.js";
7
+ // Pull a nested key path from the raw merged configuration. Returns undefined if any
8
+ // segment is missing — TM1 versions vary in which sections they expose.
9
+ function pick(extra, path) {
10
+ let node = extra;
11
+ for (const seg of path) {
12
+ if (node === null || node === undefined || typeof node !== "object")
13
+ return undefined;
14
+ node = node[seg];
15
+ }
16
+ return node;
17
+ }
18
+ export const registerGetServerInfo = defineTool({
19
+ name: "tm1_get_server_info",
20
+ description: [
21
+ "Return TM1 server identity + curated configuration (TI, Rules, MTQ, JobQueuing, Memory, Logging, HTTP, Security) from /Configuration + /ActiveConfiguration.",
22
+ "Use this instead of probing TI hacks (e.g. HierarchyCreate/Destroy) to detect feature support. Raw merged configuration is preserved under `_raw`.",
23
+ ],
24
+ annotations: READ_ONLY,
25
+ output: ServerInfoSchema,
26
+ input: { ...FORMAT_SCHEMA },
27
+ handler: async ({ format }, tm1Client) => {
28
+ const info = await tm1Client.server.getInfo();
29
+ const x = info.extra ?? {};
30
+ const payload = {
31
+ // The MCP server's own package identity, so a client can gate on it
32
+ // without parsing the initialize handshake.
33
+ mcpServer: { name: NAME, version: VERSION },
34
+ serverName: info.serverName,
35
+ productVersion: info.productVersion,
36
+ productEdition: info.productEdition,
37
+ adminHost: info.adminHost,
38
+ dataDirectory: info.dataDirectory,
39
+ timeZoneId: info.timeZoneId,
40
+ integratedSecurityMode: info.integratedSecurityMode,
41
+ modelling: {
42
+ enableNewHierarchyCreation: pick(x, [
43
+ "Modelling",
44
+ "EnableNewHierarchyCreation",
45
+ ]),
46
+ mdxSelectCalculatedMemberInputs: pick(x, [
47
+ "Modelling",
48
+ "MDXSelectCalculatedMemberInputs",
49
+ ]),
50
+ defaultMeasuresDimension: pick(x, [
51
+ "Modelling",
52
+ "DefaultMeasuresDimension",
53
+ ]),
54
+ userDefinedCalculations: pick(x, [
55
+ "Modelling",
56
+ "UserDefinedCalculations",
57
+ ]),
58
+ },
59
+ ti: {
60
+ maximumTILockObjects: pick(x, [
61
+ "Modelling",
62
+ "TI",
63
+ "MaximumTILockObjects",
64
+ ]),
65
+ enableTIDebugging: pick(x, ["Modelling", "TI", "EnableTIDebugging"]),
66
+ useExcelSerialDate: pick(x, ["Modelling", "TI", "UseExcelSerialDate"]),
67
+ },
68
+ rules: {
69
+ allowSeparateNandCRules: pick(x, [
70
+ "Modelling",
71
+ "Rules",
72
+ "AllowSeparateNandCRules",
73
+ ]),
74
+ automaticallyAddCubeDependencies: pick(x, [
75
+ "Modelling",
76
+ "Rules",
77
+ "AutomaticallyAddCubeDependencies",
78
+ ]),
79
+ rulesOverwriteCellsOnLoad: pick(x, [
80
+ "Modelling",
81
+ "Rules",
82
+ "RulesOverwriteCellsOnLoad",
83
+ ]),
84
+ forceReevaluationOfFeeders: pick(x, [
85
+ "Modelling",
86
+ "Rules",
87
+ "ForceReevaluationOfFeedersForFedCellsOnDataChange",
88
+ ]),
89
+ },
90
+ mtq: {
91
+ useAllThreads: pick(x, ["Performance", "MTQ", "UseAllThreads"]),
92
+ numberOfThreadsToUse: pick(x, [
93
+ "Performance",
94
+ "MTQ",
95
+ "NumberOfThreadsToUse",
96
+ ]),
97
+ singleCellConsolidation: pick(x, [
98
+ "Performance",
99
+ "MTQ",
100
+ "SingleCellConsolidation",
101
+ ]),
102
+ mtqQuery: pick(x, ["Performance", "MTQ", "MTQQuery"]),
103
+ mtFeeders: pick(x, ["Performance", "MTQ", "MTFeeders"]),
104
+ mtFeedersAtStartup: pick(x, [
105
+ "Performance",
106
+ "MTQ",
107
+ "MTFeedersAtStartup",
108
+ ]),
109
+ },
110
+ jobQueuing: {
111
+ enabled: pick(x, ["Performance", "JobQueuing", "Enable"]),
112
+ threadPoolSize: pick(x, [
113
+ "Performance",
114
+ "JobQueuing",
115
+ "ThreadPoolSize",
116
+ ]),
117
+ maxWaitTime: pick(x, ["Performance", "JobQueuing", "MaxWaitTime"]),
118
+ },
119
+ memory: {
120
+ maximumViewSizeMB: pick(x, [
121
+ "Performance",
122
+ "Memory",
123
+ "MaximumViewSizeMB",
124
+ ]),
125
+ maximumUserSandboxSizeMB: pick(x, [
126
+ "Performance",
127
+ "Memory",
128
+ "MaximumUserSandboxSizeMB",
129
+ ]),
130
+ disableSandboxing: pick(x, ["Administration", "DisableSandboxing"]) ??
131
+ pick(x, ["DisableSandboxing"]),
132
+ },
133
+ logging: {
134
+ loggingDirectory: pick(x, [
135
+ "Administration",
136
+ "DebugLog",
137
+ "LoggingDirectory",
138
+ ]),
139
+ auditLogEnabled: pick(x, ["Administration", "AuditLog", "Enable"]),
140
+ auditLogMaxKB: pick(x, [
141
+ "Administration",
142
+ "AuditLog",
143
+ "MaxFileSizeKilobytes",
144
+ ]),
145
+ performanceMonitorOn: pick(x, [
146
+ "Administration",
147
+ "PerformanceMonitorOn",
148
+ ]),
149
+ },
150
+ http: {
151
+ port: pick(x, ["Access", "HTTP", "Port"]),
152
+ sessionTimeout: pick(x, ["Access", "HTTP", "SessionTimeout"]),
153
+ requestEntityMaxKB: pick(x, [
154
+ "Access",
155
+ "HTTP",
156
+ "RequestEntityMaxSizeInKB",
157
+ ]),
158
+ },
159
+ security: {
160
+ sslEnabled: pick(x, ["Access", "SSL", "Enable"]),
161
+ securityPackageName: pick(x, [
162
+ "Access",
163
+ "Authentication",
164
+ "SecurityPackageName",
165
+ ]),
166
+ integratedSecurityMode: pick(x, [
167
+ "Access",
168
+ "Authentication",
169
+ "IntegratedSecurityMode",
170
+ ]),
171
+ ldapEnabled: pick(x, ["Access", "LDAP", "Enable"]),
172
+ },
173
+ // Mask credential-named values (e.g. Access.LDAP.Password) before the
174
+ // full raw config leaves the server — always on, no opt-out.
175
+ _raw: maskSecretsDeep(x),
176
+ };
177
+ return payloadResponse(payload, format, (p) => renderKV(p, "Server info"));
178
+ },
179
+ });
180
+ //# sourceMappingURL=get-server-info.js.map
@@ -0,0 +1,2 @@
1
+ export declare const registerGetServerState: import("../define-tool.js").ToolRegistrar;
2
+ //# sourceMappingURL=get-server-state.d.ts.map
@@ -0,0 +1,129 @@
1
+ import { FORMAT_SCHEMA, payloadResponse, renderKV } from "../format.js";
2
+ import { READ_ONLY } from "../annotations.js";
3
+ import { ServerStateResultSchema } from "../schemas/items.js";
4
+ import { defineTool } from "../define-tool.js";
5
+ // Pull a nested key path from the raw merged configuration.
6
+ function pick(extra, path) {
7
+ let node = extra;
8
+ for (const seg of path) {
9
+ if (node === null || node === undefined || typeof node !== "object")
10
+ return undefined;
11
+ node = node[seg];
12
+ }
13
+ return node;
14
+ }
15
+ /** A rejection reason is `any`; take its message only when there really is one. */
16
+ function reasonText(reason) {
17
+ if (reason instanceof Error)
18
+ return reason.message;
19
+ if (typeof reason === "object" && reason !== null) {
20
+ const message = reason.message;
21
+ if (typeof message === "string")
22
+ return message;
23
+ }
24
+ return String(reason);
25
+ }
26
+ function settleCount(res) {
27
+ if (res.status === "fulfilled")
28
+ return { count: res.value.length };
29
+ return {
30
+ count: null,
31
+ error: res.reason?.message ?? String(res.reason),
32
+ };
33
+ }
34
+ export const registerGetServerState = defineTool({
35
+ name: "tm1_get_server_state",
36
+ description: [
37
+ "Health-check style snapshot of the TM1 server in one call.",
38
+ "Returns: connection state, version, key capability flags (MTQ, JobQueuing, EnableNewHierarchyCreation),",
39
+ "and object counts for cubes, dimensions, processes, chores, and clients.",
40
+ "All fetches run in parallel; per-bucket failures are reported as count: null with an error message instead of failing the whole call.",
41
+ ],
42
+ annotations: READ_ONLY,
43
+ output: ServerStateResultSchema,
44
+ input: { ...FORMAT_SCHEMA },
45
+ handler: async ({ format }, tm1Client) => {
46
+ const [infoRes, cubesRes, dimsRes, procsRes, choresRes, clientsRes] = await Promise.allSettled([
47
+ tm1Client.server.getInfo(),
48
+ tm1Client.cubes.list(),
49
+ tm1Client.dimensions.list(),
50
+ tm1Client.processes.list(),
51
+ tm1Client.chores.list(),
52
+ tm1Client.security.listClients(),
53
+ ]);
54
+ const info = infoRes.status === "fulfilled" ? infoRes.value : null;
55
+ const x = info?.extra ?? {};
56
+ const counts = {
57
+ cubes: settleCount(cubesRes),
58
+ dimensions: settleCount(dimsRes),
59
+ processes: settleCount(procsRes),
60
+ chores: settleCount(choresRes),
61
+ clients: settleCount(clientsRes),
62
+ };
63
+ // OData silently returns empty arrays for objects the user cannot read.
64
+ // Detect implausible count combinations that signal security filtering.
65
+ const securityWarnings = [];
66
+ const dimCount = counts.dimensions.count;
67
+ if (dimCount !== null && dimCount > 0) {
68
+ if (counts.cubes.count === 0) {
69
+ securityWarnings.push(`0 cubes visible despite ${dimCount} dimensions — TM1 security is likely filtering cubes (user lacks READ rights). ` +
70
+ `Use tm1_list_cubes(includeControl: true) to verify, or check group membership with tm1_list_groups.`);
71
+ }
72
+ if (counts.processes.count === 0) {
73
+ securityWarnings.push(`0 processes visible despite ${dimCount} dimensions — TM1 security may be filtering processes.`);
74
+ }
75
+ }
76
+ if (counts.clients.count === null && counts.clients.error) {
77
+ securityWarnings.push(`Client list failed (${counts.clients.error}) — likely a non-admin session; some object counts may be filtered.`);
78
+ }
79
+ const state = {
80
+ connected: tm1Client.isConnected(),
81
+ server: info
82
+ ? {
83
+ name: info.serverName,
84
+ productVersion: info.productVersion,
85
+ dataDirectory: info.dataDirectory,
86
+ timeZoneId: info.timeZoneId,
87
+ }
88
+ : {
89
+ error: reasonText(infoRes.reason),
90
+ },
91
+ capabilities: info
92
+ ? {
93
+ enableNewHierarchyCreation: pick(x, [
94
+ "Modelling",
95
+ "EnableNewHierarchyCreation",
96
+ ]),
97
+ allowSeparateNandCRules: pick(x, [
98
+ "Modelling",
99
+ "Rules",
100
+ "AllowSeparateNandCRules",
101
+ ]),
102
+ mtqUseAllThreads: pick(x, ["Performance", "MTQ", "UseAllThreads"]),
103
+ mtqNumberOfThreads: pick(x, [
104
+ "Performance",
105
+ "MTQ",
106
+ "NumberOfThreadsToUse",
107
+ ]),
108
+ jobQueuingEnabled: pick(x, ["Performance", "JobQueuing", "Enable"]),
109
+ jobQueuingThreadPoolSize: pick(x, [
110
+ "Performance",
111
+ "JobQueuing",
112
+ "ThreadPoolSize",
113
+ ]),
114
+ disableSandboxing: pick(x, ["Administration", "DisableSandboxing"]) ??
115
+ pick(x, ["DisableSandboxing"]),
116
+ loggingDirectory: pick(x, [
117
+ "Administration",
118
+ "DebugLog",
119
+ "LoggingDirectory",
120
+ ]),
121
+ }
122
+ : null,
123
+ counts,
124
+ ...(securityWarnings.length > 0 && { securityWarnings }),
125
+ };
126
+ return payloadResponse(state, format, (s) => renderKV(s, "Server state"));
127
+ },
128
+ });
129
+ //# sourceMappingURL=get-server-state.js.map
@@ -0,0 +1,2 @@
1
+ export declare const registerGetSessions: import("../define-tool.js").ToolRegistrar;
2
+ //# sourceMappingURL=get-sessions.d.ts.map
@@ -0,0 +1,76 @@
1
+ import { z } from "zod";
2
+ import { PAGINATION_SCHEMA, paginate } from "../pagination.js";
3
+ import { FORMAT_SCHEMA, pageResponse, payloadResponse, columnsOf, } from "../format.js";
4
+ import { READ_ONLY } from "../annotations.js";
5
+ import { SessionSchema } from "../schemas/items.js";
6
+ import { defineTool } from "../define-tool.js";
7
+ import { pageShapeFor } from "../schemas/common.js";
8
+ export const registerGetSessions = defineTool({
9
+ name: "tm1_list_sessions",
10
+ description: [
11
+ "List active sessions on the TM1 server with their associated user and threads.",
12
+ "Pair monitoring tools — tm1_list_threads/tm1_cancel_thread on v11, tm1_list_jobs/tm1_cancel_job on v12 — to see who is connected and what they are running.",
13
+ "Paginated (default 50/page).",
14
+ ],
15
+ annotations: READ_ONLY,
16
+ output: {
17
+ ...pageShapeFor(SessionSchema),
18
+ summary: z
19
+ .object({
20
+ namedUsers: z.number().int(),
21
+ anonymousCount: z.number().int(),
22
+ })
23
+ .optional()
24
+ .describe("Present only when compact=true: aggregate headcount, items[] is empty in that mode"),
25
+ },
26
+ input: {
27
+ activeOnly: z
28
+ .boolean()
29
+ .optional()
30
+ .default(false)
31
+ .describe("If true, return only sessions flagged Active by the server (default: false — return all)"),
32
+ withThreads: z
33
+ .boolean()
34
+ .optional()
35
+ .default(true)
36
+ .describe("Include thread details per session (default: true)"),
37
+ compact: z
38
+ .boolean()
39
+ .optional()
40
+ .default(false)
41
+ .describe("Return summary only: { total, namedUsers, anonymousCount }. Skips pagination and per-session detail. Useful for a quick headcount without flooding context."),
42
+ ...PAGINATION_SCHEMA,
43
+ ...FORMAT_SCHEMA,
44
+ },
45
+ handler: async ({ activeOnly, withThreads, compact, limit, offset, fetchAll, format }, tm1Client) => {
46
+ const sessions = await tm1Client.monitoring.getSessions();
47
+ const filtered = activeOnly
48
+ ? sessions.filter((s) => s.active !== false)
49
+ : sessions;
50
+ if (compact) {
51
+ const namedUsers = filtered.filter((s) => s.user && s.user.trim() !== "").length;
52
+ const summary = {
53
+ total: filtered.length,
54
+ count: 0,
55
+ offset: 0,
56
+ has_more: false,
57
+ next_offset: null,
58
+ items: [],
59
+ summary: { namedUsers, anonymousCount: filtered.length - namedUsers },
60
+ };
61
+ return payloadResponse(summary, format, (p) => `## Sessions (compact)\n\n${p.total} total · ${p.summary.namedUsers} named users · ${p.summary.anonymousCount} anonymous`);
62
+ }
63
+ const projected = withThreads
64
+ ? filtered
65
+ : filtered.map((s) => ({ ...s, threads: [] }));
66
+ const page = paginate(projected, limit, offset, fetchAll);
67
+ const columns = columnsOf([
68
+ "id",
69
+ "user",
70
+ "active",
71
+ { header: "threads", get: (s) => s.threads?.length ?? 0 },
72
+ ]);
73
+ return pageResponse(page, format, { title: "Sessions", columns });
74
+ },
75
+ });
76
+ //# sourceMappingURL=get-sessions.js.map
@@ -0,0 +1,3 @@
1
+ import { type ToolRegistrar } from "../define-tool.js";
2
+ export declare const registerGetThreads: ToolRegistrar;
3
+ //# sourceMappingURL=get-threads.d.ts.map
@@ -0,0 +1,50 @@
1
+ import { z } from "zod";
2
+ import { PAGINATION_SCHEMA, paginate } from "../pagination.js";
3
+ import { actionResponse, FORMAT_SCHEMA, pageResponse, columnsOf, } from "../format.js";
4
+ import { DESTRUCTIVE, READ_ONLY } from "../annotations.js";
5
+ import { MutationResultSchema, ThreadSchema } from "../schemas/items.js";
6
+ import { defineTool } from "../define-tool.js";
7
+ import { pageShapeFor } from "../schemas/common.js";
8
+ const registerListThreads = defineTool({
9
+ name: "tm1_list_threads",
10
+ description: "List active threads on the TM1 server (running processes, chores, MDX queries, etc.). Paginated (default 50/page). (v11 only)",
11
+ annotations: READ_ONLY,
12
+ enabled: (tm1Client) => tm1Client.version === 11,
13
+ output: pageShapeFor(ThreadSchema),
14
+ input: { ...PAGINATION_SCHEMA, ...FORMAT_SCHEMA },
15
+ handler: async ({ limit, offset, fetchAll, format }, tm1Client) => {
16
+ const threads = await tm1Client.monitoring.getThreads();
17
+ const page = paginate(threads, limit, offset, fetchAll);
18
+ const columns = columnsOf([
19
+ "id",
20
+ "name",
21
+ "state",
22
+ "function",
23
+ "objectName",
24
+ ]);
25
+ return pageResponse(page, format, { title: "Threads", columns });
26
+ },
27
+ });
28
+ const registerCancelThread = defineTool({
29
+ name: "tm1_cancel_thread",
30
+ description: [
31
+ "Cancel a running TM1 server thread by its ID. Use tm1_list_threads to find the ID.",
32
+ "Non-idempotent: cancelling a finished thread errors. Before: tm1_list_threads to confirm the thread is still running.",
33
+ "(v11 only)",
34
+ ],
35
+ annotations: DESTRUCTIVE,
36
+ enabled: (tm1Client) => tm1Client.version === 11,
37
+ output: MutationResultSchema,
38
+ input: {
39
+ id: z.number().int().describe("Thread ID to cancel"),
40
+ },
41
+ handler: async ({ id }, tm1Client) => {
42
+ await tm1Client.monitoring.cancelThread(id);
43
+ return actionResponse({ success: true, threadId: id });
44
+ },
45
+ });
46
+ export const registerGetThreads = (server, tm1Client) => {
47
+ registerListThreads(server, tm1Client);
48
+ registerCancelThread(server, tm1Client);
49
+ };
50
+ //# sourceMappingURL=get-threads.js.map
@@ -0,0 +1,2 @@
1
+ export declare const registerGetTransactionLog: import("../define-tool.js").ToolRegistrar;
2
+ //# sourceMappingURL=get-transaction-log.d.ts.map
@@ -0,0 +1,63 @@
1
+ import { z } from "zod";
2
+ import { FORMAT_SCHEMA, payloadResponse, renderTable, columnsOf, } from "../format.js";
3
+ import { READ_ONLY, withVersion } from "../annotations.js";
4
+ import { TransactionLogEntrySchema } from "../schemas/items.js";
5
+ import { defineTool } from "../define-tool.js";
6
+ export const registerGetTransactionLog = defineTool({
7
+ name: "tm1_get_transaction_log",
8
+ description: "Fetch recent TM1 transaction log entries (cell writes), newest first. Optional filters: cube, user, and a since/until time range. NOTE: the endpoint scans the log server-side and a full scan can take minutes-to-hours. A cheap preflight probe fails fast on unreachable/no-rights; without `since` the server walks expanding time windows backward (10min→1y) and stops once `top` rows are found, so it never triggers a full scan. Pass since/until (from-to) to bound it explicitly. (v11 only)",
9
+ annotations: withVersion(READ_ONLY, "v11"),
10
+ // v12 deprecated TransactionLogEntry/TransactionLogEntries (and the
11
+ // TransactionLog / TailTransactionLog functions) in 12.0.0; all of them serve
12
+ // empty with no successor endpoint.
13
+ enabled: (tm1Client) => tm1Client.version === 11,
14
+ output: {
15
+ count: z.number().int(),
16
+ coverage: z
17
+ .enum(["complete", "partial"])
18
+ .describe("partial=hit top, more may exist earlier"),
19
+ scannedFrom: z.string().describe("earliest timestamp scanned"),
20
+ entries: z.array(TransactionLogEntrySchema),
21
+ },
22
+ input: {
23
+ top: z
24
+ .number()
25
+ .int()
26
+ .min(1)
27
+ .max(1000)
28
+ .optional()
29
+ .default(100)
30
+ .describe("Max entries to return (default: 100, max: 1000)"),
31
+ cubeName: z.string().optional().describe("Filter to one cube"),
32
+ user: z.string().optional().describe("Filter to one user"),
33
+ since: z
34
+ .string()
35
+ .optional()
36
+ .describe("Lower bound — only entries on or after this timestamp (UTC). Date '2026-04-17' or datetime '2026-04-17T00:00:00' (a 'Z' is added if missing). When omitted, expanding backward windows are used instead of a full scan."),
37
+ until: z
38
+ .string()
39
+ .optional()
40
+ .describe("Upper bound — only entries on or before this timestamp (UTC). Same format as since. Combine with since for an explicit from-to range; with neither, the window anchor is now."),
41
+ ...FORMAT_SCHEMA,
42
+ },
43
+ handler: async ({ top, cubeName, user, since, until, format }, tm1Client) => {
44
+ const { entries, coverage, scannedFrom } = await tm1Client.server.getTransactionLog({
45
+ top,
46
+ cubeName,
47
+ user,
48
+ since,
49
+ until,
50
+ });
51
+ const payload = { count: entries.length, coverage, scannedFrom, entries };
52
+ const columns = columnsOf([
53
+ "timestamp",
54
+ "user",
55
+ { header: "cube", get: (e) => e.cubeName },
56
+ "elements",
57
+ { header: "old", get: (e) => e.oldValue },
58
+ { header: "new", get: (e) => e.newValue },
59
+ ]);
60
+ return payloadResponse(payload, format, (p) => `## Transaction log\n\n${p.count} entries (coverage: ${p.coverage}, scanned back to ${p.scannedFrom})\n\n${renderTable(p.entries, columns)}`);
61
+ },
62
+ });
63
+ //# sourceMappingURL=get-transaction-log.js.map
@@ -0,0 +1,8 @@
1
+ export declare function parseLogName(filename: string): {
2
+ process: string | null;
3
+ ts: string | null;
4
+ };
5
+ export declare function formatTs(ts: string | null): string | null;
6
+ export declare function spanDays(firstTs: string, lastTs: string): number;
7
+ export declare const registerListErrorLogs: import("../define-tool.js").ToolRegistrar;
8
+ //# sourceMappingURL=list-error-logs.d.ts.map