mammoth-cli 2.0.60__tar.gz → 2.0.62__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.60 → mammoth_cli-2.0.62}/PKG-INFO +2 -2
  2. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/__init__.py +1 -1
  3. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/SKILL.md +1 -1
  4. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities.md +1 -1
  5. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/command-index.md +2 -2
  6. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/activity.md +3 -3
  7. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard.md +20 -0
  8. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/commands/dashboard.py +72 -2
  9. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/commands/registry.py +2 -0
  10. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/commands/schema.py +74 -1
  11. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/services/command_contract.py +11 -1
  12. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/pyproject.toml +2 -2
  13. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/spec/manifests/commands/activity.yaml +1 -2
  14. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/spec/manifests/commands/dashboard.yaml +92 -3
  15. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/spec/manifests/commands/workspace.yaml +3 -1
  16. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/spec/manifests/sdk-catalog.source.yaml +56 -1
  17. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/spec/manifests/sdk-methods.yaml +82 -1
  18. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/.gitignore +0 -0
  19. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/LICENSE +0 -0
  20. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/README.md +0 -0
  21. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/__main__.py +0 -0
  22. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/app.py +0 -0
  23. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/about-mammoth.md +0 -0
  24. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/auth.md +0 -0
  25. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities-misc.md +0 -0
  26. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/addon.md +0 -0
  27. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/agent.md +0 -0
  28. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/ai.md +0 -0
  29. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/annotation.md +0 -0
  30. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/auth.md +0 -0
  31. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/automation.md +0 -0
  32. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/batch.md +0 -0
  33. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/billing.md +0 -0
  34. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/browse.md +0 -0
  35. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/capability.md +0 -0
  36. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/client-app.md +0 -0
  37. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/completion.md +0 -0
  38. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/config.md +0 -0
  39. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/connector.md +0 -0
  40. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/context.md +0 -0
  41. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-qa.md +0 -0
  42. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/data-app.md +0 -0
  43. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dataset.md +0 -0
  44. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/doctor.md +0 -0
  45. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/external-key.md +0 -0
  46. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/file.md +0 -0
  47. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/folder.md +0 -0
  48. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/job.md +0 -0
  49. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/log.md +0 -0
  50. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/notification.md +0 -0
  51. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/parameter.md +0 -0
  52. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/project.md +0 -0
  53. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/report.md +0 -0
  54. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schedule.md +0 -0
  55. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schema.md +0 -0
  56. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/skill.md +0 -0
  57. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/snippet.md +0 -0
  58. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/support.md +0 -0
  59. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/template.md +0 -0
  60. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/trash.md +0 -0
  61. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/upgrade.md +0 -0
  62. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/user.md +0 -0
  63. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/version.md +0 -0
  64. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/view-transform.md +0 -0
  65. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/view.md +0 -0
  66. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/webhook.md +0 -0
  67. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workflow.md +0 -0
  68. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workspace.md +0 -0
  69. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/handoff.md +0 -0
  70. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/input.md +0 -0
  71. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/jobs-drafts.md +0 -0
  72. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/machine-output.md +0 -0
  73. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/operations.md +0 -0
  74. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/auth-scope.md +0 -0
  75. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/cleanup.md +0 -0
  76. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/dashboards.md +0 -0
  77. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/end-to-end.md +0 -0
  78. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/exports.md +0 -0
  79. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/index.md +0 -0
  80. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/need-action.md +0 -0
  81. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/resources.md +0 -0
  82. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/scheduling.md +0 -0
  83. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/transforms.md +0 -0
  84. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/typed-etl-discovery.md +0 -0
  85. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/recovery.md +0 -0
  86. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/report-checklist.md +0 -0
  87. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/retention.md +0 -0
  88. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/safety.md +0 -0
  89. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/bundled_skill/mammoth-cli/references/task-start.md +0 -0
  90. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/commands/__init__.py +0 -0
  91. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/commands/activity.py +0 -0
  92. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/commands/addon.py +0 -0
  93. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/commands/agent.py +0 -0
  94. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/commands/ai.py +0 -0
  95. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/commands/annotation.py +0 -0
  96. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/commands/auth.py +0 -0
  97. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/commands/automation.py +0 -0
  98. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/commands/batch.py +0 -0
  99. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/commands/billing.py +0 -0
  100. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/commands/browse.py +0 -0
  101. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/commands/capability.py +0 -0
  102. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/commands/client_app.py +0 -0
  103. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/commands/completion.py +0 -0
  104. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/commands/config.py +0 -0
  105. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/commands/connector.py +0 -0
  106. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/commands/context.py +0 -0
  107. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/commands/data_app.py +0 -0
  108. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/commands/dataset.py +0 -0
  109. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/commands/doctor.py +0 -0
  110. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/commands/external_key.py +0 -0
  111. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/commands/file.py +0 -0
  112. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/commands/folder.py +0 -0
  113. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/commands/job.py +0 -0
  114. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/commands/notification.py +0 -0
  115. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/commands/parameter.py +0 -0
  116. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/commands/project.py +0 -0
  117. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/commands/report.py +0 -0
  118. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/commands/schedule.py +0 -0
  119. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/commands/skill.py +0 -0
  120. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/commands/snippet.py +0 -0
  121. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/commands/support.py +0 -0
  122. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/commands/template.py +0 -0
  123. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/commands/trash.py +0 -0
  124. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/commands/upgrade.py +0 -0
  125. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/commands/user.py +0 -0
  126. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/commands/view.py +0 -0
  127. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/commands/view_ops.py +0 -0
  128. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/commands/webhook.py +0 -0
  129. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/commands/workflow.py +0 -0
  130. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/commands/workspace.py +0 -0
  131. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/context/__init__.py +0 -0
  132. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/context/credentials.py +0 -0
  133. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/context/endpoint.py +0 -0
  134. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/context/profiles.py +0 -0
  135. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/context/resolver.py +0 -0
  136. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/contracts/__init__.py +0 -0
  137. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/contracts/auth.py +0 -0
  138. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/embed.py +0 -0
  139. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/errors/__init__.py +0 -0
  140. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/errors/envelope.py +0 -0
  141. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/manifest/__init__.py +0 -0
  142. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/manifest/loader.py +0 -0
  143. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/messages/__init__.py +0 -0
  144. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/output/__init__.py +0 -0
  145. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/output/envelope.py +0 -0
  146. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/output/normalize.py +0 -0
  147. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/output/policy.py +0 -0
  148. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/output/progress.py +0 -0
  149. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/output/render.py +0 -0
  150. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/py.typed +0 -0
  151. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/runtime/__init__.py +0 -0
  152. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/runtime/confirm.py +0 -0
  153. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/runtime/dryrun.py +0 -0
  154. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/runtime/embedded.py +0 -0
  155. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/runtime/executor.py +0 -0
  156. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/runtime/input_loader.py +0 -0
  157. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/runtime/invocation.py +0 -0
  158. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/runtime/options.py +0 -0
  159. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/runtime/parents.py +0 -0
  160. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/runtime/runlog.py +0 -0
  161. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/runtime/session.py +0 -0
  162. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/runtime/strict.py +0 -0
  163. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/runtime/updates.py +0 -0
  164. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/runtime/validate.py +0 -0
  165. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/services/__init__.py +0 -0
  166. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/services/argspec.py +0 -0
  167. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/services/coerce.py +0 -0
  168. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/services/conditions.py +0 -0
  169. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/services/dashboard_pages.py +0 -0
  170. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/services/dashboard_review.py +0 -0
  171. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/services/data_quality.py +0 -0
  172. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/services/dispatch.py +0 -0
  173. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/services/factory.py +0 -0
  174. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/services/input_fields.py +0 -0
  175. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/services/mapping.py +0 -0
  176. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/services/openapi_types.py +0 -0
  177. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/services/positionals.py +0 -0
  178. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/services/protocol.py +0 -0
  179. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/services/sdk_service.py +0 -0
  180. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/services/testing.py +0 -0
  181. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/services/type_system.py +0 -0
  182. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/skills/__init__.py +0 -0
  183. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/skills/installer.py +0 -0
  184. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/skills/steering.py +0 -0
  185. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/mammoth_cli/testing.py +0 -0
  186. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/spec/manifests/commands/addon.yaml +0 -0
  187. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/spec/manifests/commands/agent.yaml +0 -0
  188. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/spec/manifests/commands/ai.yaml +0 -0
  189. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/spec/manifests/commands/annotation.yaml +0 -0
  190. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/spec/manifests/commands/auth.yaml +0 -0
  191. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/spec/manifests/commands/automation.yaml +0 -0
  192. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/spec/manifests/commands/batch.yaml +0 -0
  193. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/spec/manifests/commands/billing.yaml +0 -0
  194. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/spec/manifests/commands/browse.yaml +0 -0
  195. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/spec/manifests/commands/capability.yaml +0 -0
  196. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/spec/manifests/commands/client-app.yaml +0 -0
  197. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/spec/manifests/commands/completion.yaml +0 -0
  198. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/spec/manifests/commands/config.yaml +0 -0
  199. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/spec/manifests/commands/connector.yaml +0 -0
  200. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/spec/manifests/commands/context.yaml +0 -0
  201. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/spec/manifests/commands/data-app.yaml +0 -0
  202. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/spec/manifests/commands/dataset.yaml +0 -0
  203. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/spec/manifests/commands/doctor.yaml +0 -0
  204. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/spec/manifests/commands/external-key.yaml +0 -0
  205. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/spec/manifests/commands/file.yaml +0 -0
  206. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/spec/manifests/commands/folder.yaml +0 -0
  207. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/spec/manifests/commands/job.yaml +0 -0
  208. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/spec/manifests/commands/log.yaml +0 -0
  209. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/spec/manifests/commands/notification.yaml +0 -0
  210. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/spec/manifests/commands/parameter.yaml +0 -0
  211. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/spec/manifests/commands/project.yaml +0 -0
  212. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/spec/manifests/commands/report.yaml +0 -0
  213. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/spec/manifests/commands/schedule.yaml +0 -0
  214. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/spec/manifests/commands/schema.yaml +0 -0
  215. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/spec/manifests/commands/skill.yaml +0 -0
  216. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/spec/manifests/commands/snippet.yaml +0 -0
  217. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/spec/manifests/commands/support.yaml +0 -0
  218. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/spec/manifests/commands/template.yaml +0 -0
  219. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/spec/manifests/commands/trash.yaml +0 -0
  220. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/spec/manifests/commands/upgrade.yaml +0 -0
  221. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/spec/manifests/commands/user.yaml +0 -0
  222. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/spec/manifests/commands/version.yaml +0 -0
  223. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/spec/manifests/commands/view.yaml +0 -0
  224. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/spec/manifests/commands/webhook.yaml +0 -0
  225. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/spec/manifests/commands/workflow.yaml +0 -0
  226. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/spec/manifests/openapi-operations.yaml +0 -0
  227. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/spec/manifests/schema-v1.json +0 -0
  228. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/spec/openapi/metadata.json +0 -0
  229. {mammoth_cli-2.0.60 → mammoth_cli-2.0.62}/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.60
