mammoth-cli 2.0.61__tar.gz → 2.0.63__tar.gz

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 (229) hide show
  1. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/PKG-INFO +3 -3
  2. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/__init__.py +1 -1
  3. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/SKILL.md +1 -1
  4. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities.md +1 -1
  5. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/command-index.md +2 -2
  6. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard.md +20 -0
  7. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/commands/dashboard.py +72 -2
  8. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/commands/registry.py +2 -0
  9. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/commands/schema.py +28 -0
  10. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/services/command_contract.py +11 -1
  11. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/pyproject.toml +3 -3
  12. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/manifests/commands/dashboard.yaml +92 -3
  13. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/manifests/sdk-catalog.source.yaml +53 -0
  14. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/manifests/sdk-methods.yaml +76 -0
  15. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/.gitignore +0 -0
  16. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/LICENSE +0 -0
  17. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/README.md +0 -0
  18. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/__main__.py +0 -0
  19. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/app.py +0 -0
  20. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/about-mammoth.md +0 -0
  21. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/auth.md +0 -0
  22. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities-misc.md +0 -0
  23. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/activity.md +0 -0
  24. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/addon.md +0 -0
  25. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/agent.md +0 -0
  26. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/ai.md +0 -0
  27. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/annotation.md +0 -0
  28. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/auth.md +0 -0
  29. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/automation.md +0 -0
  30. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/batch.md +0 -0
  31. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/billing.md +0 -0
  32. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/browse.md +0 -0
  33. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/capability.md +0 -0
  34. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/client-app.md +0 -0
  35. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/completion.md +0 -0
  36. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/config.md +0 -0
  37. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/connector.md +0 -0
  38. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/context.md +0 -0
  39. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-qa.md +0 -0
  40. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/data-app.md +0 -0
  41. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dataset.md +0 -0
  42. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/doctor.md +0 -0
  43. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/external-key.md +0 -0
  44. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/file.md +0 -0
  45. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/folder.md +0 -0
  46. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/job.md +0 -0
  47. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/log.md +0 -0
  48. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/notification.md +0 -0
  49. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/parameter.md +0 -0
  50. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/project.md +0 -0
  51. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/report.md +0 -0
  52. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schedule.md +0 -0
  53. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schema.md +0 -0
  54. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/skill.md +0 -0
  55. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/snippet.md +0 -0
  56. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/support.md +0 -0
  57. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/template.md +0 -0
  58. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/trash.md +0 -0
  59. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/upgrade.md +0 -0
  60. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/user.md +0 -0
  61. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/version.md +0 -0
  62. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/view-transform.md +0 -0
  63. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/view.md +0 -0
  64. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/webhook.md +0 -0
  65. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workflow.md +0 -0
  66. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workspace.md +0 -0
  67. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/handoff.md +0 -0
  68. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/input.md +0 -0
  69. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/jobs-drafts.md +0 -0
  70. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/machine-output.md +0 -0
  71. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/operations.md +0 -0
  72. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/auth-scope.md +0 -0
  73. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/cleanup.md +0 -0
  74. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/dashboards.md +0 -0
  75. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/end-to-end.md +0 -0
  76. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/exports.md +0 -0
  77. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/index.md +0 -0
  78. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/need-action.md +0 -0
  79. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/resources.md +0 -0
  80. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/scheduling.md +0 -0
  81. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/transforms.md +0 -0
  82. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/typed-etl-discovery.md +0 -0
  83. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/recovery.md +0 -0
  84. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/report-checklist.md +0 -0
  85. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/retention.md +0 -0
  86. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/safety.md +0 -0
  87. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/bundled_skill/mammoth-cli/references/task-start.md +0 -0
  88. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/commands/__init__.py +0 -0
  89. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/commands/activity.py +0 -0
  90. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/commands/addon.py +0 -0
  91. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/commands/agent.py +0 -0
  92. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/commands/ai.py +0 -0
  93. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/commands/annotation.py +0 -0
  94. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/commands/auth.py +0 -0
  95. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/commands/automation.py +0 -0
  96. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/commands/batch.py +0 -0
  97. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/commands/billing.py +0 -0
  98. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/commands/browse.py +0 -0
  99. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/commands/capability.py +0 -0
  100. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/commands/client_app.py +0 -0
  101. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/commands/completion.py +0 -0
  102. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/commands/config.py +0 -0
  103. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/commands/connector.py +0 -0
  104. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/commands/context.py +0 -0
  105. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/commands/data_app.py +0 -0
  106. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/commands/dataset.py +0 -0
  107. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/commands/doctor.py +0 -0
  108. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/commands/external_key.py +0 -0
  109. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/commands/file.py +0 -0
  110. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/commands/folder.py +0 -0
  111. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/commands/job.py +0 -0
  112. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/commands/notification.py +0 -0
  113. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/commands/parameter.py +0 -0
  114. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/commands/project.py +0 -0
  115. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/commands/report.py +0 -0
  116. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/commands/schedule.py +0 -0
  117. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/commands/skill.py +0 -0
  118. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/commands/snippet.py +0 -0
  119. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/commands/support.py +0 -0
  120. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/commands/template.py +0 -0
  121. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/commands/trash.py +0 -0
  122. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/commands/upgrade.py +0 -0
  123. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/commands/user.py +0 -0
  124. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/commands/view.py +0 -0
  125. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/commands/view_ops.py +0 -0
  126. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/commands/webhook.py +0 -0
  127. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/commands/workflow.py +0 -0
  128. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/commands/workspace.py +0 -0
  129. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/context/__init__.py +0 -0
  130. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/context/credentials.py +0 -0
  131. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/context/endpoint.py +0 -0
  132. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/context/profiles.py +0 -0
  133. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/context/resolver.py +0 -0
  134. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/contracts/__init__.py +0 -0
  135. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/contracts/auth.py +0 -0
  136. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/embed.py +0 -0
  137. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/errors/__init__.py +0 -0
  138. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/errors/envelope.py +0 -0
  139. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/manifest/__init__.py +0 -0
  140. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/manifest/loader.py +0 -0
  141. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/messages/__init__.py +0 -0
  142. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/output/__init__.py +0 -0
  143. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/output/envelope.py +0 -0
  144. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/output/normalize.py +0 -0
  145. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/output/policy.py +0 -0
  146. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/output/progress.py +0 -0
  147. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/output/render.py +0 -0
  148. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/py.typed +0 -0
  149. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/runtime/__init__.py +0 -0
  150. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/runtime/confirm.py +0 -0
  151. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/runtime/dryrun.py +0 -0
  152. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/runtime/embedded.py +0 -0
  153. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/runtime/executor.py +0 -0
  154. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/runtime/input_loader.py +0 -0
  155. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/runtime/invocation.py +0 -0
  156. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/runtime/options.py +0 -0
  157. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/runtime/parents.py +0 -0
  158. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/runtime/runlog.py +0 -0
  159. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/runtime/session.py +0 -0
  160. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/runtime/strict.py +0 -0
  161. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/runtime/updates.py +0 -0
  162. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/runtime/validate.py +0 -0
  163. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/services/__init__.py +0 -0
  164. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/services/argspec.py +0 -0
  165. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/services/coerce.py +0 -0
  166. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/services/conditions.py +0 -0
  167. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/services/dashboard_pages.py +0 -0
  168. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/services/dashboard_review.py +0 -0
  169. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/services/data_quality.py +0 -0
  170. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/services/dispatch.py +0 -0
  171. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/services/factory.py +0 -0
  172. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/services/input_fields.py +0 -0
  173. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/services/mapping.py +0 -0
  174. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/services/openapi_types.py +0 -0
  175. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/services/positionals.py +0 -0
  176. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/services/protocol.py +0 -0
  177. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/services/sdk_service.py +0 -0
  178. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/services/testing.py +0 -0
  179. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/services/type_system.py +0 -0
  180. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/skills/__init__.py +0 -0
  181. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/skills/installer.py +0 -0
  182. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/skills/steering.py +0 -0
  183. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/mammoth_cli/testing.py +0 -0
  184. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/manifests/commands/activity.yaml +0 -0
  185. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/manifests/commands/addon.yaml +0 -0
  186. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/manifests/commands/agent.yaml +0 -0
  187. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/manifests/commands/ai.yaml +0 -0
  188. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/manifests/commands/annotation.yaml +0 -0
  189. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/manifests/commands/auth.yaml +0 -0
  190. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/manifests/commands/automation.yaml +0 -0
  191. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/manifests/commands/batch.yaml +0 -0
  192. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/manifests/commands/billing.yaml +0 -0
  193. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/manifests/commands/browse.yaml +0 -0
  194. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/manifests/commands/capability.yaml +0 -0
  195. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/manifests/commands/client-app.yaml +0 -0
  196. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/manifests/commands/completion.yaml +0 -0
  197. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/manifests/commands/config.yaml +0 -0
  198. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/manifests/commands/connector.yaml +0 -0
  199. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/manifests/commands/context.yaml +0 -0
  200. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/manifests/commands/data-app.yaml +0 -0
  201. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/manifests/commands/dataset.yaml +0 -0
  202. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/manifests/commands/doctor.yaml +0 -0
  203. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/manifests/commands/external-key.yaml +0 -0
  204. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/manifests/commands/file.yaml +0 -0
  205. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/manifests/commands/folder.yaml +0 -0
  206. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/manifests/commands/job.yaml +0 -0
  207. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/manifests/commands/log.yaml +0 -0
  208. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/manifests/commands/notification.yaml +0 -0
  209. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/manifests/commands/parameter.yaml +0 -0
  210. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/manifests/commands/project.yaml +0 -0
  211. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/manifests/commands/report.yaml +0 -0
  212. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/manifests/commands/schedule.yaml +0 -0
  213. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/manifests/commands/schema.yaml +0 -0
  214. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/manifests/commands/skill.yaml +0 -0
  215. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/manifests/commands/snippet.yaml +0 -0
  216. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/manifests/commands/support.yaml +0 -0
  217. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/manifests/commands/template.yaml +0 -0
  218. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/manifests/commands/trash.yaml +0 -0
  219. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/manifests/commands/upgrade.yaml +0 -0
  220. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/manifests/commands/user.yaml +0 -0
  221. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/manifests/commands/version.yaml +0 -0
  222. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/manifests/commands/view.yaml +0 -0
  223. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/manifests/commands/webhook.yaml +0 -0
  224. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/manifests/commands/workflow.yaml +0 -0
  225. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/manifests/commands/workspace.yaml +0 -0
  226. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/manifests/openapi-operations.yaml +0 -0
  227. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/manifests/schema-v1.json +0 -0
  228. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/openapi/metadata.json +0 -0
  229. {mammoth_cli-2.0.61 → mammoth_cli-2.0.63}/spec/openapi/openapi.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mammoth-cli