3
+ Version: 2.0.62
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,7 +17,7 @@ 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.29
20
+ Requires-Dist: mammoth-io<0.8,>=0.7.31
21
21
  Requires-Dist: platformdirs<5,>=4.10
22
22
  Requires-Dist: pydantic<3,>=2.13
23
23
  Requires-Dist: pyyaml<7,>=6
@@ -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.60"
9
+ __version__ = "2.0.62"
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.60
3
+ version: 2.0.62
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
@@ -16,8 +16,8 @@ Known restriction: BLOCKED[B19 ACTIVITY_EXPORT_UNTYPED_ASYNC]: format/filters/do
16
16
 
17
17
  Run: `mammoth activity list`. Exact input fields: `mammoth schema get activity.list`.
18
18
 
19
- Example: `mammoth activity list`. Discovery only: this command is fail-closed and must not dispatch a request.
19
+ Example: `mammoth activity list`. Placeholders are illustrative; resolve IDs and input from observed reads.
20
20
 
21
- Execution is unavailable for the current contract and returns `unsupported_contract`. Do not infer request fields or retry it; use only a separately typed alternative.
21
+ Result: `ActivityListResult`; mutation `read`, confirmation `none`, wait policy `not_async`.
22
22
 
23
- Known restriction: BLOCKED[B17 VARIADIC_INPUT_UNTYPED]: **filters is unconstrained; reserved, not registered.
23
+ Status on release: ran once on CLI 2.0.18 — fixture-lifecycle sweep 2026-09-19: exit 0 on release with CLI 2.0.18. Returned activity_logs scoped to project 41 (our own actions), e.g. View category entries. Single invocation only.
@@ -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,
@@ -106,6 +106,21 @@ _COMMAND_DISCOVERY_PURPOSES = {
106
106
  "webhook.delete": "webhook http endpoint api delete",
107
107
  "webhook.send": "webhook http endpoint api push send",
108
108
  "webhook.send-get": "webhook http endpoint api pull send get",
109
+ # "What did I ask you about earlier this week?" is a lookup over past
110
+ # agent conversations. Live-eval evidence: `schema find` on that phrasing
111
+ # never matched `agent.session.list`/`agent.session.messages` because
112
+ # neither command's own text says "conversation", "chat", "history", or
113
+ # "asked" -- and the unrelated per-project `connector.ai.session.*`
114
+ # family, whose OpenAPI summary literally says "chat session", outranked
115
+ # them. These two ARE the past-conversation lookup: list the sessions,
116
+ # then read one's messages.
117
+ "agent.session.list": (
118
+ "chat conversation conversations history past previous asked earlier week "
119
+ "messages sessions"
120
+ ),
121
+ "agent.session.messages": (
122
+ "chat conversation conversations history past previous asked earlier week read"
123
+ ),
109
124
  "workspace.user.add": (
110
125
  "invite add member teammate email role editor viewer admin assign permission access"
111
126
  ),
@@ -116,6 +131,43 @@ _COMMAND_DISCOVERY_PURPOSES = {
116
131
  "client-app.list": (
117
132
  "api keys api key secret credentials workspace active script integration list"
118
133
  ),
134
+ # "How much storage am I using, and what plan am I on?" only ever reached
135
+ # workspace.storage-breakdown -- a paginated per-item list with no total
136
+ # that pages through every project before giving up. This command's own
137
+ # text says neither "storage" nor "usage"; it is the one that carries the
138
+ # actual total (storage_used/current_storage_allowed/plan_storage_value/
139
+ # max_storage_allowed).
140
+ "workspace.app-usage": (
141
+ "storage usage used space how much plan current allowed total quota limit"
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
+ ),
119
171
  "automation.create": (
120
172
  "schedule scheduled recurring repeat refresh rerun run every day daily week weekly "
121
173
  "hour hourly month monthly automatically trigger alert email a dataset pipeline"
@@ -280,6 +332,18 @@ _DISCOVERY_SYNONYMS: dict[str, tuple[str, ...]] = {
280
332
  "api": ("client-app",),
281
333
  "key": ("client-app",),
282
334
  "keys": ("client-app",),
335
+ # "What did I ask you earlier?" is a past-conversation lookup: an agent
336
+ # session. Nothing in `agent.session.list`/`agent.session.messages` text
337
+ # says "conversation", "chat", or "history", so a query phrased that way
338
+ # (rather than with the literal word "session") never found them.
339
+ "conversation": ("session",),
340
+ "conversations": ("session",),
341
+ "chat": ("session",),
342
+ "chats": ("session",),
343
+ "history": ("session",),
344
+ "previous": ("session",),
345
+ "earlier": ("session",),
346
+ "asked": ("session",),
283
347
  # British spellings search the same as the American ones.
284
348
  "summarise": ("summarize",),
285
349
  "standardise": ("standardize",),
@@ -412,7 +476,16 @@ def _externally_supplied_fields(command_id: str) -> frozenset[str]:
412
476
  if item.falls_back_to_field is None
413
477
  }
414
478
  )
415
- return excluded_input_fields(command_id)
479
+ excluded = excluded_input_fields(command_id)
480
+ if command_id == "activity.list":
481
+ # ``excluded_input_fields`` treats "project_id" as the active-project
482
+ # context on every command, but here it is an ActivityFiltersSchema
483
+ # request-body filter (any workspace project, not the active one) --
484
+ # the command's own contract already admits and forwards it (see
485
+ # ``_S7_ADDITIONAL_INPUT_FIELDS["activity.list"]``). Only
486
+ # "workspace_id" is the legacy-admitted, never-forwarded field here.
487
+ excluded -= {"project_id"}
488
+ return excluded
416
489
 
417
490
 
418
491
  def _positionals(command_id: str) -> list[dict[str, Any]]:
@@ -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,13 +1,13 @@
1
1
  [project]
2
2
  name = "mammoth-cli"
3
- version = "2.0.60"
3
+ version = "2.0.62"
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.29,<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)",
@@ -67,6 +67,5 @@ commands:
67
67
  - CT-ACTIVITY-LIST-ERROR
68
68
  draft_test: null
69
69
  undo_test: null
70
- known_restrictions: 'BLOCKED[B17 VARIADIC_INPUT_UNTYPED]: **filters is unconstrained; reserved, not
71
- registered.'
70
+ known_restrictions: null
72
71
  reviewed_by: primary
@@ -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
@@ -427,7 +427,9 @@ commands:
427
427
  - CT-WORKSPACE-STORAGE-BREAKDOWN-ERROR
428
428
  draft_test: null
429
429
  undo_test: null
430
- known_restrictions: null
430
+ known_restrictions: This is a paginated per-item list of storage-consuming resources (limit/offset);
431
+ it carries no workspace total and can page through thousands of items. For the workspace's total
432
+ storage used/allowed, use `workspace app-usage` instead.
431
433
  reviewed_by: primary
432
434
  - command_id: workspace.update
433
435
  command_path: workspace update
@@ -267,7 +267,6 @@ sdk_methods:
267
267
  wait_policy: not_async
268
268
  pagination_policy: offset
269
269
  openapi_operation_ids: []
270
- notes: 'BLOCKED[B17 VARIADIC_INPUT_UNTYPED]: **filters is unconstrained; reserved, not registered.'
271
270
  - sdk_symbol: mammoth.api.addons.AddonsAPI.add_connector
272
271
  canonical_command: addon.connector.add
273
272
  alias_of: null
@@ -1447,6 +1446,7 @@ sdk_methods:
1447
1446
  pagination_policy: none
1448
1447
  openapi_operation_ids:
1449
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."
1450
1450
  - sdk_symbol: mammoth.api.dashboards.DashboardsAPI.assess_pbix
1451
1451
  canonical_command: dashboard.assess-pbix
1452
1452
  mutation_class: read
@@ -1455,6 +1455,7 @@ sdk_methods:
1455
1455
  pagination_policy: none
1456
1456
  openapi_operation_ids:
1457
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."
1458
1459
  - sdk_symbol: mammoth.api.dashboards.DashboardsAPI.import_workbook
1459
1460
  canonical_command: dashboard.import-workbook
1460
1461
  mutation_class: high_impact
@@ -1464,6 +1465,7 @@ sdk_methods:
1464
1465
  agent_example: mammoth dashboard import-workbook sample.twbx --project 456 --yes --confirm 456 --output json --no-input
1465
1466
  openapi_operation_ids:
1466
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."
1467
1469
  - sdk_symbol: mammoth.api.dashboards.DashboardsAPI.use_template
1468
1470
  canonical_command: dashboard.templates.use
1469
1471
  alias_of: null
@@ -1487,6 +1489,56 @@ sdk_methods:
1487
1489
  wait_policy: always_wait
1488
1490
  pagination_policy: null
1489
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.
1490
1542
  - sdk_symbol: mammoth.api.dashboards.DashboardsAPI.published_canvas
1491
1543
  canonical_command: dashboard.published.canvas
1492
1544
  alias_of: null
@@ -3891,6 +3943,9 @@ sdk_methods:
3891
3943
  wait_policy: null
3892
3944
  pagination_policy: null
3893
3945
  openapi_operation_ids: []
3946
+ notes: This is a paginated per-item list of storage-consuming resources (limit/offset); it carries
3947
+ no workspace total and can page through thousands of items. For the workspace's total storage
3948
+ used/allowed, use `workspace app-usage` instead.
3894
3949
  - sdk_symbol: mammoth.api.workspaces.WorkspacesAPI.user_add
3895
3950
  canonical_command: workspace.user.add
3896
3951
  alias_of: null