3
- Version: 2.0.61
3
+ Version: 2.0.63
4
4
  Summary: Command-line interface for the Mammoth Analytics platform
5
5
  Project-URL: homepage, https://mammoth.io
6
6
  Project-URL: repository, https://github.com/EdgeMetric/mammothsdk
@@ -17,9 +17,9 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
17
17
  Requires-Python: <3.15,>=3.12
18
18
  Requires-Dist: jsonschema>=4.20
19
19
  Requires-Dist: keyring<26,>=25.7
20
- Requires-Dist: mammoth-io<0.8,>=0.7.30
20
+ Requires-Dist: mammoth-io<0.8,>=0.7.31
21
21
  Requires-Dist: platformdirs<5,>=4.10
22
- Requires-Dist: pydantic<3,>=2.13
22
+ Requires-Dist: pydantic<3,>=2.12.5
23
23
  Requires-Dist: pyyaml<7,>=6
24
24
  Requires-Dist: rich<16,>=15
25
25
  Requires-Dist: tomlkit<0.16,>=0.15.1
@@ -6,7 +6,7 @@ not implement a second HTTP client and does not call private SDK members.
6
6
 
7
7
  from __future__ import annotations
8
8
 
9
- __version__ = "2.0.61"
9
+ __version__ = "2.0.63"
10
10
 
11
11
  # The versioned machine output envelope contract.
12
12
  SCHEMA_VERSION = 1
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: mammoth-cli
3
- version: 2.0.61
3
+ version: 2.0.63
4
4
  description: "Use Mammoth Analytics from a terminal: install or authenticate the CLI, discover its live command contract, and safely manage projects, data, views, pipelines (join, merge, pivot, filter, clean), dashboards, exports, and handoffs."
5
5
  ---
6
6
 
@@ -1,7 +1,7 @@
1
1
  # What is proven on release
2
2
 
3
3
  Generated from `docs/release-capability-matrix.json`; do not edit by hand.
4
- The CLI publishes 557 commands. 455 of them bind one of the 528 API operations in the matrix; the remainder are local commands (`schema`, `auth`, `doctor`, `log`, ...) or typed variants that share an operation (`view transform *` commands submit through `view.task.add`, except `rename-columns` and `sort`, which set view display properties through `view.update`). 262 bound commands ran once successfully on release, 2 are not supported there, and the rest are untried. Untried is not broken: discover the contract with `mammoth schema get COMMAND_ID`, run it, and treat the structured error envelope as the answer.
4
+ The CLI publishes 567 commands. 455 of them bind one of the 528 API operations in the matrix; the remainder are local commands (`schema`, `auth`, `doctor`, `log`, ...) or typed variants that share an operation (`view transform *` commands submit through `view.task.add`, except `rename-columns` and `sort`, which set view display properties through `view.update`). 262 bound commands ran once successfully on release, 2 are not supported there, and the rest are untried. Untried is not broken: discover the contract with `mammoth schema get COMMAND_ID`, run it, and treat the structured error envelope as the answer.
5
5
 
6
6
  Status meanings:
7
7
 
@@ -1,6 +1,6 @@
1
1
  # Published CLI command catalog
2
2
 
3
- This generated catalog is a lookup table for every command in the published CLI manifest, currently 565; each entry carries its release status line. It is a command-contract index, not an assertion that every backend/OpenAPI operation has a CLI binding. For an exact local CLI contract, run `mammoth schema get COMMAND_ID`; `mammoth capability list` is an API-binding inventory and can omit typed/local CLI routes. For focused workflows, read the [recipes index](recipes/index.md). Sensitive structured input must come from a private file or pipe; never put secrets in literal argv.
3
+ This generated catalog is a lookup table for every command in the published CLI manifest, currently 567; each entry carries its release status line. It is a command-contract index, not an assertion that every backend/OpenAPI operation has a CLI binding. For an exact local CLI contract, run `mammoth schema get COMMAND_ID`; `mammoth capability list` is an API-binding inventory and can omit typed/local CLI routes. For focused workflows, read the [recipes index](recipes/index.md). Sensitive structured input must come from a private file or pipe; never put secrets in literal argv.
4
4
 
5
5
  Load only the applicable domain file:
6
6
 
@@ -21,7 +21,7 @@ Load only the applicable domain file:
21
21
  - [connector](commands/connector.md) — 22 published commands
22
22
  - [context](commands/context.md) — 3 published commands
23
23
  - [dashboard-qa](commands/dashboard-qa.md) — 13 published commands
24
- - [dashboard](commands/dashboard.md) — 98 published commands
24
+ - [dashboard](commands/dashboard.md) — 100 published commands
25
25
  - [data-app](commands/data-app.md) — 12 published commands
26
26
  - [dataset](commands/dataset.md) — 17 published commands
27
27
  - [doctor](commands/doctor.md) — 1 published commands
@@ -52,6 +52,26 @@ Result: `TwbAssessResponse`; mutation `read`, confirmation `none`, wait policy `
52
52
 
53
53
  Status on release: untried; no live run recorded.
54
54
 
55
+ ### `dashboard.bi-export`
56
+
57
+ Run: `mammoth dashboard bi-export`. Exact input fields: `mammoth schema get dashboard.bi-export`.
58
+
59
+ Example: `mammoth dashboard bi-export 123 --input '{"target": "powerbi"}'`. Placeholders are illustrative; resolve IDs and input from observed reads.
60
+
61
+ Result: `DashboardBiExportResult`; mutation `read`, confirmation `none`, wait policy `not_async`.
62
+
63
+ Status on release: untried; no live run recorded.
64
+
65
+ ### `dashboard.bi-preflight`
66
+
67
+ Run: `mammoth dashboard bi-preflight`. Exact input fields: `mammoth schema get dashboard.bi-preflight`.
68
+
69
+ Example: `mammoth dashboard bi-preflight 123 --input '{"target": "powerbi"}'`. Placeholders are illustrative; resolve IDs and input from observed reads.
70
+
71
+ Result: `PowerBiPreflightResponse`; mutation `read`, confirmation `none`, wait policy `not_async`.
72
+
73
+ Status on release: untried; no live run recorded.
74
+
55
75
  ### `dashboard.cancel-generation`
56
76
 
57
77
  Run: `mammoth dashboard cancel-generation`. Exact input fields: `mammoth schema get dashboard.cancel-generation`.
@@ -11,7 +11,7 @@ SDK method named by the command's reviewed manifest ``sdk_symbol``.
11
11
  from __future__ import annotations
12
12
 
13
13
  from pathlib import Path
14
- from typing import Any
14
+ from typing import Any, Literal, cast
15
15
 
16
16
  from mammoth.models.dashboards import AddPagesSpec
17
17
  from pydantic import ValidationError
@@ -23,11 +23,12 @@ from mammoth_cli.errors.envelope import (
23
23
  CODE_MISSING_ARGUMENT,
24
24
  CODE_MISSING_FIELD,
25
25
  CODE_SDK_SYMBOL_UNRESOLVED,
26
+ CODE_UNSUPPORTED_CONTRACT,
26
27
  EXIT_USAGE,
27
28
  CliError,
28
29
  )
29
30
  from mammoth_cli.manifest.loader import command_by_id
30
- from mammoth_cli.runtime import parents
31
+ from mammoth_cli.runtime import embedded, parents
31
32
  from mammoth_cli.runtime.confirm import (
32
33
  POLICY_CONFIRM_TARGET,
33
34
  POLICY_NONE,
@@ -803,3 +804,72 @@ def dashboard_import_workbook(invocation: Invocation) -> HandlerResult:
803
804
  with open_service(invocation) as (service, auth):
804
805
  data = service.call(_symbol(invocation), file=file_path, project_id=project_id)
805
806
  return data, _meta(invocation, auth.workspace_id)
807
+
808
+
809
+ # ── BI export (Power BI / Tableau) ───────────────────────────────────────────
810
+
811
+ _BI_TARGETS: tuple[Literal["powerbi", "tableau"], ...] = ("powerbi", "tableau")
812
+ _BI_EXPORT_EMBEDDED_REFUSAL = (
813
+ "The file cannot be downloaded from here. Send the user to the dashboard's Publish menu"
814
+ " (the arrow next to Publish) -> Export to Power BI / Export to Tableau."
815
+ )
816
+
817
+
818
+ def _bi_target(document: dict[str, Any]) -> Literal["powerbi", "tableau"]:
819
+ """Read and validate the required ``target`` input field."""
820
+ target = document.get("target")
821
+ if target not in _BI_TARGETS:
822
+ raise CliError(
823
+ code=CODE_INVALID_ARGUMENT,
824
+ message="Input `target` must be 'powerbi' or 'tableau'.",
825
+ exit_status=EXIT_USAGE,
826
+ hint='Pass --input \'{"target": "powerbi"}\' or \'{"target": "tableau"}\'.',
827
+ )
828
+ return cast(Literal["powerbi", "tableau"], target)
829
+
830
+
831
+ def dashboard_bi_preflight(invocation: Invocation) -> HandlerResult:
832
+ """What a Power BI or Tableau export of this dashboard would carry.
833
+
834
+ Side-effect free -- nothing is built and nothing is logged, so the export
835
+ dialog can be opened and dismissed freely. Required input ``target``
836
+ (``powerbi`` or ``tableau``) selects which release route answers.
837
+ """
838
+ dashboard_id = _require_int_positional(invocation, "dashboard id")
839
+ document = invocation.load_input() or {}
840
+ target = _bi_target(document)
841
+ symbol = f"mammoth.api.dashboards.DashboardsAPI.{target}_preflight"
842
+ with open_service(invocation) as (service, auth):
843
+ data = service.call(symbol, dashboard_id=dashboard_id)
844
+ return data, _meta(invocation, auth.workspace_id)
845
+
846
+
847
+ def dashboard_bi_export(invocation: Invocation) -> HandlerResult:
848
+ """Download this dashboard as a Power BI project (.zip) or Tableau workbook (.twbx).
849
+
850
+ Required input ``target`` (``powerbi`` or ``tableau``) selects the release
851
+ route. With no ``output_path`` the file is written to the current
852
+ directory under an auto-generated name.
853
+
854
+ Embedded (see ``mammoth_cli.runtime.embedded``) it is refused: the route
855
+ needs the Authorization header, so a link handed to the user's browser
856
+ 401s. The user downloads it from the dashboard's own export dialog.
857
+ """
858
+ dashboard_id = _require_int_positional(invocation, "dashboard id")
859
+ document = invocation.load_input() or {}
860
+ target = _bi_target(document)
861
+ if embedded.active():
862
+ raise CliError(
863
+ code=CODE_UNSUPPORTED_CONTRACT,
864
+ message=_BI_EXPORT_EMBEDDED_REFUSAL,
865
+ exit_status=EXIT_USAGE,
866
+ hint="Run `dashboard bi-preflight` to tell the user what will convert first.",
867
+ )
868
+ symbol = f"mammoth.api.dashboards.DashboardsAPI.export_{target}"
869
+ kwargs: dict[str, Any] = {"dashboard_id": dashboard_id}
870
+ _forward_optional(document, kwargs, ("output_path",))
871
+ with open_service(invocation) as (service, auth):
872
+ data = service.call(symbol, **kwargs)
873
+ # The SDK returns a Path; render it as a string so the written location is
874
+ # visible in every output mode and serializes cleanly to JSON.
875
+ return {"output_path": str(data)}, _meta(invocation, auth.workspace_id)
@@ -376,6 +376,8 @@ HANDLERS: dict[str, Handler] = {
376
376
  "dashboard.assess-twb": dashboard_cmd.dashboard_assess_twb,
377
377
  "dashboard.assess-pbix": dashboard_cmd.dashboard_assess_pbix,
378
378
  "dashboard.import-workbook": dashboard_cmd.dashboard_import_workbook,
379
+ "dashboard.bi-preflight": dashboard_cmd.dashboard_bi_preflight,
380
+ "dashboard.bi-export": dashboard_cmd.dashboard_bi_export,
379
381
  "dashboard.embed.config.get": dashboard_cmd.generated_dashboard,
380
382
  "dashboard.embed.config.set": dashboard_cmd.generated_dashboard,
381
383
  "dashboard.embed.key.rotate": dashboard_cmd.generated_dashboard,
@@ -140,6 +140,34 @@ _COMMAND_DISCOVERY_PURPOSES = {
140
140
  "workspace.app-usage": (
141
141
  "storage usage used space how much plan current allowed total quota limit"
142
142
  ),
143
+ # "Give me this board as a Power BI file" / "open this in Tableau" is the
144
+ # dashboard-to-BI-file export pair, not `view.export.powerbi`/`.tableau`
145
+ # (those publish a live ODBC connection for a dataview, not a downloadable
146
+ # file for a dashboard). Both destinations' vocabulary lives on both
147
+ # commands: the dialog answers "what will I get" the same way for either
148
+ # tool (see PowerBiPreflightResponse/TableauPreflightResponse), and the
149
+ # export downloads whichever the caller names via input `target`.
150
+ "dashboard.bi-preflight": (
151
+ "power bi powerbi pbix pbip tableau twb twbx workbook file board open this dashboard "
152
+ "board in power bi desktop or tableau desktop preview dry run what would convert "
153
+ "figures rows before downloading export"
154
+ ),
155
+ "dashboard.bi-export": (
156
+ "power bi powerbi pbix pbip tableau twb twbx workbook file board open this dashboard "
157
+ "board in power bi desktop or tableau desktop download export save project convert"
158
+ ),
159
+ # "Bring my old Power BI report in" / "move my dashboards over" is the
160
+ # workbook-to-Mammoth-dataset import, the opposite direction of
161
+ # `dashboard.bi-export`. The command id's own tokens ("import",
162
+ # "workbook") already cover half of this -- "workbook" is deliberately
163
+ # NOT repeated below: it would double-score (command-id token AND purpose
164
+ # match) and outrank `dashboard.bi-export`/`.bi-preflight` on the bare
165
+ # "tableau workbook" phrasing those two must win instead. Only "tableau"
166
+ # (its own text says neither tool's name) and the migration verbs are new.
167
+ "dashboard.import-workbook": (
168
+ "bring in migrate move transfer switch old existing dashboards dashboard over power "
169
+ "bi report tableau file upload"
170
+ ),
143
171
  "automation.create": (
144
172
  "schedule scheduled recurring repeat refresh rerun run every day daily week weekly "
145
173
  "hour hourly month monthly automatically trigger alert email a dataset pipeline"
@@ -14,7 +14,7 @@ from collections.abc import Mapping
14
14
  from dataclasses import dataclass
15
15
  from functools import cache
16
16
  from types import MappingProxyType
17
- from typing import Any, cast
17
+ from typing import Any, Literal, cast
18
18
 
19
19
  from mammoth.models.batches import (
20
20
  ColumnIdMapping,
@@ -626,6 +626,16 @@ _S7_ADDITIONAL_INPUT_FIELDS: dict[str, tuple[FieldSpec, ...]] = {
626
626
  # GLOBAL or WORKSPACE_PREFERENCES.
627
627
  FieldSpec("patch", required=False, annotation=list[Any] | None, default=None),
628
628
  ),
629
+ # ``target`` picks which of the two backing SDK methods the handler calls
630
+ # (powerbi_preflight/tableau_preflight, export_powerbi/export_tableau); it
631
+ # is CLI-side dispatch, never forwarded into either SDK call, so neither
632
+ # signature can introspect it.
633
+ "dashboard.bi-preflight": (
634
+ FieldSpec("target", required=True, annotation=Literal["powerbi", "tableau"]),
635
+ ),
636
+ "dashboard.bi-export": (
637
+ FieldSpec("target", required=True, annotation=Literal["powerbi", "tableau"]),
638
+ ),
629
639
  # user.update previously pinned name/email here as a guess, from when
630
640
  # UserProfileAPI.update took **fields and so had nothing introspectable.
631
641
  # The SDK method is now typed (first_name, last_name -- the backend's
@@ -1,20 +1,20 @@
1
1
  [project]
2
2
  name = "mammoth-cli"
3
- version = "2.0.61"
3
+ version = "2.0.63"
4
4
  description = "Command-line interface for the Mammoth Analytics platform"
5
5
  authors = [{name = "Mammoth Analytics", email = "support@mammoth.io"}]
6
6
  readme = "README.md"
7
7
  license = "LicenseRef-Proprietary"
8
8
  requires-python = ">=3.12,<3.15"
9
9
  dependencies = [
10
- "mammoth-io (>=0.7.30,<0.8)",
10
+ "mammoth-io (>=0.7.31,<0.8)",
11
11
  "typer (>=0.27,<0.28)",
12
12
  "rich (>=15,<16)",
13
13
  "platformdirs (>=4.10,<5)",
14
14
  "tomlkit (>=0.15.1,<0.16)",
15
15
  "keyring (>=25.7,<26)",
16
16
  "PyYAML (>=6,<7)",
17
- "pydantic (>=2.13,<3)",
17
+ "pydantic (>=2.12.5,<3)",
18
18
  "jsonschema (>=4.20)",
19
19
  ]
20
20
  urls = {homepage = "https://mammoth.io", repository = "https://github.com/EdgeMetric/mammothsdk"}
@@ -156,7 +156,7 @@ commands:
156
156
  - mammoth-cli/tests/contract/test_rel341_schema_preserves_release_overlay.py::test_rel341_schema_preserves_release_overlay
157
157
  draft_test: null
158
158
  undo_test: null
159
- known_restrictions: Release snapshot provenance only; unverified against release.
159
+ known_restrictions: "Release snapshot provenance only; unverified against release. These take a workbook file from the local disk. Inside the Mammoth app the user's file cannot reach the agent: send the user to the dashboard import page at /workspaces/{workspace_id}/publish/import (Publish → Import), where they upload the .pbix/.twb/.twbx themselves."
160
160
  reviewed_by: primary
161
161
  - command_id: dashboard.assess-twb
162
162
  command_path: dashboard assess-twb
@@ -194,7 +194,96 @@ commands:
194
194
  - mammoth-cli/tests/contract/test_rel357_schema_preserves_release_overlay.py::test_rel357_schema_preserves_release_overlay
195
195
  draft_test: null
196
196
  undo_test: null
197
- known_restrictions: Release snapshot provenance only; unverified against release.
197
+ known_restrictions: "Release snapshot provenance only; unverified against release. These take a workbook file from the local disk. Inside the Mammoth app the user's file cannot reach the agent: send the user to the dashboard import page at /workspaces/{workspace_id}/publish/import (Publish → Import), where they upload the .pbix/.twb/.twbx themselves."
198
+ reviewed_by: primary
199
+ - command_id: dashboard.bi-preflight
200
+ command_path: dashboard bi-preflight
201
+ disposition: command
202
+ alias_of: null
203
+ operation_ids:
204
+ - PowerbiPreflight
205
+ - TableauPreflightHandler
206
+ positionals:
207
+ - name: dashboard_id
208
+ type: int
209
+ required: true
210
+ metavar: DASHBOARD_ID
211
+ falls_back_to_field: null
212
+ help: ID of the dashboard.
213
+ options: []
214
+ sdk_symbol: mammoth.api.dashboards.DashboardsAPI.powerbi_preflight
215
+ sdk_conversion: Call mammoth.api.dashboards.DashboardsAPI.powerbi_preflight or .tableau_preflight,
216
+ chosen by input `target`, with validated request fields.
217
+ request_model: DashboardBiPreflightRequest
218
+ result_model: PowerBiPreflightResponse
219
+ mutation_class: read
220
+ confirmation: none
221
+ wait_policy: not_async
222
+ pagination_policy: none
223
+ acceptance_evidence: contract_only_no_disposable_fixture
224
+ live_test: null
225
+ live_exemption_reason: Release-only supplemental binding; no disposable fixture.
226
+ contract_fixture: null
227
+ required_fixture_guard: null
228
+ secret_fields: []
229
+ human_example: mammoth dashboard bi-preflight DASHBOARD_ID --help
230
+ agent_example: 'mammoth dashboard bi-preflight 123 --input ''{"target": "powerbi"}'''
231
+ unit_tests:
232
+ - mammoth-cli/tests/unit/commands/test_dashboard.py::test_bi_preflight_dispatches_powerbi
233
+ - mammoth-cli/tests/unit/commands/test_dashboard.py::test_bi_preflight_dispatches_tableau
234
+ - mammoth-cli/tests/unit/commands/test_dashboard.py::test_bi_preflight_rejects_unknown_target_value_without_a_request
235
+ contract_tests:
236
+ - mammoth-cli/tests/contract/test_rel360_bi_export.py::test_rel360_schema_preserves_release_overlay
237
+ draft_test: null
238
+ undo_test: null
239
+ known_restrictions: Release snapshot provenance only; unverified against release. Author-only,
240
+ like the release routes it calls -- a non-author caller is refused, unlike `dashboard pdf export`
241
+ (which any viewer can run).
242
+ reviewed_by: primary
243
+ - command_id: dashboard.bi-export
244
+ command_path: dashboard bi-export
245
+ disposition: command
246
+ alias_of: null
247
+ operation_ids:
248
+ - PowerbiExport
249
+ - TableauExport
250
+ positionals:
251
+ - name: dashboard_id
252
+ type: int
253
+ required: true
254
+ metavar: DASHBOARD_ID
255
+ falls_back_to_field: null
256
+ help: ID of the dashboard.
257
+ options: []
258
+ sdk_symbol: mammoth.api.dashboards.DashboardsAPI.export_powerbi
259
+ sdk_conversion: Call mammoth.api.dashboards.DashboardsAPI.export_powerbi or .export_tableau, chosen
260
+ by input `target`, with validated request fields.
261
+ request_model: DashboardBiExportRequest
262
+ result_model: DashboardBiExportResult
263
+ mutation_class: read
264
+ confirmation: none
265
+ wait_policy: not_async
266
+ pagination_policy: none
267
+ acceptance_evidence: contract_only_no_disposable_fixture
268
+ live_test: null
269
+ live_exemption_reason: Release-only supplemental binding; no disposable fixture.
270
+ contract_fixture: null
271
+ required_fixture_guard: null
272
+ secret_fields: []
273
+ human_example: mammoth dashboard bi-export DASHBOARD_ID --help
274
+ agent_example: 'mammoth dashboard bi-export 123 --input ''{"target": "powerbi"}'''
275
+ unit_tests:
276
+ - mammoth-cli/tests/unit/commands/test_dashboard.py::test_bi_export_writes_file_in_terminal_mode
277
+ - mammoth-cli/tests/unit/commands/test_dashboard.py::test_bi_export_embedded_points_user_to_export_dialog
278
+ contract_tests:
279
+ - mammoth-cli/tests/contract/test_rel361_bi_export.py::test_rel361_schema_preserves_release_overlay
280
+ draft_test: null
281
+ undo_test: null
282
+ known_restrictions: "Release snapshot provenance only; unverified against release. Author-only, like
283
+ bi-preflight. Terminal mode writes `output_path` to local disk. Inside the Mammoth app the
284
+ download cannot reach the user: run `dashboard bi-preflight` to tell them what will convert,
285
+ then send them to the dashboard's Publish menu (the arrow next to Publish) -> Export to Power
286
+ BI / Export to Tableau, where they download the file themselves."
198
287
  reviewed_by: primary
199
288
  - command_id: dashboard.cancel-generation
200
289
  command_path: dashboard cancel-generation
@@ -1382,7 +1471,7 @@ commands:
1382
1471
  - mammoth-cli/tests/contract/test_rel340_schema_preserves_release_overlay.py::test_rel340_schema_preserves_release_overlay
1383
1472
  draft_test: null
1384
1473
  undo_test: null
1385
- known_restrictions: Release snapshot provenance only; unverified against release.
1474
+ known_restrictions: "Release snapshot provenance only; unverified against release. These take a workbook file from the local disk. Inside the Mammoth app the user's file cannot reach the agent: send the user to the dashboard import page at /workspaces/{workspace_id}/publish/import (Publish → Import), where they upload the .pbix/.twb/.twbx themselves."
1386
1475
  reviewed_by: primary
1387
1476
  - command_id: dashboard.job-by-url
1388
1477
  command_path: dashboard job-by-url
@@ -1446,6 +1446,7 @@ sdk_methods:
1446
1446
  pagination_policy: none
1447
1447
  openapi_operation_ids:
1448
1448
  - AssessTwb
1449
+ notes: "These take a workbook file from the local disk. Inside the Mammoth app the user's file cannot reach the agent: send the user to the dashboard import page at /workspaces/{workspace_id}/publish/import (Publish → Import), where they upload the .pbix/.twb/.twbx themselves."
1449
1450
  - sdk_symbol: mammoth.api.dashboards.DashboardsAPI.assess_pbix
1450
1451
  canonical_command: dashboard.assess-pbix
1451
1452
  mutation_class: read
@@ -1454,6 +1455,7 @@ sdk_methods:
1454
1455
  pagination_policy: none
1455
1456
  openapi_operation_ids:
1456
1457
  - AssessPbix
1458
+ notes: "These take a workbook file from the local disk. Inside the Mammoth app the user's file cannot reach the agent: send the user to the dashboard import page at /workspaces/{workspace_id}/publish/import (Publish → Import), where they upload the .pbix/.twb/.twbx themselves."
1457
1459
  - sdk_symbol: mammoth.api.dashboards.DashboardsAPI.import_workbook
1458
1460
  canonical_command: dashboard.import-workbook
1459
1461
  mutation_class: high_impact
@@ -1463,6 +1465,7 @@ sdk_methods:
1463
1465
  agent_example: mammoth dashboard import-workbook sample.twbx --project 456 --yes --confirm 456 --output json --no-input
1464
1466
  openapi_operation_ids:
1465
1467
  - ImportWorkbookDataset
1468
+ notes: "These take a workbook file from the local disk. Inside the Mammoth app the user's file cannot reach the agent: send the user to the dashboard import page at /workspaces/{workspace_id}/publish/import (Publish → Import), where they upload the .pbix/.twb/.twbx themselves."
1466
1469
  - sdk_symbol: mammoth.api.dashboards.DashboardsAPI.use_template
1467
1470
  canonical_command: dashboard.templates.use
1468
1471
  alias_of: null
@@ -1486,6 +1489,56 @@ sdk_methods:
1486
1489
  wait_policy: always_wait
1487
1490
  pagination_policy: null
1488
1491
  openapi_operation_ids: []
1492
+ - sdk_symbol: mammoth.api.dashboards.DashboardsAPI.powerbi_preflight
1493
+ canonical_command: dashboard.bi-preflight
1494
+ alias_of: null
1495
+ mutation_class: null
1496
+ wait_policy: null
1497
+ pagination_policy: null
1498
+ openapi_operation_ids: []
1499
+ - sdk_symbol: mammoth.api.dashboards.DashboardsAPI.tableau_preflight
1500
+ canonical_command: null
1501
+ alias_of: null
1502
+ mutation_class: null
1503
+ wait_policy: null
1504
+ pagination_policy: null
1505
+ openapi_operation_ids: []
1506
+ notes: One of two target-specific implementations behind `dashboard bi-preflight` (--input
1507
+ target=tableau); powerbi_preflight is the manifest's representative sdk_symbol.
1508
+ - sdk_symbol: mammoth.api.dashboards.DashboardsAPI.powerbi_export_artifact
1509
+ canonical_command: null
1510
+ alias_of: null
1511
+ mutation_class: null
1512
+ wait_policy: null
1513
+ pagination_policy: null
1514
+ openapi_operation_ids: []
1515
+ notes: SDK-only artifact fetch (content_base64) export_powerbi decodes and writes to disk;
1516
+ dashboard bi-export is the reviewed CLI command.
1517
+ - sdk_symbol: mammoth.api.dashboards.DashboardsAPI.tableau_export_artifact
1518
+ canonical_command: null
1519
+ alias_of: null
1520
+ mutation_class: null
1521
+ wait_policy: null
1522
+ pagination_policy: null
1523
+ openapi_operation_ids: []
1524
+ notes: SDK-only artifact fetch (content_base64) export_tableau decodes and writes to disk;
1525
+ dashboard bi-export is the reviewed CLI command.
1526
+ - sdk_symbol: mammoth.api.dashboards.DashboardsAPI.export_powerbi
1527
+ canonical_command: dashboard.bi-export
1528
+ alias_of: null
1529
+ mutation_class: read
1530
+ wait_policy: not_async
1531
+ pagination_policy: none
1532
+ openapi_operation_ids: []
1533
+ - sdk_symbol: mammoth.api.dashboards.DashboardsAPI.export_tableau
1534
+ canonical_command: null
1535
+ alias_of: null
1536
+ mutation_class: read
1537
+ wait_policy: not_async
1538
+ pagination_policy: none
1539
+ openapi_operation_ids: []
1540
+ notes: One of two target-specific implementations behind `dashboard bi-export` (--input
1541
+ target=tableau); export_powerbi is the manifest's representative sdk_symbol.
1489
1542
  - sdk_symbol: mammoth.api.dashboards.DashboardsAPI.published_canvas
1490
1543
  canonical_command: dashboard.published.canvas
1491
1544
  alias_of: null
@@ -2092,6 +2092,31 @@ methods:
2092
2092
  pagination_policy: none
2093
2093
  secret_fields: []
2094
2094
  reviewed_by: primary
2095
+ - sdk_symbol: mammoth.api.dashboards.DashboardsAPI.export_powerbi
2096
+ implementation_origin: mammoth.api.dashboards.DashboardsAPI.export_powerbi
2097
+ signature: 'export_powerbi(self, dashboard_id: ''int'', output_path: ''str | Path | None'' = None) -> ''Path'''
2098
+ openapi_operation_ids: []
2099
+ canonical_command: dashboard.bi-export
2100
+ alias_of: null
2101
+ no_command_reason: null
2102
+ mutation_class: read
2103
+ wait_policy: not_async
2104
+ pagination_policy: none
2105
+ secret_fields: []
2106
+ reviewed_by: primary
2107
+ - sdk_symbol: mammoth.api.dashboards.DashboardsAPI.export_tableau
2108
+ implementation_origin: mammoth.api.dashboards.DashboardsAPI.export_tableau
2109
+ signature: 'export_tableau(self, dashboard_id: ''int'', output_path: ''str | Path | None'' = None) -> ''Path'''
2110
+ openapi_operation_ids: []
2111
+ canonical_command: null
2112
+ alias_of: null
2113
+ no_command_reason: One of two target-specific implementations behind `dashboard bi-export`
2114
+ (--input target=tableau); export_powerbi is the manifest's representative sdk_symbol.
2115
+ mutation_class: read
2116
+ wait_policy: not_async
2117
+ pagination_policy: none
2118
+ secret_fields: []
2119
+ reviewed_by: primary
2095
2120
  - sdk_symbol: mammoth.api.dashboards.DashboardsAPI.extract_context
2096
2121
  implementation_origin: mammoth.api.dashboards.DashboardsAPI.extract_context
2097
2122
  signature: 'extract_context(self, body: ''ContextExtractSpec'') -> ''dict[str, Any]'''
@@ -2325,6 +2350,31 @@ methods:
2325
2350
  pagination_policy: null
2326
2351
  secret_fields: []
2327
2352
  reviewed_by: primary
2353
+ - sdk_symbol: mammoth.api.dashboards.DashboardsAPI.powerbi_export_artifact
2354
+ implementation_origin: mammoth.api.dashboards.DashboardsAPI.powerbi_export_artifact
2355
+ signature: 'powerbi_export_artifact(self, dashboard_id: ''int'') -> ''dict[str, Any]'''
2356
+ openapi_operation_ids: []
2357
+ canonical_command: null
2358
+ alias_of: null
2359
+ no_command_reason: SDK-only artifact fetch (content_base64) export_powerbi decodes and writes
2360
+ to disk; dashboard bi-export is the reviewed CLI command.
2361
+ mutation_class: null
2362
+ wait_policy: null
2363
+ pagination_policy: null
2364
+ secret_fields: []
2365
+ reviewed_by: primary
2366
+ - sdk_symbol: mammoth.api.dashboards.DashboardsAPI.powerbi_preflight
2367
+ implementation_origin: mammoth.api.dashboards.DashboardsAPI.powerbi_preflight
2368
+ signature: 'powerbi_preflight(self, dashboard_id: ''int'') -> ''PowerBiPreflightResponse'''
2369
+ openapi_operation_ids: []
2370
+ canonical_command: dashboard.bi-preflight
2371
+ alias_of: null
2372
+ no_command_reason: null
2373
+ mutation_class: null
2374
+ wait_policy: null
2375
+ pagination_policy: null
2376
+ secret_fields: []
2377
+ reviewed_by: primary
2328
2378
  - sdk_symbol: mammoth.api.dashboards.DashboardsAPI.published_canvas
2329
2379
  implementation_origin: mammoth.api.dashboards.DashboardsAPI.published_canvas
2330
2380
  signature: 'published_canvas(self: ''Any'', url: ''str'') -> ''CanvasResponse'''
@@ -2904,6 +2954,32 @@ methods:
2904
2954
  pagination_policy: none
2905
2955
  secret_fields: []
2906
2956
  reviewed_by: primary
2957
+ - sdk_symbol: mammoth.api.dashboards.DashboardsAPI.tableau_export_artifact
2958
+ implementation_origin: mammoth.api.dashboards.DashboardsAPI.tableau_export_artifact
2959
+ signature: 'tableau_export_artifact(self, dashboard_id: ''int'') -> ''dict[str, Any]'''
2960
+ openapi_operation_ids: []
2961
+ canonical_command: null
2962
+ alias_of: null
2963
+ no_command_reason: SDK-only artifact fetch (content_base64) export_tableau decodes and writes
2964
+ to disk; dashboard bi-export is the reviewed CLI command.
2965
+ mutation_class: null
2966
+ wait_policy: null
2967
+ pagination_policy: null
2968
+ secret_fields: []
2969
+ reviewed_by: primary
2970
+ - sdk_symbol: mammoth.api.dashboards.DashboardsAPI.tableau_preflight
2971
+ implementation_origin: mammoth.api.dashboards.DashboardsAPI.tableau_preflight
2972
+ signature: 'tableau_preflight(self, dashboard_id: ''int'') -> ''TableauPreflightResponse'''
2973
+ openapi_operation_ids: []
2974
+ canonical_command: null
2975
+ alias_of: null
2976
+ no_command_reason: One of two target-specific implementations behind `dashboard bi-preflight`
2977
+ (--input target=tableau); powerbi_preflight is the manifest's representative sdk_symbol.
2978
+ mutation_class: null
2979
+ wait_policy: null
2980
+ pagination_policy: null
2981
+ secret_fields: []
2982
+ reviewed_by: primary
2907
2983
  - sdk_symbol: mammoth.api.dashboards.DashboardsAPI.take_pending_template
2908
2984
  implementation_origin: mammoth.api.dashboards.DashboardsAPI.take_pending_template
2909
2985
  signature: 'take_pending_template(self) -> ''dict[str, Any]'''
File without changes
File without changes
File without changes